{"record":{"id":"e9e2b452a19835b4","repo":"appsmithorg/appsmith","slug":"pe-plg-5000-e9e2b4","errorCode":"PE-PLG-5000","errorMessage":"Appsmith server encountered an unexpected error: property list is null. Please reach out to our customer support to resolve this.","messagePattern":"Appsmith server encountered an unexpected error: property list is null\\. Please reach out to our customer support to resolve this\\.","errorType":"error_code","errorClass":"AppsmithPluginException","httpStatus":500,"severity":"error","filePath":"app/server/appsmith-interfaces/src/main/java/com/appsmith/external/helpers/PluginUtils.java","lineNumber":430,"sourceCode":"        return (T) properties.get(index).getValue();\n    }\n\n    public static <T> T getValueSafelyFromPropertyList(List<Property> properties, int index, Class<T> type) {\n        return getValueSafelyFromPropertyList(properties, index, type, null);\n    }\n\n    public static Object getValueSafelyFromPropertyList(List<Property> properties, int index) {\n        return getValueSafelyFromPropertyList(properties, index, Object.class);\n    }\n\n    public static JSONObject parseStringIntoJSONObject(String body) throws JSONException {\n        return new JSONObject(body);\n    }\n\n    public static void setValueSafelyInPropertyList(List<Property> properties, int index, Object value)\n            throws AppsmithPluginException {\n        if (properties == null) {\n            throw new AppsmithPluginException(\n                    AppsmithPluginError.PLUGIN_ERROR,\n                    \"Appsmith server encountered an unexpected error: property list is null. Please reach out to \"\n                            + \"our customer support to resolve this.\");\n        }\n\n        if (index < 0 || index > properties.size() - 1) {\n            throw new AppsmithPluginException(\n                    AppsmithPluginError.PLUGIN_ERROR,\n                    \"Appsmith server encountered an unexpected error: index value out or range: index: \" + index\n                            + \", property list size: \"\n                            + properties.size() + \". Please reach out to our customer \" + \"support to resolve this.\");\n        }\n\n        properties.get(index).setValue(value);\n    }\n\n    public static String replaceMappedColumnInStringValue(Map<String, String> mappedColumns, Object propertyValue) {\n        // In case the entire value finds a match in the mappedColumns, replace it","sourceCodeStart":412,"sourceCodeEnd":448,"githubUrl":"https://github.com/appsmithorg/appsmith/blob/8cd9021c24cdbea1c3c12c966073708e83db60c2/app/server/appsmith-interfaces/src/main/java/com/appsmith/external/helpers/PluginUtils.java#L412-L448","documentation":"Thrown by PluginUtils.setValueSafelyInPropertyList when the supplied properties list is null. The method is a guarded setter meant to write a value at a specific index of a List<Property>; it explicitly refuses to auto-create the list because callers are expected to hand it a non-null, sized list. This error is a server-side invariant violation, not a user input error.","triggerScenarios":"A plugin calls setValueSafelyInPropertyList(null, index, value) because the datasource/action configuration did not initialize the property list. Common when a plugin template assumes a property at a given index exists but the configuration form returned null for that section.","commonSituations":"Migrating a plugin where the property index layout changed but the caller was not updated; a plugin that conditionally omits a property block; deserialization of an old saved action whose properties array was stored as null.","solutions":["Find the caller of setValueSafelyInPropertyList and ensure the List<Property> it passes is initialized (new ArrayList<>) and sized before invocation.","If the list legitimately may be null, switch to getValueSafelyFromPropertyList semantics or initialize it lazily at the call site.","Re-save the action/datasource in the Appsmith UI so a fresh, fully-populated property list is persisted."],"exampleFix":"// before\nPluginUtils.setValueSafelyInPropertyList(properties, 2, value);\n\n// after\nif (properties == null) {\n    properties = new ArrayList<>(Collections.nCopies(3, new Property()));\n}\nPluginUtils.setValueSafelyInPropertyList(properties, 2, value);","handlingStrategy":"validation","validationCode":"List<Property> properties = configProperties;\nif (properties == null) {\n    properties = new ArrayList<>();\n}\nPluginUtils.setValueSafelyInPropertyList(properties, index, value);","typeGuard":null,"tryCatchPattern":"try {\n    PluginUtils.setValueSafelyInPropertyList(properties, index, value);\n} catch (AppsmithPluginException e) {\n    if (properties == null) {\n        properties = new ArrayList<>(Collections.nCopies(index + 1, new Property()));\n        PluginUtils.setValueSafelyInPropertyList(properties, index, value);\n    } else {\n        throw e;\n    }\n}","preventionTips":["Initialize property lists eagerly when building plugin configurations.","Prefer getValueSafelyFromPropertyList for reads; it returns a default instead of throwing.","Document the required list size next to each setValueSafelyInPropertyList call."],"tags":["property-list","null-guard","plugin-internal","invariant"],"backgroundTag":null,"analyzedSha":"8cd9021c24cdbea1c3c12c966073708e83db60c2","analyzedAt":"2026-08-12T22:14:19.293Z","schemaVersion":2},"datasetVersion":"2026-08-12T23:17:12.415Z"}