{"record":{"id":"917d3bb134be1b83","repo":"flowable/flowable-engine","slug":"error-processing-cmmn-document-917d3b","errorCode":null,"errorMessage":"Error processing CMMN document","messagePattern":"Error processing CMMN document","errorType":"exception","errorClass":"XMLException","httpStatus":null,"severity":"error","filePath":"modules/flowable-cmmn-converter/src/main/java/org/flowable/cmmn/converter/ExtensionElementsXMLConverter.java","lineNumber":155,"sourceCode":"\n                    }\n\n                } else if (xtr.isEndElement()) {\n                    if (CmmnXmlConstants.ELEMENT_TASK_LISTENER.equalsIgnoreCase(xtr.getLocalName())\n                                    || CmmnXmlConstants.ELEMENT_PLAN_ITEM_LIFECYCLE_LISTENER.equalsIgnoreCase(xtr.getLocalName())\n                                    || CmmnXmlConstants.ELEMENT_CASE_LIFECYCLE_LISTENER.equalsIgnoreCase(xtr.getLocalName())) {\n                        \n                        conversionHelper.removeCurrentCmmnElement();\n                        \n                    } else if (CmmnXmlConstants.ELEMENT_EXTENSION_ELEMENTS.equalsIgnoreCase(xtr.getLocalName())) {\n                        readyWithChildElements = true;\n                    }\n                }\n\n            }\n        } catch (Exception ex) {\n            LOGGER.error(\"Error processing CMMN document\", ex);\n            throw new XMLException(\"Error processing CMMN document\", ex);\n        }\n\n        return null;\n    }\n\n    protected void readCompletionNeutralRule(XMLStreamReader xtr, ConversionHelper conversionHelper) {\n        if (conversionHelper.getCurrentCmmnElement() instanceof PlanItemControl planItemControl) {\n            CompletionNeutralRule completionNeutralRule = new CompletionNeutralRule();\n            completionNeutralRule.setName(xtr.getAttributeValue(null, CmmnXmlConstants.ATTRIBUTE_NAME));\n\n            planItemControl.setCompletionNeutralRule(completionNeutralRule);\n\n            readCommonXmlInfo(completionNeutralRule, xtr);\n\n            boolean readyWithChildElements = false;\n            try {\n\n                while (!readyWithChildElements && xtr.hasNext()) {","sourceCodeStart":137,"sourceCodeEnd":173,"githubUrl":"https://github.com/flowable/flowable-engine/blob/d6d39ce1c69ff244f2d9dc6af756a9b95e865586/modules/flowable-cmmn-converter/src/main/java/org/flowable/cmmn/converter/ExtensionElementsXMLConverter.java#L137-L173","documentation":"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.","triggerScenarios":"Any exception inside convert while reading extension element children: malformed XML stream reads, unrecognized converter errors while handling flowable extension elements, unexpected element structure.","commonSituations":"CMMN files containing flowable-namespaced extensions produced by other tools or older Flowable versions with changed extension schemas; hand-written extension XML with typos.","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."],"exampleFix":null,"handlingStrategy":"validation","validationCode":"// Check that every extensionElements child is in the flowable namespace and schema-valid\n// before handing the document to the converter (XSD validation step)","typeGuard":null,"tryCatchPattern":"try {\n    cmmnModel = converter.convertToCmmnModel(stream, encoding);\n} catch (XMLException e) {\n    if (\"Error processing CMMN document\".equals(e.getMessage())) {\n        LOGGER.error(\"Conversion failed; cause:\", e.getCause()); // the cause pinpoints the faulty extension element\n    }\n    throw e;\n}","preventionTips":["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."],"tags":["cmmn","xml","extension-elements"],"backgroundTag":"schema-validation-failed","analyzedSha":"d6d39ce1c69ff244f2d9dc6af756a9b95e865586","analyzedAt":"2026-09-11T06:41:19.413Z","contentChangedAt":"2026-09-11T06:41:19.413Z","schemaVersion":2},"datasetVersion":"2026-09-18T11:17:12.947Z"}