diff --git a/gms-ui/src/api/mock/data/openUserSearchResult.json b/gms-ui/src/api/mock/data/openUserSearchResult.json
index 65d38eaaae7e1efc09341c06548387fbe7916f9e..b7389bbb1a4d565016e955a39a719cbbb5dca245 100644
--- a/gms-ui/src/api/mock/data/openUserSearchResult.json
+++ b/gms-ui/src/api/mock/data/openUserSearchResult.json
@@ -1,13 +1,11 @@
 {
   "groups": [{
-    "id": "744e38e8f6d04e4e9418ae5f131c9b6b",
-    "name": "LBT",
-    "path": "744e38e8f6d04e4e9418ae5f131c9b6b"
+    "groupId": "f747bb7af22b4b2f85abef8a3e54dcc7",
+    "groupCompleteName": ["LBT", "INAF", "P1"]
   }],
   "permissions": [{
-    "userId": "4",
-    "groupId": "744e38e8f6d04e4e9418ae5f131c9b6b",
-    "permission": "VIEW_MEMBERS",
-    "groupPath": "744e38e8f6d04e4e9418ae5f131c9b6b"
+    "groupId": "ROOT",
+    "groupCompleteName": ["Root"],
+    "permission": "ADMIN"
   }]
 }
diff --git a/gms-ui/src/api/mock/data/search.json b/gms-ui/src/api/mock/data/search.json
index d81df04e320bd27cf4d18e5852205a45ae696b68..7987da4307328b61c46094fd6ae5d7bbee53ae4f 100644
--- a/gms-ui/src/api/mock/data/search.json
+++ b/gms-ui/src/api/mock/data/search.json
@@ -1,18 +1,20 @@
 {
   "items": [{
-      "id": "4",
-      "type": "USER",
-      "label": "Name Surname"
-    },
-    {
-      "id": "group_id",
-      "type": "GROUP",
-      "label": "Group 1"
-    }
-  ],
+    "type": "USER",
+    "label": "Sonia Zorba (Google)",
+    "id": "4"
+  }, {
+    "type": "GROUP",
+    "label": "TNG / test2",
+    "id": "64f6795862944325b093c974b768dd39"
+  }, {
+    "type": "GROUP",
+    "label": "test",
+    "id": "024fb0999cac4e74a4e4ee2af4d3800c"
+  }],
   "currentPage": 1,
   "links": [1],
-  "totalItems": 2,
+  "totalItems": 3,
   "pageSize": 20,
   "totalPages": 1,
   "hasPreviousPages": false,
diff --git a/gms-ui/src/store.js b/gms-ui/src/store.js
index a6d1c9100490a4ebf758f9bf824445717320df51..00e3cd7159afc6dc09e9d6a8b44d8bf98b3adc41 100644
--- a/gms-ui/src/store.js
+++ b/gms-ui/src/store.js
@@ -50,12 +50,12 @@ export default new Vuex.Store({
     openGroup(state, groupId) {
       let input = this.state.input;
       input.selectedGroupId = groupId;
-      input.searchFilter = null;
+      input.searchFilter = '';
       client.fetchGroupsTab(input)
         .then(model => {
+          this.commit('updateGroups', model);
           if (model.groupsPanel.items.length > 0) {
             this.commit('setTabIndex', 0);
-            this.commit('updateGroups', model);
           } else {
             // If there are no subgroups show the members panel
             this.commit('setTabIndex', 1);
diff --git a/gms/src/main/java/it/inaf/ia2/gms/service/SearchService.java b/gms/src/main/java/it/inaf/ia2/gms/service/SearchService.java
index 0bfe396a1f835bd878c5f28ed9c4660cdec6f283..90e6ccbfe9aa4ad56236e4b7329a6ae5ce12e554 100644
--- a/gms/src/main/java/it/inaf/ia2/gms/service/SearchService.java
+++ b/gms/src/main/java/it/inaf/ia2/gms/service/SearchService.java
@@ -109,8 +109,14 @@ public class SearchService {
         List<PermissionEntity> actorPermissions = permissionsDAO.findUserPermissions(actorUserId);
 
         UserSearchResponse response = new UserSearchResponse();
-        response.setGroups(getUserGroups(targetUserId, actorPermissions));
-        response.setPermissions(getUserPermission(targetUserId, actorPermissions));
+
+        List<UserGroup> groups = getUserGroups(targetUserId, actorPermissions);
+        sortByGroupCompleteName(groups);
+        response.setGroups(groups);
+
+        List<UserPermission> permissions = getUserPermission(targetUserId, actorPermissions);
+        sortByGroupCompleteName(permissions);
+        response.setPermissions(permissions);
 
         return response;
     }
@@ -167,4 +173,12 @@ public class SearchService {
 
         return permissions;
     }
+
+    private void sortByGroupCompleteName(List<? extends UserGroup> items) {
+        items.sort((i1, i2) -> {
+            String completeName1 = String.join(" / ", i1.getGroupCompleteName());
+            String completeName2 = String.join(" / ", i2.getGroupCompleteName());
+            return completeName1.compareTo(completeName2);
+        });
+    }
 }