{"record":{"id":"a4211f8ca9cfddf2","repo":"flowable/flowable-engine","slug":"error-parsing-output-entry-a4211f","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/xml/converter/DecisionServiceXMLConverter.java","lineNumber":58,"sourceCode":"                xtr.next();\n                if (xtr.isStartElement() && ELEMENT_OUTPUT_DECISION.equalsIgnoreCase(xtr.getLocalName())) {\n                    DmnElementReference ref = new DmnElementReference();\n                    ref.setHref(xtr.getAttributeValue(null, ATTRIBUTE_HREF));\n                    decisionService.addOutputDecision(ref);\n                } if (xtr.isStartElement() && ELEMENT_ENCAPSULATED_DECISION.equalsIgnoreCase(xtr.getLocalName())) {\n                    DmnElementReference ref = new DmnElementReference();\n                    ref.setHref(xtr.getAttributeValue(null, ATTRIBUTE_HREF));\n                    decisionService.addEncapsulatedDecision(ref);\n                } if (xtr.isStartElement() && ELEMENT_INPUT_DATA.equalsIgnoreCase(xtr.getLocalName())) {\n                    DmnElementReference ref = new DmnElementReference();\n                    ref.setHref(xtr.getAttributeValue(null, ATTRIBUTE_HREF));\n                    decisionService.addInputData(ref);\n                } else if (xtr.isEndElement() && getXMLElementName().equalsIgnoreCase(xtr.getLocalName())) {\n                    readyWithDecisionService = true;\n                }\n            }\n        } catch (Exception e) {\n            LOGGER.warn(\"Error parsing output entry\", e);\n        }\n        return decisionService;\n    }\n\n    @Override\n    protected void writeAdditionalAttributes(DmnElement element, DmnDefinition model, XMLStreamWriter xtw) throws Exception {\n\n    }\n\n    @Override\n    protected void writeAdditionalChildElements(DmnElement element, DmnDefinition model, XMLStreamWriter xtw) throws Exception {\n\n    }\n}\n","sourceCodeStart":40,"sourceCodeEnd":73,"githubUrl":"https://github.com/flowable/flowable-engine/blob/d6d39ce1c69ff244f2d9dc6af756a9b95e865586/modules/flowable-dmn-xml-converter/src/main/java/org/flowable/dmn/xml/converter/DecisionServiceXMLConverter.java#L40-L73","documentation":"This is a warning logged (not a thrown exception) by DecisionServiceXMLConverter when converting a DMN XML <decisionService> element to its model object. Any exception raised while iterating the XML stream and calling addInputData/addOutputData is caught, logged, and parsing silently returns the partially-populated DecisionService. As a result the DMN definition may load successfully but with missing decision service inputs/outputs.","triggerScenarios":"Converting DMN XML with a <decisionService> element whose structure is malformed: e.g. an input/output child element with a missing or unparseable @id/@inputData/@outputData reference, unexpected nested elements, or a stream cursor already past the element so addInputData is called with invalid data.","commonSituations":"Hand-edited or tool-generated DMN files with an incomplete <decisionService> section; DMN XML exported from a different engine or an older Flowable version; files corrupted by copy-paste or a broken merge; references (decision/DMNElement ids) that do not resolve.","solutions":["Open the DMN XML file and validate the <decisionService> element: each input/output child must carry a valid inputData/outputData attribute referencing an existing id","Validate the whole DMN file against the DMN 1.1 XSD (e.g. xmllint --schema) before deployment to catch malformed structure early","Check the logged cause stack trace to identify the exact failing child element and fix or remove it","Re-export the decision table/decision service from the Flowable modeler instead of hand-editing the XML"],"exampleFix":"<!-- before: missing reference -->\n<decisionService id=\"ds1\">\n  <inputData />\n</decisionService>\n<!-- after: valid reference -->\n<decisionService id=\"ds1\">\n  <inputData inputData=\"input_1\" />\n</decisionService>","handlingStrategy":"validation","validationCode":"// Pre-check DMN XML before conversion\ntry {\n  DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(new File(\"decision.dmn\"));\n  // additionally assert every <inputData>/<outputData> has a reference attribute\n} catch (Exception e) {\n  throw new IllegalStateException(\"Malformed DMN decisionService XML\", e);\n}","typeGuard":null,"tryCatchPattern":"// The converter swallows exceptions; verify the parsed result instead\nDecisionService ds = converter.convertXMLToElement(xtr, model);\nif (ds.getInputs().isEmpty() && ds.getOutputs().isEmpty()) {\n  throw new IllegalStateException(\"decisionService parsed with no inputs/outputs - check converter warnings\");\n}","preventionTips":["Validate DMN files against the DMN 1.1 XSD before deployment","Never hand-edit DMN XML; edit in the Flowable modeler and re-export","Keep references (inputData/outputData ids) in sync when renaming elements","Watch for the converter's warn logs during parsing - parsing never fails loudly"],"tags":["dmn","xml-parsing","silent-failure"],"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"}