diff --git a/gms/src/main/java/it/inaf/ia2/gms/authn/OAuth2Config.java b/gms/src/main/java/it/inaf/ia2/gms/authn/OAuth2Config.java
index 9b45d30a3b73b3008b28693537f3d1b1eda5d2f9..4fd68b5fab327aed3e21955187bd6d26f6eed3d3 100644
--- a/gms/src/main/java/it/inaf/ia2/gms/authn/OAuth2Config.java
+++ b/gms/src/main/java/it/inaf/ia2/gms/authn/OAuth2Config.java
@@ -3,7 +3,6 @@ package it.inaf.ia2.gms.authn;
 import java.util.List;
 import org.springframework.beans.factory.ObjectProvider;
 import org.springframework.beans.factory.annotation.Value;
-import org.springframework.boot.autoconfigure.security.oauth2.client.EnableOAuth2Sso;
 import org.springframework.boot.autoconfigure.security.oauth2.resource.DefaultUserInfoRestTemplateFactory;
 import org.springframework.boot.autoconfigure.security.oauth2.resource.UserInfoRestTemplateCustomizer;
 import org.springframework.boot.autoconfigure.security.oauth2.resource.UserInfoRestTemplateFactory;
@@ -22,7 +21,6 @@ import org.springframework.security.oauth2.provider.token.RemoteTokenServices;
  * Boot ResourceServerTokenServicesConfiguration.
  */
 @Configuration
-@EnableOAuth2Sso
 public class OAuth2Config extends AuthorizationServerEndpointsConfiguration {
 
     @Value("${security.oauth2.resource.jwk.key-set-uri}")
diff --git a/gms/src/main/java/it/inaf/ia2/gms/authn/SecurityConfig.java b/gms/src/main/java/it/inaf/ia2/gms/authn/SecurityConfig.java
index 130505eda977da570488e320b1d32dcf8530abaf..ea8e3175bfd73846ba8b275c654894879ed80424 100644
--- a/gms/src/main/java/it/inaf/ia2/gms/authn/SecurityConfig.java
+++ b/gms/src/main/java/it/inaf/ia2/gms/authn/SecurityConfig.java
@@ -1,16 +1,17 @@
 package it.inaf.ia2.gms.authn;
 
+import org.springframework.boot.autoconfigure.security.oauth2.client.EnableOAuth2Sso;
 import org.springframework.context.annotation.Configuration;
-import org.springframework.core.annotation.Order;
 import org.springframework.security.config.annotation.web.builders.HttpSecurity;
 import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
 
 @Configuration
-@Order(1000)
+@EnableOAuth2Sso
 public class SecurityConfig extends WebSecurityConfigurerAdapter {
 
     @Override
-    protected void configure(HttpSecurity http) throws Exception {
+    public void configure(HttpSecurity http) throws Exception {
+        super.configure(http);
         http.csrf().disable();
     }
 }
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 7586fd84e5d04aabc3cd9bd2950f9c6f0c476e4b..c1fb66276be3c6347c745c46acf31eecef1cccfd 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
@@ -25,6 +25,7 @@ public class GroupsController {
     @Autowired
     private SessionData session;
 
+    @Autowired
     private UsersService usersService;
 
     @Autowired
diff --git a/gms/src/main/java/it/inaf/ia2/gms/model/PaginatedData.java b/gms/src/main/java/it/inaf/ia2/gms/model/PaginatedData.java
index 5ea07f7451ed5aab368ee84ad5e162add7778e20..0e61eb13b1760dc562a6b9ae18913dc1ef0ce5f3 100644
--- a/gms/src/main/java/it/inaf/ia2/gms/model/PaginatedData.java
+++ b/gms/src/main/java/it/inaf/ia2/gms/model/PaginatedData.java
@@ -30,7 +30,7 @@ public class PaginatedData<T> {
         } else {
             int firstElementIndex = (currentPage - 1) * pageSize;
             int lastElementIndex = Math.min(currentPage * pageSize - 1, totalItems - 1);
-            items = new ArrayList<>(allItems.subList(firstElementIndex, lastElementIndex));
+            items = new ArrayList<>(allItems.subList(firstElementIndex, lastElementIndex + 1));
         }
 
         links = new ArrayList<>();
diff --git a/gms/src/main/java/it/inaf/ia2/gms/service/GroupsService.java b/gms/src/main/java/it/inaf/ia2/gms/service/GroupsService.java
index 9a258178876c3da9a0c464dc970aab5e3d90f1ff..4be39d1f5dd4e8ebbd28aee5361cfc6b968684b3 100644
--- a/gms/src/main/java/it/inaf/ia2/gms/service/GroupsService.java
+++ b/gms/src/main/java/it/inaf/ia2/gms/service/GroupsService.java
@@ -18,6 +18,7 @@ import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.UUID;
+import org.springframework.transaction.annotation.Transactional;
 
 @Service
 public class GroupsService {
@@ -47,6 +48,7 @@ public class GroupsService {
         }
     }
 
+    @Transactional
     public Group addGroup(String parentId, String groupName, User user) {
 
         Group parent = getGroupById(parentId);
@@ -70,6 +72,7 @@ public class GroupsService {
         return group;
     }
 
+    @Transactional
     public List<GroupNode> getSubgroups(Group parent, User user) {
 
         List<UserGroupPermission> permissions = getAllPermissions(user);
@@ -97,7 +100,7 @@ public class GroupsService {
 
         GroupNode groupNode = nodesMap.get(group.getId());
         if (groupNode == null) {
-            return null;
+            return new ArrayList<>();
         }
         return groupNode.getPermissions();
     }
diff --git a/gms/src/main/resources/application.properties b/gms/src/main/resources/application.properties
index 46854617fed06dfd5de53595b4435cfb3daee721..0893bb1b3af8130c37c64193bf4a8fa1316664e8 100644
--- a/gms/src/main/resources/application.properties
+++ b/gms/src/main/resources/application.properties
@@ -15,3 +15,4 @@ spring.jpa.database-platform=org.hibernate.dialect.MariaDBDialect
 spring.datasource.url=jdbc:mysql://localhost:3306/gms?useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC
 spring.datasource.username=gms
 spring.datasource.password=gms
+#spring.jpa.open-in-view=false
diff --git a/gms/src/test/java/it/inaf/ia2/gms/model/PaginatedDataTest.java b/gms/src/test/java/it/inaf/ia2/gms/model/PaginatedDataTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..79f2d9b0d5e6288a38b5521ef84f8667eab43446
--- /dev/null
+++ b/gms/src/test/java/it/inaf/ia2/gms/model/PaginatedDataTest.java
@@ -0,0 +1,58 @@
+package it.inaf.ia2.gms.model;
+
+import java.util.ArrayList;
+import java.util.List;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import org.junit.Test;
+
+public class PaginatedDataTest {
+
+    @Test
+    public void testPagination() {
+
+        List<Integer> allItems = new ArrayList<>();
+        for (int i = 1; i <= 30; i++) {
+            allItems.add(i);
+        }
+
+        PaginatedData<Integer> paginatedData = new PaginatedData<>(allItems, 2, 10);
+
+        assertEquals(10, paginatedData.getItems().size());
+        assertEquals(11, (int) paginatedData.getItems().get(0));
+        assertEquals(20, (int) paginatedData.getItems().get(9));
+        assertEquals(30, paginatedData.getTotalItems());
+        assertEquals(3, paginatedData.getTotalPages());
+        assertFalse(paginatedData.isHasPreviousPages());
+        assertFalse(paginatedData.isHasFollowingPages());
+        assertEquals(10, paginatedData.getPageSize());
+        assertEquals(3, paginatedData.getLinks().size());
+        assertEquals(1, (int) paginatedData.getLinks().get(0));
+        assertEquals(2, (int) paginatedData.getLinks().get(1));
+        assertEquals(3, (int) paginatedData.getLinks().get(2));
+    }
+
+    @Test
+    public void testLotOfPages() {
+
+        List<Integer> allItems = new ArrayList<>();
+        for (int i = 1; i <= 200; i++) {
+            allItems.add(i);
+        }
+
+        PaginatedData<Integer> paginatedData = new PaginatedData<>(allItems, 8, 10);
+
+        assertEquals(10, paginatedData.getItems().size());
+        assertEquals(71, (int) paginatedData.getItems().get(0));
+        assertEquals(80, (int) paginatedData.getItems().get(9));
+        assertEquals(200, paginatedData.getTotalItems());
+        assertEquals(20, paginatedData.getTotalPages());
+        assertTrue(paginatedData.isHasPreviousPages());
+        assertTrue(paginatedData.isHasFollowingPages());
+        assertEquals(10, paginatedData.getPageSize());
+        assertEquals(5, paginatedData.getLinks().size());
+        assertEquals(6, (int) paginatedData.getLinks().get(0));
+        assertEquals(10, (int) paginatedData.getLinks().get(4));
+    }
+}