- 5 minutes to read

1. Order Received from Customer

Step Overview

Step 1 in the Order-to-Cash process occurs when a customer order is received through the company's portal. This is the entry point for all orders into the system and triggers downstream planning and fulfillment activities.

Message Details

  • Message Type: O2C.Order.Received/1.0
  • Domain: Sales
  • System: Portal
  • Service: RCV-Order-Incoming
  • Direction: Receive (Incoming from external customer)
  • Format: JSON
  • Log Status: 0 (Success) for complete orders, -1337 if order reception fails

Business Data (Happy Path)

All orders in the demo use the same customer and product data:

  • Order ID: ORD-10001 through ORD-11000 (increments by 1 per interchange)
  • Customer ID: CUST-001
  • Customer Name: Acme Corporation
  • Customer Email: orders@acme.example.com
  • Product SKU: SKU-DEMO-001
  • Product Description: Demo Widget
  • Quantity: 1
  • Unit Price: USD 99.95
  • Order Total: USD 99.95
  • Currency: USD

Sample JSON Message

This is the raw message payload that would be base64-encoded in the Log Event Body field.

{
  "batchId": "batch-2025-10-14-001",
  "generatedAt": "2025-10-14T12:00:00Z",
  "orderId": "ORD-10001",
  "customer": {
    "customerId": "CUST-001",
    "name": "Acme Corporation",
    "email": "orders@acme.example.com"
  },
  "orderDate": "2025-10-14T09:15:00Z",
  "orderRows": [
    {
      "rowId": 1,
      "sku": "SKU-DEMO-001",
      "description": "Demo Widget",
      "quantity": 1,
      "unitPrice": 99.95,
      "lineTotal": 99.95
    }
  ],
  "orderTotal": 99.95,
  "currency": "USD"
}

Nodinite Log Event (JSON formatted)

This is the complete Log Event structure that would be sent to the Nodinite Log API. The message above is base64-encoded into the Body field.

Encoded Body

The JSON message above, when base64-encoded, becomes:

eyJiYXRjaElkIjoiYmF0Y2gtMjAyNS0xMC0xNC0wMDEiLCJnZW5lcmF0ZWRBdCI6IjIwMjUtMTAtMTRUMTI6MDA6MDBaIiwib3JkZXJJZCI6Ik9SRC0xMDAwMSIsImN1c3RvbWVyIjp7ImN1c3RvbWVySWQiOiJDVVNULTAwMSIsIm5hbWUiOiJBY21lIENvcnBvcmF0aW9uIiwiZW1haWwiOiJvcmRlcnNAYWNtZS5leGFtcGxlLmNvbSJ9LCJvcmRlckRhdGUiOiIyMDI1LTEwLTE0VDA5OjE1OjAwWiIsIm9yZGVyUm93cyI6W3sicm93SWQiOjEsInNrdSI6IlNLVS1ERU1PLTAwMSIsImRlc2NyaXB0aW9uIjoiRGVtbyBXaWRnZXQiLCJxdWFudGl0eSI6MSwidW5pdFByaWNlIjo5OS45NSwibGluZVRvdGFsIjo5OS45NX1dLCJvcmRlclRvdGFsIjo5OS45NSwiY3VycmVuY3kiOiJVU0QifQ==

Full Nodinite Log Event

{
  "LogAgentValueId": -5,
  "EndPointName": "Portal-OrderReceived-Drop",
  "EndPointUri": "C:\\Integration\\Portal\\Orders\\In",
  "EndPointDirection": 0,
  "EndPointTypeId": 60,
  "OriginalMessageTypeName": "O2C.Order.Received/1.0",
  "LogDateTime": "2025-10-14T09:15:30.123Z",
  "EventDirection": 17,
  "ProcessingUser": "Portal\\OrderService",
  "SequenceNo": 0,
  "EventNumber": 0,
  "LogText": "Order Received from Customer",
  "ApplicationInterchangeId": "PIC-20251022-0001",
  "LocalInterchangeId": null,
  "LogStatus": 0,
  "ProcessName": "O2C-Order-Reception",
  "ProcessingMachineName": "portal-server-01",
  "ProcessingModuleName": "Portal.OrderService.Receiver",
  "ProcessingModuleType": "WindowsService",
  "ServiceInstanceActivityId": null,
  "ProcessingTime": 45,
  "Body": "eyJiYXRjaElkIjoiYmF0Y2gtMjAyNS0xMC0xNC0wMDEiLCJnZW5lcmF0ZWRBdCI6IjIwMjUtMTAtMTRUMTI6MDA6MDBaIiwib3JkZXJJZCI6Ik9SRC0xMDAwMSIsImN1c3RvbWVyIjp7ImN1c3RvbWVySWQiOiJDVVNULTAwMSIsIm5hbWUiOiJBY21lIENvcnBvcmF0aW9uIiwiZW1haWwiOiJvcmRlcnNAYWNtZS5leGFtcGxlLmNvbSJ9LCJvcmRlckRhdGUiOiIyMDI1LTEwLTE0VDA5OjE1OjAwWiIsIm9yZGVyUm93cyI6W3sicm93SWQiOjEsInNrdSI6IlNLVS1ERU1PLTAwMSIsImRlc2NyaXB0aW9uIjoiRGVtbyBXaWRnZXQiLCJxdWFudGl0eSI6MSwidW5pdFByaWNlIjo5OS45NSwibGluZVRvdGFsIjo5OS45NX1dLCJvcmRlclRvdGFsIjo5OS45NSwiY3VycmVuY3kiOiJVU0QifQ==",
  "Context": {
    "FileName": "ORD-10001-received.json",
    "OrderNumber": "ORD-10001",
    "CustomerId": "CUST-001",
    "CustomerName": "Acme Corporation",
    "OrderAmount": "99.95",
    "ExtendedProperties/1.0#RepositoryBinding": "{\"Name\":\"Order Received\",\"Service\":{\"Name\":\"INT1337-RCV-Order-Incoming\",\"Direction\":\"Receive\",\"System\":{\"Name\":\"Portal\"},\"Integration\":{\"Name\":\"INT1337 - Order-to-Cash\"},\"BPMs\":[{\"Name\":\"INT1337 - Order-to-Cash Flow\",\"ArtifactRenaming\":\"Order Received from Customer\",\"Domain\":{\"Name\":\"Sales\",\"Index\":0},\"Step\":0}]}}"
  }
}

Key Points

  1. Message Type: The OriginalMessageTypeName field (O2C.Order.Received/1.0) determines which Search Field Expressions are evaluated by the Logging Service
  2. Correlation: The CorrelationId context property ({PREFIX}-{DATEPART}-{SEQUENCE}) links all subsequent steps for this order
    • {PREFIX} = Customer code (e.g., PIC)
    • {DATEPART} = Date when script executes (e.g., 20251022)
    • {SEQUENCE} = Order sequence number (e.g., 0001)
    • Runtime example: PIC-20251022-0001 (generated when script runs on Oct 22, 2025)
  3. Order Number: Included in both ApplicationInterchangeId and Context.OrderNumber for easy filtering
  4. DateTime: Timestamps are in UTC format with timezone indicators
  5. Processing Time: The ProcessingTime field shows how long this operation took (milliseconds)
  6. Repository Binding: The ExtendedProperties/1.0#RepositoryBinding context option (see below) automatically creates the integration landscape when AllowRepositoryAutomapping is enabled

Repository Binding for Step 1

This log event includes a Repository Binding JSON that defines:

  • Service: INT1337-RCV-Order-Incoming with Direction Receive
  • System: Portal
  • Integration: INT1337 - Order-to-Cash
  • BPM: Specifies this is Step 0 (the start) in the Sales domain (Index 0) with milestone name "Order Received from Customer" for visualization
  • BPM ServiceRelations: Empty array (no incoming relations, as this is the entry point)

The BPM structure defines the domain and step position in the overall process. Step 0 is the entry point for the Order-to-Cash process, occurring in the Sales domain. When the Logging Service processes this event with AllowRepositoryAutomapping=true, it creates/updates these entities and begins building the BPM visualization. Subsequent steps will reference this step via their ServiceRelations.

Note: The CorrelationId parameter notation shown above ({PREFIX}-{DATEPART}-{SEQUENCE}) is used in demo files for clarity. The actual correlation ID values are generated at runtime by the Generate-O2C-Demo-Data.ps1 PowerShell script using:

  • {PREFIX} replaced with customer code (e.g., PIC)
  • {DATEPART} replaced with execution date in YYYYMMDD format
  • {SEQUENCE} replaced with order sequence number (e.g., 0001)
  • Example runtime value: PIC-20251022-0001 (if script runs on Oct 22, 2025)

HTTP Request to Log API

The Log Event above would be sent as a POST request:

POST /api/v2/LogEvents HTTP/1.1
Host: nodinite-api.example.com
Content-Type: application/json
x-ms-client-tracking-id: {PREFIX}-{DATEPART}-{SEQUENCE}
Authorization: Bearer YOUR_API_KEY

{
  "LogAgentValueId": -5,
  "EndPointName": "Portal-OrderReceived-Drop",
  ...
}