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
- Pass a non-null pattern: userFullNameLike("%john%")
- Only apply the criterion when present: if (fullName != null) query.userFullNameLike(fullName)
- Fall back to "%" if the query must always include a full-name filter
- 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
- Check global-search input for null/blank before building the query
- When concatenating first+last name, null-check both parts
- Return an unfiltered or empty query for blank search terms per your product rules
- Keep search-term handling in one utility to avoid divergent null handling
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
- Provided display name is null
- Provided last name is null
- AssigneeLike is null
- AssigneeLike is null
- deploymentCategoryLike is null
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)