{"record":{"id":"696e60ba8eb0dd0a","repo":"pentaho/pentaho-kettle","slug":"it-was-not-possible-to-find-operation-field","errorCode":null,"errorMessage":"It was not possible to find operation field [<operationOrderField>] in the input stream!","messagePattern":"It was not possible to find operation field \\[<operationOrderField>\\] in the input stream!","errorType":"exception","errorClass":"KettleStepException","httpStatus":null,"severity":"error","filePath":"engine/src/main/java/org/pentaho/di/trans/steps/synchronizeaftermerge/SynchronizeAfterMerge.java","lineNumber":690,"sourceCode":"        }\n      } else {\n        data.realTableName = environmentSubstitute( meta.getTableName() );\n        if ( Utils.isEmpty( data.realTableName ) ) {\n          throw new KettleStepException( \"The table name is not specified (or the input field is empty)\" );\n        }\n        data.realSchemaTable =\n          data.db.getDatabaseMeta().getQuotedSchemaTableCombination( data.realSchemaName, data.realTableName );\n      }\n\n      // Cache the position of the operation order field\n      if ( data.indexOfOperationOrderField < 0 ) {\n        data.indexOfOperationOrderField = data.inputRowMeta.indexOfValue( meta.getOperationOrderField() );\n        if ( data.indexOfOperationOrderField < 0 ) {\n          String message =\n            \"It was not possible to find operation field [\" + meta.getOperationOrderField()\n              + \"] in the input stream!\";\n          logError( message );\n          throw new KettleStepException( message );\n        }\n      }\n\n      data.insertValue = environmentSubstitute( meta.getOrderInsert() );\n      data.updateValue = environmentSubstitute( meta.getOrderUpdate() );\n      data.deleteValue = environmentSubstitute( meta.getOrderDelete() );\n\n      data.insertRowMeta = new RowMeta();\n\n      // lookup the values!\n      if ( log.isDebug() ) {\n        logDebug( BaseMessages.getString( PKG, \"SynchronizeAfterMerge.Log.CheckingRow\" ) + Arrays.toString( nextRow ) );\n      }\n\n      data.keynrs = new int[meta.getKeyStream().length];\n      data.keynrs2 = new int[meta.getKeyStream().length];\n      for (int i = 0; i < meta.getKeyStream().length; i++) {\n        data.keynrs[i] = data.inputRowMeta.indexOfValue( meta.getKeyStream()[i] );","sourceCodeStart":672,"sourceCodeEnd":708,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/engine/src/main/java/org/pentaho/di/trans/steps/synchronizeaftermerge/SynchronizeAfterMerge.java#L672-L708","documentation":"Thrown during processRow() initialization when the configured OperationOrderField is not present in the input row metadata (indexOfValue returns -1). The step uses this field's per-row values to classify rows as insert/update/delete, so it cannot run without it.","triggerScenarios":"data.inputRowMeta.indexOfValue(meta.getOperationOrderField()) < 0 during the first call of processRow — the dialog field name doesn't match any incoming stream field (typo, case mismatch, field removed/renamed upstream).","commonSituations":"Upstream step renamed or removed the operation column; wrong field name typed in 'Operation order field'; hop rewired to a different source that lacks the field; locale/whitespace issues in the field name.","solutions":["Re-select the operation field in the step dialog using the actual input field names (preview the upstream output).","Add/restore the operation column upstream (e.g. via 'Select values' or 'Add constants') with the expected name and values.","Fix typos/case so the dialog value exactly matches the stream field name.","Verify you connected the intended input hop that carries the operation field."],"exampleFix":"// before (upstream)\nSELECT id FROM src; // no op column\n// after\nSELECT id, 'insert' AS operation FROM src;","handlingStrategy":"validation","validationCode":"List<String> fields = inputRowMeta.getFieldNames();\nif (!fields.contains(operationOrderField)) {\n  throw new ValidationException(\"Operation field missing from stream: \" + operationOrderField);\n}","typeGuard":null,"tryCatchPattern":"catch (KettleStepException e) {\n  if (e.getMessage().contains(\"not possible to find operation field\")) {\n    logError(\"Fix the Operation order field setting or add the column upstream.\");\n  }\n  throw e;\n}","preventionTips":["Guarantee the operation column exists upstream (Add constants / Select values).","Use the dialog field picker instead of typing names.","Preview input rows before running whenever upstream mappings change."],"tags":["configuration","missing-field","pentaho-kettle"],"backgroundTag":"field-not-found-in-stream","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"}