flowable/flowable-engine · error · FlowableIllegalArgumentException
Query property ${property} is not supported
Error message
Query property ${property} is not supported What it means
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.
Source
Thrown at modules/flowable-cmmn-engine/src/main/java/org/flowable/cmmn/engine/impl/delete/BatchDeleteCaseConfig.java:303
populateQueryVariableValues(value, query, engineConfiguration);
break;
case "orQueryObjects":
populateOrQueryObjects(value, query, engineConfiguration);
break;
case "caseInstanceRootScopeId":
query.caseInstanceRootScopeId(value.stringValue());
break;
case "caseInstanceRootScopeIds":
query.caseInstanceRootScopeIds(asStringSet(value));
break;
case "caseInstanceParentScopeId":
query.caseInstanceParentScopeId(value.stringValue());
break;
case "caseInstanceParentScopeIds":
query.caseInstanceParentScopeIds(asStringSet(value));
break;
default:
throw new FlowableIllegalArgumentException("Query property " + property + " is not supported");
}
}
}
protected static void populateOrQueryObjects(JsonNode orQueryObjectsNode, HistoricCaseInstanceQuery query, CmmnEngineConfiguration engineConfiguration) {
if (orQueryObjectsNode.isArray()) {
for (JsonNode orQueryObjectNode : orQueryObjectsNode) {
HistoricCaseInstanceQuery orQuery = query.or();
populateQuery(orQueryObjectNode, orQuery, engineConfiguration);
query.endOr();
}
}
}
protected static void populateQueryVariableValues(JsonNode variableValuesNode, HistoricCaseInstanceQuery query,
CmmnEngineConfiguration engineConfiguration) {
if (variableValuesNode.isArray()) {
for (JsonNode variableValue : variableValuesNode) {View on GitHub (pinned to d6d39ce1c6)
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
Example fix
// before
"query": { "caseInstanceNameLikeIgnoreCase": "abc%" } // unsupported
// after
"query": { "caseInstanceNameLike": "abc%" } Defensive patterns
Strategy: validation
Validate before calling
Set<String> supported = Set.of("caseInstanceId","caseInstanceIds","caseDefinitionId","caseDefinitionKey","state","finished","startedBefore","caseInstanceParentScopeId","caseInstanceParentScopeIds");
queryNode.fieldNames().forEachRemaining(n -> { if (!supported.contains(n)) throw new IllegalArgumentException("unsupported: " + n); }); Try / catch
try { createBatch(cmd); } catch (FlowableIllegalArgumentException e) { if (e.getMessage().contains("not supported")) { log.error("Bad query property in batch JSON", e); } throw e; } Prevention
- 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
When it happens
Trigger: 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.
Common situations: Hand-edited batch configuration JSON; version mismatch where property names changed; typos like 'caseInstanceIdz' or unsupported fields copied from runtime query JSON.
Understand the failure class
Background: UnsupportedOperationException and "is not supported" errors: when a library deliberately refuses a call — this error's family across 30 libraries.
Related errors
- The variable value does not contain an operator value
- The variable value does not have a type
- Cannot aggregate overview variable: ${varInstance}
- Cannot aggregate variable: ${varInstance}
- Operator ${operator} is not supported for the variable value
AI-assisted analysis of flowable/flowable-engine@d6d39ce1c6 (2026-09-11).
Data as JSON: /api/errors/c65fe97497b8a0d2.
Report an issue: GitHub.