- 5 minutes to read

3. Order Confirmation Delivered to Customer

Step Overview

Step 3 occurs when an order confirmation has been generated and delivered to the customer. This confirms the customer receives acknowledgment that their order was accepted and is being processed.

Message Details

  • Message Type: O2C.Order.Confirmation/1.0
  • Domain: Sales
  • System: Portal
  • Service: SND-Confirm-Outgoing
  • Direction: Send (Outgoing to customer)
  • Format: Flat File (CSV)
  • Log Status: 0 (Success) for confirmed delivery, -1337 if confirmation fails
  • Timing: Typically 5-10 minutes after Order Entry

Business Data (Happy Path)

Same customer and product data:

  • Order ID: ORD-10001 (same as source order)
  • Customer ID: CUST-001
  • Product SKU: SKU-DEMO-001
  • Quantity: 1
  • Order Total: USD 99.95

Sample CSV Message

This is the raw message payload that would be base64-encoded in the Log Event Body field. This simplified CSV format contains essential order confirmation data.

OrderConfirmationHeader
ConfirmationId,ConfirmationDate,CorrelationId,OrderId,OrderDate,CustomerID,CustomerName,CustomerEmail,ConfirmationStatus
CONF-2025-10001,2025-10-14T09:22:15Z,{PREFIX}-{DATEPART}-{SEQUENCE},ORD-10001,2025-10-14T09:15:00Z,CUST-001,Acme Corporation,orders@acme.example.com,CONFIRMED

OrderConfirmationDetails
LineNumber,SKU,Description,QuantityOrdered,UnitPrice,LineTotal
1,SKU-DEMO-001,Demo Widget,1,99.95,99.95

OrderConfirmationFooter
OrderTotal,Currency,EstimatedShipDate,TrackingEnabled
99.95,USD,2025-10-21,true

Nodinite Log Event (JSON formatted)

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

Encoded Body

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

T3JkZXJDb25maXJtYXRpb25IZWFkZXIKQ29uZmlybWF0aW9uSWQsQ29uZmlybWF0aW9uRGF0ZSxDb3JyZWxhdGlvbklkLE9yZGVySWQsT3JkZXJEYXRlLENvdXN0b21lcklELENvdXN0b21lck5hbWUsQ3VzdG9tZXJFbWFpbCxDb25maXJtYXRpb25TdGF0dXMKQ09ORi0yMDI1LTEwMDAxLDIwMjUtMTAtMTRUMDk6MjI6MTVaLFBJQy0wMDEtMDAwMSxPUkQtMTAwMDEsMjAyNS0xMC0xNFQwOToxNTowMFosQ1VTVC0wMDEsQWNtZSBDb3Jwb3JhdGlvbixvcmRlcnNAYWNtZS5leGFtcGxlLmNvbSxDT05GSVJNRUQKCK9yZGVyQ29uZmlybWF0aW9uRGV0YWlscwpMaW5lTnVtYmVyLFNLVSxEZXNjcmlwdGlvbixRdWFudGl0eU9yZGVyZWQsVW5pdFByaWNlLExpbmVUb3RhbAoxLFNLVS1ERU1PLTAwMSxEZW1vIFdpZGdldCwxLDk5Ljk1LDk5Ljk1CgpPcmRlckNvbmZpcm1hdGlvbkZvb3RlcgpPcmRlclRvdGFsLENvdXJyZW5jeSxFc3RpbWF0ZWRTaGlwRGF0ZSxUcmFja2luZ0VuYWJsZWQKOTkuOTUsVVNELDIwMjUtMTAtMjEsdHJ1ZQ==

Full Nodinite Log Event

{
  "LogAgentValueId": -5,
  "EndPointName": "Portal-Confirmation-Send",
  "EndPointUri": "C:\\Integration\\Portal\\Confirmations\\Out",
  "EndPointDirection": 1,
  "EndPointTypeId": 60,
  "OriginalMessageTypeName": "O2C.Order.Confirmation/1.0",
  "LogDateTime": "2025-10-14T09:22:30.789Z",
  "EventDirection": 18,
  "ProcessingUser": "Portal\\ConfirmationService",
  "SequenceNo": 2,
  "EventNumber": 2,
  "LogText": "Order Confirmation Delivered to Customer",
  "ApplicationInterchangeId": "PIC-20251022-0001",
  "LocalInterchangeId": null,
  "LogStatus": 0,
  "ProcessName": "O2C-Confirmation-Delivery",
  "ProcessingMachineName": "portal-server-01",
  "ProcessingModuleName": "Portal.ConfirmationService.Sender",
  "ProcessingModuleType": "WindowsService",
  "ServiceInstanceActivityId": null,
  "ProcessingTime": 234,
  "Body": "T3JkZXJDb25maXJtYXRpb25IZWFkZXIKQ29uZmlybWF0aW9uSWQsQ29uZmlybWF0aW9uRGF0ZSxDb3JyZWxhdGlvbklkLE9yZGVySWQsT3JkZXJEYXRlLENvdXN0b21lcklELENvdXN0b21lck5hbWUsQ3VzdG9tZXJFbWFpbCxDb25maXJtYXRpb25TdGF0dXMKQ09ORi0yMDI1LTEwMDAxLDIwMjUtMTAtMTRUMDk6MjI6MTVaLFBJQy0wMDEtMDAwMSxPUkQtMTAwMDEsMjAyNS0xMC0xNFQwOToxNTowMFosQ1VTVC0wMDEsQWNtZSBDb3Jwb3JhdGlvbixvcmRlcnNAYWNtZS5leGFtcGxlLmNvbSxDT05GSVJNRUQKCK9yZGVyQ29uZmlybWF0aW9uRGV0YWlscwpMaW5lTnVtYmVyLFNLVSxEZXNjcmlwdGlvbixRdWFudGl0eU9yZGVyZWQsVW5pdFByaWNlLExpbmVUb3RhbAoxLFNLVS1ERU1PLTAwMSxEZW1vIFdpZGdldCwxLDk5Ljk1LDk5Ljk1CgpPcmRlckNvbmZpcm1hdGlvbkZvb3RlcgpPcmRlclRvdGFsLENvdXJyZW5jeSxFc3RpbWF0ZWRTaGlwRGF0ZSxUcmFja2luZ0VuYWJsZWQKOTkuOTUsVVNELDIwMjUtMTAtMjEsdHJ1ZQ==",
  "Context": {
    "FileName": "ORD-10001-confirmation.csv",
    "OrderNumber": "ORD-10001",
    "CustomerId": "CUST-001",
    "CustomerName": "Acme Corporation",
    "OrderAmount": "99.95",
    "ConfirmationId": "CONF-2025-10001",
    "EstimatedShipDate": "2025-10-21",
    "ExtendedProperties/1.0#RepositoryBinding": "{\"Name\":\"Order Confirmation\",\"Service\":{\"Name\":\"INT1337-SND-Confirm-Outgoing\",\"Direction\":\"Send\",\"System\":{\"Name\":\"Portal\"},\"Integration\":{\"Name\":\"INT1337 - Order-to-Cash\"},\"ExternalServiceRelations\":[{\"Name\":\"INT1337-ENT-Order-Entry\",\"System\":{\"Name\":\"ERP\"}}],\"BPMs\":[{\"Name\":\"INT1337 - Order-to-Cash Flow\",\"ArtifactRenaming\":\"Order Confirmation Delivered\",\"Domain\":{\"Name\":\"Sales\",\"Index\":0},\"Step\":2,\"ServiceRelations\":[{\"Name\":\"INT1337-ENT-Order-Entry\",\"Direction\":\"Receive\",\"Domain\":{\"Name\":\"Planning\",\"Index\":1},\"Step\":1,\"Label\":\"From ERP Planning\",\"ConnectorStyle\":1,\"SourceAttachmentPoint\":2,\"TargetAttachmentPoint\":0}]}]}}"
  }
}

Key Points

  1. CSV Format: Demonstrates Nodinite's support for non-XML/JSON formats through explicit Message Type declaration
  2. Flat File Structure: Headers, details, and footer sections separate data logically
  3. Correlation: Maintains {PREFIX}-{DATEPART}-{SEQUENCE} linkage from Steps 1 and 2
  4. Direction Change: EndPointDirection: 1 (send) and EventDirection: 18 (ExternalOutgoing) indicate outbound communication
  5. Processing Time: 234ms reflects Portal system overhead
  6. Message Type Critical: Without OriginalMessageTypeName, Nodinite cannot parse CSV format—explicit type is required
  7. BPM Domain Transition: Returns to Sales domain (Index 0, Step 2) after ERP processing to send confirmation to customer
  8. ServiceRelations: Links back to Step 1 (Planning/ERP) showing the upstream data source for this confirmation message

Repository Binding for Step 3

This log event includes a Repository Binding JSON that defines:

  • Service: INT1337-SND-Confirm-Outgoing with Direction Send
  • System: Portal
  • Integration: INT1337 - Order-to-Cash
  • ExternalServiceRelations: Links to INT1337-ENT-Order-Entry in the ERP system (the source of order data)
  • BPM: Specifies this is Step 2 in the Sales domain (Index 0) with milestone name "Order Confirmation Delivered" for visualization
  • BPM ServiceRelations: Includes a relation to the INT1337-ENT-Order-Entry service showing incoming data from Step 1 (Planning domain) with:
    • Label: "From ERP Planning" - Shows the upstream source on the connector arrow
    • ConnectorStyle: 1 - Orthogonal connector with arrow (right-angle paths)
    • SourceAttachmentPoint: 2 - Arrow originates from the bottom of Step 2 (Sales/Portal box)
    • TargetAttachmentPoint: 0 - Arrow terminates at the top of Step 1 (Planning/ERP box)

The BPM visualization now shows the order returning to the Sales domain after Planning processing. This creates a cross-domain flow pattern where orders flow through multiple systems and domains sequentially.


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-Confirmation-Send",
  ...
}