Context Options
Context Options control how Nodinite processes logged events. Add these key-value pairs to Log Events to override defaults, automate repository binding, and enable Search Field extraction.
Key capabilities:
✅ Message Type control - Override auto-detection or force specific types
✅ Search Field extraction - Enable format-specific field expressions
✅ Repository automation - Create Integrations, Services, and Systems via JSON
✅ Property overrides - Customize Log Status, endpoints, filenames, and metadata
Context Options control Step 2 of the processing pipeline—Message Type determination—ensuring correct Search Field Expressions are evaluated in Step 3.
Warning
From Nodinite 5.1+, context keys use
ExtendedProperties/1.0prefix. LegacyIM.DefaultProperties/1.0keys remain supported but use the new format for new development.
1. Message and Payload Control
Control how payloads are processed and Message Types are determined.
| Context Key | Value | Purpose |
|---|---|---|
| ExtendedProperties/1.0#MessageTypeName | string |
Override/force Message Type name |
| ExtendedProperties/1.0#MessageTypeExtractFromBody | true/false |
Enable auto-extraction from payload |
| ExtendedProperties/1.0#Filename ExtendedProperties/1.0#FullFilePath Filename / FileName / filename originalFilename |
string |
Default filename for resend/download |
| ExtendedProperties/1.0#EndPointUri | string |
Webhook URI for resend operations |
| ExtendedProperties/1.0#Exception | string |
Serialized .NET exception (JSON) |
| ExtendedProperties/1.0#EndPointName | string |
Override Endpoint name |
Message Type Name
Purpose: Override or force the Message Type name for proper Search Field extraction.
When to use:
- Non-XML formats (EDI, flat files, JSON without schema) that can't be auto-detected
- Override auto-detection based on business logic
- Complex routing scenarios with format-specific handling
| Context Key | Value | Example |
|---|---|---|
| ExtendedProperties/1.0#MessageTypeName | Any unique string | https://nodinite.com/Customers/1.0#Batch |
Tip
Version the namespace using
/1.0or/2016/05/17notation for uniqueness.
Example: A flat file invoice without a Message Type won't extract Search Fields. Setting ExtendedProperties/1.0#MessageTypeName = "FlatFileInvoice/1.0" enables extraction of invoice numbers, customer IDs, and amounts.
Extract Message Type from Payload
Purpose: Control automatic Message Type extraction from payloads.
If ExtendedProperties/1.0#MessageTypeName is NOT set and MessageTypeExtractFromBody = true, the Logging Service extracts:
- XML:
TargetNameSpace#RootNodeName - JSON: Schema identifier properties
- EDIFACT: UNA field
| Context Key | Value |
|---|---|
| ExtendedProperties/1.0#MessageTypeExtractFromBody | true (enable) or false (disable) |
Example: For region-based routing, set MessageTypeName = "Invoice-EU/1.0" and MessageTypeExtractFromBody = false to prevent XML namespace from overriding your business logic.
File Name
Purpose: Pre-set filename for Resend, Repair, and Save operations in the Web Client.
| Context Key | Value |
|---|---|
| ExtendedProperties/1.0#Filename ExtendedProperties/1.0#FullFilePath Filename / FileName / filename originalFilename |
Valid file path (Windows path rules) |
Note
Requires a body/payload to function.
| Example | Result |
|---|---|
c:\temp\in\order123.txt |
Filename: order123.txt, Folder: c:\temp\in\ |
c:\temp\in\ |
Auto-generated filename, Folder: c:\temp\in\ |
c:\temp |
Filename: temp, Folder: c:\ |
Webhook
Set the Webhook URI for resend/repair operations.
| Context Key | Value |
|---|---|
| ExtendedProperties/1.0#EndPointUri | Webhook URL string |
Review: ResendWebhookSettings system parameter
Exception
Pass serialized .NET exceptions in JSON format.
| Context Key | Value |
|---|---|
| ExtendedProperties/1.0#Exception | JSON string |
Endpoint Name
Override the Endpoint name.
| Context Key | Value |
|---|---|
| ExtendedProperties/1.0#EndPointName | String value |
2. Repository Binding
Automatically create and bind Repository Model entities (Integrations, Services, Systems, Contracts) via JSON context.
Quick Reference
| Context Key | Purpose | Value |
|---|---|---|
| ExtendedProperties/1.0#RepositoryBinding | Complete JSON structure | See 2.1 |
| ExtendedProperties/1.0#IntegrationName | Integration name | string |
| ExtendedProperties/1.0#ServiceName | Service name | string |
| ExtendedProperties/1.0#ServiceSystemName | Service system | string |
| ExtendedProperties/1.0#ServiceDirection | Service direction | int or string |
| ExtendedProperties/1.0#ExternalServiceRelationName | External service name | string |
| ExtendedProperties/1.0#ExternalServiceRelationSystemName | External service system | string |
| ExtendedProperties/1.0#InternalServiceRelationName | Internal service name | string |
| ExtendedProperties/1.0#InternalServiceRelationDirection | Internal service direction | int or string |
| ExtendedProperties/1.0#ContractName | Contract name | string |
| ExtendedProperties/1.0#ContractSystemName | Contract system | string |
Available from Nodinite 4.3.0.72+
2.1 Repository Binding JSON
Create complete repository structures with a single JSON value. Replaces individual context keys (2.2-2.5).
Note
The structure documented below is for Nodinite v7. Earlier versions may have different field requirements.
Structure:
{
"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",
"System": { "Name": "System" }
}],
"BPMs": [{ /* See section 2.2 */ }]
}
}
Root Object
| Field | Required | Purpose | Example |
|---|---|---|---|
| Name | ✅ | Transport Contract name (can be same for all services) | Default, Standard Transport Contract |
| Service | ✅ | Service definition | Service object below |
Service Object
| Field | Required | Purpose | Example |
|---|---|---|---|
| Name | ✅ | Service name | Bank - Loan Request, INT1337-RCV-Order-Incoming |
| Direction | ✅ | Data flow direction | Send, Receive, TwoWaySend, TwoWayReceive |
| System | ✅ | Hosting system | { "Name": "Mule" } |
| Integration | ✅ | Parent integration | { "Name": "INT004 - Bank (2 Way)" } |
| ExternalServiceRelations | ❌ | Cross-system connections | Array of external service objects |
| InternalServiceRelations | ❌ | Same-system connections | Array of internal service objects |
| BPMs | ❌ | Business process positioning | Array of BPM objects (see 2.2) |
ExternalServiceRelations (Cross-System)
Links to services in different systems. Used to show cross-system integration flows.
| Field | Required | Purpose | Example |
|---|---|---|---|
| Name | ✅ | Target service name | Bank Service, Broker A - Get Quote |
| Direction | ✅ | Target service direction | Send, Receive |
| System | ✅ | 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.
| Field | Required | Purpose | Example |
|---|---|---|---|
| Name | ✅ | Target service name (same system) | Receive Quotes, Order Router |
| Direction | ✅ | Target service direction | Send, Receive |
| System | ✅ | Target system (same as current) | { "Name": "Mule" } |
Example
{
"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",
"System": { "Name": "Mule" }
}]
}
}
For Swagger/Log API:
"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\",\"System\":{\"Name\":\"Broker A\"}}],\"InternalServiceRelations\":[{\"Name\":\"Bank - Loan Request\"}]}}"
2.2 Business Process Model (BPM)
BPMs organize process steps as a matrix: domains (rows) × steps (columns).
Step 0 Step 1 Step 2
Sales Order [empty] [empty]
Received
Planning [empty] Order [empty]
Planned
Logistics [empty] [empty] Order
Packed
Note
Steps are 0-based in code (0, 1, 2) but display as 1-based in UI (Step 1, Step 2, Step 3). Step numbers must always be non-negative (0 or positive integers).
BPM Object
| Field | Required | Purpose | Example |
|---|---|---|---|
| Name | ✅ | Process flow name | INT1337 - Order-to-Cash Flow |
| ArtifactRenaming | ❌ | UI display name | Order Received from Customer |
| Domain | ✅ | Row position | { "Name": "Sales", "Index": 0 } |
| Step | ✅ | Column position (0-based) | 0, 1, 2 |
| ServiceRelations | ❌ | Flow arrows between cells | Array of service relation objects |
Domain Object
| Field | Required | Purpose | Example |
|---|---|---|---|
| Name | ✅ | Business domain | Sales, Planning, Logistics, Finance |
| Index | ✅ | Row order (0-based) | 0, 1, 2, 3 |
ServiceRelations (BPM Flow Arrows)
Links between BPM process steps, displayed as arrows in the BPM matrix visualization.
| Field | Required | Purpose | Values |
|---|---|---|---|
| Name | ✅ | Target service name | Service name string |
| Direction | ✅ | Target service flow direction | Send, Receive, TwoWay |
| System | ✅ | Target service system | { "Name": "System Name" } |
| Domain | ✅ | Target row | { "Name": "Sales", "Index": 0 } |
| Step | ✅ | Target column (0-based) | 0, 1, 2 |
| ArtifactRenaming | ❌ | Relation display name | String |
| Label | ❌ | Arrow label text | String |
| ConnectorStyle | ❌ | Connector line style | 0=Arrow, 1=DottedArrow, 2=Line, 3=DottedLine, 4=StraightArrow, 5=StraightDottedArrow |
| SourceAttachmentPoint | ❌ | Arrow start position | 1=Left, 2=Up, 3=Right, 4=Down |
| TargetAttachmentPoint | ❌ | Arrow end position | 1=Left, 2=Up, 3=Right, 4=Down |
Important
Direction and System fields are required for proper BPM reconstruction. The Direction refers to the target service's direction, not the current service. Including System and Domain in every ServiceRelation ensures Nodinite can reconstruct the process flow even when events arrive out of sequence due to network delays, retries, or asynchronous processing.
BPM Example
"BPMs": [{
"Name": "INT1337 - Order-to-Cash Flow",
"ArtifactRenaming": "Order Entry in ERP",
"Domain": { "Name": "Planning", "Index": 1 },
"Step": 1,
"ServiceRelations": [{
"Name": "INT1337-RCV-Order-Incoming",
"Direction": "Receive",
"System": { "Name": "Portal" },
"Domain": { "Name": "Sales", "Index": 0 },
"Step": 0,
"Label": "From Portal",
"ConnectorStyle": 0,
"SourceAttachmentPoint": 3,
"TargetAttachmentPoint": 1
}]
}]
2.3 Individual Context Keys (Legacy)
Use when not using the complete JSON structure.
Integration
| Context Key | Value |
|---|---|
| ExtendedProperties/1.0#IntegrationName | string (e.g., INT001 - X to Y) |
Note
Integration created only when Service or Contract is also created.
Service
| Context Key | Value | Purpose |
|---|---|---|
| ExtendedProperties/1.0#ServiceName | string |
Service name |
| ExtendedProperties/1.0#ServiceSystemName | string |
System name (auto-created) |
| ExtendedProperties/1.0#ServiceDirection | string/int |
Direction (see table below) |
Direction Values:
| String | Integer |
|---|---|
| None | -2 |
| Unknown | -1 |
| Receive | 0 |
| Send | 1 |
| TwoWayReceive | 10 |
| TwoWaySend | 11 |
External Service Relations
| Context Key | Value | Purpose |
|---|---|---|
| ExtendedProperties/1.0#ExternalServiceRelationName | string |
Target service in another system |
| ExtendedProperties/1.0#ExternalServiceRelationSystemName | string |
Target system name |
Internal Service Relations
| Context Key | Value | Purpose |
|---|---|---|
| ExtendedProperties/1.0#InternalServiceRelationName | string |
Target service in same system |
| ExtendedProperties/1.0#InternalServiceRelationDirection | string/int |
Direction (see table above) |
Contract
Note
Requires UseContracts system parameter =
true.
| Context Key | Value | Purpose |
|---|---|---|
| ExtendedProperties/1.0#ContractName | string |
Contract name |
| ExtendedProperties/1.0#ContractSystemName | string |
System name (optional) |
3. Event Property Overrides
Override default Log Event properties. System adds comments to indicate overridden values.
| Context Key | Value Type | Purpose |
|---|---|---|
| ExtendedProperties/1.0#LogText | string |
Custom log text |
| ExtendedProperties/1.0#LogStatus | long/string |
Override log status code |
| ExtendedProperties/1.0#ProcessingServerName | string (255) |
Server name |
| ExtendedProperties/1.0#ProcessName | string (512) |
Process name |
| ExtendedProperties/1.0#ProcessingModuleName | string |
Module name |
| ExtendedProperties/1.0#ProcessingModuleType | string (512) |
Module type |
| ExtendedProperties/1.0#ProcessingTime | int (ms) |
Processing duration |
| ExtendedProperties/1.0#ServiceInstanceActivityId | Guid |
Activity identifier |
Log Text
| Context Key | Value |
|---|---|
| ExtendedProperties/1.0#LogText | string |
Example:
{"ExtendedProperties/1.0#LogText": "The node that unites different systems. Or as we call it Nodinite"}
Log Status
New 5.3.0.40 Override the Log Status set by Log Agents (e.g., Azure Logic Apps Logging).
| Context Key | Value |
|---|---|
| ExtendedProperties/1.0#LogStatus | long or string |
Examples:
{"ExtendedProperties/1.0#LogStatus": 42}
{"ExtendedProperties/1.0#LogStatus": "42"}
