appsmithorg/appsmith · error · AppsmithPluginException

PE-ARG-5000

PE-ARG-5000

Error message

Filtering Condition not configured properly

What it means

Thrown by Condition.generateFromConfiguration while building a filter from client-supplied condition maps. After skipping intentionally empty condition objects (set by the client for UX), each remaining condition is checked by isColumnOrOperatorEmpty; if the PATH_KEY or OPERATOR_KEY is blank, PLUGIN_EXECUTE_ARGUMENT_ERROR with 'Filtering Condition not configured properly' is raised. Value is optional and not checked.

Source

Thrown at app/server/appsmith-interfaces/src/main/java/com/appsmith/external/models/Condition.java:115

    }

    /**
     * To generate condition list based on selected condition
     * Mandatory inputs validated are path and operator
     * Value is optional and considered as a null input
     * @param configurationList
     * @return
     */
    public static List<Condition> generateFromConfiguration(List<Object> configurationList) {
        List<Condition> conditionList = new ArrayList<>();

        for (Object config : configurationList) {
            Map<String, String> condition = (Map<String, String>) config;
            if (condition.entrySet().isEmpty()) {
                // Its an empty object set by the client for UX. Ignore the same
                continue;
            } else if (isColumnOrOperatorEmpty(condition)) {
                throw new AppsmithPluginException(
                        AppsmithPluginError.PLUGIN_EXECUTE_ARGUMENT_ERROR,
                        "Filtering Condition not configured properly");
            }
            conditionList.add(new Condition(condition.get("path"), condition.get("operator"), condition.get("value")));
        }

        return conditionList;
    }

    private static boolean isColumnOrOperatorEmpty(Map<String, String> condition) {
        return isBlank(condition.get(PATH_KEY)) || isBlank(condition.get(OPERATOR_KEY));
    }
}

View on GitHub (pinned to 8cd9021c24)

Solutions

  1. Ensure every non-empty filter condition includes both a non-blank 'path' (column) and a non-blank 'operator'.
  2. Remove incomplete filter rows before running the query.
  3. If building the payload programmatically, validate each entry with a helper before submission.

Example fix

// before - condition missing operator
{"path": "status", "value": "open"}

// after
{"path": "status", "operator": "EQ", "value": "open"}
Defensive patterns

Strategy: validation

Validate before calling

for (Object config : configurationList) {
    Map<String, String> condition = (Map<String, String>) config;
    if (condition.entrySet().isEmpty()) continue;
    if (isBlank(condition.get("path")) || isBlank(condition.get("operator"))) {
        // skip or reject before calling generateFromConfiguration
        throw new IllegalArgumentException("Each filter condition needs both 'path' and 'operator'");
    }
}

Type guard

public static boolean isConditionComplete(Map<String, String> condition) {
    return condition != null
        && !condition.entrySet().isEmpty()
        && !isBlank(condition.get("path"))
        && !isBlank(condition.get("operator"));
}

Try / catch

try {
    List<Condition> conditions = Condition.generateFromConfiguration(configurationList);
} catch (AppsmithPluginException e) {
    if (e.getError() == AppsmithPluginError.PLUGIN_EXECUTE_ARGUMENT_ERROR) {
        // strip incomplete rows and retry, or surface to the user
        configurationList = configurationList.stream()
            .filter(c -> isConditionComplete((Map<String, String>) c))
            .collect(Collectors.toList());
        conditions = Condition.generateFromConfiguration(configurationList);
    } else {
        throw e;
    }
}

Prevention

When it happens

Trigger: A UQI filter action where one of the condition rows has a selected value/operator but no column (path), or a column but no operator, or both empty in a way that is not the canonical empty-object UX marker.

Common situations: User adds a filter row in the UI and fills the value but forgets the column or operator; a binding clears the operator; programmatic construction of a filter payload that omits required keys.

Related errors


AI-assisted analysis of appsmithorg/appsmith@8cd9021c24 (2026-08-12). Data as JSON: /api/errors/209e3b15d4afa405. Report an issue: GitHub.