flowable/flowable-engine · error · FlowableObjectNotFoundException
User info with key '' does not exists for user ''.
Error message
User info with key '' does not exists for user ''.
What it means
Lookup failure in UserInfoResource.getUserInfo: the user exists, but no info value is stored under the requested key for that user, so there is nothing to return (usually a 404).
Solutions
- Create the info entry with POST before reading it
- Verify the key spelling
- List existing keys via GET /identity/users/{userId}/info
Defensive patterns
Strategy: try-catch
When it happens
Trigger: Thrown at modules/flowable-rest/src/main/java/org/flowable/rest/service/api/identity/UserInfoResource.java:62 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of flowable/flowable-engine@d6d39ce1c6 (2026-09-11).
Data as JSON: /api/errors/b689e7aab10d1cf6.
Report an issue: GitHub.
Appendix: source
Thrown at modules/flowable-rest/src/main/java/org/flowable/rest/service/api/identity/UserInfoResource.java:62
@Autowired
protected RestResponseFactory restResponseFactory;
@Autowired
protected IdentityService identityService;
@ApiOperation(value = "Get a user’s info", tags = { "Users" })
@ApiResponses(value = {
@ApiResponse(code = 200, message = "Indicates the user was found and the user has info for the given key."),
@ApiResponse(code = 404, message = "Indicates the requested user was not found or the user does ot have info for the given key. Status description contains additional information about the error.")
})
@GetMapping(value = "/identity/users/{userId}/info/{key}", produces = "application/json")
public UserInfoResponse getUserInfo(@ApiParam(name = "userId") @PathVariable("userId") String userId, @ApiParam(name = "key") @PathVariable("key") String key) {
User user = getUserFromRequest(userId);
String existingValue = identityService.getUserInfo(user.getId(), key);
if (existingValue == null) {
throw new FlowableObjectNotFoundException("User info with key '" + key + "' does not exists for user '" + user.getId() + "'.", null);
}
return restResponseFactory.createUserInfoResponse(key, existingValue, user.getId());
}
@ApiOperation(value = "Update a user’s info", tags = { "Users" }, nickname = "updateUserInfo")
@ApiResponses(value = {
@ApiResponse(code = 200, message = "Indicates the user was found and the info has been updated."),
@ApiResponse(code = 400, message = "Indicates the value was missing from the request body."),
@ApiResponse(code = 404, message = "Indicates the requested user was not found or the user does not have info for the given key. Status description contains additional information about the error.")
})
@PutMapping(value = "/identity/users/{userId}/info/{key}", produces = "application/json")
public UserInfoResponse setUserInfo(@ApiParam(name = "userId") @PathVariable("userId") String userId, @ApiParam(name = "key") @PathVariable("key") String key, @RequestBody UserInfoRequest userRequest) {
User user = getUserFromRequest(userId);
String validKey = getValidKeyFromRequest(user, key);
if (userRequest.getValue() == null) {View on GitHub (pinned to d6d39ce1c6)