{"record":{"id":"998dc592f1b8ae98","repo":"pentaho/pentaho-kettle","slug":"mailvalidator-error-filenamefieldmissing","errorCode":null,"errorMessage":"MailValidator.Error.FilenameFieldMissing","messagePattern":"MailValidator\\.Error\\.FilenameFieldMissing","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":91,"sourceCode":"        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\" ) );\n      }\n\n      data.realResultErrorsFieldName = environmentSubstitute( meta.getErrorsField() );\n\n      // cache the position of the field\n      if ( data.indexOfeMailField < 0 ) {\n        data.indexOfeMailField = data.previousRowMeta.indexOfValue( meta.getEmailField() );\n        if ( data.indexOfeMailField < 0 ) {\n          // The field is unreachable !\n          throw new KettleException( BaseMessages.getString(\n            PKG, \"MailValidator.Exception.CouldnotFindField\", meta.getEmailField() ) );\n        }\n      }\n\n      // SMTP check?\n      if ( meta.isSMTPCheck() ) {\n        if ( meta.isdynamicDefaultSMTP() ) {\n          if ( Utils.isEmpty( meta.getDefaultSMTP() ) ) {","sourceCodeStart":73,"sourceCodeEnd":109,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/plugins/mail-validator/impl/src/main/java/org/pentaho/di/trans/steps/mailvalidator/MailValidator.java#L73-L109","documentation":"MailValidator.processRow() throws this KettleException (misleadingly keyed 'FilenameFieldMissing' for historical reasons) when no input field containing the email address to validate is configured. The step needs to know which incoming field holds the address.","triggerScenarios":"Running the transformation with the Mail Validator step's 'email field' setting empty.","commonSituations":"Upstream step renamed/removed the field and the setting was cleared; step configured programmatically without setEmailField(); copy-paste of step without reconfiguring.","solutions":["Open the Mail Validator step dialog and select the input field that contains the email address.","Ensure the upstream step actually outputs a field with the expected name.","Set it in code: meta.setEmailField(\"email\").","Preview the upstream step's output to confirm field names before configuring."],"exampleFix":"// before\nmeta.setEmailField( \"\" );\n// after\nmeta.setEmailField( \"email\" );","handlingStrategy":"validation","validationCode":"// Confirm the email field exists in the upstream output before executing\nif ( meta.getEmailField() == null || meta.getEmailField().isEmpty() ) {\n  throw new IllegalArgumentException( \"Mail Validator email field must be set\" );\n}\nif ( previousRowMeta.indexOfValue( meta.getEmailField() ) < 0 ) {\n  throw new IllegalArgumentException( \"Field not in stream: \" + meta.getEmailField() );\n}","typeGuard":null,"tryCatchPattern":"try {\n  trans.execute( null );\n} catch ( KettleException e ) {\n  if ( e.getMessage().contains( \"FilenameFieldMissing\" ) ) {\n    logError( \"Configure the email field on the Mail Validator step\" );\n  }\n  throw e;\n}","preventionTips":["Always select the email input field in the step dialog.","Preview upstream output before wiring the step.","Re-verify settings after upstream field renames.","Use consistent field naming conventions across the transformation."],"tags":["configuration","transformation","email-validation","missing-field"],"backgroundTag":"missing-required-argument","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"}