{"record":{"id":"4193946f9c2fdb47","repo":"pentaho/pentaho-kettle","slug":"getfilenames-exception-couldnotfindfield","errorCode":null,"errorMessage":"GetFileNames.Exception.CouldnotFindField","messagePattern":"GetFileNames\\.Exception\\.CouldnotFindField","errorType":"exception","errorClass":"KettleException","httpStatus":null,"severity":"error","filePath":"engine/src/main/java/org/pentaho/di/trans/steps/getfilenames/GetFileNames.java","lineNumber":112,"sourceCode":"          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() );\n            if ( data.indexOfWildcardField < 0 ) {\n              // The field is unreachable !\n              logError( BaseMessages.getString( PKG, \"GetFileNames.Log.ErrorFindingField\" )\n                + \"[\" + meta.getDynamicWildcardField() + \"]\" );\n              throw new KettleException( BaseMessages.getString(\n                PKG, \"GetFileNames.Exception.CouldnotFindField\", meta.getDynamicWildcardField() ) );\n            }\n          }\n        }\n        // If ExcludeWildcard field is specified, Check if field exists","sourceCodeStart":94,"sourceCodeEnd":130,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/engine/src/main/java/org/pentaho/di/trans/steps/getfilenames/GetFileNames.java#L94-L130","documentation":"Thrown when the configured dynamic filename field cannot be found in the incoming row's RowMeta (indexOfValue returned -1). The step needs that field's value on each row to resolve file paths. This is a schema mismatch between the step configuration and the actual input stream.","triggerScenarios":"meta.getDynamicFilenameField() names a field that is absent from data.inputRowMeta during processRow.","commonSituations":"Upstream step renamed/removed the field; wrong field name typed manually; transformation edited after input structure changed; case-sensitive field name mismatch.","solutions":["Correct the 'filename field' setting to match an actual incoming field name.","Add/rename the field in the upstream step so it produces the expected field.","Use a Fieldname check or Preview rows to inspect the actual input layout before this step."],"exampleFix":"// before\nmeta.setDynamicFilenameField(\"file_name\"); // stream has \"filename\"\n// after\nmeta.setDynamicFilenameField(\"filename\");","handlingStrategy":"validation","validationCode":"String f = meta.getDynamicFilenameField();\nif (f != null && inputRowMeta.indexOfValue(f) < 0) {\n  throw new IllegalArgumentException(\"Field not in stream: \" + f);\n}","typeGuard":null,"tryCatchPattern":"try { step.processRow(); } catch (KettleStepException e) { if (e.getMessage().contains(\"CouldnotFindField\")) { /* fix mapping */ } throw e; }","preventionTips":["Use 'Get Fields' to confirm upstream field names","Avoid manual field-name typing; select from dropdown","Rename fields upstream consistently with a Select Values step"],"tags":["pentaho","kettle","schema-mismatch","field-not-found"],"backgroundTag":"resource-not-found","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"}