flowable/flowable-engine · error · FlowableIllegalArgumentException

parentDeploymentIdLike is null

Error message

parentDeploymentIdLike is null

What it means

DmnDeploymentQueryImpl.parentDeploymentIdLike(String) throws FlowableIllegalArgumentException when the like-pattern argument is null. Like-criteria in Flowable queries must be a non-null string (e.g. "%abc%"), since it is substituted directly into a SQL LIKE clause; a null value is rejected up front.

Source

Thrown at modules/flowable-dmn-engine/src/main/java/org/flowable/dmn/engine/impl/DmnDeploymentQueryImpl.java:139

    @Override
    public DmnDeploymentQueryImpl deploymentWithoutTenantId() {
        this.withoutTenantId = true;
        return this;
    }

    @Override
    public DmnDeploymentQueryImpl parentDeploymentId(String parentDeploymentId) {
        if (parentDeploymentId == null) {
            throw new FlowableIllegalArgumentException("parentDeploymentId is null");
        }
        this.parentDeploymentId = parentDeploymentId;
        return this;
    }

    @Override
    public DmnDeploymentQueryImpl parentDeploymentIdLike(String parentDeploymentIdLike) {
        if (parentDeploymentIdLike == null) {
            throw new FlowableIllegalArgumentException("parentDeploymentIdLike is null");
        }
        this.parentDeploymentIdLike = parentDeploymentIdLike;
        return this;
    }

    @Override
    public DmnDeploymentQueryImpl decisionKey(String key) {
        if (key == null) {
            throw new FlowableIllegalArgumentException("key is null");
        }
        this.decisionKey = key;
        return this;
    }

    @Override
    public DmnDeploymentQueryImpl decisionKeyLike(String keyLike) {
        if (keyLike == null) {
            throw new FlowableIllegalArgumentException("keyLike is null");

View on GitHub (pinned to d6d39ce1c6)

Solutions

  1. Pass a valid LIKE pattern string (use % wildcards as needed) instead of null
  2. Omit the parentDeploymentIdLike(...) call when the filter is absent
  3. If the caller provides a raw value, wrap it into a pattern explicitly, e.g. "%" + value + "%", and validate non-null first

Example fix

// before
String filter = userInput.get("parentDeploymentId");
query.parentDeploymentIdLike(filter);
// after
String filter = userInput.get("parentDeploymentId");
if (filter != null && !filter.isEmpty()) {
    query.parentDeploymentIdLike("%" + filter + "%");
}
Defensive patterns

Strategy: validation

Validate before calling

if (parentDeploymentIdLike == null || parentDeploymentIdLike.isEmpty()) { throw new IllegalArgumentException("parentDeploymentIdLike pattern required"); }

Type guard

boolean isLikePattern(String p) { return p != null && !p.isEmpty(); }

Try / catch

try { query.parentDeploymentIdLike(pattern); } catch (FlowableIllegalArgumentException e) { log.warn("Ignoring like filter: {}", e.getMessage()); }

Prevention

When it happens

Trigger: Calling dmnRepositoryService.createDeploymentQuery().parentDeploymentIdLike(null), usually when the pattern is built by string concatenation from user input or an optional filter that was never set.

Common situations: Search/filter UIs where the user left the parent-deployment filter empty; building a LIKE pattern from a variable that failed to initialize; migrating code from another engine API that tolerated null like-values.

Related errors


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