diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/AbstractServer.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/AbstractServer.java
index 05879a2f0cce1d38112acdfcca98d194e339c632..9b4ccb2978319d51d64c25d9a8e3b0df1de144a0 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/AbstractServer.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/AbstractServer.java
@@ -462,13 +462,12 @@ public abstract class AbstractServer<T> extends AbstractServiceWithLogger<T> imp
             return null;
         }
         final Session session = sessionManager.getSession(sessionToken);
-        final List<PersonPE> persons = daoFactory.getPersonDAO().listPersons();
-        assert persons.size() > 0 : "At least system user should be in the database";
-        // If only one user (system user), then this is the first logged user.
+        List<PersonPE> persons = null;
         PersonPE person = daoFactory.getPersonDAO().tryFindPersonByUserId(session.getUserName());
         final Set<RoleAssignmentPE> roles;
         if (person == null)
         {
+            persons = daoFactory.getPersonDAO().listPersons();
             final PersonPE systemUser = getSystemUser(persons);
             final DisplaySettings defaultDisplaySettings = getDefaultDisplaySettings(sessionToken);
             person = createPerson(session.getPrincipal(), systemUser, defaultDisplaySettings);
@@ -485,6 +484,10 @@ public abstract class AbstractServer<T> extends AbstractServiceWithLogger<T> imp
 
         if (roles.isEmpty())
         {
+            if (persons == null)
+            {
+                persons = daoFactory.getPersonDAO().listPersons();
+            }
             if (isFirstLoggedUser(person, persons))
             {
                 grantRoleAtFirstLogin(persons, person, RoleCode.ADMIN);