- 11 minutes to read

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

Next Steps