diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/AbstractAsyncCallback.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/AbstractAsyncCallback.java
index 5efa26acd8825ca5d415a383ce35dcb90c9b6a7f..08512daae4407a7783a7c957aa1464b3841a8363 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/AbstractAsyncCallback.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/AbstractAsyncCallback.java
@@ -230,7 +230,7 @@ public abstract class AbstractAsyncCallback<T> implements AsyncCallback<T>
         }
         if (caught instanceof InvalidSessionException)
         {
-            showSessionTerminated(msg);
+            handleSessionTerminated(msg);
         } else
         {
             callbackListener.onFailureOf(viewContext, this, msg, caught);
@@ -253,6 +253,25 @@ public abstract class AbstractAsyncCallback<T> implements AsyncCallback<T>
         }
     }
 
+    private void refreshPageInBrowser()
+    {
+        if (viewContext != null)
+        {
+            viewContext.getPageController().reload(true);
+        }
+    }
+
+    private void handleSessionTerminated(String msg)
+    {
+        if (viewContext.isSimpleOrEmbeddedMode())
+        {
+            refreshPageInBrowser();
+        } else
+        {
+            showSessionTerminated(msg);
+        }
+    }
+
     private void showSessionTerminated(String msg)
     {
         Dialog dialog = new Dialog();
@@ -269,10 +288,9 @@ public abstract class AbstractAsyncCallback<T> implements AsyncCallback<T>
                 @Override
                 public void windowHide(WindowEvent we)
                 {
-                    if (viewContext != null && reloadWhenSessionTerminated)
+                    if (reloadWhenSessionTerminated)
                     {
-                        final IPageController pageController = viewContext.getPageController();
-                        pageController.reload(true);
+                        refreshPageInBrowser();
                     }
                 }
             });
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 d2c0ccfea3ffd1ebd39c7f03512f2d523d6cfa22..ee9b77ecfadf53a0ce257c8422c3cc4ca6d2ff1a 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
@@ -96,14 +96,16 @@ public class Client implements EntryPoint, ValueChangeHandler<String>
                 //
                 // IPageController
                 //
-
                 public final void reload(final boolean logout)
                 {
                     if (logout)
                     {
-                        initializeControllers(openUrlController);
+                        // refresh the entire page
+                        Window.Location.reload();
+                    } else
+                    {
+                        onModuleLoad();
                     }
-                    onModuleLoad();
                 }
 
             };
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/menu/user/action/LogoutCallback.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/menu/user/action/LogoutCallback.java
index d9b0944b78680409c87b6087f115d3225650081d..e6c5ff87425e927f323466fb9d1b8a6220128b31 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/menu/user/action/LogoutCallback.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/menu/user/action/LogoutCallback.java
@@ -17,7 +17,6 @@
 package ch.systemsx.cisd.openbis.generic.client.web.client.application.menu.user.action;
 
 import com.google.gwt.user.client.History;
-import com.google.gwt.user.client.Window;
 
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.AbstractAsyncCallback;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext;
@@ -42,6 +41,6 @@ final class LogoutCallback extends AbstractAsyncCallback<Void>
     {
         History.newItem(""); // clears history token in URL
         GWTUtils.removeConfirmExitMessage();
-        Window.Location.reload();
+        viewContext.getPageController().reload(true);
     }
 }
\ No newline at end of file