diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/GlobalSearchTabItemFactory.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/GlobalSearchTabItemFactory.java
index 13006aa047b70ee966014fc5357f156bcec4d21b..98ed64301bc0594b6c0d71dc3ef8f6f6ec1af3f7 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/GlobalSearchTabItemFactory.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/GlobalSearchTabItemFactory.java
@@ -21,6 +21,7 @@ import com.extjs.gxt.ui.client.widget.MessageBox;
 import ch.systemsx.cisd.openbis.generic.client.web.client.ICommonClientServiceAsync;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.AbstractTabItemFactory;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DefaultTabItem;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DispatcherHelper;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.ITabItem;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.help.HelpPageIdentifier;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.help.HelpPageIdentifier.HelpPageAction;
@@ -34,11 +35,34 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.dto.SearchableEntity;
 public class GlobalSearchTabItemFactory
 {
 
-    public static AbstractTabItemFactory create(
+
+    /**
+     * opens a new tab if there are search results.
+     */
+    public static void openTabIfEntitiesFound(
+            final IViewContext<ICommonClientServiceAsync> viewContext,
+            final SearchableEntity searchableEntity, final String queryText)
+    {
+
+        openTab(viewContext, searchableEntity, queryText, false);
+    }
+
+    /**
+     * always opens a new tab, regardless if there were any search entities found.
+     */
+    public static void openTab(
             final IViewContext<ICommonClientServiceAsync> viewContext,
             final SearchableEntity searchableEntity, final String queryText)
     {
 
+        openTab(viewContext, searchableEntity, queryText, true);
+    }
+
+    private static void openTab(final IViewContext<ICommonClientServiceAsync> viewContext,
+            final SearchableEntity searchableEntity, final String queryText,
+            final boolean openIfNoEntitiesFound)
+    {
+
         final boolean useWildcardSearchMode =
                 viewContext.getDisplaySettingsManager().isUseWildcardSearchMode();
 
@@ -56,10 +80,6 @@ public class GlobalSearchTabItemFactory
             {
                 public void postRefresh(boolean wasSuccessful)
                 {
-                    if (wasSuccessful == false)
-                    {
-                        return;
-                    }
                     if (matchingEntitiesGrid.getRowNumber() == 0)
                     {
                         Object[] msgParameters = (useWildcardSearchMode == true) ? new String[]
@@ -67,15 +87,20 @@ public class GlobalSearchTabItemFactory
                             { queryText, "not", "on" };
                         MessageBox.alert(viewContext.getMessage(Dict.MESSAGEBOX_WARNING),
                                 viewContext.getMessage(Dict.NO_MATCH, msgParameters), null);
-                        return;
+
+                        if (openIfNoEntitiesFound == false)
+                        {
+                            return;
+                        }
                     }
-                }
-            });
 
-        return tabFactory;
+                    DispatcherHelper.dispatchNaviEvent(tabFactory);
 
+                }
+            });
     }
 
+
     private static String createTabTitle(IViewContext<ICommonClientServiceAsync> viewContext,
             String chosenEntity, String queryText)
     {
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 cedd481bf00394b005c2be8061d279562e32e001..34f568988be3841d93cb8d101eb04c81931bce57 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
@@ -24,8 +24,6 @@ import com.google.gwt.user.client.History;
 
 import ch.systemsx.cisd.common.shared.basic.utils.StringUtils;
 import ch.systemsx.cisd.openbis.generic.client.web.client.ICommonClientServiceAsync;
-import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.AbstractTabItemFactory;
-import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DispatcherHelper;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.locator.GlobalSearchLocatorResolver;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.locator.ViewLocator;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.EnterKeyListener;
@@ -143,17 +141,13 @@ public final class SearchWidget extends LayoutContainer
         if (viewContext.isSimpleMode())
         {
             // redirect to another URL
-            String entityDescription =
- (selectedEntity != null) ? selectedEntity.getName() : null;
+            String entityDescription = (selectedEntity != null) ? selectedEntity.getName() : null;
             String url = createGlobalSearchLink(entityDescription, queryText);
             History.newItem(url);
         } else
         {
-
-            AbstractTabItemFactory tabItemFactory =
-                    GlobalSearchTabItemFactory.create(viewContext, selectedEntity, queryText);
-
-            DispatcherHelper.dispatchNaviEvent(tabItemFactory);
+            GlobalSearchTabItemFactory.openTabIfEntitiesFound(viewContext, selectedEntity,
+                    queryText);
         }
 
     }
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/locator/GlobalSearchLocatorResolver.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/locator/GlobalSearchLocatorResolver.java
index 77e4ca1624065686b0c28e5cd24972b80b533d42..87ff512707c6834b7d58fbfed5db04d0e553b751 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/locator/GlobalSearchLocatorResolver.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/locator/GlobalSearchLocatorResolver.java
@@ -3,8 +3,6 @@ package ch.systemsx.cisd.openbis.generic.client.web.client.application.locator;
 import ch.systemsx.cisd.openbis.generic.client.web.client.ICommonClientServiceAsync;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.GlobalSearchTabItemFactory;
 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;
 import ch.systemsx.cisd.openbis.generic.client.web.client.dto.SearchableEntity;
 import ch.systemsx.cisd.openbis.generic.client.web.client.exception.UserFailureException;
 
@@ -37,10 +35,7 @@ public class GlobalSearchLocatorResolver extends AbstractViewLocatorResolver
         // TODO KE: 2011-02-16 we should parse queries that can contain spaces
         final String queryText = getMandatoryParameter(locator, QUERY_PARAMETER_KEY);
 
-        AbstractTabItemFactory tabItemFactory =
-                GlobalSearchTabItemFactory.create(viewContext, selectedSearchableEntity, queryText);
-
-        DispatcherHelper.dispatchNaviEvent(tabItemFactory);
+        GlobalSearchTabItemFactory.openTab(viewContext, selectedSearchableEntity, queryText);
     }