{"record":{"id":"4fca45d79e53038d","repo":"pentaho/pentaho-kettle","slug":"unable-to-get-list-of-transformations-names-in-folder-with","errorCode":null,"errorMessage":"Unable to get list of transformations names in folder with id : + id_directory","messagePattern":"Unable to get list of transformations names in folder with id : \\+ id_directory","errorType":"exception","errorClass":"KettleException","httpStatus":null,"severity":"error","filePath":"engine/src/main/java/org/pentaho/di/repository/filerep/KettleFileRepository.java","lineNumber":594,"sourceCode":"      FileObject folder = KettleVFS.getInstance( DefaultBowl.getInstance() ).getFileObject( folderName );\n\n      for ( FileObject child : folder.getChildren() ) {\n        if ( child.getType().equals( FileType.FILE ) ) {\n          if ( !child.isHidden() || !repositoryMeta.isHidingHiddenFiles() ) {\n            String name = child.getName().getBaseName();\n\n            if ( name.endsWith( EXT_JOB ) ) {\n\n              String jobName = name.substring( 0, name.length() - 4 );\n              list.add( jobName );\n            }\n          }\n        }\n      }\n\n      return list.toArray( new String[list.size()] );\n    } catch ( Exception e ) {\n      throw new KettleException(\n        \"Unable to get list of transformations names in folder with id : \" + id_directory, e );\n    }\n  }\n\n  public ObjectId[] getJobNoteIDs( ObjectId id_job ) throws KettleException {\n    return new ObjectId[] {};\n  }\n\n  @Override\n  public String[] getJobsUsingDatabase( ObjectId id_database ) throws KettleException {\n    return new String[] {};\n  }\n\n  @Override\n  public String getName() {\n\n    return repositoryMeta.getName();\n  }","sourceCodeStart":576,"sourceCodeEnd":612,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/engine/src/main/java/org/pentaho/di/repository/filerep/KettleFileRepository.java#L576-L612","documentation":"KettleFileRepository.getTransformationNames(ObjectId, boolean) wraps any exception thrown while listing transformation names in a repository directory into this KettleException. The file repository reads directory metadata/objects from the filesystem, so any I/O, path, or parsing failure during the listing surfaces here with the folder's ObjectId in the message. The original exception is attached as the cause.","triggerScenarios":"Calling getTransformationNames(id_directory, includeDeleted) when the directory id does not map to an existing folder, the underlying directory file(s) are unreadable/corrupt, or VFS fails to resolve the directory path.","commonSituations":"Repository folder deleted or renamed outside Pentaho while an ObjectId is cached in a job; wrong repository base directory configured in spoon.properties or the repository connection dialog; file-system permission problems; a corrupted .ktr metadata file inside the folder.","solutions":["Verify id_directory resolves to a real folder under the repository base directory (check the directory tree / findDirectory)","Check repository connection settings point at the correct base folder and the process has read permissions on it","Inspect the chained cause (e.getCause()) to identify the actual I/O or XML parsing failure","If the folder was deleted, reload the repository directory tree (loadRepositoryDirectoryTree) and obtain a fresh ObjectId"],"exampleFix":"// before\nList<String> names = repository.getTransformationNames(oldDirId, false);\n// after\nRepositoryDirectoryInterface dir = repository.loadRepositoryDirectoryTree().findDirectory(\"/home/dev\");\nif (dir == null) { throw new KettleException(\"Directory not found\"); }\nList<String> names = repository.getTransformationNames(dir.getObjectId(), false);","handlingStrategy":"try-catch","validationCode":"RepositoryDirectoryInterface dir = repository.findDirectory(\"/target/folder\");\nif (dir == null) throw new KettleException(\"Folder does not exist in repository\");","typeGuard":null,"tryCatchPattern":"try {\n  List<String> names = repository.getTransformationNames(dirId, false);\n} catch (KettleException e) {\n  logger.error(\"Listing transformations failed for dir \" + dirId + \": \" + e.getCause(), e);\n  throw new KettleException(\"Verify repository folder and permissions\", e);\n}","preventionTips":["Resolve ObjectIds from a freshly loaded directory tree, never cache them across sessions","Verify repository base directory and read permissions after environment changes","Watch for external folder deletions/renames when the repo folder is shared"],"tags":["file-repository","kettle","io-exception","directory-listing"],"backgroundTag":"directory-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"}