Index: lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/UserManagementService.java =================================================================== diff -u -rab14bcf29a39e031cb4e844fcc49cfa9f7b216b7 -redcdba5baa8cda12d133c66ad0aebebfe44acb2b --- lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/UserManagementService.java (.../UserManagementService.java) (revision ab14bcf29a39e031cb4e844fcc49cfa9f7b216b7) +++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/UserManagementService.java (.../UserManagementService.java) (revision edcdba5baa8cda12d133c66ad0aebebfe44acb2b) @@ -640,14 +640,13 @@ UserOrganisation uo = getUserOrganisation(user.getUserId(), org.getOrganisationId()); if (uo == null) { + if (rolesList.isEmpty()) { + // user has no roles and shoud have none, so nothing to do + return; + } uo = new UserOrganisation(user, org); save(uo); log.debug("added " + user.getLogin() + " to " + org.getName()); - Set uos; - if ((uos = org.getUserOrganisations()) == null) { - uos = new HashSet(); - } - uos.add(uo); } // if user is to be added to a class, make user a member of parent @@ -696,8 +695,12 @@ } } } - uo.setUserOrganisationRoles(uors); - saveUser(user); + if (uors.isEmpty()) { + delete(uo); + } else { + uo.setUserOrganisationRoles(uors); + save(uo); + } // make sure group managers have monitor and learner in each subgroup checkGroupManager(user, org); }