{"record":{"id":"58a365f472979392","repo":"pentaho/pentaho-kettle","slug":"unable-to-load-job-entry-of-type-ftpput-from-the-repository","errorCode":null,"errorMessage":"Unable to load job entry of type 'FTPPUT' from the repository for id_jobentry={0}","messagePattern":"Unable to load job entry of type 'FTPPUT' from the repository for id_jobentry=(.+?)","errorType":"exception","errorClass":"KettleException","httpStatus":null,"severity":"error","filePath":"plugins/put-a-file-with-ftp/impl/src/main/java/org/pentaho/di/job/entries/ftpput/JobEntryFTPPUT.java","lineNumber":277,"sourceCode":"        // put in the encoding used before v 2.4.0\n        controlEncoding = LEGACY_CONTROL_ENCODING;\n      }\n\n      proxyHost = rep.getJobEntryAttributeString( jobEntryId, XML_TAG_PROXY_HOST );\n      proxyPort = rep.getJobEntryAttributeString( jobEntryId, XML_TAG_PROXY_PORT );\n      proxyUsername = rep.getJobEntryAttributeString( jobEntryId, XML_TAG_PROXY_USERNAME );\n      proxyPassword =\n        Encr\n          .decryptPasswordOptionallyEncrypted( rep.getJobEntryAttributeString( jobEntryId, XML_TAG_PROXY_PASSWORD ) );\n      socksProxyHost = rep.getJobEntryAttributeString( jobEntryId, XML_TAG_SOCKSPROXY_HOST );\n      socksProxyPort = rep.getJobEntryAttributeString( jobEntryId, XML_TAG_SOCKSPROXY_PORT );\n      socksProxyUsername = rep.getJobEntryAttributeString( jobEntryId, XML_TAG_SOCKSPROXY_USERNAME );\n      socksProxyPassword =\n        Encr.decryptPasswordOptionallyEncrypted( rep.getJobEntryAttributeString(\n          jobEntryId, XML_TAG_SOCKSPROXY_PASSWORD ) );\n\n    } catch ( KettleException dbe ) {\n      throw new KettleException( BaseMessages.getString( PKG, \"JobFTPPUT.UnableToLoadFromRepo\", String\n        .valueOf( jobEntryId ) ), dbe );\n    }\n  }\n\n  @Override\n  public void saveRep( Repository rep, IMetaStore metaStore, ObjectId idJob ) throws KettleException {\n    try {\n      rep.saveJobEntryAttribute( idJob, getObjectId(), XML_TAG_SERVERNAME, serverName );\n      rep.saveJobEntryAttribute( idJob, getObjectId(), XML_TAG_SERVERPORT, serverPort );\n      rep.saveJobEntryAttribute( idJob, getObjectId(), XML_TAG_USERNAME, userName );\n      rep.saveJobEntryAttribute( idJob, getObjectId(), XML_TAG_PASSWORD, Encr\n        .encryptPasswordIfNotUsingVariables( password ) );\n      rep.saveJobEntryAttribute( idJob, getObjectId(), XML_TAG_REMOTE_DIRECTORY, remoteDirectory );\n      rep.saveJobEntryAttribute( idJob, getObjectId(), XML_TAG_LOCAL_DIRECTORY, localDirectory );\n      rep.saveJobEntryAttribute( idJob, getObjectId(), XML_TAG_WILDCARD, wildcard );\n      rep.saveJobEntryAttribute( idJob, getObjectId(), XML_TAG_BINARY, binaryMode );\n      rep.saveJobEntryAttribute( idJob, getObjectId(), XML_TAG_TIMEOUT, timeout );\n      rep.saveJobEntryAttribute( idJob, getObjectId(), XML_TAG_REMOVE, remove );","sourceCodeStart":259,"sourceCodeEnd":295,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/plugins/put-a-file-with-ftp/impl/src/main/java/org/pentaho/di/job/entries/ftpput/JobEntryFTPPUT.java#L259-L295","documentation":"JobEntryFTPPUT.loadRep wraps KettleException failures from repository attribute reads and rethrows as 'Unable to load job entry of type FTPPUT from the repository for id_jobentry={0}'. It means one or more getJobEntryAttribute* calls failed while loading this entry's settings from the repository database.","triggerScenarios":"Calling loadRep when the underlying repository query fails: missing r_jobentry_attribute rows, database connectivity loss mid-load, schema mismatch, or corrupted jobEntryId.","commonSituations":"Repository database schema out of date after upgrade; DB connection dropped while opening a job; job entry rows deleted or corrupted in the repository tables.","solutions":["Check the chained KettleException (dbe) for the root database error and fix connectivity/schema accordingly.","Verify the repository tables exist and match your Pentaho version (run repository upgrade scripts).","Confirm id_jobentry points to an existing row set; reload the job from the repository.","If rows are corrupted, delete and recreate the FTP Put job entry in the repository."],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":"boolean exists = rep != null && jobEntryId != null && rep.getJobEntryAttributeString(jobEntryId, \"hostname\") != null; // probe one attribute first","typeGuard":null,"tryCatchPattern":"try { entry.loadRep(rep, metaStore, jobEntryId, databases, slaveServers); } catch (KettleException e) { log.error(\"FTPPUT repo load failed for \" + jobEntryId, e); }","preventionTips":["Run repository upgrade scripts after Pentaho upgrades.","Verify DB connectivity before opening jobs from a repository.","Back up r_jobentry_attribute rows before bulk edits."],"tags":["repository","job-entry","ftp","database"],"backgroundTag":"database-query-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"}