flowable/flowable-engine · error · XMLException
Error processing CMMN document
Error message
Error processing CMMN document
What it means
Thrown by ExtensionElementsXMLConverter.convert when any exception occurs while processing a CMMN element's <extensionElements>. Any failure parsing nested extension content (listeners, fields, custom rules) is logged and rethrown as an XMLException with this generic message.
Solutions
- Read the chained 'caused by' exception and LOGGER output to find the exact extension element that failed.
- Fix or remove the malformed element inside <extensionElements> in the CMMN XML.
- Ensure extension elements conform to the Flowable CMMN extension schema for your Flowable version.
Defensive patterns
Strategy: validation
Validate before calling
// Check that every extensionElements child is in the flowable namespace and schema-valid // before handing the document to the converter (XSD validation step)
Try / catch
try {
cmmnModel = converter.convertToCmmnModel(stream, encoding);
} catch (XMLException e) {
if ("Error processing CMMN document".equals(e.getMessage())) {
LOGGER.error("Conversion failed; cause:", e.getCause()); // the cause pinpoints the faulty extension element
}
throw e;
} Prevention
- Always inspect the cause chain — the generic message hides the real fault.
- Keep extension element markup aligned with the Flowable version's CMMN extension schema.
- Avoid round-tripping CMMN through third-party tools without validating extensions afterwards.
When it happens
Trigger: Any exception inside convert while reading extension element children: malformed XML stream reads, unrecognized converter errors while handling flowable extension elements, unexpected element structure.
Common situations: CMMN files containing flowable-namespaced extensions produced by other tools or older Flowable versions with changed extension schemas; hand-written extension XML with typos.
Understand the failure class
Background: Schema validation failed / invalid input schema: payload rejected because its shape doesn't match the expected schema — this error's family across 28 libraries.
Related errors
- e.getMessage()
- Error converting condition
- Error converting decision reference expression
- Error parsing XML
- Error processing CMMN XML document
AI-assisted analysis of flowable/flowable-engine@d6d39ce1c6 (2026-09-11).
Data as JSON: /api/errors/917d3bb134be1b83.
Report an issue: GitHub.
Appendix: source
Thrown at modules/flowable-cmmn-converter/src/main/java/org/flowable/cmmn/converter/ExtensionElementsXMLConverter.java:155
}
} else if (xtr.isEndElement()) {
if (CmmnXmlConstants.ELEMENT_TASK_LISTENER.equalsIgnoreCase(xtr.getLocalName())
|| CmmnXmlConstants.ELEMENT_PLAN_ITEM_LIFECYCLE_LISTENER.equalsIgnoreCase(xtr.getLocalName())
|| CmmnXmlConstants.ELEMENT_CASE_LIFECYCLE_LISTENER.equalsIgnoreCase(xtr.getLocalName())) {
conversionHelper.removeCurrentCmmnElement();
} else if (CmmnXmlConstants.ELEMENT_EXTENSION_ELEMENTS.equalsIgnoreCase(xtr.getLocalName())) {
readyWithChildElements = true;
}
}
}
} catch (Exception ex) {
LOGGER.error("Error processing CMMN document", ex);
throw new XMLException("Error processing CMMN document", ex);
}
return null;
}
protected void readCompletionNeutralRule(XMLStreamReader xtr, ConversionHelper conversionHelper) {
if (conversionHelper.getCurrentCmmnElement() instanceof PlanItemControl planItemControl) {
CompletionNeutralRule completionNeutralRule = new CompletionNeutralRule();
completionNeutralRule.setName(xtr.getAttributeValue(null, CmmnXmlConstants.ATTRIBUTE_NAME));
planItemControl.setCompletionNeutralRule(completionNeutralRule);
readCommonXmlInfo(completionNeutralRule, xtr);
boolean readyWithChildElements = false;
try {
while (!readyWithChildElements && xtr.hasNext()) {View on GitHub (pinned to d6d39ce1c6)