pentaho/pentaho-kettle · error · KettleXMLException
Unable to load job entry from XML node
Error message
Unable to load job entry from XML node
What it means
HL7MLLPAcknowledge.loadXML() deserializes the job entry from its XML representation, reading server/port/variable tags via XMLHandler. Any KettleXMLException raised while parsing (malformed XML, missing or invalid node) is caught and rethrown as a new KettleXMLException with the message 'Unable to load job entry from XML node' and the original as cause.
Solutions
- Inspect the chained cause to find the exact XML parse error and line
- Validate/repair the <entry type="HL7MLLPAck"> XML block in the .kjb file
- Recreate the job entry in Spoon and re-save the job
- Check the file was not truncated/corrupted in transfer and re-export from source
Example fix
// before (malformed entry XML) <server>host<port>5050</port> // after <server>host</server> <port>5050</port>
Defensive patterns
Strategy: try-catch
Try / catch
try { jobMeta.loadXML(file, null, false); } catch (KettleXMLException e) { log.error("Job XML invalid: " + e.getMessage(), e.getCause()); } Prevention
- Do not hand-edit .kjb XML; use Spoon
- Validate XML after external post-processing of job files
- Keep PDI versions consistent between editors and runners
When it happens
Trigger: Loading a .kjb containing this HL7 MLLP Acknowledge entry whose <entry> XML block is malformed or unreadable — XMLHandler.getTagValue throws KettleXMLException during loadXML.
Common situations: Hand-edited or truncated job files; version incompatibility where the XML schema changed; corrupted file transfer; XML with invalid characters or wrong nesting produced by external tooling.
Related errors
- Unable to load job entry from XML node
- JobEntryZipFile.UnableLoadJobEntryXML
- Unable to load base info for job entry
- Unable to load file exists job entry from XML node
- Unable to load job entry of type 'Msgbox Info' from XML node
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/5b78b96d88f45499.
Report an issue: GitHub.
Appendix: source
Thrown at plugins/hl7/core/src/main/java/org/pentaho/di/job/entries/hl7mllpack/HL7MLLPAcknowledge.java:101
retval.append( super.getXML() );
retval.append( " " ).append( XMLHandler.addTagValue( "server", server ) );
retval.append( " " ).append( XMLHandler.addTagValue( "port", port ) );
retval.append( " " ).append( XMLHandler.addTagValue( "variable", variableName ) );
return retval.toString();
}
public void loadXML( Node entrynode, List<DatabaseMeta> databases, List<SlaveServer> slaveServers, Repository rep,
IMetaStore metaStore ) throws KettleXMLException {
try {
super.loadXML( entrynode, databases, slaveServers );
server = XMLHandler.getTagValue( entrynode, "server" );
port = XMLHandler.getTagValue( entrynode, "port" );
variableName = XMLHandler.getTagValue( entrynode, "variable" );
} catch ( KettleXMLException xe ) {
throw new KettleXMLException( "Unable to load job entry from XML node", xe );
}
}
@Override
public void loadRep( Repository rep, IMetaStore metaStore, ObjectId idJobentry, List<DatabaseMeta> databases,
List<SlaveServer> slaveServers ) throws KettleException {
try {
server = rep.getJobEntryAttributeString( idJobentry, "server" );
port = rep.getJobEntryAttributeString( idJobentry, "port" );
variableName = rep.getJobEntryAttributeString( idJobentry, "variable" );
} catch ( KettleException dbe ) {
throw new KettleException( "Unable to load job entry from the repository for id_jobentry=" + idJobentry, dbe );
}
}
public void saveRep( Repository rep, IMetaStore metaStore, ObjectId id_job ) throws KettleException {
try {
rep.saveJobEntryAttribute( id_job, getObjectId(), "server", server );View on GitHub (pinned to f3058517a1)