{"record":{"id":"729c03eed25fa618","repo":"pentaho/pentaho-kettle","slug":"unable-to-load-step-info-from-xml-fieldschangesequencemeta","errorCode":null,"errorMessage":"Unable to load step info from XML","messagePattern":"Unable to load step info from XML","errorType":"exception","errorClass":"KettleXMLException","httpStatus":null,"severity":"error","filePath":"engine/src/main/java/org/pentaho/di/trans/steps/fieldschangesequence/FieldsChangeSequenceMeta.java","lineNumber":149,"sourceCode":"  }\n\n  private void readData( Node stepnode ) throws KettleXMLException {\n    try {\n      start = XMLHandler.getTagValue( stepnode, \"start\" );\n      increment = XMLHandler.getTagValue( stepnode, \"increment\" );\n      resultfieldName = XMLHandler.getTagValue( stepnode, \"resultfieldName\" );\n\n      Node fields = XMLHandler.getSubNode( stepnode, \"fields\" );\n      int nrfields = XMLHandler.countNodes( fields, \"field\" );\n\n      allocate( nrfields );\n\n      for ( int i = 0; i < nrfields; i++ ) {\n        Node fnode = XMLHandler.getSubNodeByNr( fields, \"field\", i );\n        fieldName[i] = XMLHandler.getTagValue( fnode, \"name\" );\n      }\n    } catch ( Exception e ) {\n      throw new KettleXMLException( \"Unable to load step info from XML\", e );\n    }\n  }\n\n  @Override\n  public String getXML() {\n    StringBuilder retval = new StringBuilder();\n    retval.append( \"      \" + XMLHandler.addTagValue( \"start\", start ) );\n    retval.append( \"      \" + XMLHandler.addTagValue( \"increment\", increment ) );\n    retval.append( \"      \" + XMLHandler.addTagValue( \"resultfieldName\", resultfieldName ) );\n\n    retval.append( \"    <fields>\" + Const.CR );\n    for ( int i = 0; i < fieldName.length; i++ ) {\n      retval.append( \"      <field>\" + Const.CR );\n      retval.append( \"        \" + XMLHandler.addTagValue( \"name\", fieldName[i] ) );\n      retval.append( \"        </field>\" + Const.CR );\n    }\n    retval.append( \"      </fields>\" + Const.CR );\n","sourceCodeStart":131,"sourceCodeEnd":167,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/engine/src/main/java/org/pentaho/di/trans/steps/fieldschangesequence/FieldsChangeSequenceMeta.java#L131-L167","documentation":"KettleXMLException with the literal message 'Unable to load step info from XML' thrown by FieldsChangeSequenceMeta.readData() (called via loadXML) when parsing the step's <fields> node fails — e.g. reading the nrfields count or per-field <field>/<name> tags. It wraps the original exception so the transformation cannot load.","triggerScenarios":"An Exception occurs in readData() while calling XMLHandler.getNodes/getSubNodeByNr/getTagValue on the stepnode — malformed XML, missing <fields> element, or null fnode causing NPE when reading 'name'.","commonSituations":"Hand-edited .ktr where the fields block was deleted; truncated/corrupt file from a failed save; step XML copied between transformations missing the fields section; version drift in the XML layout.","solutions":["Validate the .ktr XML and ensure the FieldsChangeSequence step node contains a <fields> element with <field><name> entries.","Inspect getCause() of the KettleXMLException for the exact parse/NPE cause.","Recreate the step in Spoon and re-save the transformation.","Restore the transformation file from backup or version control."],"exampleFix":"// before: fields block missing\n<fields/>\n// after: valid fields block\n<fields>\n  <field><name>status</name></field>\n  <field><name>region</name></field>\n</fields>","handlingStrategy":"try-catch","validationCode":"DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(new File(ktrPath)); // pre-validate XML","typeGuard":null,"tryCatchPattern":"try { transMeta = new TransMeta(ktrPath); } catch (KettleXMLException e) { log.error(\"step XML invalid: \" + e.getCause(), e); }","preventionTips":["Avoid manual XML edits on .ktr files","Keep <fields> block intact when copying steps","Recreate corrupted steps in Spoon and re-save"],"tags":["xml","parse","metadata-load","kettle"],"backgroundTag":"xml-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"}