{"record":{"id":"ed9c10e26c2548db","repo":"flowable/flowable-engine","slug":"xml-serialization-failed-for-eventinstance","errorCode":null,"errorMessage":"XML serialization failed for ${eventInstance}","messagePattern":"XML serialization failed for (.+?)","errorType":"exception","errorClass":"FlowableException","httpStatus":null,"severity":"error","filePath":"modules/flowable-event-registry/src/main/java/org/flowable/eventregistry/impl/serialization/EventPayloadToXmlStringSerializer.java","lineNumber":67,"sourceCode":"\n            if (!eventInstance.getPayloadInstances().isEmpty()) {\n                for (EventPayloadInstance payloadInstance : eventInstance.getPayloadInstances()) {\n                    if (!payloadInstance.getEventPayloadDefinition().isNotForBody()) {\n                        Element element = doc.createElement(payloadInstance.getDefinitionName());\n                        element.setTextContent(payloadInstance.getValue().toString());\n                        rootElement.appendChild(element);\n                    }\n                }\n            }\n\n            TransformerFactory tf = TransformerFactory.newInstance();\n            Transformer transformer = tf.newTransformer();\n            StringWriter writer = new StringWriter();\n            transformer.transform(new DOMSource(doc), new StreamResult(writer));\n            return writer.toString();\n\n        } catch (Exception e) {\n            throw new FlowableException(\"XML serialization failed for \" + eventInstance, e);\n        }\n    }\n\n}\n","sourceCodeStart":49,"sourceCodeEnd":72,"githubUrl":"https://github.com/flowable/flowable-engine/blob/d6d39ce1c69ff244f2d9dc6af756a9b95e865586/modules/flowable-event-registry/src/main/java/org/flowable/eventregistry/impl/serialization/EventPayloadToXmlStringSerializer.java#L49-L72","documentation":"EventPayloadToXmlStringSerializer.serialize builds a DOM Document from the payload and transforms it to a String with javax.xml Transformer. Any exception during transformer creation or the transform call ( TransformerConfigurationException, TransformerException, etc.) is wrapped in a FlowableException with the eventInstance. It means the XML engine could not turn the built DOM into a string.","triggerScenarios":"Calling serialize(eventInstance) when the DOM Document built from payloads is invalid for transformation (e.g. element names/attribute names from payload definitions contain illegal XML name characters) or when the JAXP TransformerFactory fails to instantiate/configure a Transformer in the environment.","commonSituations":"Event payload field names with characters invalid in XML element names; JAXP implementation problems in constrained environments (missing/endorsed Xalan, classloader issues in app servers); JDK XML security features (e.g. FSP) rejecting the transform.","solutions":["Inspect the wrapped cause (TransformerException) for the precise failure point.","Verify all event payload field names are valid XML element names (no spaces, leading digits, or special characters) in the event registry model.","Check that the JDK/JAXP transformer implementation is available and not blocked by security settings; test TransformerFactory.newInstance().newTransformer() in isolation.","If running in a restricted app server, ensure XML parser/transformer libraries are visible to the deployment's classloader."],"exampleFix":"// before\neventModel.getPayload(\"order amount\"); // invalid XML name\n\n// after\neventModel.getPayload(\"orderAmount\"); // valid XML element name","handlingStrategy":"try-catch","validationCode":"for (String name : payloadFieldNames) {\n    if (!name.matches(\"[A-Za-z_][A-Za-z0-9_.-]*\")) {\n        throw new IllegalArgumentException(\"Payload field name not XML-safe: \" + name);\n    }\n}\n// all names valid XML element names","typeGuard":"boolean isXmlSafeName(String name) {\n    return name != null && name.matches(\"[A-Za-z_][A-Za-z0-9_.-]*\");\n}","tryCatchPattern":"try {\n    String xml = serializer.serialize(eventInstance);\n} catch (FlowableException e) {\n    logger.error(\"XML serialization failed for event: \" + eventInstance, e.getCause());\n    throw e;\n}","preventionTips":["Keep event payload field names valid XML element names (letters/underscore first, no spaces or special chars).","Verify TransformerFactory.newInstance().newTransformer() works in your runtime environment.","Watch for JDK XML security features (JAXP FSP) blocking transforms in app servers."],"tags":["flowable","event-registry","xml","serialization","jaxp"],"backgroundTag":"json-serialization-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"}