diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/filter/FilterToolbar.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/filter/FilterToolbar.java
index 8dfff2b98e844f96097a765d8a3ca05665b4405f..8857e9aa6b7d4bc6429ccabc643de2d663e04566 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/filter/FilterToolbar.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/filter/FilterToolbar.java
@@ -49,22 +49,22 @@ public class FilterToolbar<T> extends ToolBar implements IDatabaseModificationOb
 
     private final FilterSelectionWidget filterSelectionWidget;
 
-    private final IDelegatedAction delegatedAction;
+    private final IDelegatedAction applyFiltersAction;
 
     private final TextToolItem applyTool;
 
     public FilterToolbar(IViewContext<ICommonClientServiceAsync> viewContext, String gridId,
             IDisplayTypeIDProvider displayTypeIDProvider,
-            final List<PagingColumnFilter<T>> filterWidgets, IDelegatedAction delegatedAction)
+            final List<PagingColumnFilter<T>> filterWidgets, IDelegatedAction applyFiltersAction)
     {
         this.columnFilters = filterWidgets;
-        this.delegatedAction = delegatedAction;
+        this.applyFiltersAction = applyFiltersAction;
         add(new LabelToolItem(viewContext.getMessage(Dict.FILTER) + ": "));
         filterSelectionWidget =
                 new FilterSelectionWidget(viewContext, gridId, displayTypeIDProvider);
         filterContainer = new LayoutContainer(new FillLayout(Orientation.HORIZONTAL));
         filterContainer.setLayoutOnChange(true); // fixes jumping filter fields in firefox
-		AdapterToolItem filterTool = new AdapterToolItem(filterSelectionWidget);
+        AdapterToolItem filterTool = new AdapterToolItem(filterSelectionWidget);
         add(filterTool);
         add(new AdapterToolItem(filterContainer));
         applyTool = new TextToolItem(viewContext.getMessage(Dict.APPLY_FILTER));
@@ -105,28 +105,33 @@ public class FilterToolbar<T> extends ToolBar implements IDatabaseModificationOb
         updateFilterContainer();
     }
 
-    public CustomFilterInfo<T> tryGetCustomFilters()
+    public boolean isColumnFilterSelected()
     {
         Filter selected = filterSelectionWidget.tryGetSelected();
-        if (selected != null)
+        return (selected != null) && (selected.getName().equals(Filter.COLUMN_FILTER));
+    }
+
+    public boolean isCustomFilterSelected()
+    {
+        Filter selected = filterSelectionWidget.tryGetSelected();
+        return (selected != null) && (selected.getName().equals(Filter.COLUMN_FILTER) == false);
+    }
+
+    public CustomFilterInfo<T> tryGetCustomFilter()
+    {
+        if (isCustomFilterSelected() && isValid())
         {
-            if (selected.getName().equals(Filter.COLUMN_FILTER))
-            {
-                return null;
-            } else
+            Filter selected = filterSelectionWidget.tryGetSelected();
+            CustomFilterInfo<T> info = new CustomFilterInfo<T>();
+            info.setExpression(selected.getExpression());
+            Set<ParameterWithValue> parameters = new HashSet<ParameterWithValue>();
+            for (Component field : filterContainer.getItems())
             {
-                CustomFilterInfo<T> info = new CustomFilterInfo<T>();
-                info.setExpression(selected.getExpression());
-                Set<ParameterWithValue> parameters = new HashSet<ParameterWithValue>();
-                for (Component field : filterContainer.getItems())
-                {
 
-                    parameters.add(((CustomFilterParameterWidget) field).getParameterWithValue());
-                }
-                info.setParameters(parameters);
-                return info;
+                parameters.add(((CustomFilterParameterWidget) field).getParameterWithValue());
             }
-
+            info.setParameters(parameters);
+            return info;
         }
         return null;
     }
@@ -165,12 +170,8 @@ public class FilterToolbar<T> extends ToolBar implements IDatabaseModificationOb
 
     private void apply()
     {
-        boolean valid = isValid();
-        if (valid)
-        {
-            FilterToolbar.this.delegatedAction.execute();
-        }
-        updateApplyTool();
+        // if filter is invalid the action only refreshes the grid without applying any filters
+        applyFiltersAction.execute();
     }
 
     private void updateApplyTool()
@@ -180,17 +181,7 @@ public class FilterToolbar<T> extends ToolBar implements IDatabaseModificationOb
 
     private boolean isValid()
     {
-        Filter filter = filterSelectionWidget.tryGetSelected();
-        if (filter == null)
-        {
-            return true;
-        } else if (filter.getName().equals(Filter.COLUMN_FILTER))
-        {
-            return true;
-        } else if (filter.getParameters().size() == 0)
-        {
-            return true;
-        } else
+        if (isCustomFilterSelected())
         {
             boolean valid = true;
             for (Component field : filterContainer.getItems())
@@ -200,6 +191,9 @@ public class FilterToolbar<T> extends ToolBar implements IDatabaseModificationOb
                 valid = f.isValid() && valid;
             }
             return valid;
+        } else
+        {
+            return true; // column filters are always valid
         }
     }
 
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/AbstractBrowserGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/AbstractBrowserGrid.java
index cc9bf199bb0c16c1b4c3dc46cdb1dcb3d7b8bbb7..f449d48f94f75da3760a521fa5d183506374f327 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/AbstractBrowserGrid.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/AbstractBrowserGrid.java
@@ -501,19 +501,22 @@ public abstract class AbstractBrowserGrid<T/* Entity */, M extends BaseEntityMod
 
     protected CustomFilterInfo<T> getCustomFilter()
     {
-        return filterToolbar.tryGetCustomFilters();
+        return filterToolbar.tryGetCustomFilter();
     }
 
     // returns filters which user wants to apply to the data
     private List<GridFilterInfo<T>> getAppliedFilters()
     {
         List<GridFilterInfo<T>> filters = new ArrayList<GridFilterInfo<T>>();
-        for (PagingColumnFilter<T> filterWidget : filterWidgets)
+        if (filterToolbar.isColumnFilterSelected())
         {
-            GridFilterInfo<T> filter = filterWidget.tryGetFilter();
-            if (filter != null)
+            for (PagingColumnFilter<T> filterWidget : filterWidgets)
             {
-                filters.add(filter);
+                GridFilterInfo<T> filter = filterWidget.tryGetFilter();
+                if (filter != null)
+                {
+                    filters.add(filter);
+                }
             }
         }
         return filters;
@@ -1051,8 +1054,8 @@ public abstract class AbstractBrowserGrid<T/* Entity */, M extends BaseEntityMod
         List<PagingColumnFilter<T>> newFilterWidgets = createFilterWidgets(filteredColumns);
         rebuildFilterWidgets(newFilterWidgets, this.filterWidgets, viewContext);
 
-		// NOTE: If we decide to hide filters when there are no custom filters and no column filters
-		// are chosen this code should be reused.
+        // NOTE: If we decide to hide filters when there are no custom filters and no column filters
+        // are chosen this code should be reused.
         // boolean noFiltersBefore = filterWidgets.isEmpty();
         // boolean noFiltersAfter = newFilterWidgets.isEmpty();
         this.filterWidgets = newFilterWidgets;
@@ -1232,7 +1235,7 @@ public abstract class AbstractBrowserGrid<T/* Entity */, M extends BaseEntityMod
         SortInfo<T> sortInfo = getGridSortInfo();
         final TableExportCriteria<T> exportCriteria =
                 new TableExportCriteria<T>(resultSetKey, sortInfo, getAppliedFilters(), columnDefs,
-                        filterToolbar.tryGetCustomFilters());
+                        filterToolbar.tryGetCustomFilter());
         return exportCriteria;
     }