{"record":{"id":"209e3b15d4afa405","repo":"appsmithorg/appsmith","slug":"pe-arg-5000","errorCode":"PE-ARG-5000","errorMessage":"Filtering Condition not configured properly","messagePattern":"Filtering Condition not configured properly","errorType":"error_code","errorClass":"AppsmithPluginException","httpStatus":500,"severity":"error","filePath":"app/server/appsmith-interfaces/src/main/java/com/appsmith/external/models/Condition.java","lineNumber":115,"sourceCode":"    }\n\n    /**\n     * To generate condition list based on selected condition\n     * Mandatory inputs validated are path and operator\n     * Value is optional and considered as a null input\n     * @param configurationList\n     * @return\n     */\n    public static List<Condition> generateFromConfiguration(List<Object> configurationList) {\n        List<Condition> conditionList = new ArrayList<>();\n\n        for (Object config : configurationList) {\n            Map<String, String> condition = (Map<String, String>) config;\n            if (condition.entrySet().isEmpty()) {\n                // Its an empty object set by the client for UX. Ignore the same\n                continue;\n            } else if (isColumnOrOperatorEmpty(condition)) {\n                throw new AppsmithPluginException(\n                        AppsmithPluginError.PLUGIN_EXECUTE_ARGUMENT_ERROR,\n                        \"Filtering Condition not configured properly\");\n            }\n            conditionList.add(new Condition(condition.get(\"path\"), condition.get(\"operator\"), condition.get(\"value\")));\n        }\n\n        return conditionList;\n    }\n\n    private static boolean isColumnOrOperatorEmpty(Map<String, String> condition) {\n        return isBlank(condition.get(PATH_KEY)) || isBlank(condition.get(OPERATOR_KEY));\n    }\n}\n","sourceCodeStart":97,"sourceCodeEnd":129,"githubUrl":"https://github.com/appsmithorg/appsmith/blob/8cd9021c24cdbea1c3c12c966073708e83db60c2/app/server/appsmith-interfaces/src/main/java/com/appsmith/external/models/Condition.java#L97-L129","documentation":"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.","triggerScenarios":"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.","commonSituations":"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.","solutions":["Ensure every non-empty filter condition includes both a non-blank 'path' (column) and a non-blank 'operator'.","Remove incomplete filter rows before running the query.","If building the payload programmatically, validate each entry with a helper before submission."],"exampleFix":"// before - condition missing operator\n{\"path\": \"status\", \"value\": \"open\"}\n\n// after\n{\"path\": \"status\", \"operator\": \"EQ\", \"value\": \"open\"}","handlingStrategy":"validation","validationCode":"for (Object config : configurationList) {\n    Map<String, String> condition = (Map<String, String>) config;\n    if (condition.entrySet().isEmpty()) continue;\n    if (isBlank(condition.get(\"path\")) || isBlank(condition.get(\"operator\"))) {\n        // skip or reject before calling generateFromConfiguration\n        throw new IllegalArgumentException(\"Each filter condition needs both 'path' and 'operator'\");\n    }\n}","typeGuard":"public static boolean isConditionComplete(Map<String, String> condition) {\n    return condition != null\n        && !condition.entrySet().isEmpty()\n        && !isBlank(condition.get(\"path\"))\n        && !isBlank(condition.get(\"operator\"));\n}","tryCatchPattern":"try {\n    List<Condition> conditions = Condition.generateFromConfiguration(configurationList);\n} catch (AppsmithPluginException e) {\n    if (e.getError() == AppsmithPluginError.PLUGIN_EXECUTE_ARGUMENT_ERROR) {\n        // strip incomplete rows and retry, or surface to the user\n        configurationList = configurationList.stream()\n            .filter(c -> isConditionComplete((Map<String, String>) c))\n            .collect(Collectors.toList());\n        conditions = Condition.generateFromConfiguration(configurationList);\n    } else {\n        throw e;\n    }\n}","preventionTips":["Filter out incomplete condition rows before submission.","Validate path and operator client-side in the UI.","Treat value as the only optional field in a filter condition."],"tags":["filter","condition","validation","uqi","argument-error"],"backgroundTag":null,"analyzedSha":"8cd9021c24cdbea1c3c12c966073708e83db60c2","analyzedAt":"2026-08-12T22:14:19.293Z","schemaVersion":2},"datasetVersion":"2026-08-12T23:17:12.415Z"}