flowable/flowable-engine · error · FlowableIllegalArgumentException

Provided full name is null

Error message

Provided full name is null

What it means

FlowableIllegalArgumentException thrown by UserQueryImpl.userFullNameLike when fullNameLike is null. The method requires a non-null LIKE pattern that is matched against the user's full (first + last) name. The engine validates at builder time so callers get a precise error naming the offending criterion instead of a query failure.

Solutions

  1. Pass a non-null pattern: userFullNameLike("%john%")
  2. Only apply the criterion when present: if (fullName != null) query.userFullNameLike(fullName)
  3. Fall back to "%" if the query must always include a full-name filter
  4. Handle empty search input at the controller/filter layer before query construction

Example fix

// before
List<User> users = identityService.createUserQuery().userFullNameLike(searchTerm).list();

// after
UserQuery query = identityService.createUserQuery();
if (searchTerm != null && !searchTerm.trim().isEmpty()) {
    query.userFullNameLike("%" + searchTerm.trim() + "%");
}
List<User> users = query.list();
Defensive patterns

Strategy: validation

Validate before calling

if (fullNameLike == null) { throw new IllegalArgumentException("fullNameLike is required"); }
identityService.createUserQuery().userFullNameLike(fullNameLike);

Type guard

boolean hasFilter(String v) { return v != null && !v.trim().isEmpty(); }

Try / catch

try {
    query.userFullNameLike(term);
} catch (FlowableIllegalArgumentException e) {
    log.warn("Invalid full-name filter: {}", e.getMessage());
}

Prevention

When it happens

Trigger: Calling createUserQuery().userFullNameLike(null), or chaining it with a nullable full-name search string from a global search box or REST query parameter.

Common situations: Global user search implementations where the search term is empty; integration code that concatenates first+last name where one part is null; admin search pages submitting blank values mapped to null.

Related errors


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

Appendix: source

Thrown at modules/flowable-idm-engine/src/main/java/org/flowable/idm/engine/impl/UserQueryImpl.java:150

            throw new FlowableIllegalArgumentException("Provided last name is null");
        }
        this.lastNameLike = lastNameLike;
        return this;
    }

    @Override
    public UserQuery userLastNameLikeIgnoreCase(String lastNameLikeIgnoreCase) {
        if (lastNameLikeIgnoreCase == null) {
            throw new FlowableIllegalArgumentException("Provided last name is null");
        }
        this.lastNameLikeIgnoreCase = lastNameLikeIgnoreCase.toLowerCase();
        return this;
    }

    @Override
    public UserQuery userFullNameLike(String fullNameLike) {
        if (fullNameLike == null) {
            throw new FlowableIllegalArgumentException("Provided full name is null");
        }
        this.fullNameLike = fullNameLike;
        return this;
    }

    @Override
    public UserQuery userFullNameLikeIgnoreCase(String fullNameLikeIgnoreCase) {
        if (fullNameLikeIgnoreCase == null) {
            throw new FlowableIllegalArgumentException("Provided full name is null");
        }
        this.fullNameLikeIgnoreCase = fullNameLikeIgnoreCase.toLowerCase();
        return this;
    }
    
    @Override
    public UserQuery userDisplayName(String displayName) {
        if (displayName == null) {
            throw new FlowableIllegalArgumentException("Provided display name is null");

View on GitHub (pinned to d6d39ce1c6)