diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/AbstractPluginViewContext.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/AbstractPluginViewContext.java
index 318f2ee6987f9c18a6cbb8e58e3d9516534cfb0a..a951d4fcf519e5f34cea0bf00750213a04453476 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/AbstractPluginViewContext.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/AbstractPluginViewContext.java
@@ -102,11 +102,6 @@ public abstract class AbstractPluginViewContext<T extends IClientServiceAsync> i
         return commonViewContext.getPageController();
     }
 
-    public final String getBasicPageTitle()
-    {
-        return commonViewContext.getBasicPageTitle();
-    }
-
     public final IClientPluginFactoryProvider getClientPluginFactoryProvider()
     {
         return commonViewContext.getClientPluginFactoryProvider();
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/CommonViewContext.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/CommonViewContext.java
index b7e179e201375bf94a8c39d47f5e9400a67c2027..28a0549b9c5334c9d52f0972df5fac628b7efe49 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/CommonViewContext.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/CommonViewContext.java
@@ -48,15 +48,23 @@ public final class CommonViewContext implements IViewContext<ICommonClientServic
     {
         private static boolean simpleMode;
 
-        public static void init(final boolean isSimpleMode)
+        private static String pageTitleSuffix;
+
+        public static void init(final boolean isSimpleMode, final String aPageTitleSuffix)
         {
             simpleMode = isSimpleMode;
+            pageTitleSuffix = aPageTitleSuffix;
         }
 
         public static boolean isSimpleMode()
         {
             return simpleMode;
         }
+
+        public static String getPageTitleSuffix()
+        {
+            return pageTitleSuffix;
+        }
     }
 
     private static final String TECHNOLOGY_NAME = "common";
@@ -79,8 +87,6 @@ public final class CommonViewContext implements IViewContext<ICommonClientServic
 
     private final IProfilingTable profilingTable;
 
-    private final String basicPageTitle;
-
     CommonViewContext(final ICommonClientServiceAsync service,
             final IGenericImageBundle imageBundle, final IPageController pageController,
             boolean isLoggingEnabled, boolean isSimpleMode, String basicPageTitle)
@@ -89,12 +95,11 @@ public final class CommonViewContext implements IViewContext<ICommonClientServic
         this.imageBundle = imageBundle;
         this.pageController = pageController;
         this.profilingTable = ProfilingTable.create(isLoggingEnabled);
-        this.basicPageTitle = basicPageTitle;
         messageProvider = new CompositeMessageProvider();
         messageProvider.add(new DictonaryBasedMessageProvider(TECHNOLOGY_NAME));
         viewModel = new GenericViewModel();
         locatorHandlerRegistry = new ViewLocatorResolverRegistry();
-        ClientStaticState.init(isSimpleMode);
+        ClientStaticState.init(isSimpleMode, basicPageTitle);
     }
 
     final void setClientPluginFactoryProvider(
@@ -133,8 +138,7 @@ public final class CommonViewContext implements IViewContext<ICommonClientServic
     }
 
     private DisplaySettingsManager createDisplaySettingsManager(
-            final DisplaySettings displaySettings,
-            WebClientConfiguration webClientConfigurationDTO)
+            final DisplaySettings displaySettings, WebClientConfiguration webClientConfigurationDTO)
     {
         IDelegatedAction settingsUpdater = new IDelegatedAction()
             {
@@ -165,11 +169,6 @@ public final class CommonViewContext implements IViewContext<ICommonClientServic
         return pageController;
     }
 
-    public final String getBasicPageTitle()
-    {
-        return basicPageTitle;
-    }
-
     public final IClientPluginFactoryProvider getClientPluginFactoryProvider()
     {
         return clientPluginFactoryProvider;
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/IViewContext.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/IViewContext.java
index 599de2071c6b6f1a294e0a140b2e2f5430077dd7..4eafa948e3b021cb838f5a05ad2cd2228146894d 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/IViewContext.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/IViewContext.java
@@ -48,8 +48,6 @@ public interface IViewContext<T extends IClientServiceAsync> extends IMessagePro
 
     public IPageController getPageController();
 
-    public String getBasicPageTitle();
-
     public IClientPluginFactoryProvider getClientPluginFactoryProvider();
 
     public ICommonClientServiceAsync getCommonService();
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/SearchWidget.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/SearchWidget.java
index 19154300c7bdcfd8b7e8f44028286b1bfbacfcb3..07f341fa0d319207a36092114b92d7636dd87a98 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/SearchWidget.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/SearchWidget.java
@@ -195,7 +195,7 @@ public final class SearchWidget extends LayoutContainer
     }
 
     private static AbstractTabItemFactory createTabFactory(
-            final MatchingEntitiesPanel matchingEntitiesPanel, String title,
+            final MatchingEntitiesPanel matchingEntitiesPanel, final String title,
             IViewContext<?> viewContext)
     {
         final ITabItem tab =
@@ -222,6 +222,12 @@ public final class SearchWidget extends LayoutContainer
                 {
                     return new HelpPageIdentifier(HelpPageDomain.SEARCH, HelpPageAction.ACTION);
                 }
+
+                @Override
+                public String getTabTitle()
+                {
+                    return title;
+                }
             };
     }
 
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ShowRelatedDatasetsDialog.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ShowRelatedDatasetsDialog.java
index be5ed22ea7b8f163961e2e0463ec52a1570d3b45..412f4beb0d59aa69416aa385b92031c72b170bcd 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ShowRelatedDatasetsDialog.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ShowRelatedDatasetsDialog.java
@@ -66,7 +66,8 @@ public final class ShowRelatedDatasetsDialog extends
                     return RelatedDataSetGrid.BROWSER_ID + XDOM.getUniqueId();
                 }
 
-                private String getTabTitle()
+                @Override
+                public String getTabTitle()
                 {
                     return "Related Data Sets";
                 }
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/framework/AbstractTabItemFactory.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/framework/AbstractTabItemFactory.java
index 599732b908074fd8071a2fe738d44b205505952d..109c7351b246235f7180c1c86b31827db123338c 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/framework/AbstractTabItemFactory.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/framework/AbstractTabItemFactory.java
@@ -46,6 +46,11 @@ public abstract class AbstractTabItemFactory
      */
     public abstract HelpPageIdentifier getHelpPageIdentifier();
 
+    /**
+     * Returns a short description of contents of the tab that can be used in tab or page title.
+     */
+    public abstract String getTabTitle();
+
     /**
      * True if the tab should become active.
      */
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/framework/ComponentProvider.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/framework/ComponentProvider.java
index 324fca296b6142daf97b92ad950894164499f8df..45d21d8d6d75a8b067fb9a0f6d3545a6e03250df 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/framework/ComponentProvider.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/framework/ComponentProvider.java
@@ -81,28 +81,26 @@ public final class ComponentProvider
         return viewContext.getMessage(key);
     }
 
-    private ITabItem createTab(String dictionaryMsgKey, IDisposableComponent component)
+    private ITabItem createTab(String title, IDisposableComponent component)
     {
-        String title = getMessage(dictionaryMsgKey);
         return DefaultTabItem.create(title, component, viewContext);
     }
 
     // creates a tab which requires confirmation before it can be closed
-    private ITabItem createRegistrationTab(final String titleMessageKey,
+    private ITabItem createRegistrationTab(final String title,
             DatabaseModificationAwareComponent component)
     {
-        return DefaultTabItem.create(getMessage(titleMessageKey), component, viewContext, true);
+        return DefaultTabItem.create(title, component, viewContext, true);
     }
 
     /**
      * Creates a tab with the specified component. The tab is unaware of database modifications and
      * will not be automatically refreshed if changes occur.
      */
-    private ITabItem createSimpleTab(String dictionaryMsgKey, Component component,
+    private ITabItem createSimpleTab(String title, Component component,
             boolean isCloseConfirmationNeeded)
     {
-        return DefaultTabItem.createUnaware(getMessage(dictionaryMsgKey), component,
-                isCloseConfirmationNeeded);
+        return DefaultTabItem.createUnaware(title, component, isCloseConfirmationNeeded);
     }
 
     public AbstractTabItemFactory getSampleBrowser(final String initialGroupOrNull,
@@ -116,7 +114,7 @@ public final class ComponentProvider
                     IDisposableComponent browser =
                             SampleBrowserGrid.create(viewContext, initialGroupOrNull,
                                     initialSampleTypeOrNull);
-                    return createTab(Dict.SAMPLE_BROWSER, browser);
+                    return createTab(getMessage(Dict.SAMPLE_BROWSER), browser);
                 }
 
                 @Override
@@ -130,6 +128,21 @@ public final class ComponentProvider
                 {
                     return new HelpPageIdentifier(HelpPageDomain.SAMPLE, HelpPageAction.BROWSE);
                 }
+
+                @Override
+                public String getTabTitle()
+                {
+                    StringBuilder sb = new StringBuilder();
+                    if (initialGroupOrNull != null)
+                    {
+                        sb.append(getMessage(Dict.GROUP) + "=" + initialGroupOrNull);
+                    }
+                    if (initialSampleTypeOrNull != null)
+                    {
+                        sb.append("type=" + initialSampleTypeOrNull);
+                    }
+                    return getMessage(Dict.SAMPLE_BROWSER) + " " + sb.toString();
+                }
             };
     }
 
@@ -153,7 +166,7 @@ public final class ComponentProvider
                     IDisposableComponent browser =
                             MaterialBrowserGrid.createWithTypeChooser(viewContext,
                                     initialMaterialTypeOrNull);
-                    return createTab(Dict.MATERIAL_BROWSER, browser);
+                    return createTab(getMessage(Dict.MATERIAL_BROWSER), browser);
                 }
 
                 @Override
@@ -168,6 +181,17 @@ public final class ComponentProvider
                     return new HelpPageIdentifier(HelpPageDomain.MATERIAL, HelpPageAction.BROWSE);
                 }
 
+                @Override
+                public String getTabTitle()
+                {
+                    StringBuilder sb = new StringBuilder();
+                    if (initialMaterialTypeOrNull != null)
+                    {
+                        sb.append("type=" + initialMaterialTypeOrNull);
+                    }
+                    return getMessage(Dict.MATERIAL_BROWSER) + " " + sb.toString();
+                }
+
             };
     }
 
@@ -179,7 +203,7 @@ public final class ComponentProvider
                 public ITabItem create()
                 {
                     IDisposableComponent component = GroupGrid.create(viewContext);
-                    return createTab(Dict.GROUP_BROWSER, component);
+                    return createTab(getTabTitle(), component);
                 }
 
                 @Override
@@ -193,6 +217,12 @@ public final class ComponentProvider
                 {
                     return new HelpPageIdentifier(HelpPageDomain.GROUP, HelpPageAction.BROWSE);
                 }
+
+                @Override
+                public String getTabTitle()
+                {
+                    return getMessage(Dict.GROUP_BROWSER);
+                }
             };
     }
 
@@ -204,7 +234,7 @@ public final class ComponentProvider
                 public ITabItem create()
                 {
                     IDisposableComponent component = AuthorizationGroupGrid.create(viewContext);
-                    return createTab(Dict.AUTHORIZATION_GROUP_BROWSER, component);
+                    return createTab(getTabTitle(), component);
                 }
 
                 @Override
@@ -219,6 +249,12 @@ public final class ComponentProvider
                     return new HelpPageIdentifier(HelpPageDomain.AUTHORIZATION_GROUPS,
                             HelpPageAction.BROWSE);
                 }
+
+                @Override
+                public String getTabTitle()
+                {
+                    return getMessage(Dict.AUTHORIZATION_GROUP_BROWSER);
+                }
             };
     }
 
@@ -230,7 +266,7 @@ public final class ComponentProvider
                 public ITabItem create()
                 {
                     IDisposableComponent component = RoleAssignmentGrid.create(viewContext);
-                    return createTab(Dict.ROLE_ASSIGNMENT_BROWSER, component);
+                    return createTab(getTabTitle(), component);
                 }
 
                 @Override
@@ -244,6 +280,12 @@ public final class ComponentProvider
                 {
                     return new HelpPageIdentifier(HelpPageDomain.ROLES, HelpPageAction.BROWSE);
                 }
+
+                @Override
+                public String getTabTitle()
+                {
+                    return getMessage(Dict.ROLE_ASSIGNMENT_BROWSER);
+                }
             };
     }
 
@@ -255,7 +297,7 @@ public final class ComponentProvider
                 public ITabItem create()
                 {
                     IDisposableComponent component = PersonGrid.create(viewContext);
-                    return createTab(Dict.PERSON_BROWSER, component);
+                    return createTab(getTabTitle(), component);
                 }
 
                 @Override
@@ -269,6 +311,12 @@ public final class ComponentProvider
                 {
                     return new HelpPageIdentifier(HelpPageDomain.USERS, HelpPageAction.BROWSE);
                 }
+
+                @Override
+                public String getTabTitle()
+                {
+                    return getMessage(Dict.PERSON_BROWSER);
+                }
             };
     }
 
@@ -281,7 +329,7 @@ public final class ComponentProvider
                 {
                     DatabaseModificationAwareComponent component =
                             SampleRegistrationPanel.create(viewContext, context);
-                    return createRegistrationTab(Dict.SAMPLE_REGISTRATION, component);
+                    return createRegistrationTab(getTabTitle(), component);
                 }
 
                 @Override
@@ -295,6 +343,12 @@ public final class ComponentProvider
                 {
                     return new HelpPageIdentifier(HelpPageDomain.SAMPLE, HelpPageAction.REGISTER);
                 }
+
+                @Override
+                public String getTabTitle()
+                {
+                    return getMessage(Dict.SAMPLE_REGISTRATION);
+                }
             };
     }
 
@@ -312,7 +366,7 @@ public final class ComponentProvider
                 {
                     DatabaseModificationAwareComponent component =
                             ExperimentRegistrationPanel.create(viewContext, context);
-                    return createRegistrationTab(Dict.EXPERIMENT_REGISTRATION, component);
+                    return createRegistrationTab(getTabTitle(), component);
                 }
 
                 @Override
@@ -327,6 +381,12 @@ public final class ComponentProvider
                     return new HelpPageIdentifier(HelpPageDomain.EXPERIMENT,
                             HelpPageAction.REGISTER);
                 }
+
+                @Override
+                public String getTabTitle()
+                {
+                    return getMessage(Dict.EXPERIMENT_REGISTRATION);
+                }
             };
     }
 
@@ -345,7 +405,7 @@ public final class ComponentProvider
                 {
                     DatabaseModificationAwareComponent component =
                             SampleBatchRegisterUpdatePanel.create(viewContext, update);
-                    return createRegistrationTab(Dict.SAMPLE_BATCH_REGISTRATION, component);
+                    return createRegistrationTab(getTabTitle(), component);
                 }
 
                 @Override
@@ -359,6 +419,12 @@ public final class ComponentProvider
                 {
                     return new HelpPageIdentifier(HelpPageDomain.SAMPLE, HelpPageAction.IMPORT);
                 }
+
+                @Override
+                public String getTabTitle()
+                {
+                    return getMessage(Dict.SAMPLE_BATCH_REGISTRATION);
+                }
             };
     }
 
@@ -373,7 +439,7 @@ public final class ComponentProvider
                 {
                     DatabaseModificationAwareComponent component =
                             SampleBatchRegisterUpdatePanel.create(viewContext, true);
-                    return createRegistrationTab(Dict.SAMPLE_BATCH_UPDATE, component);
+                    return createRegistrationTab(getTabTitle(), component);
                 }
 
                 @Override
@@ -388,6 +454,12 @@ public final class ComponentProvider
                     return new HelpPageIdentifier(HelpPageDomain.SAMPLE,
                             HelpPageAction.BATCH_UPDATE);
                 }
+
+                @Override
+                public String getTabTitle()
+                {
+                    return getMessage(Dict.SAMPLE_BATCH_UPDATE);
+                }
             };
     }
 
@@ -400,7 +472,7 @@ public final class ComponentProvider
                 {
                     DatabaseModificationAwareComponent component =
                             DataSetBatchUpdatePanel.create(viewContext);
-                    return createRegistrationTab(Dict.DATA_SET_BATCH_UPDATE, component);
+                    return createRegistrationTab(getTabTitle(), component);
                 }
 
                 @Override
@@ -415,6 +487,12 @@ public final class ComponentProvider
                     return new HelpPageIdentifier(HelpPageDomain.DATA_SET,
                             HelpPageAction.BATCH_UPDATE);
                 }
+
+                @Override
+                public String getTabTitle()
+                {
+                    return getMessage(Dict.DATA_SET_BATCH_UPDATE);
+                }
             };
     }
 
@@ -427,7 +505,7 @@ public final class ComponentProvider
                 {
                     DatabaseModificationAwareComponent component =
                             MaterialBatchRegistrationPanel.create(viewContext);
-                    return createRegistrationTab(Dict.MATERIAL_IMPORT, component);
+                    return createRegistrationTab(getTabTitle(), component);
                 }
 
                 @Override
@@ -441,6 +519,12 @@ public final class ComponentProvider
                 {
                     return new HelpPageIdentifier(HelpPageDomain.MATERIAL, HelpPageAction.IMPORT);
                 }
+
+                @Override
+                public String getTabTitle()
+                {
+                    return getMessage(Dict.MATERIAL_IMPORT);
+                }
             };
     }
 
@@ -452,7 +536,7 @@ public final class ComponentProvider
                 public ITabItem create()
                 {
                     Component component = new VocabularyRegistrationForm(viewContext);
-                    return createSimpleTab(Dict.VOCABULARY_REGISTRATION, component, true);
+                    return createSimpleTab(getTabTitle(), component, true);
                 }
 
                 @Override
@@ -467,6 +551,12 @@ public final class ComponentProvider
                     return new HelpPageIdentifier(HelpPageDomain.VOCABULARY,
                             HelpPageAction.REGISTER);
                 }
+
+                @Override
+                public String getTabTitle()
+                {
+                    return getMessage(Dict.VOCABULARY_REGISTRATION);
+                }
             };
     }
 
@@ -479,7 +569,7 @@ public final class ComponentProvider
                 {
                     DatabaseModificationAwareComponent component =
                             ProjectRegistrationForm.create(viewContext);
-                    return createRegistrationTab(Dict.PROJECT_REGISTRATION, component);
+                    return createRegistrationTab(getTabTitle(), component);
                 }
 
                 @Override
@@ -493,6 +583,12 @@ public final class ComponentProvider
                 {
                     return new HelpPageIdentifier(HelpPageDomain.PROJECT, HelpPageAction.REGISTER);
                 }
+
+                @Override
+                public String getTabTitle()
+                {
+                    return getMessage(Dict.PROJECT_REGISTRATION);
+                }
             };
     }
 
@@ -504,7 +600,7 @@ public final class ComponentProvider
                 public ITabItem create()
                 {
                     IDisposableComponent component = VocabularyGrid.create(viewContext);
-                    return createTab(Dict.VOCABULARY_BROWSER, component);
+                    return createTab(getTabTitle(), component);
                 }
 
                 @Override
@@ -518,6 +614,12 @@ public final class ComponentProvider
                 {
                     return new HelpPageIdentifier(HelpPageDomain.VOCABULARY, HelpPageAction.BROWSE);
                 }
+
+                @Override
+                public String getTabTitle()
+                {
+                    return getMessage(Dict.VOCABULARY_BROWSER);
+                }
             };
     }
 
@@ -529,7 +631,7 @@ public final class ComponentProvider
                 public ITabItem create()
                 {
                     IDisposableComponent component = ProjectGrid.create(viewContext);
-                    return createTab(Dict.PROJECT_BROWSER, component);
+                    return createTab(getTabTitle(), component);
                 }
 
                 @Override
@@ -543,6 +645,12 @@ public final class ComponentProvider
                 {
                     return new HelpPageIdentifier(HelpPageDomain.PROJECT, HelpPageAction.BROWSE);
                 }
+
+                @Override
+                public String getTabTitle()
+                {
+                    return getMessage(Dict.PROJECT_BROWSER);
+                }
             };
     }
 
@@ -557,7 +665,7 @@ public final class ComponentProvider
                     IDisposableComponent browser =
                             ExperimentBrowserGrid.create(viewContext, initialProjectOrNull,
                                     initialExperimentTypeOrNull);
-                    return createTab(Dict.EXPERIMENT_BROWSER, browser);
+                    return createTab(getTabTitle(), browser);
                 }
 
                 @Override
@@ -571,6 +679,13 @@ public final class ComponentProvider
                 {
                     return new HelpPageIdentifier(HelpPageDomain.EXPERIMENT, HelpPageAction.BROWSE);
                 }
+
+                // FIXME
+                @Override
+                public String getTabTitle()
+                {
+                    return getMessage(Dict.EXPERIMENT_BROWSER);
+                }
             };
     }
 
@@ -587,7 +702,7 @@ public final class ComponentProvider
                 public ITabItem create()
                 {
                     IDisposableComponent component = PropertyTypeGrid.create(viewContext);
-                    return createTab(Dict.PROPERTY_TYPES, component);
+                    return createTab(getTabTitle(), component);
                 }
 
                 @Override
@@ -602,6 +717,12 @@ public final class ComponentProvider
                     return new HelpPageIdentifier(HelpPageDomain.PROPERTY_TYPE,
                             HelpPageAction.BROWSE);
                 }
+
+                @Override
+                public String getTabTitle()
+                {
+                    return getMessage(Dict.PROPERTY_TYPES);
+                }
             };
     }
 
@@ -614,7 +735,7 @@ public final class ComponentProvider
                 {
                     DatabaseModificationAwareComponent component =
                             PropertyTypeRegistrationForm.create(viewContext);
-                    return createRegistrationTab(Dict.PROPERTY_TYPE_REGISTRATION, component);
+                    return createRegistrationTab(getTabTitle(), component);
                 }
 
                 @Override
@@ -629,6 +750,12 @@ public final class ComponentProvider
                     return new HelpPageIdentifier(HelpPageDomain.PROPERTY_TYPE,
                             HelpPageAction.REGISTER);
                 }
+
+                @Override
+                public String getTabTitle()
+                {
+                    return getMessage(Dict.PROPERTY_TYPE_REGISTRATION);
+                }
             };
     }
 
@@ -640,7 +767,7 @@ public final class ComponentProvider
                 public ITabItem create()
                 {
                     IDisposableComponent component = PropertyTypeAssignmentGrid.create(viewContext);
-                    return createTab(Dict.PROPERTY_TYPE_ASSIGNMENTS, component);
+                    return createTab(getTabTitle(), component);
                 }
 
                 @Override
@@ -654,6 +781,12 @@ public final class ComponentProvider
                 {
                     return new HelpPageIdentifier(HelpPageDomain.ASSIGNMENT, HelpPageAction.BROWSE);
                 }
+
+                @Override
+                public String getTabTitle()
+                {
+                    return getMessage(Dict.PROPERTY_TYPE_ASSIGNMENTS);
+                }
             };
     }
 
@@ -681,7 +814,7 @@ public final class ComponentProvider
     }
 
     private AbstractTabItemFactory getPropertyTypeAssignmentForm(final EntityKind entityKind,
-            final String messageKey)
+            final String tabTitleMessageKey)
     {
         return new AbstractTabItemFactory()
             {
@@ -690,7 +823,7 @@ public final class ComponentProvider
                 {
                     DatabaseModificationAwareComponent component =
                             PropertyTypeAssignmentForm.create(viewContext, entityKind);
-                    return createRegistrationTab(messageKey, component);
+                    return createRegistrationTab(getTabTitle(), component);
                 }
 
                 @Override
@@ -705,6 +838,12 @@ public final class ComponentProvider
                     return new HelpPageIdentifier(HelpPageDomain.ASSIGNMENT,
                             HelpPageAction.REGISTER);
                 }
+
+                @Override
+                public String getTabTitle()
+                {
+                    return getMessage(tabTitleMessageKey);
+                }
             };
     }
 
@@ -716,7 +855,7 @@ public final class ComponentProvider
                 public ITabItem create()
                 {
                     IDisposableComponent browser = DataSetSearchHitGrid.create(viewContext);
-                    return createTab(Dict.DATA_SET_SEARCH, browser);
+                    return createTab(getTabTitle(), browser);
                 }
 
                 @Override
@@ -730,6 +869,13 @@ public final class ComponentProvider
                 {
                     return new HelpPageIdentifier(HelpPageDomain.DATA_SET, HelpPageAction.SEARCH);
                 }
+
+                // FIXME
+                @Override
+                public String getTabTitle()
+                {
+                    return getMessage(Dict.DATA_SET_SEARCH);
+                }
             };
     }
 
@@ -741,7 +887,7 @@ public final class ComponentProvider
                 public ITabItem create()
                 {
                     IDisposableComponent browser = SampleSearchHitGrid.create(viewContext);
-                    return createTab(Dict.SAMPLE_SEARCH, browser);
+                    return createTab(getTabTitle(), browser);
                 }
 
                 @Override
@@ -755,6 +901,13 @@ public final class ComponentProvider
                 {
                     return new HelpPageIdentifier(HelpPageDomain.SAMPLE, HelpPageAction.SEARCH);
                 }
+
+                // FIXME
+                @Override
+                public String getTabTitle()
+                {
+                    return getMessage(Dict.SAMPLE_SEARCH);
+                }
             };
     }
 
@@ -766,7 +919,7 @@ public final class ComponentProvider
                 public ITabItem create()
                 {
                     IDisposableComponent component = SampleTypeGrid.create(viewContext);
-                    return createTab(Dict.SAMPLE_TYPES, component);
+                    return createTab(getTabTitle(), component);
                 }
 
                 @Override
@@ -781,6 +934,12 @@ public final class ComponentProvider
                     return new HelpPageIdentifier(HelpPageDomain.SAMPLE_TYPE, HelpPageAction.BROWSE);
                 }
 
+                @Override
+                public String getTabTitle()
+                {
+                    return getMessage(Dict.SAMPLE_TYPES);
+                }
+
             };
     }
 
@@ -792,7 +951,7 @@ public final class ComponentProvider
                 public ITabItem create()
                 {
                     IDisposableComponent component = MaterialTypeGrid.create(viewContext);
-                    return createTab(Dict.MATERIAL_TYPES, component);
+                    return createTab(getTabTitle(), component);
                 }
 
                 @Override
@@ -807,6 +966,12 @@ public final class ComponentProvider
                     return new HelpPageIdentifier(HelpPageDomain.MATERIAL_TYPE,
                             HelpPageAction.BROWSE);
                 }
+
+                @Override
+                public String getTabTitle()
+                {
+                    return getMessage(Dict.MATERIAL_TYPES);
+                }
             };
     }
 
@@ -818,7 +983,7 @@ public final class ComponentProvider
                 public ITabItem create()
                 {
                     IDisposableComponent component = ExperimentTypeGrid.create(viewContext);
-                    return createTab(Dict.EXPERIMENT_TYPES, component);
+                    return createTab(getTabTitle(), component);
                 }
 
                 @Override
@@ -833,6 +998,12 @@ public final class ComponentProvider
                     return new HelpPageIdentifier(HelpPageDomain.EXPERIMENT_TYPE,
                             HelpPageAction.BROWSE);
                 }
+
+                @Override
+                public String getTabTitle()
+                {
+                    return getMessage(Dict.EXPERIMENT_TYPES);
+                }
             };
     }
 
@@ -844,7 +1015,7 @@ public final class ComponentProvider
                 public ITabItem create()
                 {
                     IDisposableComponent component = DataSetTypeGrid.create(viewContext);
-                    return createTab(Dict.DATA_SET_TYPES, component);
+                    return createTab(getTabTitle(), component);
                 }
 
                 @Override
@@ -859,6 +1030,12 @@ public final class ComponentProvider
                     return new HelpPageIdentifier(HelpPageDomain.DATA_SET_TYPE,
                             HelpPageAction.BROWSE);
                 }
+
+                @Override
+                public String getTabTitle()
+                {
+                    return getMessage(Dict.DATA_SET_TYPES);
+                }
             };
     }
 
@@ -871,7 +1048,7 @@ public final class ComponentProvider
                 {
                     DatabaseModificationAwareComponent component =
                             DataSetUploadForm.create(viewContext);
-                    return createRegistrationTab(Dict.DATA_SET_UPLOAD, component);
+                    return createRegistrationTab(getTabTitle(), component);
                 }
 
                 @Override
@@ -885,6 +1062,12 @@ public final class ComponentProvider
                 {
                     return new HelpPageIdentifier(HelpPageDomain.DATA_SET, HelpPageAction.REGISTER);
                 }
+
+                @Override
+                public String getTabTitle()
+                {
+                    return getMessage(Dict.DATA_SET_UPLOAD);
+                }
             };
     }
 
@@ -896,7 +1079,7 @@ public final class ComponentProvider
                 public ITabItem create()
                 {
                     IDisposableComponent component = FileFormatTypeGrid.create(viewContext);
-                    return createTab(Dict.FILE_FORMAT_TYPES, component);
+                    return createTab(getTabTitle(), component);
                 }
 
                 @Override
@@ -910,6 +1093,12 @@ public final class ComponentProvider
                 {
                     return new HelpPageIdentifier(HelpPageDomain.FILE_TYPE, HelpPageAction.BROWSE);
                 }
+
+                @Override
+                public String getTabTitle()
+                {
+                    return getMessage(Dict.FILE_FORMAT_TYPES);
+                }
             };
     }
 
@@ -930,8 +1119,7 @@ public final class ComponentProvider
                 @Override
                 public ITabItem create()
                 {
-                    return createSimpleTab(Dict.LOGGING_CONSOLE,
-                            LoggingConsole.create(viewContext), false);
+                    return createSimpleTab(getTabTitle(), LoggingConsole.create(viewContext), false);
                 }
 
                 @Override
@@ -948,6 +1136,12 @@ public final class ComponentProvider
                     return LoggingConsole.ID;
                 }
 
+                @Override
+                public String getTabTitle()
+                {
+                    return getMessage(Dict.LOGGING_CONSOLE);
+                }
+
             };
     }
 
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/framework/DispatcherHelper.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/framework/DispatcherHelper.java
index 3a2715792cb0e25b6bee3c21f530ccb825b5bde9..66a55ecaf1b49e1c8d8e1dca6fe3fbf73df0edce 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/framework/DispatcherHelper.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/framework/DispatcherHelper.java
@@ -19,6 +19,9 @@ package ch.systemsx.cisd.openbis.generic.client.web.client.application.framework
 import com.extjs.gxt.ui.client.event.EventType;
 import com.extjs.gxt.ui.client.mvc.AppEvent;
 import com.extjs.gxt.ui.client.mvc.Dispatcher;
+import com.google.gwt.user.client.Window;
+
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.CommonViewContext;
 
 /**
  * A helper for using {@link Dispatcher}.
@@ -49,6 +52,8 @@ public final class DispatcherHelper
     {
         AppEvent event = createEvent(AppEvents.NAVI_EVENT, tabItemFactory);
         Dispatcher.get().dispatch(event);
+        Window.setTitle(tabItemFactory.getTabTitle() + " "
+                + CommonViewContext.ClientStaticState.getPageTitleSuffix());
     }
 
     private final static AppEvent createEvent(EventType eventType, Object data)
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/locator/DataSetSearchLocatorResolver.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/locator/DataSetSearchLocatorResolver.java
index 39d1dd8ea1a7d2e354e4af75a29480a9b8b90b49..c0aabb40622f3f6d88e8b5e076cde41b8d8595e1 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/locator/DataSetSearchLocatorResolver.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/locator/DataSetSearchLocatorResolver.java
@@ -97,5 +97,11 @@ public class DataSetSearchLocatorResolver
         {
             return new HelpPageIdentifier(HelpPageDomain.DATA_SET, HelpPageAction.SEARCH);
         }
+
+        @Override
+        public String getTabTitle()
+        {
+            return getMessage(Dict.DATA_SET_SEARCH);
+        }
     }
 }
\ No newline at end of file
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/locator/SampleSearchLocatorResolver.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/locator/SampleSearchLocatorResolver.java
index 67db705835889fceb769c8bb7554e7f44b8abaf1..87a6c54fe90c87caef566f00f03cc0761968a74f 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/locator/SampleSearchLocatorResolver.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/locator/SampleSearchLocatorResolver.java
@@ -155,5 +155,11 @@ public class SampleSearchLocatorResolver
         {
             return new HelpPageIdentifier(HelpPageDomain.SAMPLE, HelpPageAction.SEARCH);
         }
+
+        @Override
+        public String getTabTitle()
+        {
+            return getMessage(Dict.SAMPLE_SEARCH);
+        }
     }
 }
\ No newline at end of file
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/menu/TabActionMenuItemFactory.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/menu/TabActionMenuItemFactory.java
index 69607940a1a2da47ac92cb7a785101c6c89d582a..bc853a2fe908b250d6f6bb1db02adedf3735f05b 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/menu/TabActionMenuItemFactory.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/menu/TabActionMenuItemFactory.java
@@ -25,8 +25,6 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.help.HelpP
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.IMessageProvider;
 
 /**
- * 
- *
  * @author Franz-Josef Elmer
  */
 public class TabActionMenuItemFactory
@@ -59,8 +57,7 @@ public class TabActionMenuItemFactory
                 @Override
                 public ITabItem create()
                 {
-                    String tabItemText = viewContext.getMessage(tabLabelKey);
-                    return DefaultTabItem.create(tabItemText, definition
+                    return DefaultTabItem.create(getTabTitle(), definition
                             .createComponent(viewContext), viewContext, false);
                 }
 
@@ -69,6 +66,12 @@ public class TabActionMenuItemFactory
                 {
                     return HelpPageIdentifier.createSpecific(definition.getHelpPageTitle());
                 }
+
+                @Override
+                public String getTabTitle()
+                {
+                    return viewContext.getMessage(tabLabelKey);
+                }
             });
 
     }
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/AuthorizationGroupGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/AuthorizationGroupGrid.java
index 97df485249d3c1cd96a20bdbbb302569e320fa74..45d062708ba1e0a5ad62ac80884e794e29c42279 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/AuthorizationGroupGrid.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/AuthorizationGroupGrid.java
@@ -202,7 +202,8 @@ public class AuthorizationGroupGrid extends AbstractSimpleBrowserGrid<Authorizat
     }
 
     @Override
-    protected void showEntityViewer(final AuthorizationGroup group, boolean editMode, boolean inBackground)
+    protected void showEntityViewer(final AuthorizationGroup group, boolean editMode,
+            boolean inBackground)
     {
         final AbstractTabItemFactory tabFactory = new AbstractTabItemFactory()
             {
@@ -211,9 +212,7 @@ public class AuthorizationGroupGrid extends AbstractSimpleBrowserGrid<Authorizat
                 {
                     IDisposableComponent component =
                             PersonGrid.createForAuthorizationGroup(viewContext, group);
-                    String tabTitle =
-                            viewContext.getMessage(Dict.AUTHORIZATION_GROUP_USERS, group.getCode());
-                    return DefaultTabItem.create(tabTitle, component, viewContext);
+                    return DefaultTabItem.create(getTabTitle(), component, viewContext);
                 }
 
                 @Override
@@ -228,6 +227,12 @@ public class AuthorizationGroupGrid extends AbstractSimpleBrowserGrid<Authorizat
                     return new HelpPageIdentifier(HelpPageDomain.AUTHORIZATION_GROUPS,
                             HelpPageAction.VIEW);
                 }
+
+                @Override
+                public String getTabTitle()
+                {
+                    return viewContext.getMessage(Dict.AUTHORIZATION_GROUP_USERS, group.getCode());
+                }
             };
         tabFactory.setInBackground(inBackground);
         DispatcherHelper.dispatchNaviEvent(tabFactory);
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/attachment/AttachmentBrowser.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/attachment/AttachmentBrowser.java
index 076d72f542265d22c7660f7e5c417525df699647..90068f0dca61ed3d9857ffca917f6ce0cdb78848 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/attachment/AttachmentBrowser.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/attachment/AttachmentBrowser.java
@@ -296,9 +296,8 @@ public class AttachmentBrowser extends AbstractSimpleBrowserGrid<AttachmentVersi
                 @Override
                 public ITabItem create()
                 {
-                    final String tabTitle = helper.createTabTitle();
                     final Component component = helper.createVersionsPanel(versions);
-                    return DefaultTabItem.createUnaware(tabTitle, component, false);
+                    return DefaultTabItem.createUnaware(getTabTitle(), component, false);
                 }
 
                 @Override
@@ -312,6 +311,12 @@ public class AttachmentBrowser extends AbstractSimpleBrowserGrid<AttachmentVersi
                 {
                     return new HelpPageIdentifier(HelpPageDomain.ATTACHMENTS, HelpPageAction.VIEW);
                 }
+
+                @Override
+                public String getTabTitle()
+                {
+                    return helper.createTabTitle();
+                }
             };
         tabFactory.setInBackground(inBackground);
         DispatcherHelper.dispatchNaviEvent(tabFactory);
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/DataSetReportGenerator.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/DataSetReportGenerator.java
index 9c271d76735d220dfdfaaf967218c1889ac259ab..41255f6c68f1ef80c09efbf04568f54750a29843 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/DataSetReportGenerator.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/DataSetReportGenerator.java
@@ -85,9 +85,7 @@ public class DataSetReportGenerator
                             @Override
                             public ITabItem create()
                             {
-                                final String reportTitle =
-                                        service.getLabel() + " (" + reportDate + ")";
-                                return DefaultTabItem.create(reportTitle, reportComponent,
+                                return DefaultTabItem.create(getTabTitle(), reportComponent,
                                         viewContext);
                             }
 
@@ -105,6 +103,12 @@ public class DataSetReportGenerator
                                         HelpPageAction.REPORT);
                             }
 
+                            @Override
+                            public String getTabTitle()
+                            {
+                                return service.getLabel() + " (" + reportDate + ")";
+                            }
+
                         };
                     DispatcherHelper.dispatchNaviEvent(tabFactory);
                 }
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/listener/OpenEntityDetailsTabAction.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/listener/OpenEntityDetailsTabAction.java
index 324aa455cfbb40dc3d903895bfd9ee7fc738b30a..3f0161c93c0b3480c20a36bb89ea5adf99dc52ea 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/listener/OpenEntityDetailsTabAction.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/listener/OpenEntityDetailsTabAction.java
@@ -16,8 +16,6 @@
 
 package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.listener;
 
-import com.google.gwt.user.client.Window;
-
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.AbstractTabItemFactory;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DispatcherHelper;
@@ -69,12 +67,6 @@ public final class OpenEntityDetailsTabAction implements IDelegatedAction
                 createClientPlugin.createEntityViewer(entityType, entity);
         tabView.setInBackground(keyPressed);
 
-        if (viewContext.isSimpleMode())
-        {
-            Window.setTitle(entityKind.getDescription() + ": " + entity.getCode() + " ["
-                    + entityType + "]" + " - " + viewContext.getBasicPageTitle());
-        }
-
         DispatcherHelper.dispatchNaviEvent(tabView);
     }
 }
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/listener/OpenEntityDetailsTabHelper.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/listener/OpenEntityDetailsTabHelper.java
index 1e6e5f6e9514d96489efe285792bfbe7ff7a7860..81d5db2fb8961e2d43d5c812d4e1dd76b06a004b 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/listener/OpenEntityDetailsTabHelper.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/listener/OpenEntityDetailsTabHelper.java
@@ -102,7 +102,7 @@ public class OpenEntityDetailsTabHelper
                 {
                     final DatabaseModificationAwareComponent viewer =
                             ProjectViewer.create(viewContext.getCommonViewContext(), projectId);
-                    return DefaultTabItem.create(getViewerTitle(), viewer, viewContext, false);
+                    return DefaultTabItem.create(getTabTitle(), viewer, viewContext, false);
                 }
 
                 @Override
@@ -111,7 +111,8 @@ public class OpenEntityDetailsTabHelper
                     return ProjectViewer.createId(projectId);
                 }
 
-                private String getViewerTitle()
+                @Override
+                public String getTabTitle()
                 {
                     return AbstractViewer.getTitle(viewContext, Dict.PROJECT, project);
                 }
@@ -121,6 +122,7 @@ public class OpenEntityDetailsTabHelper
                 {
                     return new HelpPageIdentifier(HelpPageDomain.PROJECT, HelpPageAction.VIEW);
                 }
+
             };
         tabFactory.setInBackground(keyPressed);
         DispatcherHelper.dispatchNaviEvent(tabFactory);
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/project/ProjectGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/project/ProjectGrid.java
index 306211ba14822e13c707b0e5c2bf5593306083e7..00e65a442ccef2e67d5a443dfc14c0129e5e8fff 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/project/ProjectGrid.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/project/ProjectGrid.java
@@ -207,7 +207,7 @@ public class ProjectGrid extends AbstractSimpleBrowserGrid<Project>
                     {
                         final DatabaseModificationAwareComponent viewer =
                                 ProjectViewer.create(viewContext, projectId);
-                        return DefaultTabItem.create(getViewerTitle(), viewer, viewContext, false);
+                        return DefaultTabItem.create(getTabTitle(), viewer, viewContext, false);
                     }
 
                     @Override
@@ -216,7 +216,8 @@ public class ProjectGrid extends AbstractSimpleBrowserGrid<Project>
                         return ProjectViewer.createId(projectId);
                     }
 
-                    private String getViewerTitle()
+                    @Override
+                    public String getTabTitle()
                     {
                         return AbstractViewer.getTitle(viewContext, Dict.PROJECT, project);
                     }
@@ -226,6 +227,7 @@ public class ProjectGrid extends AbstractSimpleBrowserGrid<Project>
                     {
                         return new HelpPageIdentifier(HelpPageDomain.PROJECT, HelpPageAction.VIEW);
                     }
+
                 };
         } else
         {
@@ -236,7 +238,7 @@ public class ProjectGrid extends AbstractSimpleBrowserGrid<Project>
                     {
                         DatabaseModificationAwareComponent component =
                                 ProjectEditForm.create(viewContext, projectId);
-                        return DefaultTabItem.create(getEditTitle(), component, viewContext, true);
+                        return DefaultTabItem.create(getTabTitle(), component, viewContext, true);
                     }
 
                     @Override
@@ -245,7 +247,8 @@ public class ProjectGrid extends AbstractSimpleBrowserGrid<Project>
                         return ProjectEditForm.createId(projectId);
                     }
 
-                    private String getEditTitle()
+                    @Override
+                    public String getTabTitle()
                     {
                         return AbstractRegistrationForm.getEditTitle(viewContext, Dict.PROJECT,
                                 project);
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/vocabulary/VocabularyGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/vocabulary/VocabularyGrid.java
index da26f99e68b77f2633e6ae7cb427fd033dafdff1..6b58b11c341d3c34e7da710d231c3c5ba905f05a 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/vocabulary/VocabularyGrid.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/vocabulary/VocabularyGrid.java
@@ -227,10 +227,7 @@ public class VocabularyGrid extends AbstractSimpleBrowserGrid<Vocabulary>
                 {
                     IDisposableComponent component =
                             VocabularyTermGrid.create(viewContext, vocabulary);
-                    String tabTitle =
-                            viewContext.getMessage(Dict.VOCABULARY_TERMS_BROWSER, vocabulary
-                                    .getCode());
-                    return DefaultTabItem.create(tabTitle, component, viewContext);
+                    return DefaultTabItem.create(getTabTitle(), component, viewContext);
                 }
 
                 @Override
@@ -244,6 +241,13 @@ public class VocabularyGrid extends AbstractSimpleBrowserGrid<Vocabulary>
                 {
                     return new HelpPageIdentifier(HelpPageDomain.TERM, HelpPageAction.BROWSE);
                 }
+
+                @Override
+                public String getTabTitle()
+                {
+                    return viewContext.getMessage(Dict.VOCABULARY_TERMS_BROWSER, vocabulary
+                            .getCode());
+                }
             };
         tabFactory.setInBackground(inBackground);
         DispatcherHelper.dispatchNaviEvent(tabFactory);
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/demo/client/web/client/application/ClientPluginFactory.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/demo/client/web/client/application/ClientPluginFactory.java
index 45cd81773cfecb181f894957bb1a386d422f2109..b707d2c17fde522c299bfa7f5ad832bdc5458973 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/demo/client/web/client/application/ClientPluginFactory.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/demo/client/web/client/application/ClientPluginFactory.java
@@ -124,8 +124,7 @@ public final class ClientPluginFactory extends AbstractClientPluginFactory<DemoV
                     {
                         final DemoSampleViewer sampleViewer =
                                 new DemoSampleViewer(getViewContext(), sampleId);
-                        return DefaultTabItem.createUnaware(identifiable.getCode(), sampleViewer,
-                                false);
+                        return DefaultTabItem.createUnaware(getTabTitle(), sampleViewer, false);
                     }
 
                     @Override
@@ -139,6 +138,12 @@ public final class ClientPluginFactory extends AbstractClientPluginFactory<DemoV
                     {
                         return new HelpPageIdentifier(HelpPageDomain.SAMPLE, HelpPageAction.VIEW);
                     }
+
+                    @Override
+                    public String getTabTitle()
+                    {
+                        return identifiable.getCode();
+                    }
                 };
         }
 
@@ -168,7 +173,7 @@ public final class ClientPluginFactory extends AbstractClientPluginFactory<DemoV
                     @Override
                     public ITabItem create()
                     {
-                        return createDummyTab(identifiable.getCode());
+                        return createDummyTab(getTabTitle());
                     }
 
                     @Override
@@ -182,6 +187,12 @@ public final class ClientPluginFactory extends AbstractClientPluginFactory<DemoV
                     {
                         return new HelpPageIdentifier(HelpPageDomain.SAMPLE, HelpPageAction.EDIT);
                     }
+
+                    @Override
+                    public String getTabTitle()
+                    {
+                        return identifiable.getCode();
+                    }
                 };
         }
 
@@ -204,7 +215,7 @@ public final class ClientPluginFactory extends AbstractClientPluginFactory<DemoV
                     @Override
                     public ITabItem create()
                     {
-                        return createDummyTab(identifiable.getCode());
+                        return createDummyTab(getTabTitle());
                     }
 
                     @Override
@@ -219,6 +230,12 @@ public final class ClientPluginFactory extends AbstractClientPluginFactory<DemoV
                         return new HelpPageIdentifier(HelpPageDomain.EXPERIMENT,
                                 HelpPageAction.VIEW);
                     }
+
+                    @Override
+                    public String getTabTitle()
+                    {
+                        return identifiable.getCode();
+                    }
                 };
         }
     }
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/demo/client/web/client/application/module/TopMenuItemDemoModuleMenu.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/demo/client/web/client/application/module/TopMenuItemDemoModuleMenu.java
index e325c242a6c65e78427584d7c5cc28a167c25772..f070c4212ad9a7c8085f0ac96fdf92f6f4a5f4ee 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/demo/client/web/client/application/module/TopMenuItemDemoModuleMenu.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/demo/client/web/client/application/module/TopMenuItemDemoModuleMenu.java
@@ -52,8 +52,8 @@ public class TopMenuItemDemoModuleMenu extends MenuItem
         @Override
         public ITabItem create()
         {
-            return DefaultTabItem.create(viewContext.getMessage(Dict.STATISTICS_DEMO_TAB_HEADER),
-                    StatisticsWidget.create(viewContext), viewContext, false);
+            return DefaultTabItem.create(getTabTitle(), StatisticsWidget.create(viewContext),
+                    viewContext, false);
         }
 
         @Override
@@ -67,6 +67,12 @@ public class TopMenuItemDemoModuleMenu extends MenuItem
         {
             return HelpPageIdentifier.createSpecific("Experiment Statistics");
         }
+
+        @Override
+        public String getTabTitle()
+        {
+            return viewContext.getMessage(Dict.STATISTICS_DEMO_TAB_HEADER);
+        }
     }
 
     public static enum ActionMenuKind implements IActionMenuItem
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/ClientPluginFactory.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/ClientPluginFactory.java
index fa4530924903e148c3f8787eb516b9a09be0f230..817f51f127dde3382c56369fd69526249a31695c 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/ClientPluginFactory.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/ClientPluginFactory.java
@@ -154,8 +154,8 @@ public final class ClientPluginFactory extends AbstractClientPluginFactory<Gener
                     {
                         final DatabaseModificationAwareComponent sampleViewer =
                                 GenericSampleViewer.create(getViewContext(), identifiable);
-                        return DefaultTabItem.create(getViewerTitle(Dict.SAMPLE, identifiable),
-                                sampleViewer, getViewContext(), false);
+                        return DefaultTabItem.create(getTabTitle(), sampleViewer, getViewContext(),
+                                false);
                     }
 
                     @Override
@@ -169,6 +169,12 @@ public final class ClientPluginFactory extends AbstractClientPluginFactory<Gener
                     {
                         return new HelpPageIdentifier(HelpPageDomain.SAMPLE, HelpPageAction.VIEW);
                     }
+
+                    @Override
+                    public String getTabTitle()
+                    {
+                        return getViewerTitle(Dict.SAMPLE, identifiable);
+                    }
                 };
         }
 
@@ -199,8 +205,8 @@ public final class ClientPluginFactory extends AbstractClientPluginFactory<Gener
                     {
                         DatabaseModificationAwareComponent component =
                                 GenericSampleEditForm.create(getViewContext(), identifiable);
-                        String title = getEditorTitle(Dict.SAMPLE, identifiable);
-                        return DefaultTabItem.create(title, component, getViewContext(), true);
+                        return DefaultTabItem.create(getTabTitle(), component, getViewContext(),
+                                true);
                     }
 
                     @Override
@@ -214,6 +220,12 @@ public final class ClientPluginFactory extends AbstractClientPluginFactory<Gener
                     {
                         return new HelpPageIdentifier(HelpPageDomain.SAMPLE, HelpPageAction.EDIT);
                     }
+
+                    @Override
+                    public String getTabTitle()
+                    {
+                        return getEditorTitle(Dict.SAMPLE, identifiable);
+                    }
                 };
         }
 
@@ -241,8 +253,8 @@ public final class ClientPluginFactory extends AbstractClientPluginFactory<Gener
                     {
                         final DatabaseModificationAwareComponent materialViewer =
                                 GenericMaterialViewer.create(getViewContext(), techId);
-                        return DefaultTabItem.create(getViewerTitle(Dict.MATERIAL, identifiable),
-                                materialViewer, getViewContext(), false);
+                        return DefaultTabItem.create(getTabTitle(), materialViewer,
+                                getViewContext(), false);
                     }
 
                     @Override
@@ -256,6 +268,12 @@ public final class ClientPluginFactory extends AbstractClientPluginFactory<Gener
                     {
                         return new HelpPageIdentifier(HelpPageDomain.MATERIAL, HelpPageAction.VIEW);
                     }
+
+                    @Override
+                    public String getTabTitle()
+                    {
+                        return getViewerTitle(Dict.MATERIAL, identifiable);
+                    }
                 };
         }
 
@@ -270,8 +288,8 @@ public final class ClientPluginFactory extends AbstractClientPluginFactory<Gener
                         DatabaseModificationAwareComponent component =
                                 GenericMaterialEditForm
                                         .create(getViewContext(), identifiable, true);
-                        String title = getEditorTitle(Dict.MATERIAL, identifiable);
-                        return DefaultTabItem.create(title, component, getViewContext(), true);
+                        return DefaultTabItem.create(getTabTitle(), component, getViewContext(),
+                                true);
                     }
 
                     @Override
@@ -285,6 +303,12 @@ public final class ClientPluginFactory extends AbstractClientPluginFactory<Gener
                     {
                         return new HelpPageIdentifier(HelpPageDomain.MATERIAL, HelpPageAction.EDIT);
                     }
+
+                    @Override
+                    public String getTabTitle()
+                    {
+                        return getEditorTitle(Dict.MATERIAL, identifiable);
+                    }
                 };
         }
     }
@@ -309,8 +333,8 @@ public final class ClientPluginFactory extends AbstractClientPluginFactory<Gener
                         final DatabaseModificationAwareComponent experimentViewer =
                                 GenericExperimentViewer.create(getViewContext(), experimentType,
                                         experimentId);
-                        return DefaultTabItem.create(getViewerTitle(Dict.EXPERIMENT, experimentId),
-                                experimentViewer, getViewContext(), false);
+                        return DefaultTabItem.create(getTabTitle(), experimentViewer,
+                                getViewContext(), false);
                     }
 
                     @Override
@@ -325,6 +349,12 @@ public final class ClientPluginFactory extends AbstractClientPluginFactory<Gener
                         return new HelpPageIdentifier(HelpPageDomain.EXPERIMENT,
                                 HelpPageAction.VIEW);
                     }
+
+                    @Override
+                    public String getTabTitle()
+                    {
+                        return getViewerTitle(Dict.EXPERIMENT, experimentId);
+                    }
                 };
         }
 
@@ -347,8 +377,8 @@ public final class ClientPluginFactory extends AbstractClientPluginFactory<Gener
                     {
                         DatabaseModificationAwareComponent component =
                                 GenericExperimentEditForm.create(getViewContext(), identifiable);
-                        String title = getEditorTitle(Dict.EXPERIMENT, identifiable);
-                        return DefaultTabItem.create(title, component, getViewContext(), true);
+                        return DefaultTabItem.create(getTabTitle(), component, getViewContext(),
+                                true);
                     }
 
                     @Override
@@ -364,6 +394,12 @@ public final class ClientPluginFactory extends AbstractClientPluginFactory<Gener
                         return new HelpPageIdentifier(HelpPageDomain.EXPERIMENT,
                                 HelpPageAction.EDIT);
                     }
+
+                    @Override
+                    public String getTabTitle()
+                    {
+                        return getEditorTitle(Dict.EXPERIMENT, identifiable);
+                    }
                 };
         }
     }
@@ -383,8 +419,8 @@ public final class ClientPluginFactory extends AbstractClientPluginFactory<Gener
                     {
                         final DatabaseModificationAwareComponent dataSetViewer =
                                 GenericDataSetViewer.create(getViewContext(), identifiable);
-                        return DefaultTabItem.create(getViewerTitle(Dict.DATA_SET, identifiable),
-                                dataSetViewer, getViewContext(), false);
+                        return DefaultTabItem.create(getTabTitle(), dataSetViewer,
+                                getViewContext(), false);
                     }
 
                     @Override
@@ -398,6 +434,12 @@ public final class ClientPluginFactory extends AbstractClientPluginFactory<Gener
                     {
                         return new HelpPageIdentifier(HelpPageDomain.DATA_SET, HelpPageAction.VIEW);
                     }
+
+                    @Override
+                    public String getTabTitle()
+                    {
+                        return getViewerTitle(Dict.DATA_SET, identifiable);
+                    }
                 };
         }
 
@@ -411,8 +453,8 @@ public final class ClientPluginFactory extends AbstractClientPluginFactory<Gener
                     {
                         DatabaseModificationAwareComponent component =
                                 GenericDataSetEditForm.create(getViewContext(), identifiable);
-                        String title = getEditorTitle(Dict.DATA_SET, identifiable);
-                        return DefaultTabItem.create(title, component, getViewContext(), true);
+                        return DefaultTabItem.create(getTabTitle(), component, getViewContext(),
+                                true);
                     }
 
                     @Override
@@ -426,6 +468,12 @@ public final class ClientPluginFactory extends AbstractClientPluginFactory<Gener
                     {
                         return new HelpPageIdentifier(HelpPageDomain.DATA_SET, HelpPageAction.EDIT);
                     }
+
+                    @Override
+                    public String getTabTitle()
+                    {
+                        return getEditorTitle(Dict.DATA_SET, identifiable);
+                    }
                 };
         }
 
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/query/client/web/client/application/locator/QueryLocatorResolver.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/query/client/web/client/application/locator/QueryLocatorResolver.java
index 9b849f96be9cbc1922e0474796e2fdb742a6fcfb..84a4c9842ad4a251a701b6dba89b708e9b220721 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/query/client/web/client/application/locator/QueryLocatorResolver.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/query/client/web/client/application/locator/QueryLocatorResolver.java
@@ -73,8 +73,7 @@ public class QueryLocatorResolver extends AbstractViewLocatorResolver
                 @Override
                 public ITabItem create()
                 {
-                    String tabItemText = viewContext.getMessage(tabLabelKey);
-                    return DefaultTabItem.create(tabItemText, component, viewContext, false);
+                    return DefaultTabItem.create(getTabTitle(), component, viewContext, false);
                 }
 
                 @Override
@@ -82,6 +81,12 @@ public class QueryLocatorResolver extends AbstractViewLocatorResolver
                 {
                     return HelpPageIdentifier.createSpecific(definition.getHelpPageTitle());
                 }
+
+                @Override
+                public String getTabTitle()
+                {
+                    return viewContext.getMessage(tabLabelKey);
+                }
             };
         DispatcherHelper.dispatchNaviEvent(tabItemFactory);
     }