flowable/flowable-engine · error · FlowableException
Could not find an outbound channel adapter for channel
Error message
Could not find an outbound channel adapter for channel {channelModel.getKey()} What it means
Within DefaultOutboundEventProcessor.sendEvent(), after the outbound pipeline runs, the channel model's OutboundEventChannelAdapter is fetched and must be non-null; otherwise FlowableException is thrown. It means the channel model was found and used for processing, but it has no adapter configured to actually deliver the serialized event (e.g. no JMS/Kafka adapter wired).
Solutions
- Redeploy the channel model with an outboundEventChannelAdapter configured (e.g. a Kafka/JMS topic adapter)
- Verify the adapter bean exists in the application context and matches the name referenced by the channel model
- Check the deployed channel model version actually contains the adapter (inspect the channel model JSON/XML in the repository)
- Set the adapter programmatically: ((OutboundChannelModel) channelModel).setOutboundEventChannelAdapter(adapter) for custom setups
Example fix
// before <channel id="myChannel" source="processEvent" /> <!-- no adapter configured --> // after <channel id="myChannel" source="processEvent" outboundEventChannelAdapter="myKafkaAdapter" />
Defensive patterns
Strategy: validation
Validate before calling
null
Type guard
null
Try / catch
null
Prevention
- Assert adapters exist during application startup
When it happens
Trigger: Sending an event through a channel whose OutboundChannelModel was deployed/parsed without an outboundEventChannelAdapter property, or where the adapter bean failed to be injected/resolved at runtime.
Common situations: Channel XML model defined without the adapter attribute; Spring bean for the adapter missing or misnamed (classpath/service lookup returns null); partially deployed channel model from an older model version.
Related errors
- A channel key detection value is required for the channel…
- No channel keys configured for
- No channel model set for outgoing
- no org.flowable.eventregistry.api.EventRegistryEngine…
- partition in TopicPartition for topic
AI-assisted analysis of flowable/flowable-engine@d6d39ce1c6 (2026-09-11).
Data as JSON: /api/errors/a16c29866781230f.
Report an issue: GitHub.
Appendix: source
Thrown at modules/flowable-event-registry/src/main/java/org/flowable/eventregistry/impl/DefaultOutboundEventProcessor.java:62
if (channelModels == null || channelModels.isEmpty()) {
throw new FlowableException("No channel model set for outgoing " + eventInstance);
}
for (ChannelModel channelModel : channelModels) {
OutboundChannelModel outboundChannelModel = (OutboundChannelModel) channelModel;
Map<String, Object> headerMap = new HashMap<>();
for (EventPayloadInstance headerInstance : eventInstance.getHeaderInstances()) {
headerMap.put(headerInstance.getDefinitionName(), headerInstance.getValue());
}
OutboundEventProcessingPipeline<?> outboundEventProcessingPipeline = (OutboundEventProcessingPipeline<?>) outboundChannelModel.getOutboundEventProcessingPipeline();
Object rawEvent = outboundEventProcessingPipeline.run(eventInstance);
OutboundEventChannelAdapter outboundEventChannelAdapter = (OutboundEventChannelAdapter<?>) outboundChannelModel.getOutboundEventChannelAdapter();
if (outboundEventChannelAdapter == null) {
throw new FlowableException("Could not find an outbound channel adapter for channel " + channelModel.getKey());
}
outboundEventChannelAdapter.sendEvent(new DefaultOutboundEvent(rawEvent, eventInstance, headerMap));
}
}
}
View on GitHub (pinned to d6d39ce1c6)