{"record":{"id":"b0e3698fd8862312","repo":"pentaho/pentaho-kettle","slug":"unable-to-load-job-entry-of-type-sftpput-from-the-repository","errorCode":null,"errorMessage":"Unable to load job entry of type 'SFTPPUT' from the repository for id_jobentry=","messagePattern":"Unable to load job entry of type 'SFTPPUT' from the repository for id_jobentry=","errorType":"exception","errorClass":"KettleException","httpStatus":null,"severity":"error","filePath":"plugins/put-file-sftp/impl/src/main/java/org/pentaho/di/job/entries/sftpput/JobEntrySFTPPUT.java","lineNumber":313,"sourceCode":"      proxyPort = rep.getJobEntryAttributeString( id_jobentry, \"proxyPort\" );\n      proxyUsername = rep.getJobEntryAttributeString( id_jobentry, \"proxyUsername\" );\n      proxyPassword =\n        Encr.decryptPasswordOptionallyEncrypted( rep.getJobEntryAttributeString( id_jobentry, \"proxyPassword\" ) );\n\n      createRemoteFolder = rep.getJobEntryAttributeBoolean( id_jobentry, \"createRemoteFolder\" );\n\n      boolean remove = rep.getJobEntryAttributeBoolean( id_jobentry, \"remove\" );\n      setAfterFTPS( getAfterSFTPPutByCode( Const.NVL(\n        rep.getJobEntryAttributeString( id_jobentry, \"aftersftpput\" ), \"\" ) ) );\n      if ( remove && getAfterFTPS() == AFTER_FTPSPUT_NOTHING ) {\n        setAfterFTPS( AFTER_FTPSPUT_DELETE );\n      }\n      destinationfolder = rep.getJobEntryAttributeString( id_jobentry, \"destinationfolder\" );\n      createDestinationFolder = rep.getJobEntryAttributeBoolean( id_jobentry, \"createdestinationfolder\" );\n      successWhenNoFile = rep.getJobEntryAttributeBoolean( id_jobentry, \"successWhenNoFile\" );\n\n    } catch ( KettleException dbe ) {\n      throw new KettleException( \"Unable to load job entry of type 'SFTPPUT' from the repository for id_jobentry=\"\n        + id_jobentry, dbe );\n    }\n  }\n\n  public void saveRep( Repository rep, IMetaStore metaStore, ObjectId id_job ) throws KettleException {\n    try {\n      rep.saveJobEntryAttribute( id_job, getObjectId(), \"servername\", serverName );\n      rep.saveJobEntryAttribute( id_job, getObjectId(), \"serverport\", serverPort );\n      rep.saveJobEntryAttribute( id_job, getObjectId(), \"username\", userName );\n      rep.saveJobEntryAttribute( id_job, getObjectId(), \"password\", Encr\n        .encryptPasswordIfNotUsingVariables( password ) );\n      rep.saveJobEntryAttribute( id_job, getObjectId(), \"sftpdirectory\", sftpDirectory );\n      rep.saveJobEntryAttribute( id_job, getObjectId(), \"localdirectory\", localDirectory );\n      rep.saveJobEntryAttribute( id_job, getObjectId(), \"wildcard\", wildcard );\n      rep.saveJobEntryAttribute( id_job, getObjectId(), \"copyprevious\", copyprevious );\n      rep.saveJobEntryAttribute( id_job, getObjectId(), \"copypreviousfiles\", copypreviousfiles );\n      rep.saveJobEntryAttribute( id_job, getObjectId(), \"addFilenameResut\", addFilenameResut );\n","sourceCodeStart":295,"sourceCodeEnd":331,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/plugins/put-file-sftp/impl/src/main/java/org/pentaho/di/job/entries/sftpput/JobEntrySFTPPUT.java#L295-L331","documentation":"JobEntrySFTPPUT.loadRep catches KettleException from repository attribute reads and rethrows 'Unable to load job entry of type SFTPPUT from the repository for id_jobentry=' + id_jobentry, chaining the original exception. It means loading this entry's stored settings from the repository database failed.","triggerScenarios":"Calling loadRep when rep.getJobEntryAttributeString/Boolean fails: DB connection error, missing r_jobentry_attribute rows for the id, or schema mismatch after an upgrade.","commonSituations":"Repository database unavailable while opening a job; outdated repository schema; job entry rows removed or corrupted; stale ObjectId referencing deleted rows.","solutions":["Inspect the chained KettleException (dbe) for the root database error.","Verify repository connectivity and that the repository schema matches your Pentaho version (run upgrade scripts).","Confirm the id_jobentry exists in r_jobentry / r_jobentry_attribute; reload the job.","Recreate the SFTP Put job entry if its repository rows are corrupted."],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":"if ( rep == null || id_jobentry == null ) { throw new IllegalArgumentException(\"Repository and id_jobentry required before loadRep\"); }","typeGuard":null,"tryCatchPattern":"try { entry.loadRep(rep, metaStore, id_jobentry, databases, slaveServers); } catch (KettleException e) { log.error(\"SFTPPUT repo load failed for \" + id_jobentry, e); }","preventionTips":["Keep repository schema upgraded to match the Pentaho version.","Check repository DB health before opening jobs.","Recreate entries whose repository rows appear corrupted."],"tags":["repository","job-entry","sftp","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"}