{"record":{"id":"d5721dd467853fec","repo":"pentaho/pentaho-kettle","slug":"jobsendnagiospassivecheck-error-messagemissing","errorCode":null,"errorMessage":"JobSendNagiosPassiveCheck.Error.MessageMissing","messagePattern":"JobSendNagiosPassiveCheck\\.Error\\.MessageMissing","errorType":"exception","errorClass":"KettleException","httpStatus":null,"severity":"error","filePath":"engine/src/main/java/org/pentaho/di/job/entries/sendnagiospassivecheck/JobEntrySendNagiosPassiveCheck.java","lineNumber":472,"sourceCode":"    int realPort = Const.toInt( environmentSubstitute( port ), DEFAULT_PORT );\n    int realResponseTimeOut = Const.toInt( environmentSubstitute( responseTimeOut ), DEFAULT_RESPONSE_TIME_OUT );\n    int realConnectionTimeOut =\n      Const.toInt( environmentSubstitute( connectionTimeOut ), DEFAULT_CONNECTION_TIME_OUT );\n\n    // Sender\n    String realSenderServerName = environmentSubstitute( senderServerName );\n    String realSenderServiceName = environmentSubstitute( senderServiceName );\n\n    try {\n      if ( Utils.isEmpty( realServername ) ) {\n        throw new KettleException( BaseMessages.getString(\n          PKG, \"JobSendNagiosPassiveCheck.Error.TargetServerMissing\" ) );\n      }\n\n      String realMessageString = environmentSubstitute( message );\n\n      if ( Utils.isEmpty( realMessageString ) ) {\n        throw new KettleException( BaseMessages.getString( PKG, \"JobSendNagiosPassiveCheck.Error.MessageMissing\" ) );\n      }\n\n      Level level = Level.UNKNOWN;\n      switch ( getLevel() ) {\n        case LEVEL_TYPE_OK:\n          level = Level.OK;\n          break;\n        case LEVEL_TYPE_CRITICAL:\n          level = Level.CRITICAL;\n          break;\n        case LEVEL_TYPE_WARNING:\n          level = Level.WARNING;\n          break;\n        default:\n          break;\n      }\n      Encryption encr = Encryption.NONE;\n      switch ( getEncryptionMode() ) {","sourceCodeStart":454,"sourceCodeEnd":490,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/engine/src/main/java/org/pentaho/di/job/entries/sendnagiospassivecheck/JobEntrySendNagiosPassiveCheck.java#L454-L490","documentation":"This KettleException is thrown in execute() when the message to send to Nagios (after environment substitution) is empty. A passive check must carry a message payload, so the entry aborts with the localized text of JobSendNagiosPassiveCheck.Error.MessageMissing.","triggerScenarios":"Executing the entry when the 'Message' field is blank, or contains only variables that resolve to empty at runtime (e.g. ${MESSAGE} from an unset variable or an empty previous-result field).","commonSituations":"Message built from a variable populated by a previous job entry that produced no output; variable renamed upstream; field left empty in the job entry dialog.","solutions":["Provide a static or templated message in the entry's Message field","If the message comes from variables, ensure those variables are set by a prior entry (e.g. 'Set Variables' or Get Variables from result rows)","Guard the flow: only run this entry when the upstream step produced data (use evaluation of the previous result in the job hop)"],"exampleFix":"// before\n// Message field: ${RESULT_MSG}  (variable never set)\n// after\n// Set Variables entry earlier in the job sets RESULT_MSG,\n// or default: Message field: Check completed ${Internal.Job.Name}","handlingStrategy":"validation","validationCode":"// before the Nagios entry\nString msg = job.getVariable(\"RESULT_MSG\");\nif (msg == null || msg.trim().isEmpty()) {\n  msg = \"default check message\"; // or abort earlier\n  job.setVariable(\"RESULT_MSG\", msg);\n}","typeGuard":"boolean isNonEmpty(String s) { return s != null && !s.trim().isEmpty(); }","tryCatchPattern":"try {\n  result = jobEntry.execute(result, nr);\n} catch (KettleException e) {\n  if (e.getMessage().contains(\"MessageMissing\")) {\n    logError(\"Nagios message was empty; check upstream variable assignment\");\n  }\n}","preventionTips":["Gate the Nagios entry on the previous entry's success so result variables are populated","Give the message field a static fallback text combined with variables","Verify variable names upstream (typos resolve to empty silently)"],"tags":["pdi","nagios","configuration","validation"],"backgroundTag":"empty-required-field","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"}