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
- 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
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
- Validate name fields in job entry dialogs as required
- Resolve all variables before calling load APIs
- Log resolved names during development
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
- A deadlock was detected between steps
- LDIFInput.Exception.UnableToReadFile
- TransMeta.Exception.MissingXMLFilePath
- AbsSecurityManager.ERROR_0003_UNABLE_TO_ACCESS_ROLE_BINDING_WEBSVC
- AbsSecurityManager.ERROR_0004_UNABLE_TO_APPLY_LOGICAL_ROLES_TO_RUNTIME_ROLE
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)