{"record":{"id":"4ca608a460da682d","repo":"pentaho/pentaho-kettle","slug":"unable-to-load-job-entry-of-type-get-pop-from-xml-node","errorCode":null,"errorMessage":"Unable to load job entry of type 'get pop' from XML node","messagePattern":"Unable to load job entry of type 'get pop' from XML node","errorType":"exception","errorClass":"KettleXMLException","httpStatus":null,"severity":"error","filePath":"plugins/email-messages/impl/src/main/java/org/pentaho/di/job/entries/getpop/JobEntryGetPOP.java","lineNumber":413,"sourceCode":"      createMoveToFolder = STR_Y.equalsIgnoreCase( XMLHandler.getTagValue( entrynode, TAG_CREATE_MOVE_TO_FOLDER ) );\n      createLocalFolder = STR_Y.equalsIgnoreCase( XMLHandler.getTagValue( entrynode, TAG_CREATE_LOCAL_FOLDER ) );\n      aftergetimap =\n        MailConnectionMeta.getAfterGetIMAPByCode( Const.NVL(\n          XMLHandler.getTagValue( entrynode, TAG_AFTER_GET_IMAP ), \"\" ) );\n      includeSubfolders = STR_Y.equalsIgnoreCase( XMLHandler.getTagValue( entrynode, TAG_INCLUDE_SUBFOLDERS ) );\n      useProxy = STR_Y.equalsIgnoreCase( XMLHandler.getTagValue( entrynode, TAG_USE_PROXY ) );\n      proxyUserName = XMLHandler.getTagValue( entrynode, TAG_PROXY_USER_NAME );\n      setUsingAuthentication( XMLHandler.getTagValue( entrynode, TAG_USE_AUTH ) );\n      setClientId( XMLHandler.getTagValue( entrynode, TAG_AUTH_CLIENT_ID ) );\n      setSecretKey( Encr.decryptPasswordOptionallyEncrypted( XMLHandler.getTagValue( entrynode, TAG_AUTH_SECRET_KEY ) ) );\n      setScope( XMLHandler.getTagValue( entrynode, TAG_AUTH_SCOPE ) );\n      setTokenUrl( XMLHandler.getTagValue( entrynode, TAG_AUTH_TOKEN_URL ) );\n      setAuthorization_code( XMLHandler.getTagValue( entrynode, TAG_AUTH_AUTHORIZATION_CODE ) );\n      setRedirectUri( XMLHandler.getTagValue( entrynode, TAG_REDIRECT_URI ) );\n      setRefresh_token( XMLHandler.getTagValue( entrynode, TAG_REFRESH_TOKEN ) );\n      setGrant_type( XMLHandler.getTagValue( entrynode, TAG_USE_GRANT_TYPE ) );\n    } catch ( KettleXMLException xe ) {\n      throw new KettleXMLException( \"Unable to load job entry of type 'get pop' from XML node\", xe );\n    }\n  }\n\n  public int getValueImapList() {\n    return valueimaplist;\n  }\n\n  public void setValueImapList( int value ) {\n    this.valueimaplist = value;\n  }\n\n  @Override\n  public void loadRep( Repository rep, IMetaStore metaStore, ObjectId idJobEntry, List<DatabaseMeta> databases,\n    List<SlaveServer> slaveServers ) throws KettleException {\n    try {\n      serverName = rep.getJobEntryAttributeString( idJobEntry, TAG_SERVERNAME );\n      userName = rep.getJobEntryAttributeString( idJobEntry, TAG_USERNAME );\n      password = Encr.decryptPasswordOptionallyEncrypted( rep.getJobEntryAttributeString( idJobEntry, TAG_PASSWORD ) );","sourceCodeStart":395,"sourceCodeEnd":431,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/plugins/email-messages/impl/src/main/java/org/pentaho/di/job/entries/getpop/JobEntryGetPOP.java#L395-L431","documentation":"JobEntryGetPOP.loadXML() reads all XML tags for the 'Get mail (POP3/IMAP)' job entry; a KettleXMLException raised while reading a tag is rewrapped with 'Unable to load job entry of type 'get pop' from XML node'. It means the job entry's XML in the .kjb is malformed or unreadable.","triggerScenarios":"JobEntryGetPOP (public loadXML constructor) parsing a job entry node from a .kjb file: XMLHandler.getTagValue chain throws because the entry node is corrupted or a required sub-node is missing.","commonSituations":"Hand-edited or truncated .kjb, job saved by a newer Pentaho/mail plugin version and opened by an older one, interrupted save leaving partial XML.","solutions":["Inspect the job entry's XML block in the .kjb for well-formedness and required tags","Delete and recreate the 'Get mail' job entry in Spoon, then re-save","Open the job with the same or newer Pentaho version that wrote it"],"exampleFix":null,"handlingStrategy":"validation","validationCode":"// validate the .kjb before opening in Pentaho\nxmllint --noout job.kjb && echo OK\n// locate the get pop entry node and check its tags exist\ngrep -c 'entries/getpop\\|GET_POP' job.kjb","typeGuard":null,"tryCatchPattern":"try { jobMeta = JobMetaFactory.create(path, rep); } catch (KettleXMLException e) {\n  log.error(\"Job entry XML unreadable: \" + e.getMessage(), e);\n  throw new IOException(\"Fix or recreate the get pop job entry\", e);\n}","preventionTips":["Avoid manual edits to .kjb files; use Spoon","Match Pentaho/mail plugin versions between authoring and execution environments","Commit jobs to VCS to recover from truncated saves"],"tags":["kettle","xml","job-entry","mail"],"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"}