{"record":{"id":"f90a9c06f8f39175","repo":"pentaho/pentaho-kettle","slug":"unable-to-load-job-entry-from-xml-node-hl7mllpinput","errorCode":null,"errorMessage":"Unable to load job entry from XML node","messagePattern":"Unable to load job entry from XML node","errorType":"exception","errorClass":"KettleXMLException","httpStatus":null,"severity":"error","filePath":"plugins/hl7/core/src/main/java/org/pentaho/di/job/entries/hl7mllpin/HL7MLLPInput.java","lineNumber":110,"sourceCode":"    retval.append( \"      \" ).append( XMLHandler.addTagValue( \"message_variable\", messageVariableName ) );\n    retval.append( \"      \" ).append( XMLHandler.addTagValue( \"type_variable\", messageTypeVariableName ) );\n    retval.append( \"      \" ).append( XMLHandler.addTagValue( \"version_variable\", versionVariableName ) );\n\n    return retval.toString();\n  }\n\n  public void loadXML( Node entrynode, List<DatabaseMeta> databases, List<SlaveServer> slaveServers, Repository rep,\n      IMetaStore metaStore ) throws KettleXMLException {\n    try {\n      super.loadXML( entrynode, databases, slaveServers );\n\n      server = XMLHandler.getTagValue( entrynode, \"server\" );\n      port = XMLHandler.getTagValue( entrynode, \"port\" );\n      messageVariableName = XMLHandler.getTagValue( entrynode, \"message_variable\" );\n      messageTypeVariableName = XMLHandler.getTagValue( entrynode, \"type_variable\" );\n      versionVariableName = XMLHandler.getTagValue( entrynode, \"version_variable\" );\n    } catch ( KettleXMLException xe ) {\n      throw new KettleXMLException( \"Unable to load job entry from XML node\", xe );\n    }\n  }\n\n  @Override\n  public void loadRep( Repository rep, IMetaStore metaStore, ObjectId idJobentry, List<DatabaseMeta> databases,\n      List<SlaveServer> slaveServers ) throws KettleException {\n    try {\n      server = rep.getJobEntryAttributeString( idJobentry, \"server\" );\n      port = rep.getJobEntryAttributeString( idJobentry, \"port\" );\n      messageVariableName = rep.getJobEntryAttributeString( idJobentry, \"message_variable\" );\n      messageTypeVariableName = rep.getJobEntryAttributeString( idJobentry, \"type_variable\" );\n      versionVariableName = rep.getJobEntryAttributeString( idJobentry, \"version_variable\" );\n    } catch ( KettleException dbe ) {\n      throw new KettleException( \"Unable to load job entry from the repository for id_jobentry=\" + idJobentry, dbe );\n    }\n  }\n\n  public void saveRep( Repository rep, IMetaStore metaStore, ObjectId id_job ) throws KettleException {","sourceCodeStart":92,"sourceCodeEnd":128,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/plugins/hl7/core/src/main/java/org/pentaho/di/job/entries/hl7mllpin/HL7MLLPInput.java#L92-L128","documentation":"HL7MLLPInput.loadXML() deserializes the job entry from XML, reading server, port, message_variable, type_variable and version_variable tags via XMLHandler. A KettleXMLException during parsing is caught and rethrown as 'Unable to load job entry from XML node' with the original cause attached.","triggerScenarios":"Loading a .kjb whose HL7 MLLP Input <entry> XML block is malformed or invalid so XMLHandler.getTagValue throws during loadXML.","commonSituations":"Hand-edited job files; truncated/corrupted downloads; schema changes across PDI versions; XML produced by external generators with invalid characters or missing parent node.","solutions":["Inspect the chained cause for the precise XML parse error","Repair the <entry type=\"HL7MLLPInput\"> XML block in the .kjb","Rebuild the job entry in Spoon and re-save","Re-transfer the file if it was corrupted in transit"],"exampleFix":"// before (truncated entry)\n<message_variable>msg\n// after\n<message_variable>msg</message_variable>\n<type_variable>type</type_variable>","handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"try { jobMeta.loadXML(file, null, false); } catch (KettleXMLException e) { log.error(\"HL7MLLPInput entry XML invalid: \" + e.getMessage(), e.getCause()); }","preventionTips":["Validate .kjb files with xmllint after any external edit","Avoid transferring job files in non-binary mode","Test job files after PDI upgrades"],"tags":["pdi","hl7","xml","job-entry","deserialization"],"backgroundTag":"xml-parse-error","analyzedSha":"f3058517a153da500bf4551f46d79b91bf8ec552","analyzedAt":"2026-09-13T14:04:16.340Z","contentChangedAt":"2026-09-13T14:04:16.340Z","schemaVersion":2},"datasetVersion":"2026-09-20T23:17:15.980Z"}