pentaho/pentaho-kettle · error · KettleException
ExecProcess.Error.ProcessFieldMissing
Error message
ExecProcess.Error.ProcessFieldMissing
What it means
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.
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.
Example fix
// before: meta without a process field
ExecProcessMeta meta = new ExecProcessMeta();
// after
ExecProcessMeta meta = new ExecProcessMeta();
meta.setProcessField("command"); Defensive patterns
Strategy: validation
Validate before calling
// before executing the transformation
ExecProcessMeta meta = (ExecProcessMeta) stepMeta.getStepMetaInterface();
if (meta.getProcessField() == null || meta.getProcessField().isEmpty()) {
throw new IllegalStateException("ExecProcess: process field must be set");
} Try / catch
try { trans.execute(); } catch (KettleException e) { if (e.getMessage().contains("ProcessFieldMissing")) { /* fix step config */ } } Prevention
- 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
When it happens
Trigger: 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).
Common situations: 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.
Understand the failure class
Background: "is required", "must be set", "missing required field": configuration validation errors across open-source libraries — this error's family across 36 libraries.
Related errors
- FileLocked.Error.FilenameFieldMissing
- Calculator.Error.NoNameField
- Can not find field [ ] in the input stream!
- ChangeFileEncoding.Error.FilenameFieldMissing
- ChangeFileEncoding.Error.TargetFilenameFieldMissing
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/e0fb3d50d9a5a730.
Report an issue: GitHub.
Appendix: source
Thrown at engine/src/main/java/org/pentaho/di/trans/steps/execprocess/ExecProcess.java:80
if ( r == null ) { // no more input to be expected...
setOutputDone();
return false;
}
if ( first ) {
first = false;
// get the RowMeta
data.previousRowMeta = getInputRowMeta().clone();
data.NrPrevFields = data.previousRowMeta.size();
data.outputRowMeta = data.previousRowMeta;
meta.getFields( getTransMeta().getBowl(), data.outputRowMeta, getStepname(), null, null, this, repository,
metaStore );
// Check is process field is provided
if ( Utils.isEmpty( meta.getProcessField() ) ) {
logError( BaseMessages.getString( PKG, "ExecProcess.Error.ProcessFieldMissing" ) );
throw new KettleException( BaseMessages.getString( PKG, "ExecProcess.Error.ProcessFieldMissing" ) );
}
// cache the position of the field
if ( data.indexOfProcess < 0 ) {
data.indexOfProcess = data.previousRowMeta.indexOfValue( meta.getProcessField() );
if ( data.indexOfProcess < 0 ) {
// The field is unreachable !
logError( BaseMessages.getString( PKG, "ExecProcess.Exception.CouldnotFindField" )
+ "[" + meta.getProcessField() + "]" );
throw new KettleException( BaseMessages.getString( PKG, "ExecProcess.Exception.CouldnotFindField", meta
.getProcessField() ) );
}
}
if ( meta.isArgumentsInFields() ) {
if ( data.indexOfArguments == null ) {
data.indexOfArguments = new int[meta.getArgumentFieldNames().length];
for ( int i = 0; i < data.indexOfArguments.length; i++ ) {
String fieldName = meta.getArgumentFieldNames()[i];View on GitHub (pinned to f3058517a1)