flowable/flowable-engine · error · FlowableEventJsonException

The serializer type is not supported

Error message

The serializer type is not supported ${serializerType} for the channel model with key ${key}

What it means

Thrown by the outbound channel validator when a channel has no pipelineDelegateExpression and its serializerType is not one of the supported serializers (json, xml, expression, none). The serializer is only required when the payload transformation is not delegated to a pipeline delegate expression.

Solutions

  1. Set serializerType to a supported value (json, xml, expression, or none)
  2. Check for typos in serializerType
  3. Set pipelineDelegateExpression instead, which makes the serializer unnecessary
  4. Upgrade Flowable if the serializer type is legitimately supported in a newer version

Example fix

// before
{
  "key": "outbound",
  "serializerType": "proto"
}
// after
{
  "key": "outbound",
  "serializerType": "json"
}
Defensive patterns

Strategy: validation

Validate before calling

Set<String> supported = Set.of("json", "xml", "expression", "none");
if (isEmpty(channel.getPipelineDelegateExpression()) && !supported.contains(channel.getSerializerType())) {
    throw new IllegalArgumentException("Unsupported serializerType '" + channel.getSerializerType() + "'");
}

Type guard

boolean hasSupportedSerializer = c -> isSet(c.getPipelineDelegateExpression()) || supportedSerializers.contains(c.getSerializerType());

Try / catch

try {
    outboundValidator.validateChannel(model);
} catch (FlowableEventJsonException e) {
    logger.error("Unsupported serializer type: {}", e.getMessage());
}

Prevention

When it happens

Trigger: validateChannel is called on an OutboundChannelModel where getPipelineDelegateExpression() is empty and getSerializerType() is neither null/empty nor in the supportedSerializers set, e.g. "avro" or a typo like "jso".

Common situations: Typo in serializerType; using a serializer type from a newer Flowable version than the one deployed; omitting a pipelineDelegateExpression while also setting an invalid serializer type.

Understand the failure class

Background: Invalid enum value errors: "Unknown type", "Invalid scope", "must be one of" — when a string is not on the library's allowed list — this error's family across 23 libraries.

Related errors


AI-assisted analysis of flowable/flowable-engine@d6d39ce1c6 (2026-09-11). Data as JSON: /api/errors/719945b43515e769. Report an issue: GitHub.

Appendix: source

Thrown at modules/flowable-event-registry-json-converter/src/main/java/org/flowable/eventregistry/json/converter/OutboundChannelModelValidator.java:54

    public OutboundChannelModelValidator(Collection<String> supportedSerializers) {
        this.supportedSerializers = new HashSet<>(supportedSerializers);
    }

    @Override
    public void validateChannel(ChannelModel channelModel) {
        if (channelModel instanceof OutboundChannelModel outboundChannelModel) {

            validateChannel(outboundChannelModel);
        }
    }

    protected void validateChannel(OutboundChannelModel outboundChannelModel) {
        String serializerType = outboundChannelModel.getSerializerType();
        if (StringUtils.isEmpty(outboundChannelModel.getPipelineDelegateExpression()) &&
            !supportedSerializers.contains(serializerType)) {
            // Serializer is only needed if there is no pipeline delegate expression
            throw new FlowableEventJsonException(
                "The serializer type is not supported " + serializerType + " for the channel model with key " + outboundChannelModel.getKey());
        }
    }
}

View on GitHub (pinned to d6d39ce1c6)