
Subprocess
Swimlane constraint: a subprocess whose UI renders inside the parent process (through a Parent Process navigation area) must have exactly one swimlane. With multiple swimlanes, the runtime canāt render the subprocess in the parent and reports
Could not render subprocess due to multiple swimlanes or missing Parent Process Area - see the error glossary.- Async mode: The parent process will continue without waiting for the subprocess to finish.
Select if this task should be invoked asynchronously. Make tasks asynchronous if they cannot be executed instantaneously, for example, a task performed by an outside service.
- Sync mode: The parent process must wait for the subprocess to finish before advancing.

Retrying the parent token
Retrying the parent process token while it sits on a Call Activity node re-executes the nodeās start subprocess action, starting a new subprocess instance. The original subprocess instance isnāt resumed or terminated: it remains in its current state alongside the new one. With parallel multi-instance enabled, retrying the parent token starts a new full set of subprocess instances.Starting multiple subprocesses
Parallel multi-instance
The Call Activity node can also be used for starting a set of subprocesses that will be started and run at the same time. This is useful when there is an array of values in the parent process parameters, and a subprocess needs to be started for each element in that array.
Configuration options
When configuring parallel multi-instance on a Call Activity node, you have access to the following configuration options:- Input Array: Declare the array used for subprocess input. Map the array of objects or the keys inside the array of objects to the destination object or its keys from the subprocess.
- Output Array: Declare the array used for subprocess output. Map from the subprocess object back to an array of objects in the parent process.
- Correlation attribute: The attribute that will be used to correlate subprocess results with parent process data.
Data mapping
In the Data Mapping section, when Parallel Multi-instance is enabled, you can configure:New data mapping
- Declare arrays: Define the arrays used for subprocess input and subprocess output
- Input mapping: In the mapping modal, map the array of objects or the keys inside the array of objects to the destination object or its keys from the subprocess
- Output mapping: Map from the subprocess object back to an array of objects in the parent process

Legacy mapping
Legacy mapping works using current mechanics in both configuration and runtime, with no changes to existing features.Correlation attribute behavior
When results from parallel subprocesses are returned, the correlation attribute determines how the subprocess payload is handled:- Update existing element: When the correlation attribute value from the subprocess payload matches one or more elements in the parent process array, those elements are updated with the subprocess payload
- Insert new element: When the correlation attribute value from the subprocess payload doesnāt match any records in the parent process array, the payload is inserted as a new element in the array
Output population and incomplete instances
The output array in the parent process populates incrementally: each subprocess reports back as it completes, and the parent appends its result right away - results donāt wait for the rest of the set. Results arrive in completion order, not input-array order; when a correlation attribute is configured, each result updates the element matching its correlation key instead of appending. Until the parent token advances, the accumulated values live in the parentās process data but arenāt visible to subsequent nodes or the UI - you can confirm they arrived by inspecting the instanceās process data in monitoring. In Sync mode, the parent token advances only when every instance in the set completes. A subprocess counts as completed when it reaches an end node or is dismissed. An instance that ends any other way (ABORTED, TERMINATED, EXPIRED, FAILED) never reports back to the parent, so the parent token keeps waiting - there is no timeout on the wait - even though the results of the completed instances are already present in the parentās process data. A partial run isnāt recoverable: to get results for all items, run the operation again. Two configurations end the wait automatically:- Expiry time on the parent process definition: the parent (and, by default, its active subprocesses) moves to EXPIRED at the scheduled moment. The run isnāt recovered, but it stops hanging. See What happens when a process expires.
- An interrupting boundary event (timer, message, or error) on the Call Activity node: the parent advances on the boundary branch, and the still-active subprocess instances are aborted. Already-finished instances keep their FINISHED status.
Dismissing unfinished subprocesses
When subprocesses are started in Sync mode:- If the token is advanced due to another action being performed in the process
- Then the subprocesses that havenāt finished are automatically dismissed
Business rule example
Below is an example of an MVEL business rule used to generate a list of shipping codes:
When designing such a subprocess that will be started in a loop, remember that the input value for the subprocess (one of the values from the array in the parent process) will be stored in the subprocess parameter values under the key named item. This key should be used inside the subprocess. If this subprocess produces any results, they should be stored under a key named result to be sent back to the parent process.

Subprocess business rule example
Hereās an MVEL business rule for a subprocess that processes shipping codes:Result (one of the subprocess instances)
The result shows the output of a process that has handled multiple shipping codes. The structure is:

