flowable/flowable-engine · warning
Unsupported intermediate catch event type for event
Error message
Unsupported intermediate catch event type for event {} What it means
An intermediate catch event carries an event definition type the parser does not recognize among the supported kinds (timer, signal, message). The parser logs this warning and leaves the event without a behavior, so it will never fire. This guards against malformed or future/unknown BPMN event definition types.
Solutions
- Replace the catch event's event definition with a timer, message, or signal definition
- Remove the unsupported event definition or the whole catch event if it is not needed
- Convert unsupported constructs (e.g. link events) into equivalent supported elements before deployment
Example fix
// before <intermediateCatchEvent id="c1"><linkEventDefinition name="x"/></intermediateCatchEvent> // after <intermediateCatchEvent id="c1"><timerEventDefinition><timeDuration>PT1H</timeDuration></timerEventDefinition></intermediateCatchEvent>
Defensive patterns
Strategy: validation
Validate before calling
for (IntermediateCatchEvent e : model.getFlowElementsOfType(IntermediateCatchEvent.class)) {
for (EventDefinition ed : e.getEventDefinitions()) {
if (!(ed instanceof TimerEventDefinition || ed instanceof MessageEventDefinition || ed instanceof SignalEventDefinition)) {
throw new IllegalArgumentException("Unsupported catch event definition on " + e.getId());
}
}
} Type guard
function isSupportedCatchDefinition(ed) { return ed != null && ['timer','message','signal'].includes(ed.type ?? guessType(ed)); } Prevention
- Restrict catch events to timer/message/signal definitions
- Sanitize imported BPMN from third-party designers before deploy
- Pin the engine version matching your modeling tool's BPMN feature set
When it happens
Trigger: executeParse of an IntermediateCatchEvent whose eventDefinition is not a TimerEventDefinition, SignalEventDefinition, or MessageEventDefinition (e.g. a compensatescatch or link event definition placed on a catch event, or XML yielding an unexpected EventDefinition subclass).
Common situations: Using link or compensation event definitions on catch events (not supported here); importing BPMN from other tools emitting exotic event types; typo'd element names producing a default EventDefinition object.
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
- Unsupported event definition on start event
- Unsupported implementation type for EventListener
- Unsupported intermediate throw event type for throw event
- Activity needed for multi instance cannot bv found
- end event with cancelEventDefinition only supported inside…
AI-assisted analysis of flowable/flowable-engine@d6d39ce1c6 (2026-09-11).
Data as JSON: /api/errors/5fdfc22fb8202812.
Report an issue: GitHub.
Appendix: source
Thrown at modules/flowable5-engine/src/main/java/org/activiti/engine/impl/bpmn/parser/handler/IntermediateCatchEventParseHandler.java:79
nestedActivity = createActivityOnScope(bpmnParse, event, BpmnXMLConstants.ELEMENT_EVENT_CATCH, gatewayActivity);
} else {
nestedActivity = createActivityOnScope(bpmnParse, event, BpmnXMLConstants.ELEMENT_EVENT_CATCH, scope);
}
nestedActivity.setAsync(event.isAsynchronous());
nestedActivity.setExclusive(!event.isNotExclusive());
// Catch event behavior is the same for all types
nestedActivity.setActivityBehavior(bpmnParse.getActivityBehaviorFactory().createIntermediateCatchEventActivityBehavior(event));
if (eventDefinition instanceof TimerEventDefinition
|| eventDefinition instanceof SignalEventDefinition
|| eventDefinition instanceof MessageEventDefinition) {
bpmnParse.getBpmnParserHandlers().parseElement(bpmnParse, eventDefinition);
} else {
LOGGER.warn("Unsupported intermediate catch event type for event {}", event.getId());
}
}
}
}
View on GitHub (pinned to d6d39ce1c6)