{"record":{"id":"9c9aa5d03634429e","repo":"pentaho/pentaho-kettle","slug":"symmetriccryptotransmeta-exception","errorCode":"SymmetricCryptoTransMeta.Exception.UnableToLoadStepInfoFromXML","errorMessage":"SymmetricCryptoTransMeta.Exception.UnableToLoadStepInfoFromXML","messagePattern":"SymmetricCryptoTransMeta\\.Exception\\.UnableToLoadStepInfoFromXML","errorType":"exception","errorClass":"KettleXMLException","httpStatus":null,"severity":"error","filePath":"engine/src/main/java/org/pentaho/di/trans/steps/symmetriccrypto/symmetriccryptotrans/SymmetricCryptoTransMeta.java","lineNumber":271,"sourceCode":"  }\n\n  private void readData( Node stepnode ) throws KettleXMLException {\n    try {\n      operationType =\n        getOperationTypeByCode( Const.NVL( XMLHandler.getTagValue( stepnode, \"operation_type\" ), \"\" ) );\n      algorithm = XMLHandler.getTagValue( stepnode, \"algorithm\" );\n      schema = XMLHandler.getTagValue( stepnode, \"schema\" );\n      secretKeyField = XMLHandler.getTagValue( stepnode, \"secretKeyField\" );\n      messageField = XMLHandler.getTagValue( stepnode, \"messageField\" );\n      resultfieldname = XMLHandler.getTagValue( stepnode, \"resultfieldname\" );\n\n      setSecretKey( Encr.decryptPasswordOptionallyEncrypted( XMLHandler.getTagValue( stepnode, \"secretKey\" ) ) );\n      secretKeyInField = \"Y\".equalsIgnoreCase( XMLHandler.getTagValue( stepnode, \"secretKeyInField\" ) );\n      readKeyAsBinary = \"Y\".equalsIgnoreCase( XMLHandler.getTagValue( stepnode, \"readKeyAsBinary\" ) );\n      outputResultAsBinary = \"Y\".equalsIgnoreCase( XMLHandler.getTagValue( stepnode, \"outputResultAsBinary\" ) );\n\n    } catch ( Exception e ) {\n      throw new KettleXMLException( BaseMessages.getString(\n        PKG, \"SymmetricCryptoTransMeta.Exception.UnableToLoadStepInfoFromXML\" ), e );\n    }\n  }\n\n  public void setDefault() {\n    secretKeyField = null;\n    messageField = null;\n    resultfieldname = \"result\";\n    secretKey = null;\n    secretKeyInField = false;\n    operationType = OPERATION_TYPE_ENCRYPT;\n    algorithm = SymmetricCryptoMeta.TYPE_ALGORYTHM_CODE[0];\n    schema = algorithm;\n    readKeyAsBinary = false;\n    outputResultAsBinary = false;\n  }\n\n  @Override","sourceCodeStart":253,"sourceCodeEnd":289,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/engine/src/main/java/org/pentaho/di/trans/steps/symmetriccrypto/symmetriccryptotrans/SymmetricCryptoTransMeta.java#L253-L289","documentation":"SymmetricCryptoTransMeta.readData() (called by loadXML) parses the step's XML node (fields like secretKey, secretKeyInField, readKeyAsBinary, outputResultAsBinary). Any exception during parsing is wrapped in a KettleXMLException with this message, meaning the step's configuration could not be loaded from the transformation XML. The original cause is attached.","triggerScenarios":"loadXML is given a malformed or unexpected <step> node: missing/invalid XML tags, corrupted file, an XMLHandler parse error, or a manually edited transformation file with invalid content for this step.","commonSituations":"Hand-editing a .ktr file and breaking tags; version migration where XML structure changed; truncated/corrupted transformation file from a bad transfer; XML node from a newer PDI version read by an older one.","solutions":["Open the .ktr file and check/repair the XML for this step's node (fields, secretKey, secretKeyInField, etc.).","Recreate the Symmetric Crypto step in Spoon and re-save the transformation.","Restore the transformation from backup/version control.","Load with the same or newer PDI version that originally saved the file."],"exampleFix":"// before\n<secretKeyInField>yes</secretKeyInField> <!-- hand-edited tag broken -->\n// after\n<secretKeyInField>Y</secretKeyInField>","handlingStrategy":"try-catch","validationCode":"// Validate the step XML node before loadXML\nNode stepnode = XMLHandler.getSubNode(transNode, \"step\");\nif (stepnode == null || XMLHandler.getTagValue(stepnode, \"type\") == null) {\n  throw new IllegalArgumentException(\"Corrupt step node in transformation XML\");\n}","typeGuard":null,"tryCatchPattern":"try {\n  TransMeta tm = new TransMeta(\"mytrans.ktr\");\n} catch (KettleXMLException e) {\n  logError(\"Could not load step info from XML: \" + e.getCause(), e);\n  // fall back to backup file or recreate the step\n}","preventionTips":["Don't hand-edit .ktr XML; edit steps in Spoon.","Keep transformations in version control for easy restore.","Load files with a PDI version >= the one that saved them."],"tags":["kettle","pdi","xml","deserialization"],"backgroundTag":"json-parse-error","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"}