diff --git a/datastore/src/main/java/net/jami/datastore/main/DataStore.java b/datastore/src/main/java/net/jami/datastore/main/DataStore.java
index b1f088f3bb57f751e18594642120bc21888481dd..15cb8c23b8b6e5ec908a80eb113790ac45b51a2f 100644
--- a/datastore/src/main/java/net/jami/datastore/main/DataStore.java
+++ b/datastore/src/main/java/net/jami/datastore/main/DataStore.java
@@ -40,6 +40,7 @@ import net.jami.jams.common.dao.StatementElement;
 import net.jami.jams.common.dao.StatementList;
 import net.jami.jams.common.dao.connectivity.ConnectionPool;
 import net.jami.jams.common.objects.user.User;
+import net.jami.jams.common.objects.user.UserGroupMapping;
 import net.jami.jams.common.objects.user.UserProfile;
 import org.flywaydb.core.Flyway;
 
@@ -143,6 +144,27 @@ public class DataStore implements AuthenticationSource {
         return userProfileDao.storeObject(userProfile);
     }
 
+    public boolean updateUserGroupMappings (UserProfile userProfile) {
+        StatementList statementList = new StatementList();
+        statementList.addStatement(new StatementElement("username", "=", userProfile.getUsername(), ""));
+        if (getUserGroupMappingsDao().getObjects(statementList) != null && !getUserGroupMappingsDao().getObjects(statementList).isEmpty()) {
+            UserGroupMapping mapping = getUserGroupMappingsDao().getObjects(statementList).get(0);
+            List<String> list = new ArrayList<>();
+            if (mapping.getUsername().equals(userProfile.getUsername())) {
+                String[] splits = mapping.getGroups().split(",");
+
+                for (int i = 0; i < splits.length; i++)
+                    list.add(splits[i]);
+            }
+            if (!list.isEmpty())
+                userProfile.setGroupMemberships(list);
+
+            return (updateUserProfile(userProfile));
+        }
+
+        return true;
+    }
+
     public boolean updateUserProfile(UserProfile userProfile){
 
         StatementList update = new StatementList();
diff --git a/jams-common/src/main/java/net/jami/jams/common/objects/user/UserGroupMapping.java b/jams-common/src/main/java/net/jami/jams/common/objects/user/UserGroupMapping.java
index 1516288842dd39a748d0596c3ad4fcb12e4443bf..46f477a9cd89d47d07c77cd8230dcc7ea362f038 100644
--- a/jams-common/src/main/java/net/jami/jams/common/objects/user/UserGroupMapping.java
+++ b/jams-common/src/main/java/net/jami/jams/common/objects/user/UserGroupMapping.java
@@ -32,8 +32,10 @@ public class UserGroupMapping implements DatabaseObject {
 
     public void removeGroup(String s) {
         if (this.groups.contains(s) ) {
-            if (this.groups.contains(","))
+            if (this.groups.contains(",")) {
                 this.groups = this.groups.replace(s + ",", "");
+                this.groups = this.groups.replace("," + s, "");
+            }
             else
                 this.groups = "";
         }
diff --git a/jams-server/src/main/java/net/jami/jams/server/servlets/api/admin/directory/DirectoryEntryServlet.java b/jams-server/src/main/java/net/jami/jams/server/servlets/api/admin/directory/DirectoryEntryServlet.java
index 4539f540af2c797648b1e707d8971cb9e343f248..f8acb55f30cffd5d3ab5296c575115c8fb6b2679 100644
--- a/jams-server/src/main/java/net/jami/jams/server/servlets/api/admin/directory/DirectoryEntryServlet.java
+++ b/jams-server/src/main/java/net/jami/jams/server/servlets/api/admin/directory/DirectoryEntryServlet.java
@@ -39,12 +39,14 @@ import net.jami.jams.common.dao.StatementElement;
 import net.jami.jams.common.dao.StatementList;
 import net.jami.jams.common.objects.user.AccessLevel;
 import net.jami.jams.common.objects.user.User;
+import net.jami.jams.common.objects.user.UserGroupMapping;
 import net.jami.jams.common.objects.user.UserProfile;
 import org.json.JSONObject;
 
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Scanner;
 
 import static net.jami.jams.server.Server.dataStore;
@@ -108,7 +110,9 @@ public class DirectoryEntryServlet extends HttpServlet {
         }
 
         if (callingUser.getAccessLevel() == AccessLevel.ADMIN || (callingUser.getAccessLevel() == AccessLevel.USER && callingUser.getUsername().equals(targetUser.getUsername()))) {
-            if (dataStore.updateUserProfile(userProfile))
+            select = new StatementList();
+            select.addStatement(new StatementElement("username", "=", userProfile.getUsername(), ""));
+            if (dataStore.updateUserGroupMappings(userProfile))
                 resp.setStatus(200);
             else
                 resp.sendError(404, "Could not update the users's profile information");
diff --git a/jams-server/src/main/java/net/jami/jams/server/servlets/api/auth/device/UserProfileServlet.java b/jams-server/src/main/java/net/jami/jams/server/servlets/api/auth/device/UserProfileServlet.java
index 57d37ae0a51f5793c0d11af4f1b5db9a2a87db21..6ab299a55f1a4b2b05f2a5e26e995a1260cbf954 100644
--- a/jams-server/src/main/java/net/jami/jams/server/servlets/api/auth/device/UserProfileServlet.java
+++ b/jams-server/src/main/java/net/jami/jams/server/servlets/api/auth/device/UserProfileServlet.java
@@ -28,14 +28,16 @@ import jakarta.servlet.annotation.WebServlet;
 import jakarta.servlet.http.HttpServlet;
 import jakarta.servlet.http.HttpServletRequest;
 import jakarta.servlet.http.HttpServletResponse;
-import lombok.extern.slf4j.Slf4j;
+import net.jami.jams.common.annotations.JsonContent;
 import net.jami.jams.common.objects.user.UserProfile;
 
 import java.io.IOException;
 
+import static net.jami.jams.server.Server.dataStore;
 import static net.jami.jams.server.Server.userAuthenticationModule;
 
 @WebServlet("/api/auth/userprofile/*")
+@JsonContent
 public class UserProfileServlet extends HttpServlet {
 
     //Get the user profile
@@ -49,6 +51,7 @@ public class UserProfileServlet extends HttpServlet {
             if (v.getUserProfile(username) != null)
                 profile[0] = v.getUserProfile(username);
         });
+        dataStore.updateUserGroupMappings(profile[0]);
 
         if (profile[0] != null) {
             resp.getOutputStream().write(JsonStream.serialize(profile[0]).getBytes());
@@ -58,4 +61,4 @@ public class UserProfileServlet extends HttpServlet {
             return;
         }
     }
-}
+}
\ No newline at end of file