{"record":{"id":"40be7c860ad2f32a","repo":"pentaho/pentaho-kettle","slug":"transdependency-exception-unabletoloadtransformation","errorCode":null,"errorMessage":"TransDependency.Exception.UnableToLoadTransformation","messagePattern":"TransDependency\\.Exception\\.UnableToLoadTransformation","errorType":"exception","errorClass":"KettleXMLException","httpStatus":null,"severity":"error","filePath":"engine/src/main/java/org/pentaho/di/trans/TransDependency.java","lineNumber":73,"sourceCode":"    StringBuilder xml = new StringBuilder( 200 );\n\n    xml.append( \"      \" ).append( XMLHandler.openTag( XML_TAG ) ).append( Const.CR );\n    xml.append( \"        \" ).append( XMLHandler.addTagValue( \"connection\", db == null ? \"\" : db.getName() ) );\n    xml.append( \"        \" ).append( XMLHandler.addTagValue( \"table\", tablename ) );\n    xml.append( \"        \" ).append( XMLHandler.addTagValue( \"field\", fieldname ) );\n    xml.append( \"      \" ).append( XMLHandler.closeTag( XML_TAG ) ).append( Const.CR );\n\n    return xml.toString();\n  }\n\n  public TransDependency( Node depnode, List<DatabaseMeta> databases ) throws KettleXMLException {\n    try {\n      String depcon = XMLHandler.getTagValue( depnode, \"connection\" );\n      db = DatabaseMeta.findDatabase( databases, depcon );\n      tablename = XMLHandler.getTagValue( depnode, \"table\" );\n      fieldname = XMLHandler.getTagValue( depnode, \"field\" );\n    } catch ( Exception e ) {\n      throw new KettleXMLException( BaseMessages.getString(\n        PKG, \"TransDependency.Exception.UnableToLoadTransformation\" ), e );\n    }\n  }\n\n  @Override\n  public Object clone() throws CloneNotSupportedException {\n    return super.clone();\n  }\n\n  public void setObjectId( ObjectId id ) {\n    this.id = id;\n  }\n\n  public ObjectId getObjectId() {\n    return id;\n  }\n\n  public void setDatabase( DatabaseMeta db ) {","sourceCodeStart":55,"sourceCodeEnd":91,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/engine/src/main/java/org/pentaho/di/trans/TransDependency.java#L55-L91","documentation":"A KettleXMLException (message key TransDependency.Exception.UnableToLoadTransformation) thrown when a TransDependency cannot be parsed from its XML node: reading the 'connection', 'table', or 'field' tags failed. The original exception is attached as the cause.","triggerScenarios":"Constructing TransDependency(Node depnode, List<DatabaseMeta> databases) from a .ktr XML where the dependency block is malformed or the XMLHandler calls throw.","commonSituations":"Hand-edited or truncated .ktr files; dependency XML generated by a different Kettle version with changed tags; corrupted repository export/import.","solutions":["Open the .ktr in Spoon and fix or delete the broken dependency entry under <dependencies>","Validate the XML well-formedness of the transformation file","Ensure each <dependency> has <connection>, <table>, and <field> child tags","Re-save the transformation with a matching Kettle version"],"exampleFix":"// before: malformed\n<dependency><connection>db</connection></dependency>\n// after\n<dependency><connection>db</connection><table>lookup</table><field>id</field></dependency>","handlingStrategy":"try-catch","validationCode":"// validate each dependency node has required tags before constructing\nfor (Node dep : deps) {\n  if (XMLHandler.getTagValue(dep, \"connection\") == null) throw new KettleException(\"dependency missing <connection>\");\n}","typeGuard":null,"tryCatchPattern":"try { TransDependency dep = new TransDependency(depNode, databases); } catch (KettleXMLException e) { log.error(\"Bad dependency XML: \" + e.getCause(), e); }","preventionTips":["Do not hand-edit .ktr XML; use Spoon","Keep source control on transformations to detect corruption","Validate transformation XML after version migrations"],"tags":["kettle","xml","transformation","dependency"],"backgroundTag":"schema-validation-failed","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"}