{"record":{"id":"43c1afe9c738e68f","repo":"pentaho/pentaho-kettle","slug":"unable-to-load-job-entry-of-type-sendnagiospassivecheck-from","errorCode":null,"errorMessage":"Unable to load job entry of type 'SendNagiosPassiveCheck' from XML node","messagePattern":"Unable to load job entry of type 'SendNagiosPassiveCheck' from XML node","errorType":"exception","errorClass":"KettleXMLException","httpStatus":null,"severity":"error","filePath":"engine/src/main/java/org/pentaho/di/job/entries/sendnagiospassivecheck/JobEntrySendNagiosPassiveCheck.java","lineNumber":259,"sourceCode":"  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      port = XMLHandler.getTagValue( entrynode, \"port\" );\n      serverName = XMLHandler.getTagValue( entrynode, \"servername\" );\n      responseTimeOut = XMLHandler.getTagValue( entrynode, \"responseTimeOut\" );\n      connectionTimeOut = XMLHandler.getTagValue( entrynode, \"connectionTimeOut\" );\n      password = XMLHandler.getTagValue( entrynode, \"password\" );\n\n      senderServerName = XMLHandler.getTagValue( entrynode, \"senderServerName\" );\n      senderServiceName = XMLHandler.getTagValue( entrynode, \"senderServiceName\" );\n      message = XMLHandler.getTagValue( entrynode, \"message\" );\n\n      encryptionMode = getEncryptionModeByCode( XMLHandler.getTagValue( entrynode, \"encryptionMode\" ) );\n      level = getLevelByCode( XMLHandler.getTagValue( entrynode, \"level\" ) );\n\n    } catch ( KettleXMLException xe ) {\n      throw new KettleXMLException( \"Unable to load job entry of type 'SendNagiosPassiveCheck' 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      port = rep.getJobEntryAttributeString( id_jobentry, \"port\" );\n      serverName = rep.getJobEntryAttributeString( id_jobentry, \"servername\" );\n      password = rep.getJobEntryAttributeString( id_jobentry, \"password\" );\n      responseTimeOut = rep.getJobEntryAttributeString( id_jobentry, \"responseTimeOut\" );\n      connectionTimeOut = rep.getJobEntryAttributeString( id_jobentry, \"connectionTimeOut\" );\n\n      senderServerName = rep.getJobEntryAttributeString( id_jobentry, \"senderServerName\" );\n      senderServiceName = rep.getJobEntryAttributeString( id_jobentry, \"senderServiceName\" );\n\n      message = rep.getJobEntryAttributeString( id_jobentry, \"message\" );\n\n      encryptionMode = getEncryptionModeByCode( rep.getJobEntryAttributeString( id_jobentry, \"encryptionMode\" ) );","sourceCodeStart":241,"sourceCodeEnd":277,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/engine/src/main/java/org/pentaho/di/job/entries/sendnagiospassivecheck/JobEntrySendNagiosPassiveCheck.java#L241-L277","documentation":"JobEntrySendNagiosPassiveCheck.loadXML wraps any KettleXMLException thrown while parsing the SendNagiosPassiveCheck entry's XML node (hostname, port, message, encryptionMode, level, etc.) into a KettleXMLException with the message 'Unable to load job entry of type SendNagiosPassiveCheck from XML node'. The parse error is the cause. It means the entry's XML could not be deserialized.","triggerScenarios":"Loading a .kjb file where the <entry type='SEND_NAGIOS_PASSIVE_CHECK'> node fails XMLHandler parsing, or getEncryptionModeByCode/getLevelByCode conversion within the try block throws KettleXMLException on an unknown code in the XML.","commonSituations":"Hand-edited .kjb with an invalid encryptionMode/level code; job XML from an incompatible Pentaho version; truncated or corrupt file transfer.","solutions":["Validate and repair the XML for this entry node (check encryptionMode/level codes are valid)","Restore the .kjb from backup or version control","Recreate the SendNagiosPassiveCheck entry in Spoon and re-save the job"],"exampleFix":"// before\nJobMeta job = new JobMeta(fileInputStream, null, null); // throws on bad node\n// after\ntry {\n  job = new JobMeta(fileInputStream, null, null);\n} catch (KettleXMLException e) {\n  logError(\"Bad XML in Nagios passive check entry: \" + e.getCause(), e);\n  // use backup copy or fix the entry XML\n}","handlingStrategy":"try-catch","validationCode":"Document doc = XMLHandler.loadXMLFile(kjbFile);\nif (doc == null) throw new KettleException(\"Invalid job XML: \" + kjbFile);","typeGuard":null,"tryCatchPattern":"try {\n  jobMeta = new JobMeta(inputStream, null, null);\n} catch (KettleXMLException e) {\n  logError(\"Cannot load SendNagiosPassiveCheck entry: \" + e.getCause(), e);\n  // fix the entry XML or restore from backup\n}","preventionTips":["Don't hand-edit encryptionMode/level codes in .kjb XML; use Spoon dropdowns","Validate job XML after cross-version transfers","Keep versioned backups of job files for recovery"],"tags":["xml","parsing","job-entry","nagios","kettle"],"backgroundTag":"xml-parse-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"}