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
throughORD-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
- Message Type: The
OriginalMessageTypeName
field (O2C.Order.Received/1.0
) determines which Search Field Expressions are evaluated by the Logging Service - 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)
- Order Number: Included in both
ApplicationInterchangeId
andContext.OrderNumber
for easy filtering - DateTime: Timestamps are in UTC format with timezone indicators
- Processing Time: The
ProcessingTime
field shows how long this operation took (milliseconds) - Repository Binding: The
ExtendedProperties/1.0#RepositoryBinding
context option (see below) automatically creates the integration landscape whenAllowRepositoryAutomapping
is enabled
Repository Binding for Step 1
This log event includes a Repository Binding JSON that defines:
- Service:
INT1337-RCV-Order-Incoming
with DirectionReceive
- 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 inYYYYMMDD
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",
...
}
Related Steps
- Next Step: 2. Order Entry in ERP Finished
- Previous: Overview