{"record":{"id":"ca217d96607e2465","repo":"flowable/flowable-engine","slug":"provided-full-name-is-null","errorCode":null,"errorMessage":"Provided full name is null","messagePattern":"Provided full name is null","errorType":"validation","errorClass":"FlowableIllegalArgumentException","httpStatus":null,"severity":"error","filePath":"modules/flowable-idm-engine/src/main/java/org/flowable/idm/engine/impl/UserQueryImpl.java","lineNumber":150,"sourceCode":"            throw new FlowableIllegalArgumentException(\"Provided last name is null\");\n        }\n        this.lastNameLike = lastNameLike;\n        return this;\n    }\n\n    @Override\n    public UserQuery userLastNameLikeIgnoreCase(String lastNameLikeIgnoreCase) {\n        if (lastNameLikeIgnoreCase == null) {\n            throw new FlowableIllegalArgumentException(\"Provided last name is null\");\n        }\n        this.lastNameLikeIgnoreCase = lastNameLikeIgnoreCase.toLowerCase();\n        return this;\n    }\n\n    @Override\n    public UserQuery userFullNameLike(String fullNameLike) {\n        if (fullNameLike == null) {\n            throw new FlowableIllegalArgumentException(\"Provided full name is null\");\n        }\n        this.fullNameLike = fullNameLike;\n        return this;\n    }\n\n    @Override\n    public UserQuery userFullNameLikeIgnoreCase(String fullNameLikeIgnoreCase) {\n        if (fullNameLikeIgnoreCase == null) {\n            throw new FlowableIllegalArgumentException(\"Provided full name is null\");\n        }\n        this.fullNameLikeIgnoreCase = fullNameLikeIgnoreCase.toLowerCase();\n        return this;\n    }\n    \n    @Override\n    public UserQuery userDisplayName(String displayName) {\n        if (displayName == null) {\n            throw new FlowableIllegalArgumentException(\"Provided display name is null\");","sourceCodeStart":132,"sourceCodeEnd":168,"githubUrl":"https://github.com/flowable/flowable-engine/blob/d6d39ce1c69ff244f2d9dc6af756a9b95e865586/modules/flowable-idm-engine/src/main/java/org/flowable/idm/engine/impl/UserQueryImpl.java#L132-L168","documentation":"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.","triggerScenarios":"Calling createUserQuery().userFullNameLike(null), or chaining it with a nullable full-name search string from a global search box or REST query parameter.","commonSituations":"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.","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"],"exampleFix":"// before\nList<User> users = identityService.createUserQuery().userFullNameLike(searchTerm).list();\n\n// after\nUserQuery query = identityService.createUserQuery();\nif (searchTerm != null && !searchTerm.trim().isEmpty()) {\n    query.userFullNameLike(\"%\" + searchTerm.trim() + \"%\");\n}\nList<User> users = query.list();","handlingStrategy":"validation","validationCode":"if (fullNameLike == null) { throw new IllegalArgumentException(\"fullNameLike is required\"); }\nidentityService.createUserQuery().userFullNameLike(fullNameLike);","typeGuard":"boolean hasFilter(String v) { return v != null && !v.trim().isEmpty(); }","tryCatchPattern":"try {\n    query.userFullNameLike(term);\n} catch (FlowableIllegalArgumentException e) {\n    log.warn(\"Invalid full-name filter: {}\", e.getMessage());\n}","preventionTips":["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"],"tags":["flowable","idm-engine","user-query","null-argument","like-filter"],"backgroundTag":"null-argument","analyzedSha":"d6d39ce1c69ff244f2d9dc6af756a9b95e865586","analyzedAt":"2026-09-11T06:41:19.413Z","contentChangedAt":"2026-09-11T06:41:19.413Z","schemaVersion":2},"datasetVersion":"2026-09-18T11:17:12.947Z"}