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 9f52b70bcaa731b87b590d309af23b43d9f3f05e..cfd392a59211147b18c316c77dfe29987ae9d9d0 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
@@ -46,6 +46,7 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.locator.Pe
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.locator.ProjectLocatorResolver;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.locator.SearchLocatorResolver;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.locator.ViewLocatorResolverRegistry;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.menu.user.action.LoginAction;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.plugin.DefaultClientPluginFactoryProvider;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.plugin.IClientPluginFactoryProvider;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.plugin.ModuleInitializationController;
@@ -316,8 +317,14 @@ public class Client implements EntryPoint, ValueChangeHandler<String>
                 if (viewContext.getModel().isAnonymousLogin())
                 {
                     viewContext.getService().tryToLoginAnonymously(
-                            new BasicLoginCallback(viewContext.getCommonViewContext(),
-                                    Dict.ANONYMOUS_LOGIN_FAILED));
+                            new BasicLoginCallback(viewContext.getCommonViewContext(), null)
+                                {
+                                    @Override
+                                    protected void handleMissingSession()
+                                    {
+                                        new LoginAction(viewContext).execute();
+                                    }
+                                });
                 } else
                 {
                     dispatcher.dispatch(AppEvents.LOGIN);
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/Dict.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/Dict.java
index 440127ca7565cca84668a5ebcbe16fd2851c9826..00a3a7a76ee6f205674ae99a1f560ae1c2ff753d 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/Dict.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/Dict.java
@@ -173,8 +173,6 @@ public abstract class Dict
 
     public static final String LOGIN_FAILED = "login_failed";
     
-    public static final String ANONYMOUS_LOGIN_FAILED = "anonymous_login_failed";
-
     //
     // AbstractAsyncCallback
     //
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/BasicLoginCallback.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/BasicLoginCallback.java
index 5303053a05a4390cf34fccb3a8b9a45197094079..b4dbf54dbd18fd68f538545812c1c9588cb685d7 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/BasicLoginCallback.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/BasicLoginCallback.java
@@ -50,19 +50,7 @@ public class BasicLoginCallback extends AbstractAsyncCallback<SessionContext>
     {
         if (sessionContext == null)
         {
-            MessageBox.alert(viewContext.getMessage(Dict.MESSAGEBOX_WARNING), viewContext
-                    .getMessage(warningMessageKey), new Listener<MessageBoxEvent>()
-                {
-
-                    //
-                    // Listener
-                    //
-
-                    public void handleEvent(final MessageBoxEvent be)
-                    {
-                        viewContext.getPageController().reload(false);
-                    }
-                });
+            handleMissingSession();
         } else
         {
             cleanup();
@@ -79,6 +67,23 @@ public class BasicLoginCallback extends AbstractAsyncCallback<SessionContext>
         }
     }
 
+    protected void handleMissingSession()
+    {
+        MessageBox.alert(viewContext.getMessage(Dict.MESSAGEBOX_WARNING), viewContext
+                .getMessage(warningMessageKey), new Listener<MessageBoxEvent>()
+            {
+
+                //
+                // Listener
+                //
+
+                public void handleEvent(final MessageBoxEvent be)
+                {
+                    viewContext.getPageController().reload(false);
+                }
+            });
+    }
+
     /**
      * Does some clean up before finishing login.
      */
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/public/common-dictionary.js b/openbis/source/java/ch/systemsx/cisd/openbis/public/common-dictionary.js
index b0ac7a518e083f631e0f5374cd0e62350001997e..e67ba45b1a9998862e76ea9a5f8c79dbaf58d92a 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/public/common-dictionary.js
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/public/common-dictionary.js
@@ -126,7 +126,6 @@ var common = {
   login_passwordLabel: "Password",
   login_buttonLabel: "Login",
   login_failed: "Sorry, you entered an invalid username or password. Please try again.",
-  anonymous_login_failed: "Anonymous login is not possible.",
   
   //
   // AbstractAsyncCallback