{"record":{"id":"86dbd0aac7c70b1e","repo":"pentaho/pentaho-kettle","slug":"mailvalidator-error-resultfieldnamemissing","errorCode":null,"errorMessage":"MailValidator.Error.ResultFieldNameMissing","messagePattern":"MailValidator\\.Error\\.ResultFieldNameMissing","errorType":"exception","errorClass":"KettleException","httpStatus":null,"severity":"error","filePath":"plugins/mail-validator/impl/src/main/java/org/pentaho/di/trans/steps/mailvalidator/MailValidator.java","lineNumber":73,"sourceCode":"\n      setOutputDone();\n      return false;\n    }\n\n    if ( first ) {\n      first = false;\n\n      // get the RowMeta\n      data.previousRowMeta = getInputRowMeta().clone();\n      data.NrPrevFields = data.previousRowMeta.size();\n      data.outputRowMeta = getInputRowMeta().clone();\n      meta.getFields( getTransMeta().getBowl(), data.outputRowMeta, getStepname(), null, null, this, repository,\n        metaStore );\n\n      // check result fieldname\n      data.realResultFieldName = environmentSubstitute( meta.getResultFieldName() );\n      if ( Utils.isEmpty( data.realResultFieldName ) ) {\n        throw new KettleException( BaseMessages.getString( PKG, \"MailValidator.Error.ResultFieldNameMissing\" ) );\n      }\n\n      if ( meta.isResultAsString() ) {\n        if ( Utils.isEmpty( meta.getEMailValideMsg() ) ) {\n          throw new KettleException( BaseMessages.getString( PKG, \"MailValidator.Error.EMailValidMsgMissing\" ) );\n        }\n\n        if ( Utils.isEmpty( meta.getEMailNotValideMsg() ) ) {\n          throw new KettleException( BaseMessages.getString( PKG, \"MailValidator.Error.EMailNotValidMsgMissing\" ) );\n        }\n\n        data.msgValidMail = environmentSubstitute( meta.getEMailValideMsg() );\n        data.msgNotValidMail = environmentSubstitute( meta.getEMailNotValideMsg() );\n      }\n\n      // Check is email address field is provided\n      if ( Utils.isEmpty( meta.getEmailField() ) ) {\n        throw new KettleException( BaseMessages.getString( PKG, \"MailValidator.Error.FilenameFieldMissing\" ) );","sourceCodeStart":55,"sourceCodeEnd":91,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/plugins/mail-validator/impl/src/main/java/org/pentaho/di/trans/steps/mailvalidator/MailValidator.java#L55-L91","documentation":"MailValidator.processRow() throws this KettleException during step initialization when the configured result field name is empty. Every Mail Validator step must write its boolean/string result into a named output field; without one the step cannot build its output row metadata.","triggerScenarios":"Running the transformation with a Mail Validator step whose 'result fieldname' setting is blank (or resolves to empty after variable substitution).","commonSituations":"Step copied from another transformation with the field cleared; a variable used for the field name is undefined at runtime; step configured programmatically without calling setResultFieldName().","solutions":["Open the Mail Validator step dialog and set the 'result fieldname' (e.g. 'isValidEmail').","If using a variable for the field name, ensure it is defined (via kettle.properties, parameters, or Set Variables).","Validate meta.getResultFieldName() before executing the transformation programmatically.","Set the field name in code: meta.setResultFieldName(\"isValidEmail\")."],"exampleFix":"// before\nmeta.setResultFieldName( null );\n// after\nmeta.setResultFieldName( \"isValidEmail\" );","handlingStrategy":"validation","validationCode":"// Before executing the transformation\nif ( meta.getResultFieldName() == null || environmentSubstitute( meta.getResultFieldName() ).isEmpty() ) {\n  throw new IllegalArgumentException( \"Mail Validator result fieldname must be set\" );\n}","typeGuard":null,"tryCatchPattern":"try {\n  trans.execute( null );\n} catch ( KettleException e ) {\n  if ( e.getMessage().contains( \"ResultFieldNameMissing\" ) ) {\n    logError( \"Set the result fieldname on the Mail Validator step\" );\n  }\n  throw e;\n}","preventionTips":["Always set a result fieldname when configuring the step.","Avoid undefined variables in field-name settings.","Re-check step settings after copying between transformations.","Use the step dialog's field picker rather than free text where possible."],"tags":["configuration","transformation","email-validation","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"}