{"record":{"id":"e0fb3d50d9a5a730","repo":"pentaho/pentaho-kettle","slug":"execprocess-error-processfieldmissing","errorCode":null,"errorMessage":"ExecProcess.Error.ProcessFieldMissing","messagePattern":"ExecProcess\\.Error\\.ProcessFieldMissing","errorType":"exception","errorClass":"KettleException","httpStatus":null,"severity":"error","filePath":"engine/src/main/java/org/pentaho/di/trans/steps/execprocess/ExecProcess.java","lineNumber":80,"sourceCode":"    if ( r == null ) { // no more input to be expected...\n\n      setOutputDone();\n      return false;\n    }\n\n    if ( first ) {\n      first = false;\n      // get the RowMeta\n      data.previousRowMeta = getInputRowMeta().clone();\n      data.NrPrevFields = data.previousRowMeta.size();\n      data.outputRowMeta = data.previousRowMeta;\n      meta.getFields( getTransMeta().getBowl(), data.outputRowMeta, getStepname(), null, null, this, repository,\n        metaStore );\n\n      // Check is process field is provided\n      if ( Utils.isEmpty( meta.getProcessField() ) ) {\n        logError( BaseMessages.getString( PKG, \"ExecProcess.Error.ProcessFieldMissing\" ) );\n        throw new KettleException( BaseMessages.getString( PKG, \"ExecProcess.Error.ProcessFieldMissing\" ) );\n      }\n\n      // cache the position of the field\n      if ( data.indexOfProcess < 0 ) {\n        data.indexOfProcess = data.previousRowMeta.indexOfValue( meta.getProcessField() );\n        if ( data.indexOfProcess < 0 ) {\n          // The field is unreachable !\n          logError( BaseMessages.getString( PKG, \"ExecProcess.Exception.CouldnotFindField\" )\n            + \"[\" + meta.getProcessField() + \"]\" );\n          throw new KettleException( BaseMessages.getString( PKG, \"ExecProcess.Exception.CouldnotFindField\", meta\n            .getProcessField() ) );\n        }\n      }\n      if ( meta.isArgumentsInFields() ) {\n        if ( data.indexOfArguments == null ) {\n          data.indexOfArguments = new int[meta.getArgumentFieldNames().length];\n          for ( int i = 0; i < data.indexOfArguments.length; i++ ) {\n            String fieldName = meta.getArgumentFieldNames()[i];","sourceCodeStart":62,"sourceCodeEnd":98,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/engine/src/main/java/org/pentaho/di/trans/steps/execprocess/ExecProcess.java#L62-L98","documentation":"The ExecProcess step throws this when the 'process field' setting is empty, meaning no incoming field was designated to supply the command to execute. The step cannot know what process to run, so it aborts the step.","triggerScenarios":"processRow on first row: meta.getProcessField() is null/empty because the 'Process field' dropdown in the ExecProcess step dialog was never set (or the field was removed from the stream upstream).","commonSituations":"Copying a step between transformations where the target stream lacks the field; renaming the upstream field without updating the step; building the step meta programmatically without calling setProcessField.","solutions":["Open the ExecProcess step dialog and select a valid 'Process field' from the incoming stream.","Ensure the upstream step actually outputs the configured field.","If constructing ExecProcessMeta in code, call setProcessField(\"fieldName\") before execution.","Run the transformation to a preview/log to confirm the field name spelling matches exactly."],"exampleFix":"// before: meta without a process field\nExecProcessMeta meta = new ExecProcessMeta();\n// after\nExecProcessMeta meta = new ExecProcessMeta();\nmeta.setProcessField(\"command\");","handlingStrategy":"validation","validationCode":"// before executing the transformation\nExecProcessMeta meta = (ExecProcessMeta) stepMeta.getStepMetaInterface();\nif (meta.getProcessField() == null || meta.getProcessField().isEmpty()) {\n  throw new IllegalStateException(\"ExecProcess: process field must be set\");\n}","typeGuard":null,"tryCatchPattern":"try { trans.execute(); } catch (KettleException e) { if (e.getMessage().contains(\"ProcessFieldMissing\")) { /* fix step config */ } }","preventionTips":["Always set the Process field in the step dialog","Preview the input stream to confirm field names exist","Re-check step config after upstream changes"],"tags":["kettle","step-configuration","missing-field","execprocess"],"backgroundTag":"missing-required-config-field","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"}