flowable/flowable-engine · warning
multiple start events not supported for subprocess {}
Error message
multiple start events not supported for subprocess {} What it means
This warning is emitted during BPMN parsing when a regular subprocess contains more than one start event. Flowable supports only a single start event per subprocess; the first one becomes the initial activity (PROPERTYNAME_INITIAL) and any additional start events are ignored with this warning. The process will deploy but the extra start events will not function.
Source
Thrown at modules/flowable5-engine/src/main/java/org/activiti/engine/impl/bpmn/parser/handler/StartEventParseHandler.java:143
if (eventDefinition instanceof org.flowable.bpmn.model.ErrorEventDefinition
|| eventDefinition instanceof MessageEventDefinition
|| eventDefinition instanceof SignalEventDefinition) {
bpmnParse.getBpmnParserHandlers().parseElement(bpmnParse, eventDefinition);
} else {
LOGGER.warn("start event of event subprocess must be of type 'error', 'message' or 'signal' for start event {}", startEvent.getId());
}
}
} else { // "regular" subprocess
if (!startEvent.getEventDefinitions().isEmpty()) {
LOGGER.warn("event definitions only allowed on start event if subprocess is an event subprocess {}", bpmnParse.getCurrentSubProcess().getId());
}
if (scope.getProperty(PROPERTYNAME_INITIAL) == null) {
scope.setProperty(PROPERTYNAME_INITIAL, startEventActivity);
startEventActivity.setActivityBehavior(bpmnParse.getActivityBehaviorFactory().createNoneStartEventActivityBehavior(startEvent));
} else {
LOGGER.warn("multiple start events not supported for subprocess {}", bpmnParse.getCurrentSubProcess().getId());
}
}
}
}
View on GitHub (pinned to d6d39ce1c6)
Solutions
- Keep exactly one start event in the subprocess and remove or merge the others.
- If alternative entry paths are needed, restructure: split into multiple subprocesses or use an exclusive gateway right after the single start event.
- For multiple triggers, use an event subprocess (triggeredByEvent="true"), which does support multiple typed start events.
Example fix
// before <subProcess id="sub1"> <startEvent id="startA"/> <startEvent id="startB"/> </subProcess> // after <subProcess id="sub1"> <startEvent id="startA"/> <sequenceFlow id="f1" sourceRef="startA" targetRef="gw1"/> <exclusiveGateway id="gw1"/> </subProcess>
Defensive patterns
Strategy: validation
Validate before calling
boolean hasMultipleStartEvents(SubProcess sub) {
long n = sub.getFlowElements().stream()
.filter(StartEvent.class::isInstance).count();
return n > 1;
} Prevention
- Enforce one start event per subprocess in your modeling tooling
- Use event subprocesses for multiple typed triggers
- Diff-check exported BPMN XML in CI for duplicate startEvent ids inside the same subprocess
When it happens
Trigger: Two or more <startEvent> elements inside the same <subProcess> (without triggeredByEvent). The second and later ones hit the branch where scope.getProperty(PROPERTYNAME_INITIAL) is already set, in StartEventParseHandler.createScopeStartEvent during executeParse.
Common situations: Modelers adding alternative entry points to a subprocess; copy-paste duplication of a start event in the diagram; importing BPMN from tools that permit multiple subprocess start events.
Understand the failure class
Background: UnsupportedOperationException and "is not supported" errors: when a library deliberately refuses a call — this error's family across 30 libraries.
Related errors
- event definitions only allowed on start event if subprocess
- start event of event subprocess must be of type 'error', 'me
- Timer needs configuration (either timeDate, timeCycle or tim
- BPMN XSD could not be found
- The bpmn 2.0 xml is not properly encoded
AI-assisted analysis of flowable/flowable-engine@d6d39ce1c6 (2026-09-11).
Data as JSON: /api/errors/ab4370f012a37d20.
Report an issue: GitHub.