flowable/flowable-engine · error · FlowableIllegalArgumentException
Query property ${property} is not supported
Error message
Query property ${property} is not supported What it means
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.
Source
Thrown at modules/flowable-engine/src/main/java/org/flowable/engine/impl/delete/BatchDeleteProcessConfig.java:324
populateQueryVariableValues(value, query, engineConfiguration);
break;
case "orQueryObjects":
populateOrQueryObjects(value, query, engineConfiguration);
break;
case "processInstanceRootScopeId":
query.processInstanceRootScopeId(value.stringValue());
break;
case "processInstanceRootScopeIds":
query.processInstanceRootScopeIds(asStringSet(value));
break;
case "processInstanceParentScopeId":
query.processInstanceParentScopeId(value.stringValue());
break;
case "processInstanceParentScopeIds":
query.processInstanceParentScopeIds(asStringSet(value));
break;
default:
throw new FlowableIllegalArgumentException("Query property " + property + " is not supported");
}
}
}
protected static void populateOrQueryObjects(JsonNode orQueryObjectsNode, HistoricProcessInstanceQuery query,
ProcessEngineConfigurationImpl engineConfiguration) {
if (orQueryObjectsNode.isArray()) {
for (JsonNode orQueryObjectNode : orQueryObjectsNode) {
HistoricProcessInstanceQuery orQuery = query.or();
populateQuery(orQueryObjectNode, orQuery, engineConfiguration);
query.endOr();
}
}
}
protected static void populateQueryVariableValues(JsonNode variableValuesNode, HistoricProcessInstanceQuery query,
ProcessEngineConfigurationImpl engineConfiguration) {
if (variableValuesNode.isArray()) {View on GitHub (pinned to d6d39ce1c6)
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
Example fix
// before
{ "query": { "processInstanceBusinessKeyz": "ORDER-42" } }
// after
{ "query": { "processInstanceBusinessKey": "ORDER-42" } } Defensive patterns
Strategy: validation
Validate before calling
Set<String> allowed = Set.of("processInstanceIds","processInstanceBusinessKey","processInstanceBusinessKeyLike","startedBefore","startedAfter", /* see BatchDeleteProcessConfig */);
for (String key : keysOf(queryJson)) {
if (!allowed.contains(key)) throw new IllegalArgumentException("Unsupported query property: " + key);
} Try / catch
try {
config = BatchDeleteProcessConfig.create(partId, engineConfiguration);
} catch (FlowableIllegalArgumentException e) {
logger.error("Bad batch query config: " + e.getMessage());
} Prevention
- 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
When it happens
Trigger: 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).
Common situations: 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.
Related errors
- The variable value does not contain an operator value
- The variable value does not have a type
- id is null
- batchId is null
- type is null
AI-assisted analysis of flowable/flowable-engine@d6d39ce1c6 (2026-09-11).
Data as JSON: /api/errors/c107eec340bfda5c.
Report an issue: GitHub.