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

  1. Remove or correct the unsupported property in the batch configuration JSON query object
  2. Use only properties supported by populateQuery (e.g. caseInstanceId, caseInstanceIds, caseDefinitionId, state, finished, caseInstanceParentScopeId(s), etc.)
  3. Regenerate the batch configuration through the public API instead of hand-crafting the JSON
  4. 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

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


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