diff --git a/src/main/java/org/eclipse/openk/portal/auth2/util/JwtHelper.java b/src/main/java/org/eclipse/openk/portal/auth2/util/JwtHelper.java
index 48e4855..6195622 100644
--- a/src/main/java/org/eclipse/openk/portal/auth2/util/JwtHelper.java
+++ b/src/main/java/org/eclipse/openk/portal/auth2/util/JwtHelper.java
@@ -38,8 +38,8 @@
     return getJwtTokenFromJson(token);
   }
 
-  public static List<KeyCloakUser> getUsers(JwtToken jwtToken) throws PortalInternalServerError {
-    String users = sendGet(BackendConfig.getInstance().getAuthServerUrl() + "auth/admin/realms/" + BackendConfig.getInstance().getKeycloakRealm() + "/users",
+  public static List<KeyCloakUser> getUsers(JwtToken jwtToken, int maxUsers) throws PortalInternalServerError {
+    String users = sendGet(BackendConfig.getInstance().getAuthServerUrl() + "auth/admin/realms/" + BackendConfig.getInstance().getKeycloakRealm() + "/users?max="+maxUsers,
         MediaType.APPLICATION_JSON, jwtToken.getAccessToken());
     return getUserListFromJson(users);
   }
diff --git a/src/main/java/org/eclipse/openk/portal/common/BackendConfig.java b/src/main/java/org/eclipse/openk/portal/common/BackendConfig.java
index eec4219..2c96d87 100644
--- a/src/main/java/org/eclipse/openk/portal/common/BackendConfig.java
+++ b/src/main/java/org/eclipse/openk/portal/common/BackendConfig.java
@@ -11,6 +11,7 @@
     private String keycloakClient;
     private String keycloakAdmin;
     private String keycloakPW;
+    private Integer maxLoadUsers;
 
     private static BackendConfig instance;
 
@@ -54,6 +55,9 @@
         return keycloakRealm;
     }
 
+    public Integer getMaxLoadUsers() {
+        return maxLoadUsers;
+    }
 
     public static String getConfigFileName() {
         return configFileName;
diff --git a/src/main/java/org/eclipse/openk/portal/common/UserCacheTimerTask.java b/src/main/java/org/eclipse/openk/portal/common/UserCacheTimerTask.java
index abaf567..f881417 100644
--- a/src/main/java/org/eclipse/openk/portal/common/UserCacheTimerTask.java
+++ b/src/main/java/org/eclipse/openk/portal/common/UserCacheTimerTask.java
@@ -34,7 +34,7 @@
   }
 
   private List<KeyCloakUser> getKeyCloakUsersFromToken(JwtToken token) throws PortalInternalServerError {
-    List<KeyCloakUser> allUsers = JwtHelper.getUsers(token);
+    List<KeyCloakUser> allUsers = JwtHelper.getUsers(token, BackendConfig.getInstance().getMaxLoadUsers());
     List<KeyCloakUser> allUsersWithRoles = new ArrayList<>();
 
     for (KeyCloakUser user : allUsers) {
diff --git a/src/main/java/org/eclipse/openk/portal/controller/BackendController.java b/src/main/java/org/eclipse/openk/portal/controller/BackendController.java
index ad3ddfe..1894ab1 100644
--- a/src/main/java/org/eclipse/openk/portal/controller/BackendController.java
+++ b/src/main/java/org/eclipse/openk/portal/controller/BackendController.java
@@ -22,12 +22,6 @@
     private static final Logger LOGGER = Logger.getLogger(BackendController.class.getName());
     private final InputDataValuator inputDataValuator = new InputDataValuator();
 
-    public List<KeyCloakUser> getUsers() throws PortalInternalServerError {
-        JwtToken token = JwtHelper.login(BackendConfig.getInstance().getKeycloakAdmin(),
-            BackendConfig.getInstance().getKeycloakPW());
-        return JwtHelper.getUsers(token);
-    }
-
     public List<KeyCloakUser> getUsersForRole(String roleToCheck) {
         List<KeyCloakUser> usersWithRole = new ArrayList<>();
         List<KeyCloakUser> keyCloakUsers = UserCache.getInstance().getKeyCloakUsers();
diff --git a/src/main/resources/_backendConfigCustom.json b/src/main/resources/_backendConfigCustom.json
index 6197068..df350b7 100644
--- a/src/main/resources/_backendConfigCustom.json
+++ b/src/main/resources/_backendConfigCustom.json
@@ -5,5 +5,6 @@
   "keycloakRealm": "elogbook",
   "keycloakClient": "elogbook-backend",
   "keycloakAdmin": "admin",
-  "keycloakPW": "nimda"
+  "keycloakPW": "nimda",
+  "maxLoadUsers": 1000
 }
\ No newline at end of file
diff --git a/src/main/resources/backendConfigDevLocal.json b/src/main/resources/backendConfigDevLocal.json
index 6197068..df350b7 100644
--- a/src/main/resources/backendConfigDevLocal.json
+++ b/src/main/resources/backendConfigDevLocal.json
@@ -5,5 +5,6 @@
   "keycloakRealm": "elogbook",
   "keycloakClient": "elogbook-backend",
   "keycloakAdmin": "admin",
-  "keycloakPW": "nimda"
+  "keycloakPW": "nimda",
+  "maxLoadUsers": 1000
 }
\ No newline at end of file
diff --git a/src/main/resources/backendConfigDevServer.json b/src/main/resources/backendConfigDevServer.json
index 17b73db..04e1609 100644
--- a/src/main/resources/backendConfigDevServer.json
+++ b/src/main/resources/backendConfigDevServer.json
@@ -5,5 +5,6 @@
   "keycloakRealm": "Elogbook",
   "keycloakClient": "elogbook-backend",
   "keycloakAdmin": "admin",
-  "keycloakPW": "admin"
+  "keycloakPW": "admin",
+  "maxLoadUsers": 1000
 }
\ No newline at end of file
diff --git a/src/main/resources/backendConfigProduction.json b/src/main/resources/backendConfigProduction.json
index 7fed7db..a01fbba 100644
--- a/src/main/resources/backendConfigProduction.json
+++ b/src/main/resources/backendConfigProduction.json
@@ -5,5 +5,6 @@
   "keycloakRealm": "MainDonauNetz",
   "keycloakClient": "elogbook-backend",
   "keycloakAdmin": "admin",
-  "keycloakPW": "Gfxt!T123"
+  "keycloakPW": "Gfxt!T123",
+  "maxLoadUsers": 1000
 }
\ No newline at end of file
diff --git a/src/test/java/org/eclipse/openk/portal/common/UserCacheTimerTaskTest.java b/src/test/java/org/eclipse/openk/portal/common/UserCacheTimerTaskTest.java
index 4a9290e..73a6ed4 100644
--- a/src/test/java/org/eclipse/openk/portal/common/UserCacheTimerTaskTest.java
+++ b/src/test/java/org/eclipse/openk/portal/common/UserCacheTimerTaskTest.java
@@ -48,7 +48,7 @@
         List<KeyCloakRole> keyCloakRolesList = JsonGeneratorBase.getGson().fromJson(jsonKeyCloakRoles, listTypeKeyCloakRole);
 
         expect(JwtHelper.login(BackendConfig.getInstance().getKeycloakAdmin(), BackendConfig.getInstance().getKeycloakPW())).andReturn(jwt);
-        expect(JwtHelper.getUsers(jwt)).andReturn(keyCloakUsersList);
+        expect(JwtHelper.getUsers(jwt, BackendConfig.getInstance().getMaxLoadUsers())).andReturn(keyCloakUsersList);
         expect(JwtHelper.getRolesForUser(jwt, keyCloakUsersList.get(0).getId())).andReturn(keyCloakRolesList);
 
         PowerMock.replayAll();
diff --git a/src/test/java/org/eclipse/openk/portal/controller/ControllerImplementationsTest.java b/src/test/java/org/eclipse/openk/portal/controller/ControllerImplementationsTest.java
index 0445e84..987ddf4 100644
--- a/src/test/java/org/eclipse/openk/portal/controller/ControllerImplementationsTest.java
+++ b/src/test/java/org/eclipse/openk/portal/controller/ControllerImplementationsTest.java
@@ -31,9 +31,6 @@
         controllerImpl.setModUser("EgalUser");
         controllerImpl.setUserId(14);
 
-        expect(beMock.getUsers()).andReturn(userList);
-        PowerMock.replay(beMock);
-
         assertEquals(controllerImpl.invoke().getStatus(), Globals.HTTPSTATUS_OK);
         assertEquals(controllerImpl.getModUser(), "EgalUser");
         assertEquals(controllerImpl.getUserId(), 14);
