{"record":{"id":"3f026b134c70cf06","repo":"pentaho/pentaho-kettle","slug":"unable-to-load-job-entry-of-type-ftps-from-the-repository","errorCode":null,"errorMessage":"Unable to load job entry of type 'FTPS' from the repository for id_jobentry=","messagePattern":"Unable to load job entry of type 'FTPS' from the repository for id_jobentry=","errorType":"exception","errorClass":"KettleException","httpStatus":null,"severity":"error","filePath":"plugins/ftps/impl/src/main/java/org/pentaho/di/job/entries/ftpsget/JobEntryFTPSGet.java","lineNumber":310,"sourceCode":"\n      createmovefolder = rep.getJobEntryAttributeBoolean( id_jobentry, \"createmovefolder\" );\n\n      proxyHost = rep.getJobEntryAttributeString( id_jobentry, \"proxy_host\" );\n      proxyPort = rep.getJobEntryAttributeString( id_jobentry, \"proxy_port\" );\n      proxyUsername = rep.getJobEntryAttributeString( id_jobentry, \"proxy_username\" );\n      proxyPassword =\n        Encr\n          .decryptPasswordOptionallyEncrypted( rep.getJobEntryAttributeString( id_jobentry, \"proxy_password\" ) );\n\n      ifFileExists = getFileExistsIndex( rep.getJobEntryAttributeString( id_jobentry, \"ifFileExists\" ) );\n      nr_limit = rep.getJobEntryAttributeString( id_jobentry, \"nr_limit\" );\n      success_condition =\n        Const.NVL( rep.getJobEntryAttributeString( id_jobentry, \"success_condition\" ), SUCCESS_IF_NO_ERRORS );\n      connectionType =\n        FTPSConnection.getConnectionTypeByCode( Const.NVL( rep.getJobEntryAttributeString(\n          id_jobentry, \"connection_type\" ), \"\" ) );\n    } catch ( KettleException dbe ) {\n      throw new KettleException( \"Unable to load job entry of type 'FTPS' 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(), \"port\", port );\n      rep.saveJobEntryAttribute( id_job, getObjectId(), \"servername\", serverName );\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(), \"FTPSdirectory\", FTPSDirectory );\n      rep.saveJobEntryAttribute( id_job, getObjectId(), \"targetdirectory\", targetDirectory );\n      rep.saveJobEntryAttribute( id_job, getObjectId(), \"wildcard\", wildcard );\n      rep.saveJobEntryAttribute( id_job, getObjectId(), \"binary\", binaryMode );\n      rep.saveJobEntryAttribute( id_job, getObjectId(), \"timeout\", timeout );\n      rep.saveJobEntryAttribute( id_job, getObjectId(), \"remove\", remove );\n      rep.saveJobEntryAttribute( id_job, getObjectId(), \"only_new\", onlyGettingNewFiles );","sourceCodeStart":292,"sourceCodeEnd":328,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/plugins/ftps/impl/src/main/java/org/pentaho/di/job/entries/ftpsget/JobEntryFTPSGet.java#L292-L328","documentation":"KettleException thrown by JobEntryFTPSGet.loadRep when reading the job entry's attributes from the repository fails for the given id_jobentry — typically a KettleDatabaseException from the repository store.","triggerScenarios":"loadRep when the repository row for id_jobentry is missing/corrupt, the repository connection is down, or an attribute read throws","commonSituations":"repository database unavailable or migrated; job entry row deleted or with wrong id; repository schema version mismatch after a PDI upgrade","solutions":["Verify the repository database is reachable and credentials are valid","Check the r_jobentry row for the given id_jobentry exists and has expected attributes","Re-create the job entry in Spoon if its repository row is corrupt","Align repository schema/plugin versions after upgrades"],"exampleFix":"// before\n// loading by stale id after repo migration\njobEntry.loadRep(rep, metaStore, oldId, databases, slaveServers);\n// after\nObjectId id = rep.findJobEntryId(name); // resolve fresh id\nif (id != null) jobEntry.loadRep(rep, metaStore, id, databases, slaveServers);","handlingStrategy":"try-catch","validationCode":"// confirm the row exists before load\nif (rep.findJobEntry(id_jobentry) == null)\n  throw new KettleException(\"No repository row for id_jobentry=\" + id_jobentry);","typeGuard":null,"tryCatchPattern":"try {\n  jobEntry.loadRep(rep, metaStore, id_jobentry, databases, slaveServers);\n} catch (KettleException dbe) {\n  logError(\"Repository load failed for id=\" + id_jobentry, dbe);\n  throw dbe;\n}","preventionTips":["Check repository connectivity before loading jobs","Keep repository schema and plugin versions in sync","Avoid referencing job entry ids deleted from the repository"],"tags":["repository","database","deserialization"],"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"}