pentaho/pentaho-kettle · error · KettleStepException
SymmetricCryptoTrans.Exception.MissingMessageField
SymmetricCryptoTrans.Exception.MissingMessageField
Error message
SymmetricCryptoTrans.Exception.MissingMessageField
What it means
The Symmetric Crypto (SymmetricCryptoTrans) step requires a message field — the input row field containing the text to encrypt/decrypt. processRow throws this KettleStepException during step initialization when the configured message field name is empty, because the step cannot know which column to process. The library fails fast before processing any rows.
Solutions
- Open the Symmetric Crypto step in Spoon and set the 'Message fieldname' to an existing input field.
- If constructing programmatically, call meta.setMessageField("yourField") before adding the step to the transformation.
- Re-export/re-save the transformation so the field name is persisted to XML/repository.
Example fix
// before
SymmetricCryptoTransMeta meta = new SymmetricCryptoTransMeta();
meta.setOperationType(SymmetricCryptoTransMeta.ENCRYPT_MODE);
// after
SymmetricCryptoTransMeta meta = new SymmetricCryptoTransMeta();
meta.setOperationType(SymmetricCryptoTransMeta.ENCRYPT_MODE);
meta.setMessageField("payload"); Defensive patterns
Strategy: validation
Validate before calling
// Before running the transformation, verify required metadata
SymmetricCryptoTransMeta meta = ...;
if (meta.getMessageFied() == null || meta.getMessageFied().isEmpty()) {
throw new IllegalArgumentException(
"Symmetric Crypto step requires a message field name");
} Try / catch
try {
trans.execute(null);
} catch (KettleStepException e) {
if (e.getMessage().contains("MissingMessageField")) {
logError("Step misconfigured: set the message field name");
}
} Prevention
- Always set the message field when building step metadata programmatically.
- Use the step dialog's field picker rather than typing field names.
- Validate step metadata with meta.check() before executing.
When it happens
Trigger: The step metadata's messageField (getMeta().getMessageFied()) is null or empty string when the transformation starts — i.e. the 'Message fieldname' option was never set in the step dialog, or the step was built programmatically / loaded from a broken XML/repo entry without that field.
Common situations: Building step metadata in code and forgetting setMessageField(); a transformation XML or repository record that lost the field name after a migration; copying a step template without filling required fields.
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
- ColumnExists.Error.TablenameFieldMissing
- ZipFile.Exception.EmptyMovetoFolder
- Calculator.Error.NoNameField
- ChangeFileEncoding.Error.FilenameFieldMissing
- ChangeFileEncoding.Error.TargetFilenameFieldMissing
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/c792d69901865426.
Report an issue: GitHub.
Appendix: source
Thrown at engine/src/main/java/org/pentaho/di/trans/steps/symmetriccrypto/symmetriccryptotrans/SymmetricCryptoTrans.java:82
}
if ( first ) {
first = false;
data.outputRowMeta = getInputRowMeta().clone();
meta.getFields( getTransMeta().getBowl(), data.outputRowMeta, getStepname(), null, null, this, repository,
metaStore );
// Let's check that Result Field is given
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" ) );View on GitHub (pinned to f3058517a1)