How does BPM correlate events across different systems?
Quick Answer
You give Nodinite a correlation key, and it does the rest: it matches by itself which BPMs can display the events of the interchange. Nothing in the logging code refers to a BPM, so you can add, change, or overlay BPMs later. Three pieces of configuration make it work:
- A Log View groups events by a field that every event of the transaction shares. In the Order-to-Cash demo that's Application interchange id.
- Search Fields make business values searchable, such as Order Number. An administrator adds a Search Field Expression per Message Type, reading the payload, a context property, or a Log Event field. No expression, no value.
- Services place each event on a step: the event's Endpoint and Message Type match a Transport Contract of the Service in a BPM cell.
For the full picture, see End-to-End Process Tracking.
How the Pieces Fit
JSON] --> LE[fa:fa-bolt Log Events] E[fa:fa-building ERP
XML] --> LE W[fa:fa-warehouse WMS
flat file] --> LE LE --> SF[fa:fa-magnifying-glass Search Field
Order Number] LE --> G[fa:fa-layer-group Log View group by
Application interchange id] SF --> R[fa:fa-arrow-progress One order
on the BPM] G --> R style LE fill:#2678BD style SF fill:#E47528 style G fill:#E47528 style R fill:#93d16d
Different systems and formats log to Nodinite. The search finds the order; the group-by key collects all its events.
Same Value, Different Formats
The O2C demo rotates its messages between JSON, XML, and flat file, yet one expression covers them all. Every event carries the order number as the context property OrderNumber, so the O2C - Order ID Search Field has a single Message Context Key expression applied to all nine O2C Message Types:

One context-key expression, nine Message Types, three payload formats.
When the value only exists in the payload, add one expression per Message Type with the plugin that fits the format:
| Format | Plugin | Expression (illustration) |
|---|---|---|
| XML | XPath | //Order/OrderNumber |
| JSON | JSON Path | $.order.orderNumber |
| Flat file | Flat File CSV | column 2 |
To search on a Log Event field instead, such as the interchange id, use the Formula function field('ApplicationInterchangeId').
Test expressions on real events before you rely on them, and re-index if you add one after events are logged; see Search Fields.
Symptoms and Fixes
| Symptom | Likely cause | Fix |
|---|---|---|
| Search on Order Number finds nothing | No Search Field Expression for the event's Message Type | Add one, test it, and re-index |
| One order shows as several groups | Events don't share the group-by value | Log the same key, such as an interchange id, on every event |
| Steps found but stay gray on the BPM | Event not bound to the Service in that cell | Check the Service's Transport Contracts, or the Repository Binding |
Order Number differs per system (10010 vs ORD-10010) |
Systems use different formats | Normalize in the expression with Formula functions such as replace or substring |
What About Search Field Links?
Search Field Links don't correlate events. They turn an extracted value into a link to an external system, such as the order in your ERP.
Next Steps
Related Topics
- Business Process Model (BPM) - Main BPM overview
- Search Fields - Business data extraction
- Search Field Expressions - Extraction plugins
- Message Types - Decide which expressions run
- Order-to-Cash demo
- Troubleshoot-in-Minutes Scenario
- All FAQs - See all BPM FAQs