{"record":{"id":"c468675ea5a98652","repo":"pentaho/pentaho-kettle","slug":"checksum-log-cannotfindfield","errorCode":"CheckSum.Log.CanNotFindField","errorMessage":"CheckSum.Log.CanNotFindField","messagePattern":"CheckSum\\.Log\\.CanNotFindField","errorType":"exception","errorClass":"KettleException","httpStatus":null,"severity":"error","filePath":"plugins/core/impl/src/main/java/org/pentaho/di/trans/steps/checksum/CheckSum.java","lineNumber":92,"sourceCode":"      data.outputRowMeta = inputRowMeta.clone();\n      data.nrInfields = data.outputRowMeta.size();\n      meta.getFields( getTransMeta().getBowl(), data.outputRowMeta, getStepname(), null, null, this, repository,\n        metaStore );\n\n      if ( meta.getFieldSeparatorString() != null && !meta.getFieldSeparatorString().isEmpty() ) {\n        data.fieldSeparatorStringBytes = meta.getFieldSeparatorString().getBytes( StandardCharsets.UTF_8 );\n      }\n\n      int[] fieldIndexMapping;\n\n      if ( meta.getFieldName() == null || meta.getFieldName().length > 0 ) {\n        fieldIndexMapping = new int[meta.getFieldName().length];\n\n        for ( int i = 0; i < meta.getFieldName().length; i++ ) {\n          fieldIndexMapping[i] = getInputRowMeta().indexOfValue( meta.getFieldName()[i] );\n          if ( fieldIndexMapping[i] < 0 ) {\n            logError( BaseMessages.getString( PKG, \"CheckSum.Log.CanNotFindField\", meta.getFieldName()[i] ) );\n            throw new KettleException( BaseMessages.getString( PKG, \"CheckSum.Log.CanNotFindField\", meta\n                .getFieldName()[i] ) );\n          }\n        }\n      } else {\n        fieldIndexMapping = new int[inputRowMeta.size()];\n        for ( int i = 0; i < fieldIndexMapping.length; i++ ) {\n          fieldIndexMapping[i] = i;\n        }\n      }\n\n      // Initialize the field converters\n      initializeFieldConverters( inputRowMeta, fieldIndexMapping );\n\n      // Initialize the checksum calculator\n      initializeChecksumCalculator();\n\n    } // end if first\n","sourceCodeStart":74,"sourceCodeEnd":110,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/plugins/core/impl/src/main/java/org/pentaho/di/trans/steps/checksum/CheckSum.java#L74-L110","documentation":"The CheckSum step cannot find one of the configured field names in the incoming row stream. In processRow it resolves each meta.getFieldName() entry via getInputRowMeta().indexOfValue(); a negative index triggers a logged error and this KettleException, aborting the step. This is a field-mapping/config error, not a runtime data problem.","triggerScenarios":"In processRow: fieldIndexMapping[i] = getInputRowMeta().indexOfValue(meta.getFieldName()[i]) returns < 0 for any configured field — the field does not exist in the row arriving at the step.","commonSituations":"Upstream step renamed or removed the field; case mismatch between the configured name and the actual field name; transformation edited so the field is no longer produced; running a transformation with stale metadata after changing an upstream step.","solutions":["Open the CheckSum step dialog and re-select the fields from the current upstream row structure.","Check field names are spelled and cased exactly as produced by the previous step.","Add a 'Fields' preview (right-click → Show output fields) on the hop to confirm available fields.","Use a 'Select values' step upstream to explicitly add/rename the field the checksum needs."],"exampleFix":"// before: dialog config\nfieldName = [ \"AMOUNT\" ]   // upstream produces \"amount\"\n// after\nfieldName = [ \"amount\" ]   // match exact upstream field name","handlingStrategy":"validation","validationCode":"// Kettle: verify configured fields exist in the incoming row layout before running\nfor ( String f : meta.getFieldName() ) {\n  if ( prev.indexOfValue( f ) < 0 ) {\n    throw new KettleException( \"Field not in stream: \" + f );\n  }\n}","typeGuard":null,"tryCatchPattern":"try {\n  trans.execute( null );\n} catch ( KettleException e ) {\n  if ( e.getMessage().contains( \"CanNotFindField\" ) ) {\n    log.error( \"CheckSum field mapping broken: {}\", e.getMessage() );\n  } else { throw e; }\n}","preventionTips":["Re-select fields in the dialog after any upstream step change.","Match field names exactly, including case.","Use 'Show output fields' on the hop before relying on field names."],"tags":["etl","kettle","fields","checksum"],"backgroundTag":"record-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"}