Event Orchestration – Action Step Payload Examples
|
Aim of this section |
Provides ready-to-use examples of the payload (Body, Headers, Properties) that can be sent to a partition or integration target in the Event Workflow / Scheduler Action step. |
|
Related sections |
|
|
Required permissions |
Event Orchestration - edit |
Overview
In the Action step you define the payload sent with the triggered action. The payload has three parts:
-
Body – Free-form JSON sent with the action. You can either tick Use the original event payload as the body, or paste custom Payload content. Event Orchestration does not impose any schema on the Body — the field names you use are entirely up to what the target action (the partition logic/calculation/data load, or the IM route) is built to read.
-
Headers – Key/value pairs sent as request headers (standard HTTP / Camel headers).
-
Properties – Key/value pairs that become Camel exchange properties in the target route.
ℹ️ Properties are available only for the Integration target type. They cannot be set when the Target Type is Partition.
ℹ️ For the Route action type, the route must be of type
direct.
Partition targets
When the target is a partition, the Body is passed as a parameter to the triggered logic / calculation / data load. Use field names your target action expects. Properties are not available for partition targets.
Example 1 — Action Type: Logic
Run a partition logic and pass it parameters.
Body
{
"runMode": "DELTA",
"changedSince": "2026-06-01T00:00:00Z",
"productGroups": ["BEVERAGES", "SNACKS"],
"dryRun": false
}
Example 2 — Action Type: Dataload
Trigger a Data Load, telling it how to run.
Body
{
"incremental": true,
"sourceFile": "product_master_2026-06-11.csv",
"truncateBeforeLoad": false
}
Example 3 — Action Type: Calculation (CFS)
Run a Calculation Field Set, scoped via parameters the CFS reads.
Body
{
"calculationName": "CFS_LIST_PRICE",
"effectiveDate": "2026-06-11",
"currency": "EUR",
"scope": { "priceListCode": "PL-2026-Q3" }
}
Integration (IM) targets
When the target is an IntegrationManager instance with Action Type Route, all three parts are available. In the route:
-
Body arrives as the Camel message body (a
Map) — access with${body[field]} -
Headers are read with
${header.X} -
Properties are read with
${exchangeProperty.Y}
Example 4 — Action Type: Route
Push approved price updates to an external system.
Body
{
"priceGridCode": "PG-2026-Q3",
"currency": "EUR",
"items": [
{ "sku": "SKU-001", "newPrice": 12.50, "oldPrice": 11.90 },
{ "sku": "SKU-002", "newPrice": 9.99, "oldPrice": 9.50 }
]
}
Headers
|
Key |
Value |
|---|---|
|
|
|
|
|
|
Properties
|
Key |
Value |
|---|---|
|
|
|
|
|
|
|
|
|
How the target route reads the payload:
<route id="pushPriceUpdate">
<from uri="direct:pushPriceUpdate"/>
<log message="Scenario ${exchangeProperty.integrationScenario}, corr ${header.X-Correlation-Id}, grid ${body[priceGridCode]}"/>
<split>
<simple>${body[items]}</simple>
<!-- per item: ${body[sku]}, ${body[newPrice]} -->
</split>
</route>
Using the original event payload as the Body
Instead of entering custom JSON, you can tick Use the original event payload as the body. The action then receives the raw Pricefx event. The event is a Map; the most-used fields are eventType and data[]:
{
"eventType": "CALCULATION_COMPLETED_CFS",
"status": "FINISHED",
"data": [
{
"targetName": "PriceLists",
"calculationName": "CFS_LIST_PRICE",
"jobStatusTracker": "PriceListCalc-2026-06-11"
}
]
}
A route can then branch on it, for example with ${body[eventType]} and ${body[data][0][targetName]}.