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
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()→ Extracts12345 - Customer ID: XPath:
//CustomerID/text()→ ExtractsCUST-789 - Invoice Number: XPath:
//InvoiceNumber/text()→ ExtractsINV-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→ Extracts12345 - Customer ID: JSONPath:
$.transaction.customerId→ ExtractsCUST-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.id→ Order ID: 12345,$.customer.id→ Customer 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_id→ Order 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/OrderNumber→ Order ID: 12345, XPath//Invoice/InvoiceNumber→ Invoice: 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
//OrderRef→ Order 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:
- Define Message Types - Teach Nodinite to recognize each message format (CRM order XML, payment gateway JSON, etc.)
- Create Search Fields - Define business identifiers (Order ID, Customer ID, Invoice Number)
- Add Search Field Expressions - Configure XPath/JSONPath/Regex to extract IDs from each Message Type
- Test extraction - Send sample messages, verify Search Fields populate correctly
- Configure BPM - Use Search Fields for correlation in BPM definition
- 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.
Related Topics
- Business Process Model (BPM) - Main BPM overview
- Search Fields - Business data extraction for correlation
- Search Field Expressions - Configure extraction logic (XPath, JSONPath, Regex)
- Message Types - Define transaction message formats
- Search Field Links - Enable rapid cross-system troubleshooting
- Troubleshoot-in-Minutes Scenario - See correlation in action
- All FAQs - See all BPM FAQs