{"record":{"id":"294d530f78e060ff","repo":"flowable/flowable-engine","slug":"error-parsing-output-entry","errorCode":null,"errorMessage":"Error parsing output entry","messagePattern":"Error parsing output entry","errorType":"console","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"modules/flowable-dmn-xml-converter/src/main/java/org/flowable/dmn/converter/child/OutputEntryParser.java","lineNumber":57,"sourceCode":"            return;\n        }\n\n        LiteralExpression outputEntry = new LiteralExpression();\n        outputEntry.setId(xtr.getAttributeValue(null, ATTRIBUTE_ID));\n\n        boolean readyWithOutputEntry = false;\n        try {\n            while (!readyWithOutputEntry && xtr.hasNext()) {\n                xtr.next();\n                if (xtr.isStartElement() && ELEMENT_TEXT.equalsIgnoreCase(xtr.getLocalName())) {\n                    outputEntry.setText(xtr.getElementText());\n\n                } else if (xtr.isEndElement() && getElementName().equalsIgnoreCase(xtr.getLocalName())) {\n                    readyWithOutputEntry = true;\n                }\n            }\n        } catch (Exception e) {\n            LOGGER.warn(\"Error parsing output entry\", e);\n        }\n\n        // determine corresponding output clause based on position\n        OutputClause outputClause = null;\n        DecisionTable decisionTable = (DecisionTable) decision.getExpression();\n        if (decisionTable.getOutputs() != null) {\n            if (decisionTable.getOutputs().get(rule.getOutputEntries().size()) != null) {\n                outputClause = decisionTable.getOutputs().get(rule.getOutputEntries().size());\n            }\n        }\n\n        if (outputClause == null) {\n            LOGGER.warn(\"Error determine output clause for position: {}\", decisionTable.getOutputs());\n        }\n\n        RuleOutputClauseContainer outputContainer = new RuleOutputClauseContainer();\n        outputContainer.setOutputClause(outputClause);\n        outputContainer.setOutputEntry(outputEntry);","sourceCodeStart":39,"sourceCodeEnd":75,"githubUrl":"https://github.com/flowable/flowable-engine/blob/d6d39ce1c69ff244f2d9dc6af756a9b95e865586/modules/flowable-dmn-xml-converter/src/main/java/org/flowable/dmn/converter/child/OutputEntryParser.java#L39-L75","documentation":"Warning logged by OutputEntryParser.parseChildElement when an exception is thrown while parsing a rule's <outputEntry> element from the DMN XML stream. Like the other child parsers, it logs and continues, leaving the entry null/partial so the rule cell is effectively empty in the deployed model instead of the deployment failing.","triggerScenarios":"While consuming XMLStreamReader events until the </outputEntry> end element, the reader throws (malformed XML, unexpected EOF, invalid characters in the expression text).","commonSituations":"Unescaped <, >, & characters inside FEEL output expressions; truncated .dmn files; XML produced by a non-conformant exporter.","solutions":["Locate the error via the attached stack trace (line/column of the XMLStreamException).","Escape XML special characters in the expression or wrap it in CDATA.","Validate the .dmn against the DMN XSD.","Re-export the decision table from the DMN editor."],"exampleFix":"<!-- before -->\n<outputEntry><text>riskLevel = \"high\" && amount > 1000</text></outputEntry>\n<!-- after -->\n<outputEntry><text>riskLevel = \"high\" &amp;&amp; amount &gt; 1000</text></outputEntry>","handlingStrategy":"validation","validationCode":"// XML-escape output expressions before writing .dmn\nString safe = expr.replace(\"&\", \"&amp;\").replace(\"<\", \"&lt;\").replace(\">\", \"&gt;\");","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Escape XML special characters in all FEEL expressions","XSD-validate DMN resources before deployment","Investigate every 'Error parsing output entry' warning — the rule cell is silently dropped","After conversion, assert output entries resolved to non-null containers"],"tags":["flowable","dmn","xml-parsing","escaping"],"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-14T05:17:10.506Z"}