{"record":{"id":"e0a34ad154a6dadb","repo":"pentaho/pentaho-kettle","slug":"transmeta-exception-transformationdoesnotexist","errorCode":null,"errorMessage":"TransMeta.Exception.TransformationDoesNotExist","messagePattern":"TransMeta\\.Exception\\.TransformationDoesNotExist","errorType":"exception","errorClass":"KettleException","httpStatus":null,"severity":"error","filePath":"engine/src/main/java/org/pentaho/di/repository/kdr/delegates/KettleDatabaseRepositoryTransDelegate.java","lineNumber":633,"sourceCode":"          //\n          RepositoryAttributeInterface attributeInterface =\n            new KettleDatabaseRepositoryTransAttribute( repository.connectionDelegate, transMeta.getObjectId() );\n          for ( LogTableInterface logTable : transMeta.getLogTables() ) {\n            logTable.loadFromRepository( attributeInterface );\n          }\n\n          if ( monitor != null ) {\n            monitor.subTask( BaseMessages.getString( PKG, \"TransMeta.Monitor.SortingStepsTask.Title\" ) );\n          }\n          transMeta.sortSteps();\n          if ( monitor != null ) {\n            monitor.worked( 1 );\n          }\n          if ( monitor != null ) {\n            monitor.done();\n          }\n        } else {\n          throw new KettleException( BaseMessages\n            .getString( PKG, \"TransMeta.Exception.TransformationDoesNotExist\" )\n            + transMeta.getName() );\n        }\n        if ( log.isDetailed() ) {\n          log.logDetailed( BaseMessages.getString( PKG, \"TransMeta.Log.LoadedTransformation2\", transname, String\n            .valueOf( transMeta.getRepositoryDirectory() == null ) ) );\n          log\n            .logDetailed( BaseMessages.getString(\n              PKG, \"TransMeta.Log.LoadedTransformation\", transname, transMeta.getRepositoryDirectory().getPath() ) );\n        }\n\n        // close prepared statements, minimize locking etc.\n        //\n        repository.connectionDelegate.closeAttributeLookupPreparedStatements();\n\n        return transMeta;\n      } catch ( KettleDatabaseException e ) {\n        log.logError( BaseMessages.getString( PKG, \"TransMeta.Log.DatabaseErrorOccuredReadingTransformation\" )","sourceCodeStart":615,"sourceCodeEnd":651,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/engine/src/main/java/org/pentaho/di/repository/kdr/delegates/KettleDatabaseRepositoryTransDelegate.java#L615-L651","documentation":"Thrown by loadTransformation when the repository lookup returns no transformation with the given id/name, i.e. transMeta.getObjectId() is null or the database read found no matching row. The delegate cannot load a transformation that does not exist in the repository, so it throws a KettleException naming the missing transformation.","triggerScenarios":"Calling repository.loadTransformation(transMeta, null/invalid directory, monitor, setInternalVariables, false) where the transformation name does not exist in the target repository directory, or passing a TransMeta whose ObjectId was never set by findByObjectId/findByDirectory.","commonSituations":"Typos in transformation name or repository directory path; pointing code at the wrong repository (dev vs prod); transformation deleted by another user; case-sensitivity differences in name lookup.","solutions":["Check existence first with repository.findTransformation(name, directory) or verify transMeta.getObjectId() != null before loading.","Confirm the repository directory passed to loadTransformation is the one actually containing the transformation.","Verify you are connected to the intended repository and the transformation was not renamed/deleted."],"exampleFix":"// before\nrepository.loadTransformation(transMeta, directory, monitor, true, false); // throws if missing\n// after\nRepositoryDirectoryInterface dir = repository.findDirectory(directoryPath);\nObjectId id = repository.getTransformationID(transMeta.getName(), dir);\nif (id == null) {\n  throw new KettleException(\"Transformation not found: \" + transMeta.getName());\n}\nrepository.loadTransformation(transMeta, dir, monitor, true, false);","handlingStrategy":"validation","validationCode":"RepositoryDirectoryInterface dir = repository.findDirectory(directoryPath);\nObjectId id = repository.getTransformationID(name, dir);\nif (id == null) { throw new KettleException(\"Transformation \" + name + \" does not exist in \" + directoryPath); }","typeGuard":null,"tryCatchPattern":"try { repository.loadTransformation(transMeta, dir, monitor, true, false); } catch (KettleException e) { if (repository.getTransformationID(name, dir) == null) { /* not found — handle as user error */ } else throw e; }","preventionTips":["Always resolve the transformation via findTransformation/getTransformationID before loading","Verify the repository and directory are the intended ones","Watch for name case-sensitivity differences","Confirm the transformation still exists in shared/multi-user repositories"],"tags":["repository","transformation-load","missing-resource"],"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"}