diff --git a/gms/src/main/java/it/inaf/ia2/gms/controller/GroupsController.java b/gms/src/main/java/it/inaf/ia2/gms/controller/GroupsController.java
index ab97ed1d689799c905051c1663a2de4887419c4a..2ec1d281f16d44ac9f1660399f05fb4308cc8748 100644
--- a/gms/src/main/java/it/inaf/ia2/gms/controller/GroupsController.java
+++ b/gms/src/main/java/it/inaf/ia2/gms/controller/GroupsController.java
@@ -55,7 +55,9 @@ public class GroupsController {
     @PostMapping(value = "/group", consumes = MediaType.APPLICATION_JSON_UTF8_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
     public ResponseEntity<PaginatedData<GroupNode>> createGroup(@Valid @RequestBody AddGroupRequest request) {
 
-        GroupEntity parent = groupsManager.createGroup(request.getParentGroupId(), request.getNewGroupName(), request.isLeaf());
+        GroupEntity parent = groupsManager.getGroupById(request.getParentGroupId());
+
+        groupsManager.createGroup(parent, request.getNewGroupName(), request.isLeaf());
 
         PaginatedData<GroupNode> groupsPanel = getGroupsPanel(parent, request);
 
@@ -65,7 +67,9 @@ public class GroupsController {
     @PutMapping(value = "/group/{groupId}", consumes = MediaType.APPLICATION_JSON_UTF8_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
     public ResponseEntity<PaginatedData<GroupNode>> updateGroup(@PathVariable("groupId") String groupId, @Valid @RequestBody RenameGroupRequest request) {
 
-        GroupEntity parent = groupsManager.updateGroup(groupId, request.getNewGroupName(), request.isLeaf());
+        GroupEntity updatedGroup = groupsManager.updateGroup(groupId, request.getNewGroupName(), request.isLeaf());
+
+        GroupEntity parent = groupsManager.getGroupByPath(updatedGroup.getParentPath());
 
         PaginatedData<GroupNode> groupsPanel = getGroupsPanel(parent, request);
 
diff --git a/gms/src/main/java/it/inaf/ia2/gms/manager/GroupsManager.java b/gms/src/main/java/it/inaf/ia2/gms/manager/GroupsManager.java
index 4d7ae822c6211bbdc184fd1f3478ae8fbc6bf66c..5b3633772f5e51af34ecbe36dd1cd2f1ae5ea013 100644
--- a/gms/src/main/java/it/inaf/ia2/gms/manager/GroupsManager.java
+++ b/gms/src/main/java/it/inaf/ia2/gms/manager/GroupsManager.java
@@ -31,9 +31,10 @@ public class GroupsManager {
         return group;
     }
 
-    public GroupEntity createGroup(String parentGroupId, String childGroupName, boolean leaf) {
-        GroupEntity parent = groupsService.getGroupById(parentGroupId);
-        return createGroup(parent, childGroupName, leaf);
+    public GroupEntity getGroupByPath(String path) {
+        GroupEntity group = groupsService.getGroupByPath(path);
+        verifyUserCanReadGroup(group);
+        return group;
     }
 
     public GroupEntity createGroup(GroupEntity parent, String childGroupName, boolean leaf) {
@@ -44,9 +45,7 @@ public class GroupsManager {
 
         verifyUserCanManageGroup(parent);
 
-        groupsService.addGroup(parent, childGroupName, leaf);
-
-        return parent;
+        return groupsService.addGroup(parent, childGroupName, leaf);
     }
 
     public GroupEntity updateGroup(String groupId, String newGroupName, boolean leaf) {
@@ -54,9 +53,7 @@ public class GroupsManager {
         GroupEntity group = groupsService.getGroupById(groupId);
         verifyUserCanManageGroup(group);
 
-        GroupEntity updatedGroup = groupsService.updateGroup(group, newGroupName, leaf);
-
-        return groupsService.getGroupByPath(updatedGroup.getParentPath());
+        return groupsService.updateGroup(group, newGroupName, leaf);
     }
 
     public GroupEntity deleteGroup(String groupId) {
diff --git a/gms/src/test/java/it/inaf/ia2/gms/controller/JWTWebServiceControllerTest.java b/gms/src/test/java/it/inaf/ia2/gms/controller/JWTWebServiceControllerTest.java
index 257fd5f139da385261db613332b70deb5a41bebe..a665c24173767d3cfb66f11b2a8c562b57fc8e35 100644
--- a/gms/src/test/java/it/inaf/ia2/gms/controller/JWTWebServiceControllerTest.java
+++ b/gms/src/test/java/it/inaf/ia2/gms/controller/JWTWebServiceControllerTest.java
@@ -19,7 +19,8 @@ import org.junit.Before;
 import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import static org.mockito.ArgumentMatchers.anyBoolean;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.argThat;
 import static org.mockito.ArgumentMatchers.eq;
 import org.mockito.InjectMocks;
 import org.mockito.Mock;
@@ -122,11 +123,21 @@ public class JWTWebServiceControllerTest {
     public void testCreateGroup() throws Exception {
 
         when(groupsManager.getRoot()).thenReturn(root);
+        when(groupsManager.createGroup(any(GroupEntity.class), eq("LBT"), eq(false))).thenReturn(lbt);
+        when(groupsManager.createGroup(any(GroupEntity.class), eq("INAF"), eq(true))).thenReturn(inaf);
 
-        mockMvc.perform(post("/ws/jwt/group")
-                .param("leaf", "false")
+        mockMvc.perform(post("/ws/jwt/LBT.INAF")
+                .param("leaf", "true")
                 .contentType(MediaType.APPLICATION_FORM_URLENCODED))
                 .andExpect(status().isCreated());
+
+        verify(groupsService, times(2)).findGroupByParentAndName(any(GroupEntity.class), any());
+        verify(groupsManager, times(1)).createGroup(argGroupIdEq(GroupsService.ROOT), eq("LBT"), eq(false));
+        verify(groupsManager, times(1)).createGroup(argGroupIdEq("lbt_id"), eq("INAF"), eq(true));
+    }
+
+    private GroupEntity argGroupIdEq(String groupId) {
+        return argThat(g -> g.getId().equals(groupId));
     }
 
     @Test