pentaho/pentaho-kettle · error · KettleFileException

PurRepository.ERROR_0007_TRANSFORMATION_NAME_MISSING

PurRepository.ERROR_0007_TRANSFORMATION_NAME_MISSING

Error message

PurRepository.ERROR_0007_TRANSFORMATION_NAME_MISSING (localized: transformation name missing)

What it means

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.

Solutions

  1. Pass a non-blank transformation name, including directory path if needed (e.g. /home/admin/mytrans)
  2. Fix runtime variables so the name resolves to a non-empty value
  3. Validate the name parameter before calling loadTransformation

Example fix

// before
TransMeta tm = repository.loadTransformation(null, dir, monitor, null, false);
// after
String name = getResolvedTransName(); // e.g. "/home/admin/mytrans"
if (name != null && !name.trim().isEmpty()) {
  TransMeta tm = repository.loadTransformation(name, dir, monitor, null, false);
}
Defensive patterns

Strategy: validation

Validate before calling

if (transName == null || transName.trim().isEmpty()) {
  throw new IllegalArgumentException("Transformation name is required");
}

Try / catch

try {
  return repository.loadTransformation(transName, dir, monitor, revision, readOnly);
} catch (KettleFileException e) {
  if (String.valueOf(e.getMessage()).contains("TRANSFORMATION_NAME_MISSING")) {
    log.error("transformation name was blank; check job entry config / variables");
  }
  throw e;
}

Prevention

When it happens

Trigger: Calling PurRepository.loadTransformation(name, parentDir, monitor, revision, readOnly) with null, empty, or whitespace-only transName.

Common situations: 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.

Understand the failure class

Background: "missing required argument" and "the following required arguments were not provided": what required-argument errors mean and how to fix them — this error's family across 20 libraries.

Related errors


AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13). Data as JSON: /api/errors/a26e41f65e45d172. Report an issue: GitHub.

Appendix: source

Thrown at plugins/pur/core/src/main/java/org/pentaho/di/repository/pur/PurRepository.java:2440

  @Override
  public TransMeta loadTransformation( final String transName, final RepositoryDirectoryInterface parentDir,
                                       final ProgressMonitorListener monitor, final boolean setInternalVariables,
                                       final String versionId )
  throws KettleException {
    return loadTransformation( this.getBowl(), transName, parentDir, monitor, setInternalVariables, versionId, null );
  }

  @Override
  public TransMeta loadTransformation( final Bowl bowl, final String transName, final RepositoryDirectoryInterface parentDir,
                                       final ProgressMonitorListener monitor, final boolean setInternalVariables,
                                       final String versionId, VariableSpace parent )
  throws KettleException {
    String absPath = null;
    try {
      // if transName is empty, we cannot load the transformation - the transformation path was likely not provided
      // by the user
      if ( StringUtils.isBlank( transName ) ) {
        throw new KettleFileException( BaseMessages.getString( PKG,
          "PurRepository.ERROR_0007_TRANSFORMATION_NAME_MISSING" ) );
      }
      try {
        absPath = getPath( transName, parentDir, RepositoryObjectType.TRANSFORMATION );
      } catch ( Exception e ) {
        // ignore and handle null value below
      }
      // if absPath is empty, we cannot load the transformation - the path provided by the user was likely defined as a
      // variable that is not available at runtime
      if ( StringUtils.isBlank( absPath )  ) {
        // Couldn't resolve path, throw an exception
        throw new KettleFileException( BaseMessages.getString( PKG,
          "PurRepository.ERROR_0008_TRANSFORMATION_PATH_INVALID", transName ) );
      }

      RepositoryFile file;
      NodeRepositoryFileData data = null;
      ObjectRevision revision = null;

View on GitHub (pinned to f3058517a1)