pentaho/pentaho-kettle · error · KettleException
JobFTPS.Error.CreationFolder
JobFTPS.Error.CreationFolder
Error message
JobFTPS.Error.CreationFolder
What it means
KettleException thrown by FTPSConnection.createDirectory when the underlying FTPS client's makeDirectory call fails for the given remote path. It wraps any exception (IO, SSL, server reply) raised while creating a folder on the FTPS server.
Solutions
- Verify the parent directory of the target path already exists on the FTPS server (create parents first)
- Check the FTPS user's write/create permissions on the server
- Test the same MKD command manually with an FTPS client (e.g. lftp, FileZilla) to see the raw server reply
- Ensure the connection is still alive (passive mode / firewall timeouts) before calling createDirectory
Example fix
// before
connection.createDirectory("/data/out/daily/");
// after
connection.createDirectory("/data/out"); // ensure parent exists
connection.createDirectory("/data/out/daily"); Defensive patterns
Strategy: try-catch
Validate before calling
// pre-check parent dir exists via file listing
List<FTPFile> files = connection.getFileList("/data/out");
if (files == null) throw new IllegalStateException("parent /data/out not listable"); Try / catch
try {
ftpsConnection.createDirectory(dir);
} catch (KettleException e) {
logError("Failed to create remote dir " + dir + ": " + e.getCause(), e);
throw e;
} Prevention
- Create parent directories explicitly before nested paths
- Grant the FTPS user directory-create permissions
- Keep the control connection alive (enable keepalive/passive mode)
When it happens
Trigger: calling createDirectory(directory) when the remote path is invalid, the parent folder does not exist, the server refuses MKD, or the control connection/SSL session has dropped
Common situations: job entry configured with a non-existent parent path for 'move to folder'; FTPS server denies directory creation permissions; passive-mode firewall issues causing connection drop before MKD
Understand the failure class
Background: mkdir permission denied (EACCES): failed to create directory errors explained — this error's family across 32 libraries.
Related errors
- JobEntryFTPS.JobStopped
- JobEntryFTPS.SuccesConditionBroken
- JobFTPSPUT.Log.UnableToLoadFromXml
- JobFTPSPUT.UnableToLoadFromRepo
- A connection of type PALO is expected
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/9360a9e5a6e39418.
Report an issue: GitHub.
Appendix: source
Thrown at plugins/ftps/impl/src/main/java/org/pentaho/di/job/entries/ftpsget/FTPSConnection.java:410
this.connection.changeDirectory( directory );
} catch ( Exception f ) {
throw new KettleException( BaseMessages.getString( PKG, "JobFTPS.Error.ChangingFolder", directory ), f );
}
}
/**
*
* this method is used to create a directory in remote host
*
* @param directory
* directory name on remote host
* @throws KettleException
*/
public void createDirectory( String directory ) throws KettleException {
try {
this.connection.makeDirectory( directory );
} catch ( Exception f ) {
throw new KettleException( BaseMessages.getString( PKG, "JobFTPS.Error.CreationFolder", directory ), f );
}
}
public List<FTPFile> getFileList( String folder ) throws KettleException {
try {
if ( connection != null ) {
List<FTPFile> response = connection.getDirectoryListing( folder );
return response;
} else {
return null;
}
} catch ( Exception e ) {
throw new KettleException( e );
}
}
/**
* this method is used to download a file from a remote hostView on GitHub (pinned to f3058517a1)