BPMN Coverage
Last modified: May 7, 2026
Mendix supports a broad range of BPMN constructs, either directly on the Workflow canvas or through the wider Mendix platform.
Support Levels
Each BPMN element is marked with a support level indicator:
- ✅ Workflow Native – Available as a dedicated construct in the workflow editor
- 🟩 Platform Native – Available by combining workflow editor constructs with other platform editor constructs, such as logic, data, and pages.
- 🟦 Planned – Support is planned for an upcoming release
- ❌ Not Supported – Not currently supported in Mendix
Gateways
| Element |
Support Level |
How |
| Exclusive Gateway (XOR) |
✅ Workflow Native |
Decision |
| Parallel Gateway (AND) |
✅ Workflow Native |
Parallel Split |
| Inclusive Gateway (OR) |
🟩 Platform Native |
Use a Parallel Split with a path for each possible condition. On each path, add a Decision that checks if the condition is true. If true, execute the activities on that path. If false, the path continues directly to the merge. The workflow waits for all paths to complete before continuing. Note: There is no default or catch-all path – if you need one, model it explicitly with an additional decision. |
| Event-Based Gateway |
❌ Not Supported |
Not supported. |
| Complex Gateway |
❌ Not Supported |
Not supported. |
Tasks
Subprocesses
| Element |
Support Level |
How |
| Embedded Subprocess |
❌ Not Supported |
Not supported. |
| Call Activity (Reusable Subprocess) |
✅ Workflow Native |
Call Workflow |
| Event Subprocess |
✅ Workflow Native |
Event Subprocess |
| Transaction Subprocess |
❌ Not Supported |
Not supported. |
| Ad-hoc Subprocess |
❌ Not Supported |
Not supported. |
Swimlanes
| Element |
Support Level |
How |
| Pool |
🟩 Platform Native |
The workflow itself acts as the process boundary – one workflow equals one pool. It is not visible as a canvas element, but the construct is supported. |
| Lane |
🟩 Platform Native |
Use User Task assignments with Roles and Workflow Groups to define who is responsible for each step. It is not visible as a canvas element, but the construct is supported. |
Data
| Element |
Support Level |
How |
| Data Object, Data Input, Data Output, Data Store |
🟩 Platform Native |
Mendix does not have visual equivalents for these concepts on the Workflow canvas. You manage all data through entities defined in the domain model. Pass one entity into the workflow via the workflow parameter to create $WorkflowContext, which gives you access to business data throughout the entire workflow. $WorkflowInstance is always available alongside it for Workflow Engine data (System.Workflow). Because the context entity is always persistable, there is no distinction between temporary and persistent data. You do not need separate Data Object, Data Input, Data Output, or Data Store constructs in Mendix. |
Artifacts
| Element |
Support Level |
How |
| Text Annotation |
✅ Workflow Native |
Use the Annotation element on the Workflow canvas to add descriptive notes. |
| Group |
❌ Not Supported |
Not supported. |
Events
Mendix supports a broad range of BPMN event types. Some are available directly as elements on the Workflow canvas. Others are achieved through microflows that contain workflow-related activities.
None Events
| Variant |
Support Level |
How |
| Start |
✅ Workflow Native |
Every workflow has one start event. Start a workflow by providing an object of the entity type that the workflow expects. Use the Call Workflow page action (for example, on a button with a data view) or the Call Workflow activity in a microflow where you pass the context object. |
| Intermediate Throw |
❌ Not Supported |
Not supported. |
| End |
✅ Workflow Native |
End Event |
Message Events
| Variant |
Support Level |
How |
| Start |
🟩 Platform Native |
Same as None Start – process the message data in a microflow, create or populate an object of the entity type that the workflow expects, and start the workflow using the Call Workflow activity by passing that context object. Alternatively, use the Call Workflow page action on a page. |
| Event Subprocess (Interrupting) |
✅ Workflow Native |
Interrupting Notification Event Subprocess Start |
| Event Subprocess (Non-Interrupting) |
✅ Workflow Native |
Non-Interrupting Notification Event Subprocess Start |
| Intermediate Catch |
🟦 Planned |
As Notification Event, use Wait for Notification activity as an alternative. |
| Intermediate Boundary (Interrupting) |
🟦 Planned |
As Interrupting Notification Event. |
| Intermediate Boundary (Non-Interrupting) |
🟦 Planned |
As Non-Interrupting Notification Event. |
| Intermediate Throw |
🟩 Platform Native |
Use a Call Microflow activity as the throw event. Within the microflow, include a Notify Workflow activity to send the message and continue the flow. |
| End |
🟩 Platform Native |
Use a Call Microflow activity as the throw event. Within the microflow, include a Notify Workflow activity to send the message before the process completes. |
Timer Events
| Variant |
Support Level |
How |
| Start |
🟩 Platform Native |
Use a scheduled event to run a microflow that starts the workflow using the Call Workflow activity. |
| Event Subprocess (Interrupting) |
🟦 Planned |
As Interrupting Timer Event Subprocess Start. |
| Event Subprocess (Non-Interrupting) |
🟦 Planned |
As Non-Interrupting Timer Event Subprocess Start. |
| Intermediate Catch |
✅ Workflow Native |
Timer |
| Intermediate Boundary (Interrupting) |
✅ Workflow Native |
Interrupting Timer Event |
| Intermediate Boundary (Non-Interrupting) |
✅ Workflow Native |
Non-Interrupting Timer Event |
Error Events
| Variant |
Support Level |
How |
| Event Subprocess (Interrupting) |
🟩 Platform Native |
Use an Interrupting Notification Event Subprocess Start to catch the event, and use a microflow to handle the error logic and send a notification using a Notify Workflow activity when an error occurs. |
| Intermediate Boundary (Interrupting) |
🟦 Planned |
Use an Interrupting Notification Event (Planned) to catch the event, and use a microflow to handle the error logic and send a notification using a Notify Workflow activity when an error occurs. |
| End |
🟩 Platform Native |
Use a Call Microflow activity as the throw event. Within the microflow, include a Notify Workflow activity to throw the error before the process completes. |
Signal Events
| Variant |
Support Level |
How |
| Start |
🟩 Platform Native |
Use a microflow with multiple Call Workflow activities to start multiple workflows and deliver the signal to all instances. |
| Event Subprocess (Interrupting) |
🟩 Platform Native |
Use an Interrupting Notification Event Subprocess Start to catch the event, and use a microflow with multiple Notify Workflow activities to deliver the signal to all waiting instances. |
| Event Subprocess (Non-Interrupting) |
🟩 Platform Native |
Use a Non-Interrupting Notification Event Subprocess Start to catch the event, and use a microflow with multiple Notify Workflow activities to deliver the signal to all waiting instances. |
| Intermediate Catch |
🟩 Platform Native |
Use a Wait for Notification activity to catch the event, and use a microflow with multiple Notify Workflow activities to deliver the signal to all waiting instances. |
| Intermediate Boundary (Interrupting) |
🟦 Planned |
Use an Interrupting Notification Event (Planned) to catch the event, and use a microflow with multiple Notify Workflow activities to deliver the signal to all waiting instances. |
| Intermediate Boundary (Non-Interrupting) |
🟦 Planned |
Use a Non-Interrupting Notification Event (Planned) to catch the event, and use a microflow with multiple Notify Workflow activities to deliver the signal to all waiting instances. |
| Intermediate Throw |
🟩 Platform Native |
Use a Call Microflow activity as the throw event. Within the microflow, include multiple Notify Workflow activities to deliver the signal to all waiting instances. |
| End |
🟩 Platform Native |
Use a Call Microflow activity as the throw event. Within the microflow, include multiple Notify Workflow activities to deliver the signal to all waiting instances before the process completes. |
Conditional Events
| Variant |
Support Level |
How |
| Start |
🟩 Platform Native |
Use a microflow that checks the condition and starts the workflow using the Call Workflow activity only when the condition is met. |
| Event Subprocess (Interrupting) |
🟩 Platform Native |
Use an Interrupting Notification Event Subprocess Start to catch the event, and use a microflow to evaluate or create the condition and send a notification using a Notify Workflow activity when the condition is met. |
| Event Subprocess (Non-Interrupting) |
🟩 Platform Native |
Use a Non-Interrupting Notification Event Subprocess Start to catch the event, and use a microflow to evaluate or create the condition and send a notification using a Notify Workflow activity when the condition is met. |
| Intermediate Catch |
🟩 Platform Native |
Use Call Microflow to evaluate the condition and return a result, then use a Decision to route the workflow based on that result. |
| Intermediate Boundary (Interrupting) |
🟦 Planned |
Use an Interrupting Notification Event (Planned) to catch the event, and use a microflow to evaluate or create the condition and send a notification using a Notify Workflow activity when the condition is met. |
| Intermediate Boundary (Non-Interrupting) |
🟦 Planned |
Use a Non-Interrupting Notification Event (Planned) to catch the event, and use a microflow to evaluate or create the condition and send a notification using a Notify Workflow activity when the condition is met. |
Escalation Events
| Variant |
Support Level |
How |
| Event Subprocess (Interrupting) |
🟩 Platform Native |
Use an Interrupting Notification Event Subprocess Start to catch the event, and use a microflow to evaluate the escalation condition and send a notification using a Notify Workflow activity when the escalation needs to happen. |
| Event Subprocess (Non-Interrupting) |
🟩 Platform Native |
Use a Non-Interrupting Notification Event Subprocess Start to catch the event, and use a microflow to evaluate the escalation condition and send a notification using a Notify Workflow activity when the escalation needs to happen. |
| Intermediate Boundary (Interrupting) |
🟦 Planned |
Use an Interrupting Notification Event (Planned) to catch the event, and use a microflow to evaluate the escalation condition and send a notification using a Notify Workflow activity when the escalation needs to happen. |
| Intermediate Boundary (Non-Interrupting) |
🟦 Planned |
Use a Non-Interrupting Notification Event (Planned) to catch the event, and use a microflow to evaluate the escalation condition and send a notification using a Notify Workflow activity when the escalation needs to happen. |
| Intermediate Throw |
🟩 Platform Native |
Use a Call Microflow activity as the throw event. Within the microflow, include a Notify Workflow activity to throw the escalation and continue the flow. |
| End |
🟩 Platform Native |
Use a Call Microflow activity as the throw event. Within the microflow, include a Notify Workflow activity to throw the escalation before the process completes. |
Compensation Events
| Variant |
Support Level |
How |
| Event Subprocess (Interrupting) |
🟩 Platform Native |
Use an Interrupting Notification Event Subprocess Start to catch the event, and use a microflow to evaluate the compensation condition and send a notification using a Notify Workflow activity when the compensation needs to happen. |
| Intermediate Boundary (Interrupting) |
🟦 Planned |
Use an Interrupting Notification Event (Planned) to catch the event, and use a microflow to evaluate the compensation condition and send a notification using a Notify Workflow activity when the compensation needs to happen. |
| Intermediate Throw |
🟩 Platform Native |
Use a Call Microflow activity as the throw event. Within the microflow, include a Notify Workflow activity to throw the compensation and redirect the flow to the compensating activity. |
| End |
🟩 Platform Native |
Use a Call Microflow activity as the throw event. Within the microflow, include a Notify Workflow activity to throw the compensation before the process completes. |
Cancel Events
| Variant |
Support Level |
How |
| Intermediate Boundary (Interrupting) |
🟦 Planned |
Use an Interrupting Notification Event (Planned) to catch the event, and use a microflow to send a notification using a Notify Workflow activity when the cancellation occurs. |
| End |
🟩 Platform Native |
Use a Call Microflow activity as the throw event. Within the microflow, include a Notify Workflow activity to throw the cancellation before the process completes. |
Terminate Events
| Variant |
Support Level |
How |
| End |
❌ Not Supported |
Not Supported. |
Link Events
Multiple Events
| Variant |
Support Level |
How |
| Start |
❌ Not Supported |
Not supported. |
| Event Subprocess (Interrupting) |
❌ Not Supported |
Not supported. |
| Event Subprocess (Non-Interrupting) |
❌ Not Supported |
Not supported. |
| Intermediate Catch |
❌ Not Supported |
Not supported. |
| Intermediate Boundary (Interrupting) |
❌ Not Supported |
Not supported. |
| Intermediate Boundary (Non-Interrupting) |
❌ Not Supported |
Not supported. |
| Intermediate Throw |
❌ Not Supported |
Not supported. |
| End |
❌ Not Supported |
Not supported. |
Multiple Parallel Events
| Variant |
Support Level |
How |
| Start |
❌ Not Supported |
Not supported. |
| Event Subprocess (Interrupting) |
❌ Not Supported |
Not supported. |
| Event Subprocess (Non-Interrupting) |
❌ Not Supported |
Not supported. |
| Intermediate Catch |
❌ Not Supported |
Not supported. |
| Intermediate Boundary (Interrupting) |
❌ Not Supported |
Not supported. |
| Intermediate Boundary (Non-Interrupting) |
❌ Not Supported |
Not supported. |