diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/search/DetailedSearchWindow.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/search/DetailedSearchWindow.java
index beeb227bfb06a4b10cf9a2ef974428e633d5dc22..04ce4459698ded727a34d263042de1f759d4411f 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/search/DetailedSearchWindow.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/search/DetailedSearchWindow.java
@@ -10,10 +10,12 @@ import com.extjs.gxt.ui.client.event.ComponentEvent;
 import com.extjs.gxt.ui.client.event.EventType;
 import com.extjs.gxt.ui.client.event.KeyboardEvents;
 import com.extjs.gxt.ui.client.event.Listener;
+import com.extjs.gxt.ui.client.event.MessageBoxEvent;
 import com.extjs.gxt.ui.client.event.SelectionListener;
 import com.extjs.gxt.ui.client.util.Margins;
 import com.extjs.gxt.ui.client.widget.ContentPanel;
 import com.extjs.gxt.ui.client.widget.Dialog;
+import com.extjs.gxt.ui.client.widget.MessageBox;
 import com.extjs.gxt.ui.client.widget.TabItem;
 import com.extjs.gxt.ui.client.widget.TabPanel;
 import com.extjs.gxt.ui.client.widget.button.Button;
@@ -34,6 +36,7 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.Dialo
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.EntityTypeUtils;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.AssociatedEntityKind;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DetailedSearchCriteria;
+import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DetailedSearchCriterion;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DetailedSearchSubCriteria;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityKind;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.PropertyType;
@@ -290,10 +293,56 @@ public class DetailedSearchWindow extends Dialog
     }
 
     private void onSearch()
+    {
+        final List<PropertyType> availablePropertyTypes = criteriaWidget.getAvailablePropertyTypes();
+        final DetailedSearchCriteria criteria = tryGetCriteria();
+        boolean tooGeneric = isSearchTooGeneric(criteria);
+        if (tooGeneric)
+        {
+            MessageBox.confirm("Warning", "This search query uses '*' "
+                    + "which might lead to too many search results."
+                    + "This can take quite a while before the first search results appear.<br><br>"
+                    + "Do you want to submit the query anyway?", new Listener<MessageBoxEvent>()
+                {
+                    @Override
+                    public void handleEvent(MessageBoxEvent messageEvent)
+                    {
+                        if (messageEvent.getButtonClicked().getItemId().equals(Dialog.YES))
+                        {
+                            updateSearch(criteria, availablePropertyTypes);
+                        }
+                    }
+                }).getDialog().setResizable(true);
+        } else
+        {
+            updateSearch(criteria, availablePropertyTypes);
+        }
+    }
+    
+    private boolean isSearchTooGeneric(DetailedSearchCriteria criteria)
+    {
+        for (DetailedSearchCriterion criterion : criteria.getCriteria())
+        {
+            String value = criterion.getValue();
+            if ("*".equals(value))
+            {
+                return true;
+            }
+        }
+        List<DetailedSearchSubCriteria> subCriterias = criteria.getSubCriterias();
+        for (DetailedSearchSubCriteria subCriteria : subCriterias)
+        {
+            if (isSearchTooGeneric(subCriteria.getCriteria()))
+            {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    private void updateSearch(DetailedSearchCriteria criteria, List<PropertyType> availablePropertyTypes)
     {
         hide();
-        List<PropertyType> availablePropertyTypes = criteriaWidget.getAvailablePropertyTypes();
-        DetailedSearchCriteria criteria = tryGetCriteria();
         String criteriaDescription = getCriteriaDescription();
         updateListener.updateSearchResults(criteria, criteriaDescription, availablePropertyTypes);
     }