pentaho/pentaho-kettle · error · KettleStepException
SymmetricCryptoTrans.Exception.CouldnotFindField
SymmetricCryptoTrans.Exception.CouldnotFindField
Error message
SymmetricCryptoTrans.Exception.CouldnotFindField
What it means
After the message field name passes the empty check, processRow looks up its index in the incoming row via getInputRowMeta().indexOfValue(). This error means the configured message field name does not exist in the row actually arriving at the step. The field is 'unreachable' so the step aborts with KettleStepException naming the missing field.
Solutions
- Verify the exact field name in the step dialog's 'Message fieldname' matches an upstream field (no typos/case differences).
- Inspect the incoming row preview (right-click step > Preview) to see which fields actually arrive.
- Re-add or restore the upstream step that produces the field, or update the message field setting.
- Use Get Fields / field mapping in the dialog to pick the field instead of typing it.
Example fix
// before
meta.setMessageField("Payload "); // trailing space, field is 'Payload'
// after
meta.setMessageField("Payload"); Defensive patterns
Strategy: validation
Validate before calling
// Verify the field exists in the incoming row meta before executing
String msgField = meta.getMessageFied();
if (prevRowMeta.indexOfValue(msgField) < 0) {
throw new IllegalArgumentException(
"Message field '" + msgField + "' not found in incoming row");
} Try / catch
try {
trans.execute(null);
} catch (KettleStepException e) {
if (e.getMessage().contains("CouldnotFindField")) {
logError("Field missing upstream: " + e.getMessage());
}
} Prevention
- Preview the upstream step to confirm exact field names before wiring this step.
- Avoid manual typing of field names — use the dialog picker.
- Re-check configuration after renaming/removing upstream steps.
When it happens
Trigger: meta.getMessageFied() is non-empty but indexOfValue() returns < 0: the upstream step doesn't emit a field with that exact name (typo, case/whitespace difference, or the producing step was removed/renamed).
Common situations: Renaming or deleting an upstream field after configuring this step; field name with trailing space; hop order changed so the field no longer reaches this step; locale/type differences after editing a Text File Input or Table Input.
Understand the failure class
Background: 'Could not be found', 'does not exist', 'not found in database': the resource-not-found family when an ID, slug, key, or URI lookup comes back empty — this error's family across 20 libraries.
Related errors
- InsertUpdate.Exception.FieldRequired
- JsonOutput.Exception.FieldNotFound
- Calculator.Error.UnableFindField
- ConcatFields.Error.RemainingFieldNotFoundInputStream
- Could not find field in stream
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/a7c91e832b6fbd68.
Report an issue: GitHub.
Appendix: source
Thrown at engine/src/main/java/org/pentaho/di/trans/steps/symmetriccrypto/symmetriccryptotrans/SymmetricCryptoTrans.java:91
if ( Utils.isEmpty( meta.getResultfieldname() ) ) {
// Result field is missing !
throw new KettleStepException( BaseMessages.getString(
PKG, "SymmetricCryptoTrans.Exception.ErrorResultFieldMissing" ) );
}
// Check if The message field is given
if ( Utils.isEmpty( meta.getMessageFied() ) ) {
// Message Field is missing !
throw new KettleStepException( BaseMessages.getString(
PKG, "SymmetricCryptoTrans.Exception.MissingMessageField" ) );
}
// Try to get Field index
data.indexOfMessage = getInputRowMeta().indexOfValue( meta.getMessageFied() );
// Let's check the Field
if ( data.indexOfMessage < 0 ) {
// The field is unreachable !
throw new KettleStepException( BaseMessages.getString(
PKG, "SymmetricCryptoTrans.Exception.CouldnotFindField", meta.getMessageFied() ) );
}
if ( !meta.isSecretKeyInField() ) {
String realSecretKey =
Encr.decryptPasswordOptionallyEncrypted( environmentSubstitute( meta.getSecretKey() ) );
if ( Utils.isEmpty( realSecretKey ) ) {
throw new KettleStepException( BaseMessages.getString(
PKG, "SymmetricCryptoTrans.Exception.SecretKeyMissing" ) );
}
// We have a static secret key
// Set secrete key
setSecretKey( realSecretKey );
} else {
// dynamic secret key
if ( Utils.isEmpty( meta.getSecretKeyField() ) ) {
throw new KettleStepException( BaseMessages.getString(View on GitHub (pinned to f3058517a1)