{"record":{"id":"d7bc933b785490a7","repo":"pentaho/pentaho-kettle","slug":"getfilenames-log-nofield","errorCode":null,"errorMessage":"GetFileNames.Log.NoField","messagePattern":"GetFileNames\\.Log\\.NoField","errorType":"exception","errorClass":"KettleException","httpStatus":null,"severity":"error","filePath":"engine/src/main/java/org/pentaho/di/trans/steps/getfilenames/GetFileNames.java","lineNumber":102,"sourceCode":"        setOutputDone();\n        return false;\n      }\n\n      if ( first ) {\n        first = false;\n\n        data.inputRowMeta = getInputRowMeta();\n        data.outputRowMeta = data.inputRowMeta.clone();\n        meta.getFields( getTransMeta().getBowl(), data.outputRowMeta, getStepname(), null, null, this, repository,\n          metaStore );\n\n        // Get total previous fields\n        data.totalpreviousfields = data.inputRowMeta.size();\n\n        // Check is filename field is provided\n        if ( Utils.isEmpty( meta.getDynamicFilenameField() ) ) {\n          logError( BaseMessages.getString( PKG, \"GetFileNames.Log.NoField\" ) );\n          throw new KettleException( BaseMessages.getString( PKG, \"GetFileNames.Log.NoField\" ) );\n        }\n\n        // cache the position of the field\n        if ( data.indexOfFilenameField < 0 ) {\n          data.indexOfFilenameField = data.inputRowMeta.indexOfValue( meta.getDynamicFilenameField() );\n          if ( data.indexOfFilenameField < 0 ) {\n            // The field is unreachable !\n            logError( BaseMessages.getString( PKG, \"GetFileNames.Log.ErrorFindingField\", meta\n              .getDynamicFilenameField() ) );\n            throw new KettleException( BaseMessages.getString(\n              PKG, \"GetFileNames.Exception.CouldnotFindField\", meta.getDynamicFilenameField() ) );\n          }\n        }\n\n        // If wildcard field is specified, Check if field exists\n        if ( !Utils.isEmpty( meta.getDynamicWildcardField() ) ) {\n          if ( data.indexOfWildcardField < 0 ) {\n            data.indexOfWildcardField = data.inputRowMeta.indexOfValue( meta.getDynamicWildcardField() );","sourceCodeStart":84,"sourceCodeEnd":120,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/engine/src/main/java/org/pentaho/di/trans/steps/getfilenames/GetFileNames.java#L84-L120","documentation":"GetFileNames step throws this when the 'filename field in the input' option is enabled but the name of that dynamic filename field is empty/not set in the step metadata. processRow cannot locate a field that was never configured, so it fails the row and stops the step. It is a step-configuration error, not a data error.","triggerScenarios":"meta.getDynamicFilenameField() is empty (Utils.isEmpty) while the step is configured to read filenames from incoming rows.","commonSituations":"User checked 'Filename is defined in a field' in the Get File Names step dialog but left the field dropdown blank; transformation metadata copied/edited programmatically without setting the filename field.","solutions":["Open the Get File Names step dialog and select a field under 'Filename is defined in a field'.","Or uncheck 'Filename is defined in a field' and specify static files/wildcards in the file list instead.","Verify the incoming row stream actually contains the selected field (add a Get Fields/Preview)."],"exampleFix":"// before (meta)\nmeta.setDynamicFilenameField(null); // empty\n// after\nmeta.setDynamicFilenameField(\"filename\");","handlingStrategy":"validation","validationCode":"if (meta.isDynamicFilenameField() && (meta.getDynamicFilenameField() == null || meta.getDynamicFilenameField().isEmpty())) {\n  throw new IllegalArgumentException(\"GetFileNames: 'filename field' must be set when reading filenames from a field\");\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Always pick the filename field from the dropdown, never type it ad hoc","Preview input rows before configuring dynamic fields","Keep static file list and dynamic-field modes mutually exclusive in your templates"],"tags":["pentaho","kettle","step-config","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"}