- 3 minutes to read

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:

  1. 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.
  2. 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.
  3. 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

flowchart LR P[fa:fa-globe Portal
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:

Search Field Expressions for O2C - Order ID: Message Context Key OrderNumber applied to nine O2C Message Types (7.11)
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

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