{"record":{"id":"a26e41f65e45d172","repo":"pentaho/pentaho-kettle","slug":"purrepository-error-0007-transformation-name-missing","errorCode":"PurRepository.ERROR_0007_TRANSFORMATION_NAME_MISSING","errorMessage":"PurRepository.ERROR_0007_TRANSFORMATION_NAME_MISSING (localized: transformation name missing)","messagePattern":"PurRepository\\.ERROR_0007_TRANSFORMATION_NAME_MISSING \\(localized: transformation name missing\\)","errorType":"exception","errorClass":"KettleFileException","httpStatus":null,"severity":"error","filePath":"plugins/pur/core/src/main/java/org/pentaho/di/repository/pur/PurRepository.java","lineNumber":2440,"sourceCode":"  @Override\n  public TransMeta loadTransformation( final String transName, final RepositoryDirectoryInterface parentDir,\n                                       final ProgressMonitorListener monitor, final boolean setInternalVariables,\n                                       final String versionId )\n  throws KettleException {\n    return loadTransformation( this.getBowl(), transName, parentDir, monitor, setInternalVariables, versionId, null );\n  }\n\n  @Override\n  public TransMeta loadTransformation( final Bowl bowl, final String transName, final RepositoryDirectoryInterface parentDir,\n                                       final ProgressMonitorListener monitor, final boolean setInternalVariables,\n                                       final String versionId, VariableSpace parent )\n  throws KettleException {\n    String absPath = null;\n    try {\n      // if transName is empty, we cannot load the transformation - the transformation path was likely not provided\n      // by the user\n      if ( StringUtils.isBlank( transName ) ) {\n        throw new KettleFileException( BaseMessages.getString( PKG,\n          \"PurRepository.ERROR_0007_TRANSFORMATION_NAME_MISSING\" ) );\n      }\n      try {\n        absPath = getPath( transName, parentDir, RepositoryObjectType.TRANSFORMATION );\n      } catch ( Exception e ) {\n        // ignore and handle null value below\n      }\n      // if absPath is empty, we cannot load the transformation - the path provided by the user was likely defined as a\n      // variable that is not available at runtime\n      if ( StringUtils.isBlank( absPath )  ) {\n        // Couldn't resolve path, throw an exception\n        throw new KettleFileException( BaseMessages.getString( PKG,\n          \"PurRepository.ERROR_0008_TRANSFORMATION_PATH_INVALID\", transName ) );\n      }\n\n      RepositoryFile file;\n      NodeRepositoryFileData data = null;\n      ObjectRevision revision = null;","sourceCodeStart":2422,"sourceCodeEnd":2458,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/plugins/pur/core/src/main/java/org/pentaho/di/repository/pur/PurRepository.java#L2422-L2458","documentation":"Thrown by PurRepository.loadTransformation when the transformation name argument is blank. Without a name, the repository cannot compute the file path to load, so a KettleFileException with ERROR_0007_TRANSFORMATION_NAME_MISSING is raised immediately.","triggerScenarios":"Calling PurRepository.loadTransformation(name, parentDir, monitor, revision, readOnly) with null, empty, or whitespace-only transName.","commonSituations":"Variables (${} placeholders) that failed to resolve to a real name at runtime; calling the API without specifying which transformation to load; job entry configuration where the transformation field was left empty.","solutions":["Pass a non-blank transformation name, including directory path if needed (e.g. /home/admin/mytrans)","Fix runtime variables so the name resolves to a non-empty value","Validate the name parameter before calling loadTransformation"],"exampleFix":"// before\nTransMeta tm = repository.loadTransformation(null, dir, monitor, null, false);\n// after\nString name = getResolvedTransName(); // e.g. \"/home/admin/mytrans\"\nif (name != null && !name.trim().isEmpty()) {\n  TransMeta tm = repository.loadTransformation(name, dir, monitor, null, false);\n}","handlingStrategy":"validation","validationCode":"if (transName == null || transName.trim().isEmpty()) {\n  throw new IllegalArgumentException(\"Transformation name is required\");\n}","typeGuard":null,"tryCatchPattern":"try {\n  return repository.loadTransformation(transName, dir, monitor, revision, readOnly);\n} catch (KettleFileException e) {\n  if (String.valueOf(e.getMessage()).contains(\"TRANSFORMATION_NAME_MISSING\")) {\n    log.error(\"transformation name was blank; check job entry config / variables\");\n  }\n  throw e;\n}","preventionTips":["Validate name fields in job entry dialogs as required","Resolve all variables before calling load APIs","Log resolved names during development"],"tags":["pentaho","kettle","missing-argument","transformation"],"backgroundTag":"missing-required-argument","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"}