{"record":{"id":"a6dc3570edb349fa","repo":"pentaho/pentaho-kettle","slug":"jobentrycopymoveresultfilenames-cannotloadfromxml","errorCode":null,"errorMessage":"JobEntryCopyMoveResultFilenames.CanNotLoadFromXML","messagePattern":"JobEntryCopyMoveResultFilenames\\.CanNotLoadFromXML","errorType":"exception","errorClass":"KettleXMLException","httpStatus":null,"severity":"error","filePath":"engine/src/main/java/org/pentaho/di/job/entries/copymoveresultfilenames/JobEntryCopyMoveResultFilenames.java","lineNumber":185,"sourceCode":"      success_condition = XMLHandler.getTagValue( entrynode, \"success_condition\" );\n      add_date = \"Y\".equalsIgnoreCase( XMLHandler.getTagValue( entrynode, \"add_date\" ) );\n      add_time = \"Y\".equalsIgnoreCase( XMLHandler.getTagValue( entrynode, \"add_time\" ) );\n      SpecifyFormat = \"Y\".equalsIgnoreCase( XMLHandler.getTagValue( entrynode, \"SpecifyFormat\" ) );\n      AddDateBeforeExtension =\n        \"Y\".equalsIgnoreCase( XMLHandler.getTagValue( entrynode, \"AddDateBeforeExtension\" ) );\n\n      date_time_format = XMLHandler.getTagValue( entrynode, \"date_time_format\" );\n      action = XMLHandler.getTagValue( entrynode, \"action\" );\n\n      OverwriteFile = \"Y\".equalsIgnoreCase( XMLHandler.getTagValue( entrynode, \"OverwriteFile\" ) );\n      CreateDestinationFolder =\n        \"Y\".equalsIgnoreCase( XMLHandler.getTagValue( entrynode, \"CreateDestinationFolder\" ) );\n      RemovedSourceFilename = \"Y\".equalsIgnoreCase( XMLHandler.getTagValue( entrynode, \"RemovedSourceFilename\" ) );\n      AddDestinationFilename =\n        \"Y\".equalsIgnoreCase( XMLHandler.getTagValue( entrynode, \"AddDestinationFilename\" ) );\n\n    } catch ( KettleXMLException xe ) {\n      throw new KettleXMLException( BaseMessages.getString(\n        PKG, \"JobEntryCopyMoveResultFilenames.CanNotLoadFromXML\", xe.getMessage() ) );\n    }\n  }\n\n  public void loadRep( Repository rep, IMetaStore metaStore, ObjectId id_jobentry, List<DatabaseMeta> databases,\n    List<SlaveServer> slaveServers ) throws KettleException {\n    try {\n      foldername = rep.getJobEntryAttributeString( id_jobentry, \"foldername\" );\n      specifywildcard = rep.getJobEntryAttributeBoolean( id_jobentry, \"specify_wildcard\" );\n      wildcard = rep.getJobEntryAttributeString( id_jobentry, \"wildcard\" );\n      wildcardexclude = rep.getJobEntryAttributeString( id_jobentry, \"wildcardexclude\" );\n      destination_folder = rep.getJobEntryAttributeString( id_jobentry, \"destination_folder\" );\n      nr_errors_less_than = rep.getJobEntryAttributeString( id_jobentry, \"nr_errors_less_than\" );\n      success_condition = rep.getJobEntryAttributeString( id_jobentry, \"success_condition\" );\n      add_date = rep.getJobEntryAttributeBoolean( id_jobentry, \"add_date\" );\n      add_time = rep.getJobEntryAttributeBoolean( id_jobentry, \"add_time\" );\n      SpecifyFormat = rep.getJobEntryAttributeBoolean( id_jobentry, \"SpecifyFormat\" );\n      date_time_format = rep.getJobEntryAttributeString( id_jobentry, \"date_time_format\" );","sourceCodeStart":167,"sourceCodeEnd":203,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/engine/src/main/java/org/pentaho/di/job/entries/copymoveresultfilenames/JobEntryCopyMoveResultFilenames.java#L167-L203","documentation":"JobEntryCopyMoveResultFilenames.loadXML throws this KettleXMLException when the XML node for the 'copy/move result filenames' job entry cannot be parsed. It wraps the original exception and includes xe.getMessage(), signaling that settings like destination folder, wildcard, overwrite flags could not be read from XML.","triggerScenarios":"Calling loadXML on a job entry node with malformed or unexpected content: missing attributes, invalid characters, or an XMLHandler parsing failure while reading tags like 'destination_folder', 'OverwriteFile', 'CreateDestinationFolder'.","commonSituations":"Corrupted .kjb files after manual edits; files transferred with wrong encoding; XML generated by third-party tools not matching the expected schema.","solutions":["Open the .kjb in a text/XML editor and validate well-formedness of the entry node.","Recreate the job entry in Spoon and re-save the job.","Check xe.getMessage() in the thrown exception for the precise parse failure.","Ensure file encoding is UTF-8 when transferring job files between systems."],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":"// verify node is parseable before loadXML\nif (entrynode == null || entrynode.getNodeType() != Node.ELEMENT_NODE) {\n  throw new IllegalArgumentException(\"entrynode must be an element node\");\n}","typeGuard":null,"tryCatchPattern":"try {\n  jobEntry.loadXML(entrynode, databases, slaveServers);\n} catch (KettleXMLException e) {\n  logError(\"Cannot parse copy/move result filenames entry: \" + e.getMessage(), e);\n  // recreate entry with defaults or abort the job load\n}","preventionTips":["Transfer .kjb files in binary/UTF-8-safe modes","Avoid third-party tools generating the entry XML unless schema-conformant","Validate job XML against the Pentaho schema before loading","Keep Pentaho versions aligned across environments"],"tags":["pdi","kettle","xml-parse","job-entry"],"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"}