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

  1. Create the info entry with POST before reading it
  2. Verify the key spelling
  3. 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)