flowable/flowable-engine · warning

Unsupported payload type

Error message

Unsupported payload type: {} 

What it means

This WARN is logged by XmlElementsToMapPayloadExtractor.getPayloadValue when the payload definition declares a type not among the supported ones (string, integer, double, long, etc.). The extractor falls back to returning the raw text content instead of a converted value. The event still processes, but the payload value may have an unexpected type.

Solutions

  1. Change the payload definition type in the event model to a supported EventPayloadTypes value (string, integer, long, double)
  2. Fix casing/typos so definitionType matches EventPayloadTypes constants exactly
  3. Upgrade Flowable if a needed payload type was added in a newer version
  4. Validate the event definition XML against the supported payload types before deployment

Example fix

<!-- before -->
<payload name="amount" type="decimal"/>
<!-- after -->
<payload name="amount" type="double"/>
Defensive patterns

Strategy: validation

Validate before calling

// whitelist check before deploying an event definition
Set<String> allowed = Set.of("string","integer","long","double");
if (!allowed.contains(payloadDefinition.getType())) {
    throw new IllegalArgumentException("Unsupported payload type: " + payloadDefinition.getType());
}

Prevention

When it happens

Trigger: extractPayload calls getPayloadValue for an XML event whose payload definition type (definitionType) is an unsupported string, e.g. a custom type name like 'date' or 'boolean' not in EventPayloadTypes.

Common situations: Event model XML declares a payload type the extractor does not know; copy-pasted type name with wrong casing; newer Flowable types used against an older extractor; hand-edited event definition XML.

Related errors


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

Appendix: source

Thrown at modules/flowable-event-registry/src/main/java/org/flowable/eventregistry/impl/payload/XmlElementsToMapPayloadExtractor.java:70

            String textContent = childNode.getTextContent();

            if (EventPayloadTypes.STRING.equals(definitionType)) {
                return textContent;

            } else if (EventPayloadTypes.BOOLEAN.equals(definitionType)) {
                return Boolean.valueOf(textContent);

            } else if (EventPayloadTypes.INTEGER.equals(definitionType)) {
                return Integer.valueOf(textContent);

            } else if (EventPayloadTypes.DOUBLE.equals(definitionType)) {
                return Double.valueOf(textContent);

            } else if (EventPayloadTypes.LONG.equals(definitionType)) {
                return Long.valueOf(textContent);

            } else {
                LOGGER.warn("Unsupported payload type: {} ", definitionType);
                return textContent;
            }
        }

        return null;
    }

    protected Node getChildNode(Document document, String elementName) {
        NodeList childNodes = null;
        if (document.getChildNodes().getLength() == 1) {
            childNodes = document.getFirstChild().getChildNodes();
        } else {
            childNodes = document.getChildNodes();
        }

        for (int i = 0; i < childNodes.getLength(); i++) {
            Node node = childNodes.item(i);
            if (elementName.equals(node.getNodeName())) {

View on GitHub (pinned to d6d39ce1c6)