{"record":{"id":"dfcab9d9593de123","repo":"pentaho/pentaho-kettle","slug":"unable-to-find-transformation-name-in-directory-directory","errorCode":null,"errorMessage":"Unable to find transformation '\" + name + \"' in directory :\" + directory","messagePattern":"Unable to find transformation '\" \\+ name \\+ \"' in directory :\" \\+ directory","errorType":"exception","errorClass":"KettleException","httpStatus":null,"severity":"error","filePath":"engine/src/main/java/org/pentaho/di/www/ExecuteTransServlet.java","lineNumber":390,"sourceCode":"      String directoryPath;\n      String name;\n      int lastSlash = trans.lastIndexOf( RepositoryDirectory.DIRECTORY_SEPARATOR );\n      if ( lastSlash < 0 ) {\n        directoryPath = \"/\";\n        name = trans;\n      } else {\n        directoryPath = trans.substring( 0, lastSlash );\n        name = trans.substring( lastSlash + 1 );\n      }\n      RepositoryDirectoryInterface directory =\n        repository.loadRepositoryDirectoryTree().findDirectory( directoryPath );\n      if ( directory == null ) {\n        throw new KettleException( \"Unable to find directory path '\" + directoryPath + \"' in the repository\" );\n      }\n\n      ObjectId transformationID = repository.getTransformationID( name, directory );\n      if ( transformationID == null ) {\n        throw new KettleException( \"Unable to find transformation '\" + name + \"' in directory :\" + directory );\n      }\n      // TODO BACKLOG-44138 need to pass parent variablespace\n      TransMeta transMeta = repository.loadTransformation( transformationID, null, parentVariableSpace );\n      return transMeta;\n    }\n  }\n\n  private Repository openRepository( String repositoryName, String user, String pass ) throws KettleException {\n\n    if ( Utils.isEmpty( repositoryName ) ) {\n      return null;\n    }\n\n    RepositoriesMeta repositoriesMeta = new RepositoriesMeta();\n    repositoriesMeta.readData();\n    RepositoryMeta repositoryMeta = repositoriesMeta.findRepository( repositoryName );\n    if ( repositoryMeta == null ) {\n      throw new KettleException( \"Unable to find repository: \" + repositoryName );","sourceCodeStart":372,"sourceCodeEnd":408,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/engine/src/main/java/org/pentaho/di/www/ExecuteTransServlet.java#L372-L408","documentation":"KettleException thrown by ExecuteTransServlet.loadTransformation when repository.getTransformationID(name, directory) returns null — the directory resolved but no transformation with the given name exists inside it. The message includes the transformation name and the directory object.","triggerScenarios":"GET /kettle/executeTrans/ with trans=/path/name where /path exists but no transformation 'name' is stored there (renamed, deleted, or never exported).","commonSituations":"Transformation renamed or moved after the URL was created; executing a .ktr by name that was saved under a different name; wrong directory in the request; deleted transformation with stale schedulers still calling it.","solutions":["Verify the transformation name in the repository directory via Spoon","Correct the trans parameter to the actual name/path","Update any scheduler or client still pointing at the old name","Re-deploy the transformation if it was deleted","Check for case or extension mismatch in the name"],"exampleFix":"// before\nString transParam = \"/home/prod/load_dw\"; // renamed\n// after\nString transParam = \"/home/prod/load_dw_incremental\";","handlingStrategy":"validation","validationCode":"RepositoryDirectoryInterface dir = repo.loadRepositoryDirectoryTree().findDirectory( dirPath );\nboolean exists = dir != null && repo.getTransformationID( transName, dir ) != null;","typeGuard":null,"tryCatchPattern":"try {\n  // executeTrans request\n} catch ( KettleException e ) {\n  if ( e.getMessage().startsWith( \"Unable to find transformation\" ) ) {\n    LOG.error( \"Transformation missing: \" + transName + \" in \" + dirPath );\n  }\n}","preventionTips":["Look up transformation ObjectIds rather than hardcoding names","Update schedulers when transformations are renamed/moved","Verify names via repository explorer before external execution","Detect stale transformation references with periodic repository audits"],"tags":["repository","transformation","servlet","pdi"],"backgroundTag":"entity-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"}