diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/Client.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/Client.java
index bb1fb5bd64d12976cc81ec7cb855ad8fb678243d..ebce751dda764520e4e781f8ed8cc39a1e4958a0 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/Client.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/Client.java
@@ -213,7 +213,7 @@ public class Client implements EntryPoint, ValueChangeHandler<String>
                     model.setApplicationInfo(info);
                     model.setViewMode(viewMode);
                     boolean anonymous = isAnonymousLogin(info);
-                    model.setAnonymousLogin(anonymous);
+                    model.setAnonymousAllowed(anonymous);
                     // the callback sets the SessionContext and redirects to the login page or the
                     // initial page and may additionaly open an initial tab
                     SessionContextCallback sessionContextCallback =
@@ -331,7 +331,7 @@ public class Client implements EntryPoint, ValueChangeHandler<String>
             final Dispatcher dispatcher = Dispatcher.get();
             if (sessionContext == null)
             {
-                if (viewContext.getModel().isAnonymousLogin())
+                if (viewContext.getModel().isAnonymousAllowed())
                 {
                     viewContext.getService().tryToLoginAnonymously(
                             new BasicLoginCallback(viewContext.getCommonViewContext(), null)
@@ -354,6 +354,7 @@ public class Client implements EntryPoint, ValueChangeHandler<String>
                 // restart than display settings of the user that logged in first would be used
                 // also for the second user.
                 viewContext.initDisplaySettingsManager();
+
                 dispatcher.dispatch(AppEvents.INIT);
 
                 if (viewContext.isSimpleOrEmbeddedMode() == false)
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/GenericViewModel.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/GenericViewModel.java
index bacccd9a5216bac1354d8a333ec80b13b32c8499..f14dd347b31e3e89e56b6b57ce0b2a3a7fa65eab 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/GenericViewModel.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/GenericViewModel.java
@@ -33,7 +33,7 @@ public class GenericViewModel
 
     private ViewMode viewMode;
 
-    private boolean anonymousLogin;
+    private boolean anonymousAllowed;
 
     public final ApplicationInfo getApplicationInfo()
     {
@@ -65,14 +65,9 @@ public class GenericViewModel
         this.viewMode = viewMode;
     }
 
-    public void setAnonymousLogin(boolean anonymousLogin)
-    {
-        this.anonymousLogin = anonymousLogin;
-    }
-
     public boolean isAnonymousLogin()
     {
-        return anonymousLogin;
+        return sessionContext.isAnonymous();
     }
 
     public boolean isEmbeddedMode()
@@ -84,4 +79,14 @@ public class GenericViewModel
     {
         return isAnonymousLogin() == false && ViewMode.NORMAL.equals(getViewMode());
     }
+
+    public void setAnonymousAllowed(boolean anonymousAllowed)
+    {
+        this.anonymousAllowed = anonymousAllowed;
+    }
+
+    public boolean isAnonymousAllowed()
+    {
+        return anonymousAllowed;
+    }
 }
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/SessionContext.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/SessionContext.java
index 6bacb87fbee7f91644b697f68b70b92cc320fa78..122fa8f923442b42de8790cf5331ee2d822fe959 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/SessionContext.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/SessionContext.java
@@ -37,6 +37,8 @@ public class SessionContext implements IsSerializable
 
     private DisplaySettings displaySettings;
 
+    private boolean anonymous;
+
     public final User getUser()
     {
         return user;
@@ -77,4 +79,14 @@ public class SessionContext implements IsSerializable
         this.displaySettings = displaySettings;
     }
 
+    public void setAnonymous(boolean anonymous)
+    {
+        this.anonymous = anonymous;
+    }
+
+    public boolean isAnonymous()
+    {
+        return this.anonymous;
+    }
+
 }
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/AbstractClientService.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/AbstractClientService.java
index f084492e17cbcc1f488e0b32f8cda621f2e6d47f..e8e7e9e3b1b3064db7cc82357639b0407a7e05cd 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/AbstractClientService.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/AbstractClientService.java
@@ -301,6 +301,7 @@ public abstract class AbstractClientService implements IClientService,
         user.setHomeGroupCode(session.tryGetHomeGroupCode());
         user.setUserEmail(session.getUserEmail());
         sessionContext.setUser(user);
+        sessionContext.setAnonymous(session.isAnonymous());
 
         return sessionContext;
     }
@@ -471,7 +472,7 @@ public abstract class AbstractClientService implements IClientService,
             if (session == null)
             {
                 return null;
-            } else if (anonymous != session.isAnonymous())
+            } else if (anonymous == false && session.isAnonymous())
             {
                 operationLog.debug("expected: " + anonymous + " found: " + session.isAnonymous());
                 getServer().logout(sessionToken);