Index: lams_common/src/java/org/lamsfoundation/lams/lesson/service/LessonService.java =================================================================== diff -u -r6be225f8d21a7f927da78ca099fc8c3915d7668a -raf442b23ea96f0fb704ea3afddb41f1c778d4a01 --- lams_common/src/java/org/lamsfoundation/lams/lesson/service/LessonService.java (.../LessonService.java) (revision 6be225f8d21a7f927da78ca099fc8c3915d7668a) +++ lams_common/src/java/org/lamsfoundation/lams/lesson/service/LessonService.java (.../LessonService.java) (revision af442b23ea96f0fb704ea3afddb41f1c778d4a01) @@ -289,7 +289,6 @@ if (grouper != null) { try { grouper.removeAllLearnersFromGrouping(grouping); - grouping.getGroups().clear(); } catch (GroupingException e) { throw new LessonServiceException(e); } @@ -358,7 +357,9 @@ // nuke all existing groups and create new ones removeAllLearnersFromGrouping(grouping); + grouping.getGroups().clear(); groupingDAO.flush(); + for (OrganisationGroup orgGroup : orgGrouping.getGroups()) { Group group = Group.createLearnerGroup(grouping, orgGroup.getName(), new HashSet<>(orgGroup.getUsers())); Index: lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/GroupingUploadAJAXController.java =================================================================== diff -u -re226c52b735351f433827ce6b4c040714f3e6046 -raf442b23ea96f0fb704ea3afddb41f1c778d4a01 --- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/GroupingUploadAJAXController.java (.../GroupingUploadAJAXController.java) (revision e226c52b735351f433827ce6b4c040714f3e6046) +++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/GroupingUploadAJAXController.java (.../GroupingUploadAJAXController.java) (revision af442b23ea96f0fb704ea3afddb41f1c778d4a01) @@ -425,6 +425,17 @@ // remove all the existing users from their groups lessonService.removeAllLearnersFromGrouping(grouping); + if (!grouping.isUsedForBranching()) { + Iterator groupIterator = grouping.getGroups().iterator(); + while (groupIterator.hasNext()) { + Group group = groupIterator.next(); + // remove empty groups + if (group.getUsers().isEmpty() && group.getBranchActivities().isEmpty()) { + groupIterator.remove(); + } + } + userManagementService.save(grouping); + } // Now put in the new users groupings for (Map.Entry> groupEntry : groups.entrySet()) {