{"record":{"id":"954064667e6ed99c","repo":"pentaho/pentaho-kettle","slug":"syslogmessage-error-messagefieldmissing","errorCode":null,"errorMessage":"SyslogMessage.Error.MessageFieldMissing","messagePattern":"SyslogMessage\\.Error\\.MessageFieldMissing","errorType":"exception","errorClass":"KettleException","httpStatus":null,"severity":"error","filePath":"engine/src/main/java/org/pentaho/di/trans/steps/syslog/SyslogMessage.java","lineNumber":67,"sourceCode":"      Trans trans ) {\n    super( stepMeta, stepDataInterface, copyNr, transMeta, trans );\n  }\n\n  public boolean processRow( StepMetaInterface smi, StepDataInterface sdi ) throws KettleException {\n    meta = (SyslogMessageMeta) smi;\n    data = (SyslogMessageData) sdi;\n\n    Object[] r = getRow(); // Get row from input rowset & set row busy!\n    if ( r == null ) { // no more input to be expected...\n\n      setOutputDone();\n      return false;\n    }\n    if ( first ) {\n      first = false;\n      // Check if message field is provided\n      if ( Utils.isEmpty( meta.getMessageFieldName() ) ) {\n        throw new KettleException( BaseMessages.getString( PKG, \"SyslogMessage.Error.MessageFieldMissing\" ) );\n      }\n\n      // cache the position of the source filename field\n      data.indexOfMessageFieldName = getInputRowMeta().indexOfValue( meta.getMessageFieldName() );\n      if ( data.indexOfMessageFieldName < 0 ) {\n        // The field is unreachable !\n        throw new KettleException( BaseMessages.getString( PKG, \"SyslogMessage.Exception.CouldnotFindField\", meta\n            .getMessageFieldName() ) );\n      }\n\n    }\n\n    try {\n      // get message\n      String message = getInputRowMeta().getString( r, data.indexOfMessageFieldName );\n\n      if ( Utils.isEmpty( message ) ) {\n        throw new KettleException( BaseMessages.getString( PKG, \"SyslogMessage.Error.MessageEmpty\" ) );","sourceCodeStart":49,"sourceCodeEnd":85,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/engine/src/main/java/org/pentaho/di/trans/steps/syslog/SyslogMessage.java#L49-L85","documentation":"First-row validation in SyslogMessage.processRow: the step's Message field setting is empty, so there is no stream field to take the syslog message text from. Fires once, on the first row, before any message is sent.","triggerScenarios":"Executing the Syslog Message transform with the 'Message fieldname' left blank in the step dialog.","commonSituations":"Fresh step dropped onto canvas and run with defaults; XML/rep import lost the fieldname attribute; refactoring renamed the setting and old transformations show blank value.","solutions":["Set 'Message fieldname' in the Syslog Message step dialog to an existing incoming field","Re-save the transformation so the fieldname attribute is persisted","Add a check() pass or validation before running to catch the blank setting early","If the field comes from an upstream step, verify that step emits it"],"exampleFix":"// before\nmeta.setMessageFieldName(\"\");\n// after\nmeta.setMessageFieldName(\"message\");","handlingStrategy":"validation","validationCode":"if (meta.getMessageFieldName() == null || meta.getMessageFieldName().trim().isEmpty()) { throw new IllegalArgumentException(\"Syslog Message: message fieldname must be set\"); }","typeGuard":null,"tryCatchPattern":"try { processRow(); } catch (KettleException e) { if (e.getMessage().contains(\"MessageFieldMissing\")) { logError(\"Configure message fieldname\"); setErrors(1); stopAll(true); } }","preventionTips":["Configure the message fieldname immediately after adding the step","Run check() on the transformation to catch blank settings","Preview rows before running the full transformation"],"tags":["kettle","syslog","configuration","missing-field"],"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"}