{"record":{"id":"c107eec340bfda5c","repo":"flowable/flowable-engine","slug":"query-property-property-is-not-supported-c107ee","errorCode":null,"errorMessage":"Query property ${property} is not supported","messagePattern":"Query property (.+?) is not supported","errorType":"exception","errorClass":"FlowableIllegalArgumentException","httpStatus":null,"severity":"error","filePath":"modules/flowable-engine/src/main/java/org/flowable/engine/impl/delete/BatchDeleteProcessConfig.java","lineNumber":324,"sourceCode":"                    populateQueryVariableValues(value, query, engineConfiguration);\n                    break;\n                case \"orQueryObjects\":\n                    populateOrQueryObjects(value, query, engineConfiguration);\n                    break;\n                case \"processInstanceRootScopeId\":\n                    query.processInstanceRootScopeId(value.stringValue());\n                    break;\n                case \"processInstanceRootScopeIds\":\n                    query.processInstanceRootScopeIds(asStringSet(value));\n                    break;\n                case \"processInstanceParentScopeId\":\n                    query.processInstanceParentScopeId(value.stringValue());\n                    break;\n                case \"processInstanceParentScopeIds\":\n                    query.processInstanceParentScopeIds(asStringSet(value));\n                    break;\n                default:\n                    throw new FlowableIllegalArgumentException(\"Query property \" + property + \" is not supported\");\n            }\n        }\n    }\n\n    protected static void populateOrQueryObjects(JsonNode orQueryObjectsNode, HistoricProcessInstanceQuery query,\n            ProcessEngineConfigurationImpl engineConfiguration) {\n        if (orQueryObjectsNode.isArray()) {\n            for (JsonNode orQueryObjectNode : orQueryObjectsNode) {\n                HistoricProcessInstanceQuery orQuery = query.or();\n                populateQuery(orQueryObjectNode, orQuery, engineConfiguration);\n                query.endOr();\n            }\n        }\n    }\n\n    protected static void populateQueryVariableValues(JsonNode variableValuesNode, HistoricProcessInstanceQuery query,\n            ProcessEngineConfigurationImpl engineConfiguration) {\n        if (variableValuesNode.isArray()) {","sourceCodeStart":306,"sourceCodeEnd":342,"githubUrl":"https://github.com/flowable/flowable-engine/blob/d6d39ce1c69ff244f2d9dc6af756a9b95e865586/modules/flowable-engine/src/main/java/org/flowable/engine/impl/delete/BatchDeleteProcessConfig.java#L306-L342","documentation":"populateQuery deserializes a serialized HistoricProcessInstanceQuery (JSON) for batch process-instance deletion. Unknown property names fall into the default branch and throw this FlowableIllegalArgumentException, because an unsupported property would silently produce a broader (dangerous) delete query.","triggerScenarios":"A batch configuration JSON contains a query property key that HistoricProcessInstanceQuery does not expose (typo like 'processInstanceIdz', or property added in a newer Flowable version but batch executed on an older engine).","commonSituations":"Hand-written batch configuration; configuration serialized by a newer Flowable version then consumed by an older one; typos in custom tooling that builds delete batches.","solutions":["Correct the property name in the batch configuration JSON to one supported by HistoricProcessInstanceQuery","Verify Flowable version compatibility between the component that serialized the query and the engine executing the batch","Upgrade the engine if the property exists in a newer release","Validate the batch configuration JSON against the supported property list before creating the batch"],"exampleFix":"// before\n{ \"query\": { \"processInstanceBusinessKeyz\": \"ORDER-42\" } }\n// after\n{ \"query\": { \"processInstanceBusinessKey\": \"ORDER-42\" } }","handlingStrategy":"validation","validationCode":"Set<String> allowed = Set.of(\"processInstanceIds\",\"processInstanceBusinessKey\",\"processInstanceBusinessKeyLike\",\"startedBefore\",\"startedAfter\", /* see BatchDeleteProcessConfig */);\nfor (String key : keysOf(queryJson)) {\n    if (!allowed.contains(key)) throw new IllegalArgumentException(\"Unsupported query property: \" + key);\n}","typeGuard":null,"tryCatchPattern":"try {\n    config = BatchDeleteProcessConfig.create(partId, engineConfiguration);\n} catch (FlowableIllegalArgumentException e) {\n    logger.error(\"Bad batch query config: \" + e.getMessage());\n}","preventionTips":["Generate batch configuration JSON programmatically from a real query object","Pin the same Flowable version for producers and consumers of batch configs","Schema-validate batch JSON before creating batches"],"tags":["batch","query","configuration"],"backgroundTag":"unsupported-config-value","analyzedSha":"d6d39ce1c69ff244f2d9dc6af756a9b95e865586","analyzedAt":"2026-09-11T06:41:19.413Z","contentChangedAt":"2026-09-11T06:41:19.413Z","schemaVersion":2},"datasetVersion":"2026-09-14T11:17:12.474Z"}