- 5 minutes to read

How does BPM correlate events across different systems?

Nodinite uses Search Fields to correlate events across all systems. This page explains:

  • Architecture showing cross-system correlation flow
  • Comparison matrix of correlation methods and use cases
  • How payload extraction works with different formats (XML, JSON, CSV)
  • Real-world multi-system scenario with detailed examples
  • ⚠️ What happens without proper correlation configuration

Extract business identifiers (Order ID, Invoice Number, Customer ID) from message payloads—BPM correlates transactions across CRM, ERP, payment gateways, warehouses, and shipping systems regardless of technology differences.

Quick Answer

Nodinite extracts business identifiers from message payloads using Search Field Expressions. When each system logs an event, these expressions extract the same business identifier (Order ID, Invoice Number, Customer ID) from different payload formats. BPM uses these extracted values to group and track related events across all systems—showing complete cross-system transaction flows.

Cross-System Correlation Architecture

graph TB subgraph "Systems - Different Technologies" CRM[fa:fa-users CRM System
Salesforce REST API] Payment[fa:fa-credit-card Payment Gateway
Stripe Webhooks] ERP[fa:fa-building ERP System
SAP SOAP Service] Warehouse[fa:fa-warehouse Warehouse
MSMQ Messages] Shipping[fa:fa-truck Shipping
CSV File Drops] end subgraph "Nodinite Correlation Engine" LogEvents[fa:fa-database Log Events
All Messages Stored] MessageTypes[fa:fa-tags Message Types
Format Recognition] SearchFields[fa:fa-magnifying-glass Search Fields
ID Extraction] end subgraph "Business Process View" BPM[fa:fa-project-diagram BPM
Correlated Transaction Flow] end CRM -->|"JSON: customer_id: 12345"| LogEvents Payment -->|"JSON: orderId: 67890"| LogEvents ERP -->|"XML: <InvoiceNum>INV-001</InvoiceNum>"| LogEvents Warehouse -->|"XML: <OrderRef>67890</OrderRef>"| LogEvents Shipping -->|"CSV: 12345,67890,..."| LogEvents LogEvents -->|"Identify Format"| MessageTypes MessageTypes -->|"Extract Identifiers"| SearchFields SearchFields -->|"Customer ID: 12345
Order ID: 67890
Invoice: INV-001"| BPM style LogEvents fill:#e8f5e9,stroke:#4caf50,stroke-width:3px style SearchFields fill:#fff3e0,stroke:#ff9800,stroke-width:3px style BPM fill:#e3f2fd,stroke:#2196f3,stroke-width:3px

Each system uses different formats—Search Fields extract the same business identifiers for correlation.

Each system uses different formats—Search Fields extract the same business identifiers for correlation.

Correlation Methods Comparison

Correlation Method Scope Timing Configuration Best For
Single Search Field One business identifier (Order ID) Real-time as events arrive Simple—one Search Field Expression Linear workflows where one ID tracks entire process
Multiple Search Fields Several identifiers (Order ID + Invoice ID + Customer ID) Real-time—extracts all IDs Moderate—multiple expressions per Message Type Complex workflows where transactions split/merge
Linked Search Fields Hierarchical relationships (Customer → Orders → Line Items) Real-time with parent-child linking Advanced—define relationships in Search Field config Nested transactions, drill-down analysis
Conditional Extraction Context-dependent IDs (B2B vs B2C) Real-time with logic evaluation Advanced—XPath/JSONPath with conditions Multi-tenant, variant workflows

How Payload Extraction Works

XML Message Example

CRM System logs Order Created:

<Order>
    <OrderID>12345</OrderID>
    <CustomerID>CUST-789</CustomerID>
    <InvoiceNumber>INV-2025-001</InvoiceNumber>
</Order>

Search Field Expressions:

  • Order ID: XPath: //OrderID/text() → Extracts 12345
  • Customer ID: XPath: //CustomerID/text() → Extracts CUST-789
  • Invoice Number: XPath: //InvoiceNumber/text() → Extracts INV-2025-001

JSON Message Example

Payment Gateway logs Payment Processed:

{
    "transaction": {
        "orderId": "12345",
        "customerId": "CUST-789",
        "amount": 549.99,
        "status": "approved"
    }
}

Search Field Expressions:

  • Order ID: JSONPath: $.transaction.orderId → Extracts 12345
  • Customer ID: JSONPath: $.transaction.customerId → Extracts CUST-789

CSV File Example

Shipping System drops fulfillment file:

CustomerID,OrderID,TrackingNumber,Status
CUST-789,12345,1Z999AA10123456784,Shipped

Search Field Expressions:

  • Order ID: CSV Column 2 → Extracts 12345
  • Customer ID: CSV Column 1 → Extracts CUST-789
  • Tracking Number: CSV Column 3 → Extracts 1Z999AA10123456784

Real-World Multi-System Scenario

E-Commerce Order-to-Cash Process

Business Context: Customer places order → payment processed → ERP invoice → warehouse fulfillment → shipping notification.

Systems involved: 5 different platforms, 3 different message formats.

Step-by-Step Correlation

1. Salesforce CRM - Order Created
  • Message Format: REST API JSON
  • Search Field Extraction: $.order.idOrder ID: 12345, $.customer.idCustomer ID: CUST-789
  • BPM Step: "Order Entry" domain "Sales"
2. Stripe Payment Gateway - Payment Approved
  • Message Format: Webhook JSON
  • Search Field Extraction: $.data.object.metadata.order_idOrder ID: 12345
  • BPM Step: "Payment Processing" domain "Finance"
  • Correlation: Matches Order ID 12345 from CRM → Shows as same transaction
3. SAP ERP - Invoice Generated
  • Message Format: SOAP XML
  • Search Field Extraction: XPath //Order/OrderNumberOrder ID: 12345, XPath //Invoice/InvoiceNumberInvoice: INV-2025-001
  • BPM Step: "Invoicing" domain "Finance"
  • Correlation: Matches Order ID 12345 → Adds Invoice ID INV-2025-001 to transaction
4. WMS (Warehouse) - Pick List Created
  • Message Format: MSMQ XML
  • Search Field Extraction: XPath //OrderRefOrder ID: 12345
  • BPM Step: "Picking" domain "Warehouse"
  • Correlation: Matches Order ID 12345 → Shows warehouse received order
5. FedEx Shipping - Shipment Dispatched
  • Message Format: CSV File
  • Search Field Extraction: CSV Column 2 → Order ID: 12345, CSV Column 3 → Tracking: 1Z999AA10123456784
  • BPM Step: "Shipping" domain "Warehouse"
  • Correlation: Matches Order ID 12345 → Adds tracking number, completes transaction

BPM Visualization Result

Single correlated view shows:

Sales Finance Finance Warehouse Warehouse
Order Entry Payment Processing Invoicing Picking Shipping
CRM Stripe SAP WMS FedEx
Order 12345 Order 12345 INV-2025-001 Order 12345 Track: 1Z999...784

Click any Search Field Link (Order ID 12345) → See ALL 5 events across all systems instantly.

Time saved: Traditional approach requires logging into 5 different systems and manually correlating timestamps. With Nodinite BPM: instant cross-system visibility.

What Happens Without Proper Correlation

Symptom: BPM shows fragmented, incomplete transactions—each event appears as separate unrelated instance.

Root causes:

Issue ❌ Impact Fix
Missing Search Fields Events log but don't correlate Add Search Field Expressions to extract business IDs
Inconsistent ID formats "12345" vs "ORD-12345" vs "12345.0" Normalize IDs using Search Field formatting rules
Wrong Message Type Search Field Expressions not applied Verify Message Type detection logic
Null/Empty IDs Events log but have no correlation value Add error handling to Search Field Expressions, validate source data
Special characters IDs with spaces, dashes, or Unicode break correlation Use Search Field sanitization rules

Configuration Steps

To enable cross-system correlation:

  1. Define Message Types - Teach Nodinite to recognize each message format (CRM order XML, payment gateway JSON, etc.)
  2. Create Search Fields - Define business identifiers (Order ID, Customer ID, Invoice Number)
  3. Add Search Field Expressions - Configure XPath/JSONPath/Regex to extract IDs from each Message Type
  4. Test extraction - Send sample messages, verify Search Fields populate correctly
  5. Configure BPM - Use Search Fields for correlation in BPM definition
  6. Validate - Trigger real transaction, verify all systems appear in single BPM instance

Next Step

Ready to configure cross-system correlation? Learn how to Add or manage BPM with Search Field correlation, or explore Search Field Expressions for advanced extraction logic.