- Introduction
- Getting started
- Process modeling
- Process implementation
- Process operations
- Process monitoring
- Process optimization
- Reference information

Maestro user guide
Subprocesses and modularity
Subprocesses support model clarity by grouping related activities into a single reusable structure. They help reduce diagram complexity, isolate business logic, and encourage reuse.
In BPMN, a subprocess can be modeled either inline (collapsed or expanded within the same diagram) or as a reusable call activity.
In Maestro:
- Inline subprocesses (collapsed or expanded) are supported for grouping and structuring logic within the same diagram.
- Call activities are supported for invoking a separate agentic process (project).
- Calling a different BPMN file from the same project is not supported. For reusable cross-process logic, create a separate agentic process and invoke it using a Call Activity.
- When using a Call Activity, the calling process passes input and receives output via explicitly defined parameters.
Why use call activities?
A call activity references a subprocess defined elsewhere in the project or environment. It behaves like a reusable function. call activities improve process modeling by:
- Reducing duplication across diagrams
- Isolating reusable logic (e.g., approvals, validations, dispatching)
- Keeping the main diagram concise
- Supporting consistent behavior across process variants.
How to model subprocesses
In Maestro, you can model subprocesses in two ways:
- As an inline subprocess (collapsed or expanded within the same diagram)
- As a reusable subprocess using a Call Activity
Model an inline subprocess
Use an inline subprocess when you want to group related steps within the same process instance.
- Insert a SubProcess element into your BPMN diagram.
- Choose whether to display it in collapsed or expanded view.
- Model the internal logic directly inside the subprocess.
- Use the subprocess to group related steps while keeping the main diagram readable.
Inline subprocesses execute within the same process instance and share the same execution context.
Model a reusable subprocess using a Call Activity
Use a Call Activity when you want to reuse logic across multiple processes.
- Create a separate Agentic process (project) that contains the reusable logic.
- In the parent diagram, insert a Call Activity.
- Select the target Agentic process to invoke.
- Configure input and output variables to exchange data between the parent process and the called process.
A Call Activity invokes a separate Agentic process instance. Data must be explicitly mapped between the parent and called processes.
Modeling examples
Use case: An onboarding workflow uses the same Collect Documents subprocess in both employee and vendor onboarding processes. Instead of duplicating steps, a call activity is added in each parent process referencing the same subprocess.

Use case: This subprocess example shows a conditional file download and upload workflow in Maestro. The process begins with a message start event and branches using an exclusive gateway. Depending on the condition, it either downloads an email attachment or a file from a record field. Both paths converge into an Upload File task, followed by a SubProcess element named Sub-Process1. This subprocess encapsulates additional steps related to post-upload actions before completing the workflow at the end event.

Naming conventions
Subprocess and call activity names should:
- Use business language, not technical terms
- Describe the outcome (e.g.,
Collect Customer Data, notForm Step 2) - Reflect what the subprocess accomplishes, not how.
- Participant lanes are not supported inside subprocesses.
Not supported
- Calling a separate BPMN file within the same project is not supported.
- For reusable logic across multiple processes, create a separate agentic process (project) and invoke it using a Call Activity.
- Ad-hoc subprocesses are not supported.
- Implicit variable sharing across process boundaries is not supported. Data must be explicitly mapped through input/output bindings.
- Participant lanes are not supported inside subprocesses.
Multi-instance markers
Inline subprocesses support multi-instance execution.
Call Activities also support multi-instance execution when invoking a separate Agentic process.
Ad-hoc subprocesses and event subprocesses are not supported.
Nested markers
The following string variables are supported as nested iterators:
| Category | Attributes | How to use/access |
|---|---|---|
| OuterSP - Get Contact Information for each user | InputCollection | var.GetUsers |
| OuterSP - Get Contact Information for each user | Iterator Item | iterator.item.gid |
| InnerSP - Get all emails for each contact | InputCollection | iterator[0].item.contactArray |
| InnerSP - Get all emails for each contact | Iterator Item | iterator[1].item.ContactId |
| Send Email | InputCollection | iterator[1].item.EmailArray |
| Send Email | Iterator Item | iterator[2]item.emailAddress |
For more details about the BPMN elements supported in Maestro, see BPMN support.