O2C Integration Landscape and Architecture
Overview
The Order-to-Cash (O2C) demo demonstrates a complete integration landscape spanning 4 systems, 7 services, and 6 service relations. This document visualizes the complete integration topology, service architecture, and data flow patterns.
Integration Topology
Integration Definition
{
"Name": "INT-O2C-2025",
"Description": "Order-to-Cash Complete Process",
"Owner": "Logistics & Finance",
"CreatedBy": "Nodinite Log Events (Context Options)",
"ProcessDomains": ["Sales", "Planning", "Logistics", "Finance"],
"MessageTypes": 7,
"TotalEndpoints": 7,
"ServiceRelations": 6
}
Systems and Services Architecture
System 1: Portal (Sales Domain)
System Purpose: Receives customer orders and delivers confirmations
{
"Name": "Portal",
"Domain": "Sales",
"Description": "Customer Portal and Order Reception",
"Services": [
{
"Name": "RCV-Order-Incoming",
"Description": "Receive orders from customers",
"Direction": "Receive",
"Endpoint": "Portal-OrderReceived-Drop",
"EndpointUri": "C:\\Integration\\Portal\\Orders\\In",
"EndpointTypeId": 60,
"MessageType": "O2C.Order.Received/1.0",
"MessageFormat": "JSON",
"LogAgent": "BizTalk Log Agent",
"LogAgentValueId": -5
},
{
"Name": "SND-Confirm-Outgoing",
"Description": "Send order confirmations to customers",
"Direction": "Send",
"Endpoint": "Portal-Confirmation-Send",
"EndpointUri": "smtp://notifications@portal.local",
"EndpointTypeId": 60,
"MessageType": "O2C.Order.Confirmation/1.0",
"MessageFormat": "CSV",
"LogAgent": "BizTalk Log Agent",
"LogAgentValueId": -5,
"ReceivesFromService": "ERP.ENT-Order-Entry"
}
]
}
System 2: ERP (Planning Domain)
System Purpose: Order entry, planning, and scheduling
{
"Name": "ERP",
"Domain": "Planning",
"Description": "Enterprise Resource Planning System",
"Services": [
{
"Name": "ENT-Order-Entry",
"Description": "Enter and confirm orders in ERP",
"Direction": "Send",
"Endpoint": "ERP-OrderEntry-Send",
"EndpointUri": "http://erp.local:8080/orders",
"EndpointTypeId": 60,
"MessageType": "O2C.Order.Entry/1.0",
"MessageFormat": "XML",
"LogAgent": "BizTalk Log Agent",
"LogAgentValueId": -5,
"ReceivesFromService": "Portal.RCV-Order-Incoming",
"SendsToService": "Portal.SND-Confirm-Outgoing"
},
{
"Name": "PLN-Order-Scheduled",
"Description": "Schedule orders for production/fulfillment",
"Direction": "Send",
"Endpoint": "ERP-Planning-Send",
"EndpointUri": "http://erp.local:8080/planning",
"EndpointTypeId": 60,
"MessageType": "O2C.Order.Scheduled/1.0",
"MessageFormat": "JSON",
"LogAgent": "BizTalk Log Agent",
"LogAgentValueId": -5,
"ReceivesFromService": "Portal.SND-Confirm-Outgoing",
"SendsToService": "WMS.PKG-Order-Packed"
}
]
}
System 3: WMS (Logistics Domain)
System Purpose: Warehouse operations, packing, and delivery
{
"Name": "WMS",
"Domain": "Logistics",
"Description": "Warehouse Management System",
"Services": [
{
"Name": "PKG-Order-Packed",
"Description": "Pack orders for shipment",
"Direction": "Send",
"Endpoint": "WMS-Packing-Send",
"EndpointUri": "http://wms.local:9000/packing",
"EndpointTypeId": 60,
"MessageType": "O2C.Order.Ready/1.0",
"MessageFormat": "XML",
"LogAgent": "BizTalk Log Agent",
"LogAgentValueId": -5,
"ReceivesFromService": "ERP.PLN-Order-Scheduled",
"SendsToService": "WMS.DEL-Order-Delivered"
},
{
"Name": "DEL-Order-Delivered",
"Description": "Confirm orders delivered to customers",
"Direction": "Send",
"Endpoint": "WMS-Delivery-Send",
"EndpointUri": "http://wms.local:9000/delivery",
"EndpointTypeId": 60,
"MessageType": "O2C.Order.Shipped/1.0",
"MessageFormat": "PSV",
"LogAgent": "BizTalk Log Agent",
"LogAgentValueId": -5,
"ReceivesFromService": "WMS.PKG-Order-Packed",
"SendsToService": "ERP-Finance.INV-Order-Invoiced"
}
]
}
System 4: ERP-Finance (Finance Domain)
System Purpose: Invoice creation and revenue recognition
{
"Name": "ERP-Finance",
"Domain": "Finance",
"Description": "Financial and Accounting System",
"Services": [
{
"Name": "INV-Order-Invoiced",
"Description": "Create invoices for completed orders",
"Direction": "Send",
"Endpoint": "Finance-Invoice-Send",
"EndpointUri": "http://erp-finance.local:8080/invoices",
"EndpointTypeId": 60,
"MessageType": "O2C.Order.Invoice/1.0",
"MessageFormat": "JSON",
"LogAgent": "BizTalk Log Agent",
"LogAgentValueId": -5,
"ReceivesFromService": "WMS.DEL-Order-Delivered"
}
]
}
Service Relations Map
External Service Relations (Between Systems)
Service relations represent data flow and integration points between services across different systems.
┌─────────────────────────────────────────────────────────────────────────────┐
│ Order-to-Cash Integration Landscape │
└─────────────────────────────────────────────────────────────────────────────┘
Customer Order
│
↓
┌──────────────────┐
│ PORTAL │
│ │
│ RCV-Order-Incoming
│ (Receive) │
└────────┬─────────┘
│
Order Received (JSON)
│
↓
┌──────────────────┐
│ ERP │
│ │
│ ENT-Order-Entry │
│ (Send) │
└────────┬─────────┘
│
Order Confirmation (XML)
│
↓
┌──────────────────┐
│ PORTAL │
│ │
│SND-Confirm-Out. │
│ (Send) │
└────────┬─────────┘
│
To Customer (CSV)
│
↓
┌──────────────────┐
│ ERP │
│ │
│PLN-Order-Sched. │
│ (Send) │
└────────┬─────────┘
│
Schedule Plan (JSON)
│
↓
┌──────────────────┐
│ WMS │
│ │
│ PKG-Order-Packed │
│ (Send) │
└────────┬─────────┘
│
Packing Ready (XML)
│
↓
┌──────────────────┐
│ WMS │
│ │
│ DEL-Order-Deliv. │
│ (Send) │
└────────┬─────────┘
│
Delivery Proof (PSV)
│
↓
┌──────────────────┐
│ ERP-Finance │
│ │
│ INV-Order-Inv. │
│ (Send) │
└────────┬─────────┘
│
Invoice Created (JSON)
│
↓
To Accounting
Service Relations Detail Table
# | From Service | From System | To Service | To System | Message Type | Format | Processing Time |
---|---|---|---|---|---|---|---|
1 | RCV-Order-Incoming | Portal | ENT-Order-Entry | ERP | O2C.Order.Received/1.0 | JSON | 45 ms |
2 | ENT-Order-Entry | ERP | SND-Confirm-Outgoing | Portal | O2C.Order.Entry/1.0 | XML | 156 ms |
3 | SND-Confirm-Outgoing | Portal | PLN-Order-Scheduled | ERP | O2C.Order.Confirmation/1.0 | CSV | 78 ms |
4 | PLN-Order-Scheduled | ERP | PKG-Order-Packed | WMS | O2C.Order.Scheduled/1.0 | JSON | 312 ms |
5 | PKG-Order-Packed | WMS | DEL-Order-Delivered | WMS | O2C.Order.Ready/1.0 | XML | 89 ms |
6 | DEL-Order-Delivered | WMS | INV-Order-Invoiced | ERP-Finance | O2C.Order.Shipped/1.0 | PSV | 234 ms |
7 | INV-Order-Invoiced | ERP-Finance | (End) | - | O2C.Order.Invoice/1.0 | JSON | 267 ms |
Transport Contracts
Each step in the O2C process defines a Transport Contract binding the Endpoint, Message Type, and Service together.
{
"Integration": "INT-O2C-2025",
"TransportContracts": [
{
"Name": "Order Reception (JSON)",
"Service": "RCV-Order-Incoming",
"System": "Portal",
"Direction": "Receive",
"Endpoint": "Portal-OrderReceived-Drop",
"EndpointUri": "C:\\Integration\\Portal\\Orders\\In",
"MessageType": "O2C.Order.Received/1.0",
"PayloadFormat": "JSON",
"AvgPayloadSize": "1.2 KB"
},
{
"Name": "Order Entry Confirmation (XML)",
"Service": "ENT-Order-Entry",
"System": "ERP",
"Direction": "Send",
"Endpoint": "ERP-OrderEntry-Send",
"EndpointUri": "http://erp.local:8080/orders",
"MessageType": "O2C.Order.Entry/1.0",
"PayloadFormat": "XML",
"AvgPayloadSize": "1.8 KB"
},
{
"Name": "Order Confirmation Delivered (CSV)",
"Service": "SND-Confirm-Outgoing",
"System": "Portal",
"Direction": "Send",
"Endpoint": "Portal-Confirmation-Send",
"EndpointUri": "smtp://notifications@portal.local",
"MessageType": "O2C.Order.Confirmation/1.0",
"PayloadFormat": "CSV",
"AvgPayloadSize": "0.8 KB"
},
{
"Name": "Order Planned (JSON)",
"Service": "PLN-Order-Scheduled",
"System": "ERP",
"Direction": "Send",
"Endpoint": "ERP-Planning-Send",
"EndpointUri": "http://erp.local:8080/planning",
"MessageType": "O2C.Order.Scheduled/1.0",
"PayloadFormat": "JSON",
"AvgPayloadSize": "2.1 KB"
},
{
"Name": "Order Ready for Transport (XML)",
"Service": "PKG-Order-Packed",
"System": "WMS",
"Direction": "Send",
"Endpoint": "WMS-Packing-Send",
"EndpointUri": "http://wms.local:9000/packing",
"MessageType": "O2C.Order.Ready/1.0",
"PayloadFormat": "XML",
"AvgPayloadSize": "1.5 KB"
},
{
"Name": "Order Delivered (PSV)",
"Service": "DEL-Order-Delivered",
"System": "WMS",
"Direction": "Send",
"Endpoint": "WMS-Delivery-Send",
"EndpointUri": "http://wms.local:9000/delivery",
"MessageType": "O2C.Order.Shipped/1.0",
"PayloadFormat": "PSV",
"AvgPayloadSize": "0.9 KB"
},
{
"Name": "Order Invoiced (JSON)",
"Service": "INV-Order-Invoiced",
"System": "ERP-Finance",
"Direction": "Send",
"Endpoint": "Finance-Invoice-Send",
"EndpointUri": "http://erp-finance.local:8080/invoices",
"MessageType": "O2C.Order.Invoice/1.0",
"PayloadFormat": "JSON",
"AvgPayloadSize": "2.3 KB"
}
]
}
Repository Context Options Implementation
Complete RepositoryBinding JSON for Step 1
When logging the first O2C event, include this Context Option:
{
"ExtendedProperties/1.0#RepositoryBinding": {
"Name": "Order Reception Transport",
"Service": {
"Name": "RCV-Order-Incoming",
"Direction": "Receive",
"System": {
"Name": "Portal"
},
"Integration": {
"Name": "INT-O2C-2025"
},
"ExternalServiceRelations": [],
"InternalServiceRelations": []
}
}
}
Complete RepositoryBinding JSON for Step 2
This step builds external relations to the previous step:
{
"ExtendedProperties/1.0#RepositoryBinding": {
"Name": "Order Entry Transport",
"Service": {
"Name": "ENT-Order-Entry",
"Direction": "Send",
"System": {
"Name": "ERP"
},
"Integration": {
"Name": "INT-O2C-2025"
},
"ExternalServiceRelations": [
{
"Name": "RCV-Order-Incoming",
"System": {
"Name": "Portal"
}
},
{
"Name": "SND-Confirm-Outgoing",
"System": {
"Name": "Portal"
}
}
],
"InternalServiceRelations": []
}
}
}
Complete RepositoryBinding JSON for Step 4 (Multi-Relation)
{
"ExtendedProperties/1.0#RepositoryBinding": {
"Name": "Order Planning Transport",
"Service": {
"Name": "PLN-Order-Scheduled",
"Direction": "Send",
"System": {
"Name": "ERP"
},
"Integration": {
"Name": "INT-O2C-2025"
},
"ExternalServiceRelations": [
{
"Name": "SND-Confirm-Outgoing",
"System": {
"Name": "Portal"
}
},
{
"Name": "PKG-Order-Packed",
"System": {
"Name": "WMS"
}
}
],
"InternalServiceRelations": []
}
}
}
System Interactions Summary
1. Portal (RCV) ← Customer
- Trigger: Customer submits order
- Message: O2C.Order.Received/1.0 (JSON)
- Status: Log Status = 0 (success)
- Contract: Order Reception (JSON)
2. ERP (ENT) ← Portal (RCV)
- Trigger: Order received event logged
- Message: O2C.Order.Entry/1.0 (XML)
- Status: Log Status = 0 (success)
- Contract: Order Entry Confirmation (XML)
- Relation Type: External (Portal → ERP)
3. Portal (SND) ← ERP (ENT)
- Trigger: Order entry complete
- Message: O2C.Order.Confirmation/1.0 (CSV)
- Status: Log Status = 0 (success)
- Contract: Order Confirmation Delivered (CSV)
- Relation Type: External (ERP → Portal)
4. ERP (PLN) ← Portal (SND)
- Trigger: Order confirmation sent
- Message: O2C.Order.Scheduled/1.0 (JSON)
- Status: Log Status = 0 (success)
- Contract: Order Planned (JSON)
- Relation Type: External (Portal → ERP)
5. WMS (PKG) ← ERP (PLN)
- Trigger: Order scheduled for fulfillment
- Message: O2C.Order.Ready/1.0 (XML)
- Status: Log Status = 0 (success)
- Contract: Order Ready for Transport (XML)
- Relation Type: External (ERP → WMS)
6. WMS (DEL) ← WMS (PKG)
- Trigger: Order packing complete
- Message: O2C.Order.Shipped/1.0 (PSV)
- Status: Log Status = 0 (success)
- Contract: Order Delivered (PSV)
- Relation Type: Internal (WMS → WMS)
7. ERP-Finance (INV) ← WMS (DEL)
- Trigger: Delivery confirmed
- Message: O2C.Order.Invoice/1.0 (JSON)
- Status: Log Status = 0 (success)
- Contract: Order Invoiced (JSON)
- Relation Type: External (WMS → Finance)
Domain Decomposition
Sales Domain
Domain: Sales
├── System: Portal
│ ├── Service: RCV-Order-Incoming (Receive)
│ │ └── Message: O2C.Order.Received/1.0 (JSON)
│ └── Service: SND-Confirm-Outgoing (Send)
│ └── Message: O2C.Order.Confirmation/1.0 (CSV)
Planning Domain
Domain: Planning
├── System: ERP
│ ├── Service: ENT-Order-Entry (Send)
│ │ └── Message: O2C.Order.Entry/1.0 (XML)
│ └── Service: PLN-Order-Scheduled (Send)
│ └── Message: O2C.Order.Scheduled/1.0 (JSON)
Logistics Domain
Domain: Logistics
├── System: WMS
│ ├── Service: PKG-Order-Packed (Send)
│ │ └── Message: O2C.Order.Ready/1.0 (XML)
│ └── Service: DEL-Order-Delivered (Send)
│ └── Message: O2C.Order.Shipped/1.0 (PSV)
Finance Domain
Domain: Finance
├── System: ERP-Finance
│ └── Service: INV-Order-Invoiced (Send)
│ └── Message: O2C.Order.Invoice/1.0 (JSON)
Message Flow Correlation
All messages in the O2C process are correlated through:
- CorrelationId:
PIC-001-{SequenceNumber}
(e.g., PIC-001-0001) - ApplicationInterchangeId: Order ID (e.g., ORD-10001)
- Context Properties: Carried forward through all 7 steps