flowable/flowable-engine · error · FlowableIllegalArgumentException

deploymentTenantIdLike is null

Error message

deploymentTenantIdLike is null

What it means

EventDeploymentQueryImpl.deploymentTenantIdLike() throws FlowableIllegalArgumentException when the tenantIdLike pattern is null. Like-queries on the tenant column need a non-null pattern for the SQL LIKE clause. Empty strings are accepted; only null is rejected.

Solutions

  1. Only call deploymentTenantIdLike when the pattern is non-null.
  2. Provide a default pattern (e.g. tenantPrefix + "%") when the filter should still be applied.
  3. Fix the configuration/placeholder resolution that produced null.

Example fix

// before
query.deploymentTenantIdLike(request.getTenantLike());
// after
String tenantLike = request.getTenantLike();
if (tenantLike != null) {
    query.deploymentTenantIdLike(tenantLike);
}
Defensive patterns

Strategy: validation

Validate before calling

if (tenantIdLike != null) { query.deploymentTenantIdLike(tenantIdLike); }

Type guard

boolean hasTenantPattern(String s) { return s != null; }

Try / catch

try {
    query.deploymentTenantIdLike(tenantLike);
} catch (FlowableIllegalArgumentException e) {
    log.warn("Null tenant like-pattern ignored", e);
}

Prevention

When it happens

Trigger: Calling eventDeploymentQuery().deploymentTenantIdLike(null), usually when the pattern comes from an optional search input or unresolved configuration value.

Common situations: Search UIs that pass the raw (absent) tenant filter; integration code where a Spring property like ${tenant.prefix} did not resolve and remained null.

Related errors


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

Appendix: source

Thrown at modules/flowable-event-registry/src/main/java/org/flowable/eventregistry/impl/EventDeploymentQueryImpl.java:141

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

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

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

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

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

View on GitHub (pinned to d6d39ce1c6)