flowable/flowable-engine · error · FlowableException
LDAP identity service doesn't support saving an user
Error message
LDAP identity service doesn't support saving an user
What it means
LDAPIdentityServiceImpl.saveUser() is an intentionally unsupported write operation. Because users are managed in the LDAP directory, persisting a User object through the Flowable identity API is impossible and always throws FlowableException. It typically follows a newUser() call in code written for the database identity service.
Solutions
- Update the user in the LDAP directory itself; Flowable will see the change on the next query.
- Remove saveUser() calls (and the preceding newUser()) from code paths active under LDAP.
- If profile updates are needed from the application, write them via an LDAP client (e.g. UnboundID/JNDI) outside Flowable, or use a custom IdentityService implementation.
- Branch on configuration: only invoke saveUser when the default DB identity service is in use.
Example fix
// before
User user = identityService.newUser("jdoe");
user.setEmail("jdoe@example.com");
identityService.saveUser(user);
// after
// update attributes in the directory; Flowable only reads
User user = identityService.createUserQuery().userId("jdoe").singleResult();
// user.getEmail() reflects what LDAP holds; no saveUser() possible Defensive patterns
Strategy: validation
Validate before calling
if (isLdapIdentityService(identityService)) {
throw new UnsupportedOperationException("User updates must be done in the LDAP directory");
}
identityService.saveUser(user); // only for DB-backed identity service Type guard
boolean isLdapIdentityService(IdentityService s) {
return s instanceof LDAPIdentityServiceImpl;
} Try / catch
try {
identityService.saveUser(user);
} catch (FlowableException e) {
if (e.getMessage() != null && e.getMessage().contains("doesn't support saving an user")) {
// route the update to your LDAP write path (JNDI/UnboundID) instead
}
} Prevention
- Do not pair newUser()+saveUser() in code shared with LDAP deployments.
- Centralize profile edits in a directory-administration component, not in Flowable identity calls.
- Add integration tests that exercise profile update under an LDAP identity service to catch this early.
When it happens
Trigger: Calling identityService.saveUser(user) with the LDAP identity service active; generic identity-sync code that does newUser()+saveUser(); admin tooling attempting to update user attributes.
Common situations: Onboarding/provisioning scripts ported from a DB-backed setup; shared service layer used with both DB and LDAP engines; attempt to update email/name of an LDAP user via Flowable.
Understand the failure class
Background: UnsupportedOperationException and "is not supported" errors: when a library deliberately refuses a call — this error's family across 30 libraries.
Related errors
- LDAP identity service doesn't support creating a new user
- LDAP identity service doesn't support creating a new group
- LDAP identity service doesn't support deleting a group
- LDAP identity service doesn't support deleting an user
- LDAP identity service doesn't support saving a group
AI-assisted analysis of flowable/flowable-engine@d6d39ce1c6 (2026-09-11).
Data as JSON: /api/errors/d751e6f74c8da119.
Report an issue: GitHub.
Appendix: source
Thrown at modules/flowable-ldap/src/main/java/org/flowable/ldap/LDAPIdentityServiceImpl.java:108
if (privilegeMapping.getUserId() != null) {
User user = new UserEntityImpl();
user.setId(privilegeMapping.getUserId());
user.setLastName(privilegeMapping.getUserId());
users.add(user);
}
}
return users;
}
@Override
public User newUser(String userId) {
throw new FlowableException("LDAP identity service doesn't support creating a new user");
}
@Override
public void saveUser(User user) {
throw new FlowableException("LDAP identity service doesn't support saving an user");
}
@Override
public NativeUserQuery createNativeUserQuery() {
throw new FlowableException("LDAP identity service doesn't support native querying");
}
@Override
public void deleteUser(String userId) {
throw new FlowableException("LDAP identity service doesn't support deleting an user");
}
@Override
public Group newGroup(String groupId) {
throw new FlowableException("LDAP identity service doesn't support creating a new group");
}
@OverrideView on GitHub (pinned to d6d39ce1c6)