- 5 minutes to read

Repository Binding

Repository Binding lets a Log Event create and bind Repository Model entities (Integrations, Services, Systems, Contracts) when the Logging Service processes it. Put the JSON structure as a string in the ExtendedProperties/1.0#RepositoryBinding context key, or use the individual (legacy) keys.

Important

You must enable the AllowRepositoryAutomapping System Parameter for the Logging Service to honor Repository Binding data.

Available from Nodinite 4.3.0.72+

Reference

Structure

One RepositoryBinding value creates the complete structure and replaces the individual keys.

Note

The structure documented below is for Nodinite v7. Earlier versions may have different field requirements.

The outline below is a fragment that shows the allowed values; see Examples for valid JSON.

{
  "Name": "Transport Contract Name",
  "Service": {
    "Name": "Service Name",
    "Direction": "Send|Receive|TwoWaySend|TwoWayReceive",
    "System": { "Name": "System Name" },
    "Integration": { "Name": "Integration Name" },
    "ExternalServiceRelations": [{
      "Name": "Service",
      "Direction": "Send|Receive",
      "System": { "Name": "System" }
    }],
    "InternalServiceRelations": [{
      "Name": "Service",
      "Direction": "Send|Receive"
    }],
    "BPMs": [ BPM objects, see BPM Binding ]
  }
}

Repository Binding - Service relations
Diagram showing External and Internal Service Relations in a Repository Binding structure.

Root Object

Field Required Purpose Example
Name ✅ Yes Transport Contract name (can be the same for all services) Default, Standard Transport Contract
Service ✅ Yes Service definition Service object

Service Object

Field Required Purpose Example
Name ✅ Yes Service name Bank - Loan Request, INT1337-RCV-Order-Incoming
Direction ✅ Yes Direction of the Service; it draws the direction arrows on connectors in the Integration Landscape (values) Send, Receive, TwoWaySend, TwoWayReceive
System ✅ Yes Hosting System { "Name": "Mule" }
Integration ✅ Yes Parent Integration { "Name": "INT004 - Bank (2 Way)" }
ExternalServiceRelations ❌ No Cross-system connections Array of external relation objects
InternalServiceRelations ❌ No Same-system connections Array of internal relation objects
BPMs ❌ No Business process positioning Array of BPM objects, see BPM Binding

ExternalServiceRelations (Cross-System)

Links to services in different systems. Used to show cross-system integration flows.

Field Required Purpose Example
Name ✅ Yes Target service name Bank Service, Broker A - Get Quote
Direction ✅ Yes Target service direction Send, Receive
System ✅ Yes Target system { "Name": "Bank System" }

Important

Direction refers to the direction of the target service, not the current service. For example, if the current service is "Receive" and points to a downstream "Send" service, set Direction = "Send".

InternalServiceRelations (Same-System)

Links to services in the same system. Used to show internal routing or transformation steps.

Note

The System field is not required for Internal Service Relations. The system is assumed to be the same as the parent Service's system. If the target service does not exist, it will be created within the parent Service's system.

Field Required Purpose Example
Name ✅ Yes Target service name (same system) Receive Quotes, Order Router
Direction ✅ Yes Target service direction Send, Receive

Individual Keys (Legacy)

Use these Context Options when you don't use the complete JSON structure.

Context Key Value Purpose
ExtendedProperties/1.0#IntegrationName string (e.g., INT001 - X to Y) Integration name
ExtendedProperties/1.0#ServiceName string Service name
ExtendedProperties/1.0#ServiceSystemName string System name of the Service (auto-created)
ExtendedProperties/1.0#ServiceDirection string / int Direction of the Service (values)
ExtendedProperties/1.0#ExternalServiceRelationName string Target service in another system
ExtendedProperties/1.0#ExternalServiceRelationSystemName string Target system name
ExtendedProperties/1.0#InternalServiceRelationName string Target service in the same system
ExtendedProperties/1.0#InternalServiceRelationDirection string / int Direction of the target service (values)
ExtendedProperties/1.0#ContractName string Contract name
ExtendedProperties/1.0#ContractSystemName string System name of the Contract (optional)

Note

The Integration is created only when a Service or Contract is also created. The Contract keys require the UseContracts system parameter = true.

Service Direction Values

ServiceDirection and InternalServiceRelationDirection accept the string or the integer.

String Integer
None -2
Unknown -1
Receive 0
Send 1
TwoWayReceive 10
TwoWaySend 11

Examples

Repository Binding JSON

{
  "Name": "Receive Quotes via JSON",
  "Service": {
    "Name": "Receive Quotes",
    "Direction": "TwoWayReceive",
    "System": { "Name": "Mule" },
    "Integration": { "Name": "INT004 - Bank (2 Way)" },
    "ExternalServiceRelations": [{
      "Name": "Broker A - Get Quote",
      "Direction": "Send",
      "System": { "Name": "Broker A" }
    }],
    "InternalServiceRelations": [{
      "Name": "Bank - Loan Request",
      "Direction": "Receive"
    }]
  }
}

For Scalar, Swagger, and the Log API

The context value is a string, so escape the JSON. This is the same example as one Context entry:

"ExtendedProperties/1.0#RepositoryBinding": "{\"Name\":\"Receive Quotes via JSON\",\"Service\":{\"Name\":\"Receive Quotes\",\"Direction\":\"TwoWayReceive\",\"System\":{\"Name\":\"Mule\"},\"Integration\":{\"Name\":\"INT004 - Bank (2 Way)\"},\"ExternalServiceRelations\":[{\"Name\":\"Broker A - Get Quote\",\"Direction\":\"Send\",\"System\":{\"Name\":\"Broker A\"}}],\"InternalServiceRelations\":[{\"Name\":\"Bank - Loan Request\",\"Direction\":\"Receive\"}]}}"

To try it, explore the operations in Scalar or Swagger. For a Repository Binding with a BPM position, see the BPM Binding example.

Next Steps