{"record":{"id":"25a5df19b5c0230b","repo":"pentaho/pentaho-kettle","slug":"transexecutordialog-exception","errorCode":null,"errorMessage":"TransExecutorDialog.Exception.UnableToFindRepositoryDirectory","messagePattern":"TransExecutorDialog\\.Exception\\.UnableToFindRepositoryDirectory","errorType":"exception","errorClass":"KettleException","httpStatus":null,"severity":"error","filePath":"ui/src/main/java/org/pentaho/di/ui/trans/steps/transexecutor/TransExecutorDialog.java","lineNumber":393,"sourceCode":"        if ( Utils.isEmpty( filename ) ) {\n          return;\n        }\n        String transPath = transMeta.environmentSubstitute( filename );\n        String realTransname = transPath;\n        String realDirectory = \"\";\n        int index = transPath.lastIndexOf( \"/\" );\n        if ( index != -1 ) {\n          realTransname = transPath.substring( index + 1 );\n          realDirectory = transPath.substring( 0, index );\n        }\n\n        if ( Utils.isEmpty( realDirectory ) || Utils.isEmpty( realTransname ) ) {\n          throw new KettleException(\n            BaseMessages.getString( PKG, \"TransExecutorDialog.Exception.NoValidMappingDetailsFound\" ) );\n        }\n        RepositoryDirectoryInterface repdir = repository.findDirectory( realDirectory );\n        if ( repdir == null ) {\n          throw new KettleException( BaseMessages.getString(\n            PKG, \"TransExecutorDialog.Exception.UnableToFindRepositoryDirectory\" ) );\n        }\n        loadRepositoryTrans( realTransname, repdir );\n        break;\n      default:\n        break;\n    }\n  }\n\n  /**\n   * Copy information from the meta-data input to the dialog fields.\n   */\n  public void getData() {\n    specificationMethod = transExecutorMeta.getSpecificationMethod();\n    switch ( specificationMethod ) {\n      case FILENAME:\n        wPath.setText( Const.NVL( transExecutorMeta.getFileName(), \"\" ) );\n        break;","sourceCodeStart":375,"sourceCodeEnd":411,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/ui/src/main/java/org/pentaho/di/ui/trans/steps/transexecutor/TransExecutorDialog.java#L375-L411","documentation":"Thrown by TransExecutorDialog.loadTransformation after parsing the repository path: repository.findDirectory(realDirectory) returned null, meaning the directory portion of the configured transformation path does not exist in the connected repository.","triggerScenarios":"TransExecutor is configured with a repository transformation path whose directory (e.g. '/public/jobs') no longer exists in the repository the user is connected to.","commonSituations":"Connecting to a different repository or environment (dev vs prod) where the directory tree differs; the directory was renamed or deleted; case-sensitivity or leading-slash mistakes in the path.","solutions":["Connect to the correct repository and verify the directory exists via the repository browser.","Re-select the transformation in the TransExecutor dialog so the path is refreshed.","Recreate or rename the target directory to match the configured path, or update the step to the new path.","Check repository connection settings (user permissions can hide directories)."],"exampleFix":"// before\nrealDirectory = \"/jobs/old-name\"\n// after (renamed dir)\nrealDirectory = \"/jobs/new-name\"","handlingStrategy":"validation","validationCode":"RepositoryDirectoryInterface dir = repository.findDirectory(realDirectory);\nif (dir == null) throw new KettleException(\"Directory not found in repository: \" + realDirectory);","typeGuard":"boolean directoryExists(Repository repo, String path) { return path != null && repo.findDirectory(path) != null; }","tryCatchPattern":"try { loadTransformation(...); } catch (KettleException e) { showErrorDialog(\"Repository directory missing — reconnect to the correct repository and reselect the transformation.\", e); }","preventionTips":["Verify the target directory exists in the connected repository before saving the job","Use consistent directory naming across dev/test/prod repositories","Check user permissions can see the directory after reconnecting"],"tags":["kettle","pdi","repository","directory-not-found","configuration"],"backgroundTag":"resource-not-found","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"}