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

  1. Correct the property name in the batch configuration JSON to one supported by HistoricProcessInstanceQuery
  2. Verify Flowable version compatibility between the component that serialized the query and the engine executing the batch
  3. Upgrade the engine if the property exists in a newer release
  4. 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

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


AI-assisted analysis of flowable/flowable-engine@d6d39ce1c6 (2026-09-11). Data as JSON: /api/errors/c107eec340bfda5c. Report an issue: GitHub.