{"record":{"id":"c65fe97497b8a0d2","repo":"flowable/flowable-engine","slug":"query-property-property-is-not-supported","errorCode":null,"errorMessage":"Query property ${property} is not supported","messagePattern":"Query property (.+?) is not supported","errorType":"validation","errorClass":"FlowableIllegalArgumentException","httpStatus":null,"severity":"error","filePath":"modules/flowable-cmmn-engine/src/main/java/org/flowable/cmmn/engine/impl/delete/BatchDeleteCaseConfig.java","lineNumber":303,"sourceCode":"                    populateQueryVariableValues(value, query, engineConfiguration);\n                    break;\n                case \"orQueryObjects\":\n                    populateOrQueryObjects(value, query, engineConfiguration);\n                    break;\n                case \"caseInstanceRootScopeId\":\n                    query.caseInstanceRootScopeId(value.stringValue());\n                    break;\n                case \"caseInstanceRootScopeIds\":\n                    query.caseInstanceRootScopeIds(asStringSet(value));\n                    break;\n                case \"caseInstanceParentScopeId\":\n                    query.caseInstanceParentScopeId(value.stringValue());\n                    break;\n                case \"caseInstanceParentScopeIds\":\n                    query.caseInstanceParentScopeIds(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, HistoricCaseInstanceQuery query, CmmnEngineConfiguration engineConfiguration) {\n        if (orQueryObjectsNode.isArray()) {\n            for (JsonNode orQueryObjectNode : orQueryObjectsNode) {\n                HistoricCaseInstanceQuery orQuery = query.or();\n                populateQuery(orQueryObjectNode, orQuery, engineConfiguration);\n                query.endOr();\n            }\n        }\n    }\n\n    protected static void populateQueryVariableValues(JsonNode variableValuesNode, HistoricCaseInstanceQuery query,\n            CmmnEngineConfiguration engineConfiguration) {\n        if (variableValuesNode.isArray()) {\n            for (JsonNode variableValue : variableValuesNode) {","sourceCodeStart":285,"sourceCodeEnd":321,"githubUrl":"https://github.com/flowable/flowable-engine/blob/d6d39ce1c69ff244f2d9dc6af756a9b95e865586/modules/flowable-cmmn-engine/src/main/java/org/flowable/cmmn/engine/impl/delete/BatchDeleteCaseConfig.java#L285-L321","documentation":"Thrown by populateQuery() while rebuilding a HistoricCaseInstanceQuery from a batch configuration JSON node. The JSON contains a query property name that has no mapping to a HistoricCaseInstanceQuery setter, so the deserializer rejects it. This protects against silently ignoring unknown query fields.","triggerScenarios":"A batch configuration JSON's query object contains a property in its switch's default branch, e.g. an unsupported/renamed HistoricCaseInstanceQuery property, or JSON written by a newer/older Flowable version with different property names.","commonSituations":"Hand-edited batch configuration JSON; version mismatch where property names changed; typos like 'caseInstanceIdz' or unsupported fields copied from runtime query JSON.","solutions":["Remove or correct the unsupported property in the batch configuration JSON query object","Use only properties supported by populateQuery (e.g. caseInstanceId, caseInstanceIds, caseDefinitionId, state, finished, caseInstanceParentScopeId(s), etc.)","Regenerate the batch configuration through the public API instead of hand-crafting the JSON","Check the Flowable version: align JSON property names with the engine version's supported query properties"],"exampleFix":"// before\n\"query\": { \"caseInstanceNameLikeIgnoreCase\": \"abc%\" } // unsupported\n// after\n\"query\": { \"caseInstanceNameLike\": \"abc%\" }","handlingStrategy":"validation","validationCode":"Set<String> supported = Set.of(\"caseInstanceId\",\"caseInstanceIds\",\"caseDefinitionId\",\"caseDefinitionKey\",\"state\",\"finished\",\"startedBefore\",\"caseInstanceParentScopeId\",\"caseInstanceParentScopeIds\");\nqueryNode.fieldNames().forEachRemaining(n -> { if (!supported.contains(n)) throw new IllegalArgumentException(\"unsupported: \" + n); });","typeGuard":null,"tryCatchPattern":"try { createBatch(cmd); } catch (FlowableIllegalArgumentException e) { if (e.getMessage().contains(\"not supported\")) { log.error(\"Bad query property in batch JSON\", e); } throw e; }","preventionTips":["Build batch configuration JSON only via the public query API, never hand-write it","Pin Flowable version and regenerate batch JSON on upgrades","Diff JSON property names against the populateQuery switch when migrating"],"tags":["flowable","cmmn","query","json","unsupported-property"],"backgroundTag":"unsupported-operation","analyzedSha":"d6d39ce1c69ff244f2d9dc6af756a9b95e865586","analyzedAt":"2026-09-11T06:41:19.413Z","contentChangedAt":"2026-09-11T06:41:19.413Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}