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

  1. Replace the unsupported event definition with a supported type (timer, error, signal, message, or compensate)
  2. Remove the unsupported definition from the boundary event
  3. Re-model the behavior using supported constructs (e.g. use an error event instead of escalation)
  4. 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

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


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)