diff --git a/jams-server/src/main/java/net/jami/jams/server/core/workflows/AddUserToGroupFlow.java b/jams-server/src/main/java/net/jami/jams/server/core/workflows/AddUserToGroupFlow.java
index cd154ff95543f7b036fa46106146381b59e7c9cc..d772f7173b58e3942d40bf2dd474d4a37d6c3242 100644
--- a/jams-server/src/main/java/net/jami/jams/server/core/workflows/AddUserToGroupFlow.java
+++ b/jams-server/src/main/java/net/jami/jams/server/core/workflows/AddUserToGroupFlow.java
@@ -17,31 +17,29 @@ public class AddUserToGroupFlow {
 
     public static void addUserToGroup(String groupName, String username) {
         userAuthenticationModule.getAuthSources().forEach((k, v) -> {
-            List<UserProfile> profiles = v.searchUserProfiles(username, "LOGON_NAME");
-            if (!profiles.isEmpty()) {
-                UserProfile profile = profiles.get(0);
+            UserProfile profile = v.getUserProfile(username);
+            List<UserProfile> groupProfiles = v.searchUserProfiles(username, "LOGON_NAME");
+            if (!groupProfiles.isEmpty()) {
+                UserGroupMapping mapping = null;
                 StatementList statementList = new StatementList();
-                statementList.addStatement(new StatementElement("name", "=", username, ""));
-
-                if (profile != null) {
-                    if (profile.getGroupMemberships() == null)
-                        profile.setGroupMemberships(new ArrayList<>());
-                    profile.getGroupMemberships().add(groupName);
-                }
-
-                statementList = new StatementList();
                 statementList.addStatement(new StatementElement("username", "=", username, ""));
                 if (dataStore.getUserGroupMappingsDao().getObjects(statementList).isEmpty()) {
                     // if the mapping doesn't exist, create it and add the group directly.
-                    UserGroupMapping newMapping = new UserGroupMapping();
-                    newMapping.setUsername(username);
-                    newMapping.setGroups("");
-                    newMapping.addGroup(groupName);
-                    dataStore.getUserGroupMappingsDao().storeObject(newMapping);
+
+                    try {
+                        mapping = new UserGroupMapping();
+                    } catch (Exception e) {
+                        e.printStackTrace();
+                    }
+                    mapping.setUsername(username);
+                    mapping.setGroups("");
+                    mapping.addGroup(groupName);
+                    dataStore.getUserGroupMappingsDao().storeObject(mapping);
+
                 } else {
                     // otherwise, update the object.
 
-                    UserGroupMapping mapping = dataStore.getUserGroupMappingsDao().getObjects(statementList).get(0);
+                    mapping = dataStore.getUserGroupMappingsDao().getObjects(statementList).get(0);
                     mapping.addGroup(groupName);
                     String newGroups = mapping.getGroups();
 
@@ -53,6 +51,13 @@ public class AddUserToGroupFlow {
                     constraint.addStatement(st1);
                     dataStore.getUserGroupMappingsDao().updateObject(update, constraint);
                 }
+
+                if (profile != null) {
+                    if (profile.getGroupMemberships() == null)
+                        profile.setGroupMemberships(new ArrayList<>());
+                    profile.getGroupMemberships().add(groupName);
+                    dataStore.updateUserProfile(profile);
+                }
             }
         });
     }
diff --git a/jams-server/src/main/java/net/jami/jams/server/servlets/api/admin/group/GroupServlet.java b/jams-server/src/main/java/net/jami/jams/server/servlets/api/admin/group/GroupServlet.java
index d171bebcd5d83eb9c860b9267ab6a747f6b29edd..5fba2874f6286923fc87506a80b317eaee08251a 100644
--- a/jams-server/src/main/java/net/jami/jams/server/servlets/api/admin/group/GroupServlet.java
+++ b/jams-server/src/main/java/net/jami/jams/server/servlets/api/admin/group/GroupServlet.java
@@ -23,6 +23,7 @@ import java.util.List;
 import java.util.stream.Collectors;
 
 import static net.jami.jams.server.Server.dataStore;
+import static net.jami.jams.server.Server.userAuthenticationModule;
 
 @WebServlet("/api/admin/group")
 @Slf4j
@@ -93,13 +94,15 @@ public class GroupServlet extends HttpServlet {
         profiles.forEach(profile ->
                 targetGroup.getGroupMembers().add(profile.getUsername()));
 
+        String groupMembers = req.getParameter("groupMembers");
+
         // if the username sent isn't already part of the group members, then we add it
-        if (!targetGroup.getGroupMembers().contains(req.getParameter("groupMembers")))
+        if (!targetGroup.getGroupMembers().contains(groupMembers)) {
+            // otherwise remove the group from the user's memberships.
             AddUserToGroupFlow.addUserToGroup(name, req.getParameter("groupMembers"));
-        // otherwise remove the group from the user's memberships.
-        else {
+        } else {
             statementList = new StatementList();
-            st = new StatementElement("username", "=", req.getParameter("groupMembers"), "");
+            st = new StatementElement("username", "=", groupMembers, "");
             statementList.addStatement(st);
 
             UserProfile targetProfile = dataStore.getUserProfileDao().getObjects(statementList).get(0);