flowable/flowable-engine · warning
Unsupported boundary event type for boundary event
Error message
Unsupported boundary event type for boundary event {} What it means
BoundaryEventParseHandler.executeParse() warns when a boundary event carries an event definition type the engine does not support (not timer, error, signal, message, or compensate). The unsupported definition is skipped and the boundary event will not react to that event at runtime.
Solutions
- Replace the unsupported event definition with a supported type (timer, error, signal, message, or compensate)
- Remove the unsupported definition from the boundary event
- Re-model the behavior using supported constructs (e.g. use an error event instead of escalation)
- Check the engine version's supported boundary event types before importing models
Example fix
// before <boundaryEvent id="be1"><escalationEventDefinition/></boundaryEvent> // after <boundaryEvent id="be1"><errorEventDefinition errorRef="myError"/></boundaryEvent>
Defensive patterns
Strategy: validation
Validate before calling
// Only supported boundary event definitions
Set<Class<?>> supported = Set.of(TimerEventDefinition.class, ErrorEventDefinition.class,
SignalEventDefinition.class, MessageEventDefinition.class, CompensateEventDefinition.class);
for (BoundaryEvent be : collectBoundaryEvents(process)) {
for (EventDefinition ed : be.getEventDefinitions()) {
if (!supported.contains(ed.getClass()))
throw new IllegalArgumentException("Unsupported boundary event definition on " + be.getId());
}
} Prevention
- Check engine-supported event types before importing models from other BPMN engines
- Replace escalation/conditional boundary events with supported alternatives at modeling time
When it happens
Trigger: A <boundaryEvent> containing an event definition other than Timer/Error/Signal/Message/CompensateEventDefinition (e.g. escalation, conditional, or custom definitions) — logged in executeParse()'s else branch.
Common situations: Models built for other BPMN engines (Camunda escalation events, conditional boundary events) deployed to Flowable/Activiti 5-engine; tool exports emitting unsupported definition types.
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
- Cannot propagate escalation '" + escalationName + "' with…
- Invalid reference in boundary event. Make sure that the…
- Activity needed for multi instance cannot bv found
- An error occurs converting output value as JSon
- ' ' is not valid boolean in mapException with errorCode=…
AI-assisted analysis of flowable/flowable-engine@d6d39ce1c6 (2026-09-11).
Data as JSON: /api/errors/6248a6b17c5731da.
Report an issue: GitHub.
Appendix: source
Thrown at modules/flowable5-engine/src/main/java/org/activiti/engine/impl/bpmn/parser/handler/BoundaryEventParseHandler.java:67
ActivityImpl nestedActivity = createActivityOnScope(bpmnParse, boundaryEvent, BpmnXMLConstants.ELEMENT_EVENT_BOUNDARY, parentActivity);
bpmnParse.setCurrentActivity(nestedActivity);
EventDefinition eventDefinition = null;
if (!boundaryEvent.getEventDefinitions().isEmpty()) {
eventDefinition = boundaryEvent.getEventDefinitions().get(0);
}
if (eventDefinition instanceof TimerEventDefinition
|| eventDefinition instanceof org.flowable.bpmn.model.ErrorEventDefinition
|| eventDefinition instanceof SignalEventDefinition
|| eventDefinition instanceof CancelEventDefinition
|| eventDefinition instanceof MessageEventDefinition
|| eventDefinition instanceof org.flowable.bpmn.model.CompensateEventDefinition) {
bpmnParse.getBpmnParserHandlers().parseElement(bpmnParse, eventDefinition);
} else {
LOGGER.warn("Unsupported boundary event type for boundary event {}", boundaryEvent.getId());
}
}
}
View on GitHub (pinned to d6d39ce1c6)