diff --git a/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/table/TreeNodeFlexiCellRenderer.java b/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/table/TreeNodeFlexiCellRenderer.java
index e670a5ba5fd67d5a494d50d804ce553d322052d8..57e4c5c072f32b7d70545011f16845b178e18a68 100644
--- a/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/table/TreeNodeFlexiCellRenderer.java
+++ b/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/table/TreeNodeFlexiCellRenderer.java
@@ -19,6 +19,9 @@
  */
 package org.olat.core.gui.components.form.flexible.impl.elements.table;
 
+import java.util.List;
+
+import org.olat.core.gui.components.form.flexible.elements.FlexiTableFilter;
 import org.olat.core.gui.components.form.flexible.impl.Form;
 import org.olat.core.gui.components.form.flexible.impl.FormJSHelper;
 import org.olat.core.gui.components.form.flexible.impl.NameValuePair;
@@ -70,9 +73,20 @@ public class TreeNodeFlexiCellRenderer implements FlexiCellRenderer {
 	
 	private boolean isFlat(FlexiTableElementImpl ftE) {
 		return flatBySearchAndFilter
-				&& (StringHelper.containsNonWhitespace(ftE.getQuickSearchString()) || !ftE.getSelectedFilters().isEmpty());
+				&& (StringHelper.containsNonWhitespace(ftE.getQuickSearchString()) || isFiltered(ftE.getSelectedFilters()));
+	}
+	
+	private boolean isFiltered(List<FlexiTableFilter> filters) {
+		if(filters == null || filters.isEmpty()) return false;
+		
+		boolean filtered = true;
+		for(FlexiTableFilter filter:filters) {
+			if(filter.isShowAll()) {
+				filtered &= false;
+			}
+		}
+		return filtered;
 	}
-
 	
 	private void renderIndented(Renderer renderer, StringOutput target, Object cellValue, int row,
 			FlexiTableComponent source, URLBuilder ubu, Translator translator) {
diff --git a/src/main/java/org/olat/modules/taxonomy/ui/TaxonomyTreeTableController.java b/src/main/java/org/olat/modules/taxonomy/ui/TaxonomyTreeTableController.java
index 2d300e025321fbb81d47d13d8750e0ce6604c860..90a431570c4918c12976d23f88a5e2ad6ee4b1c7 100644
--- a/src/main/java/org/olat/modules/taxonomy/ui/TaxonomyTreeTableController.java
+++ b/src/main/java/org/olat/modules/taxonomy/ui/TaxonomyTreeTableController.java
@@ -161,7 +161,8 @@ public class TaxonomyTreeTableController extends FormBasicController implements
 			resources.add(new FlexiTableFilter(type.getDisplayName(), type.getKey().toString()));
 		}
 		resources.add(new FlexiTableFilter(translate("filter.no.level.type"), "-"));
-		resources.add(new FlexiTableFilter(translate("show.all"), "-", true));
+		resources.add(FlexiTableFilter.SPACER);
+		resources.add(new FlexiTableFilter(translate("show.all"), "all", true));
 		return resources;
 	}
 	
diff --git a/src/main/java/org/olat/modules/taxonomy/ui/TaxonomyTreeTableModel.java b/src/main/java/org/olat/modules/taxonomy/ui/TaxonomyTreeTableModel.java
index 5beae0ab87e03c826384ec45fec921afef33ce01..6733489d1fc2293d73b6e51dc383367dd492e3c3 100644
--- a/src/main/java/org/olat/modules/taxonomy/ui/TaxonomyTreeTableModel.java
+++ b/src/main/java/org/olat/modules/taxonomy/ui/TaxonomyTreeTableModel.java
@@ -61,21 +61,28 @@ implements FilterableFlexiTableModel  {
 		if(filters != null && filters.size() > 0 && filters.get(0) != null) {
 			Set<Long> typeKeys = new HashSet<>();
 			boolean noType = false;
+			boolean showAll = false;
 			for(FlexiTableFilter filter:filters) {
 				if("-".equals(filter.getFilter())) {
 					noType = true;
 				} else if(StringHelper.isLong(filter.getFilter())) {
 					typeKeys.add(new Long(filter.getFilter()));
+				} else if(filter.isShowAll()) {
+					showAll = true;
 				}
 			}
 			
-			List<TaxonomyLevelRow> filteredRows = new ArrayList<>(backupRows.size());
-			for(TaxonomyLevelRow row:backupRows) {
-				if(accept(row, typeKeys, noType)) {
-					filteredRows.add(row);
+			if(showAll) {
+				setUnfilteredObjects();
+			} else {
+				List<TaxonomyLevelRow> filteredRows = new ArrayList<>(backupRows.size());
+				for(TaxonomyLevelRow row:backupRows) {
+					if(accept(row, typeKeys, noType)) {
+						filteredRows.add(row);
+					}
 				}
+				setFilteredObjects(filteredRows);
 			}
-			setFilteredObjects(filteredRows);
 		} else {
 			setUnfilteredObjects();
 		}