{"record":{"id":"c95f0c216536ce94","repo":"pentaho/pentaho-kettle","slug":"ldapoutputupdatedialog-fieldsmissing-dialogmessage","errorCode":"LDAPOutputUpdateDialog.FieldsMissing.DialogMessage","errorMessage":"LDAPOutputUpdateDialog.FieldsMissing.DialogMessage","messagePattern":"LDAPOutputUpdateDialog\\.FieldsMissing\\.DialogMessage","errorType":"validation","errorClass":"KettleException","httpStatus":null,"severity":"error","filePath":"plugins/ldap/impl/src/main/java/org/pentaho/di/trans/steps/ldapoutput/LDAPOutput.java","lineNumber":71,"sourceCode":"    // Grab a row and also wait for a row to be finished.\n    Object[] outputRowData = getRow();\n\n    if ( outputRowData == null ) {\n      setOutputDone();\n      return false;\n    }\n    if ( first ) {\n      first = false;\n\n      if ( meta.getOperationType() != LDAPOutputMeta.OPERATION_TYPE_DELETE\n        && meta.getOperationType() != LDAPOutputMeta.OPERATION_TYPE_RENAME ) {\n\n        // get total fields in the grid\n        data.nrfields = meta.getUpdateLookup().length;\n\n        // Check if field list is filled\n        if ( data.nrfields == 0 ) {\n          throw new KettleException( BaseMessages.getString(\n            PKG, \"LDAPOutputUpdateDialog.FieldsMissing.DialogMessage\" ) );\n        }\n\n        // Take care of variable\n        data.fieldsAttribute = new String[data.nrfields];\n        // Build the mapping of input position to field name\n        data.fieldStream = new int[data.nrfields];\n\n        // Fields to update\n        List<Integer> fieldsToUpdateInStreaml = new ArrayList<Integer>();\n        List<String> fieldsToUpdateAttributel = new ArrayList<String>();\n\n        for ( int i = 0; i < data.nrfields; i++ ) {\n\n          data.fieldStream[i] =\n            getInputRowMeta().indexOfValue( environmentSubstitute( meta.getUpdateStream()[i] ) );\n          if ( data.fieldStream[i] < 0 ) {\n            throw new KettleException( \"Field [\"","sourceCodeStart":53,"sourceCodeEnd":89,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/plugins/ldap/impl/src/main/java/org/pentaho/di/trans/steps/ldapoutput/LDAPOutput.java#L53-L89","documentation":"Thrown in LDAPOutput.processRows when the update lookup field list (the LDAP attributes to write) is empty — data.nrfields == 0. The LDAP Output step requires at least one field/attribute mapping to perform insert/update/upsert operations, so an empty mapping is a hard configuration error.","triggerScenarios":"processRow starts, meta.getUpdateLookup().length == 0: the 'Lookup fields' / update mapping grid in the LDAP Output dialog has no rows while the operation type requires field mappings.","commonSituations":"User configured LDAP Output (insert/update/delete mode) but left the fields table empty; a transformation was copied and the field grid was lost; dynamic fields feature (use field names from stream) unchecked with no static mappings defined.","solutions":["Open the LDAP Output step dialog and add at least one Field/Atribute mapping row in the update lookup table","Enable 'Dynamic fields' (update lookup from stream field) if mappings should come from an incoming field","Verify the operation type — some operations require field mappings; switch to an operation that fits an empty mapping if intentional","Re-run the transformation after saving the step with a non-empty field grid"],"exampleFix":"// before (empty mapping)\nUpdate lookup fields: (none)\n// after\nUpdate lookup fields: cn <- firstname ; sn <- lastname","handlingStrategy":"validation","validationCode":"// Before running, check the step's mapping is non-empty\nLDAPOutputMeta meta = (LDAPOutputMeta) stepMeta.getStepMetaInterface();\nif (meta.getUpdateLookup() == null || meta.getUpdateLookup().length == 0) {\n  throw new IllegalStateException(\"LDAP Output: no update lookup fields configured\");\n}","typeGuard":null,"tryCatchPattern":"try {\n  runTransformation();\n} catch (KettleException e) {\n  if (e.getMessage().contains(\"FieldsMissing\")) {\n    throw new IllegalStateException(\"LDAP Output mapping grid is empty; open the dialog and add field mappings\");\n  }\n  throw e;\n}","preventionTips":["Always fill at least one Field/Attribute mapping row after adding the step","Use 'Get Fields' to populate mappings automatically","Re-check settings after copying transformations between projects"],"tags":["ldap","configuration","mapping"],"backgroundTag":"empty-required-field","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"}