{"record":{"id":"f196cc696046ad0e","repo":"pentaho/pentaho-kettle","slug":"unable-to-load-job-entry-of-type-telnet-from-xml-node","errorCode":null,"errorMessage":"Unable to load job entry of type 'Telnet' from XML node","messagePattern":"Unable to load job entry of type 'Telnet' from XML node","errorType":"exception","errorClass":"KettleXMLException","httpStatus":null,"severity":"error","filePath":"engine/src/main/java/org/pentaho/di/job/entries/telnet/JobEntryTelnet.java","lineNumber":99,"sourceCode":"    StringBuilder retval = new StringBuilder( 100 );\n\n    retval.append( super.getXML() );\n    retval.append( \"      \" ).append( XMLHandler.addTagValue( \"hostname\", hostname ) );\n    retval.append( \"      \" ).append( XMLHandler.addTagValue( \"port\", port ) );\n    retval.append( \"      \" ).append( XMLHandler.addTagValue( \"timeout\", timeout ) );\n\n    return retval.toString();\n  }\n\n  public void loadXML( Node entrynode, List<DatabaseMeta> databases, List<SlaveServer> slaveServers,\n    Repository rep, IMetaStore metaStore ) throws KettleXMLException {\n    try {\n      super.loadXML( entrynode, databases, slaveServers );\n      hostname = XMLHandler.getTagValue( entrynode, \"hostname\" );\n      port = XMLHandler.getTagValue( entrynode, \"port\" );\n      timeout = XMLHandler.getTagValue( entrynode, \"timeout\" );\n    } catch ( KettleXMLException xe ) {\n      throw new KettleXMLException( \"Unable to load job entry of type 'Telnet' from XML node\", xe );\n    }\n  }\n\n  public void loadRep( Repository rep, IMetaStore metaStore, ObjectId id_jobentry, List<DatabaseMeta> databases,\n    List<SlaveServer> slaveServers ) throws KettleException {\n    try {\n      hostname = rep.getJobEntryAttributeString( id_jobentry, \"hostname\" );\n      port = rep.getJobEntryAttributeString( id_jobentry, \"port\" );\n      timeout = rep.getJobEntryAttributeString( id_jobentry, \"timeout\" );\n    } catch ( KettleException dbe ) {\n      throw new KettleException(\n        \"Unable to load job entry of type 'Telnet' exists from the repository for id_jobentry=\" + id_jobentry,\n        dbe );\n    }\n  }\n\n  public void saveRep( Repository rep, IMetaStore metaStore, ObjectId id_job ) throws KettleException {\n    try {","sourceCodeStart":81,"sourceCodeEnd":117,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/engine/src/main/java/org/pentaho/di/job/entries/telnet/JobEntryTelnet.java#L81-L117","documentation":"Thrown by JobEntryTelnet.loadXML when parsing a job entry XML node for a Telnet job entry fails with a KettleXMLException. It indicates the XML representation of the entry could not be read into the object. The original parse exception is preserved as the cause.","triggerScenarios":"Loading a .kjb job file whose Telnet job entry XML node is malformed, uses an unrecognized schema/version, or contains unreadable content that XMLHandler cannot parse for hostname/port/timeout.","commonSituations":"Hand-edited or truncated .kjb files; jobs exported by a newer Pentaho version then opened in an older one; XML node tags renamed across versions causing null/invalid values downstream; file encoding corruption.","solutions":["Open the .kjb in a text editor and validate the Telnet job entry XML node for malformed tags","Re-save the job from a compatible Pentaho/Spoon version matching the runtime","Restore the job file from backup or re-create the Telnet job entry in the designer","Check the wrapped KettleXMLException cause for the exact parse error location"],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":"Document doc = XMLHandler.loadXMLFile( jobFile ); if ( doc == null || XMLHandler.getSubNode( doc.getFirstChild(), \"entries\" ) == null ) { throw new IllegalStateException( \"Malformed job XML\" ); }","typeGuard":null,"tryCatchPattern":"try { entry.loadXML( entrynode, databases, slaveServers, rep, metaStore ); } catch ( KettleXMLException e ) { log.error( \"Bad Telnet entry XML\", e.getCause() ); }","preventionTips":["Do not hand-edit .kjb files; use Spoon","Keep designer and runtime Pentaho versions aligned","Validate job files after export/transfer","Keep backups of job files"],"tags":["kettle","xml","deserialization"],"backgroundTag":"json-unmarshal-failed","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"}