pentaho/pentaho-kettle · error · KettleException
LDIFInput.Log.NoField
LDIFInput.Log.NoField
Error message
LDIFInput.Log.NoField
What it means
LDIFInput.openNextFile throws this when the step is configured with 'filename defined in a field' (fileInFields) but the 'filename field' setting is empty. The step needs a previous-row field to supply the LDIF file name; without it there is no way to open a file, so it aborts with 'No field specified'.
Solutions
- Open the LDIF Input step and select the actual filename field in the dynamic-filename dropdown.
- Ensure the upstream step actually outputs that field (check 'Preview' of the previous step).
- If files should be static instead, disable the 'filename from field' option and list files directly.
- Save and re-run the transformation.
Example fix
// before (step XML/meta) // dynamicFilenameField = "" (empty) with fileInFields=true // after // dynamicFilenameField = "filename" (a field emitted by the previous step)
Defensive patterns
Strategy: validation
Validate before calling
// In transformation setup, before run:
StepMeta ldifStep = transMeta.findStep("LDIF Input");
LDIFInputMeta meta = (LDIFInputMeta) ldifStep.getStepMetaInterface();
if (meta.acceptsFilenames() && (meta.getDynamicFilenameField() == null || meta.getDynamicFilenameField().isEmpty())) {
throw new IllegalStateException("LDIF Input: filename field not configured");
} Try / catch
try {
trans.execute(null);
} catch (KettleException e) {
if (e.getMessage().contains("NoField")) {
log.error("Configure the filename field in the LDIF Input step");
}
} Prevention
- Always pick a filename field when enabling 'filename from previous step'
- Preview upstream output to confirm the field exists
- Avoid hand-editing .ktr XML for step settings
When it happens
Trigger: In the LDIF Input step dialog, 'Accept filenames from previous step' / dynamic filename mode is enabled but meta.getDynamicFilenameField() returns empty/null when openNextFile runs (first row arrives).
Common situations: User enabled 'get filename from field' but left the field dropdown empty; transformation copy/paste lost the field setting; field name refers to a renamed upstream field so config appears set but is stale.
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
- LDIFInput.Exception.CouldnotFindField
- LoadFileInput.Log.NoField
- SFTPPut.Error.MoveToDestinationFolderIsEmpty
- SFTPPut.Error.RemoteFilenameFieldMissing
- SFTPPut.Error.RemoteFolderNameFieldMissing
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/c6540e0c8385dfef.
Report an issue: GitHub.
Appendix: source
Thrown at engine/src/main/java/org/pentaho/di/trans/steps/ldifinput/LDIFInput.java:318
if ( first ) {
first = false;
data.inputRowMeta = getInputRowMeta();
data.outputRowMeta = data.inputRowMeta.clone();
meta.getFields( getTransMeta().getBowl(), data.outputRowMeta, getStepname(), null, null, this, repository,
metaStore );
// Get total previous fields
data.totalpreviousfields = data.inputRowMeta.size();
// Create convert meta-data objects that will contain Date & Number formatters
data.convertRowMeta = data.outputRowMeta.cloneToType( ValueMetaInterface.TYPE_STRING );
// Check is filename field is provided
if ( Utils.isEmpty( meta.getDynamicFilenameField() ) ) {
logError( BaseMessages.getString( PKG, "LDIFInput.Log.NoField" ) );
throw new KettleException( BaseMessages.getString( PKG, "LDIFInput.Log.NoField" ) );
}
// cache the position of the field
if ( data.indexOfFilenameField < 0 ) {
data.indexOfFilenameField = getInputRowMeta().indexOfValue( meta.getDynamicFilenameField() );
if ( data.indexOfFilenameField < 0 ) {
// The field is unreachable !
logError( BaseMessages.getString( PKG, "LDIFInput.Log.ErrorFindingField" )
+ "[" + meta.getDynamicFilenameField() + "]" );
throw new KettleException( BaseMessages.getString(
PKG, "LDIFInput.Exception.CouldnotFindField", meta.getDynamicFilenameField() ) );
}
}
} // End if first
String filename = environmentSubstitute( getInputRowMeta().getString( data.readrow, data.indexOfFilenameField ) );
if ( isDetailed() ) {
logDetailed( BaseMessages.getString( PKG, "LDIFInput.Log.FilenameInStream", metaView on GitHub (pinned to f3058517a1)