diff --git a/src/main/java/org/olat/core/gui/components/form/flexible/elements/MultipleSelectionElement.java b/src/main/java/org/olat/core/gui/components/form/flexible/elements/MultipleSelectionElement.java
index 2c26d85de130401b3fcd88a76a3a185e7611d904..23269f389cc2103bba37231fc45f7b0cbf62e69e 100644
--- a/src/main/java/org/olat/core/gui/components/form/flexible/elements/MultipleSelectionElement.java
+++ b/src/main/java/org/olat/core/gui/components/form/flexible/elements/MultipleSelectionElement.java
@@ -26,6 +26,7 @@
 package org.olat.core.gui.components.form.flexible.elements;
 
 import java.util.Collection;
+import java.util.List;
 import java.util.Set;
 
 
@@ -43,6 +44,8 @@ public interface MultipleSelectionElement extends SelectionElement {
 	 */
 	public Collection<String> getSelectedKeys();
 	
+	public List<String> getSelectedValues();
+	
 	public void setKeysAndValues(String[] keys, String[] values);
 
 	/**
diff --git a/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/MultipleSelectionElementImpl.java b/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/MultipleSelectionElementImpl.java
index 24ba5c4205541d96a0719b05a72960891a40c900..ef6fbb7297b43420d0ebb98f5a935c1631f8c09e 100644
--- a/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/MultipleSelectionElementImpl.java
+++ b/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/MultipleSelectionElementImpl.java
@@ -25,17 +25,18 @@
 */ 
 package org.olat.core.gui.components.form.flexible.impl.elements;
 
+import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
 
+import org.apache.logging.log4j.Logger;
 import org.olat.core.gui.UserRequest;
 import org.olat.core.gui.components.form.flexible.elements.MultipleSelectionElement;
 import org.olat.core.gui.components.form.flexible.impl.Form;
 import org.olat.core.gui.components.form.flexible.impl.FormItemImpl;
-import org.apache.logging.log4j.Logger;
 import org.olat.core.logging.Tracing;
 import org.olat.core.util.ConsumableBoolean;
 import org.olat.core.util.ValidationStatus;
@@ -136,6 +137,21 @@ public class MultipleSelectionElementImpl extends FormItemImpl implements Multip
 	public Collection<String> getSelectedKeys() {
 		return selected;
 	}
+	
+	@Override
+	public List<String> getSelectedValues() {
+		if (selected == null || selected.isEmpty()) return new ArrayList<>(0);
+		
+		List<String> selectedValues = new ArrayList<>();
+		for (int i = 0; i < keys.length; i++) {
+			String key = keys[i];
+			if (selected.contains(key)) {
+				String value = values[i];
+				selectedValues.add(value);
+			}
+		}
+		return selectedValues;
+	}
 
 	@Override
 	public void setKeysAndValues(String[] keys, String[] values) {
diff --git a/src/main/java/org/olat/modules/quality/analysis/ui/AnalysisController.java b/src/main/java/org/olat/modules/quality/analysis/ui/AnalysisController.java
index 0d1e2961bd805abd5a780ce3e46b5b4162fde052..466e3b8cef6b5dc0fad8b5bcb8870388daf3fac3 100644
--- a/src/main/java/org/olat/modules/quality/analysis/ui/AnalysisController.java
+++ b/src/main/java/org/olat/modules/quality/analysis/ui/AnalysisController.java
@@ -180,7 +180,6 @@ public class AnalysisController extends BasicController implements TooledControl
 	public void initTools() {
 		initPresentationTools();
 		initOutputTools();
-		initFilterTools();
 		stackPanel.addTool(segmentButtonsCmp, true);
 	}
 
@@ -214,18 +213,19 @@ public class AnalysisController extends BasicController implements TooledControl
 		printPopupLink.setIconLeftCSS("o_icon o_icon-fw o_icon_qual_ana_print");
 		printPopupLink.setPopup(new LinkPopupSettings(950, 750, "report-hm"));
 		stackPanel.addTool(printPopupLink, Align.right, true);
-		
-		toolComponents = new ToolComponents(stackPanel, printLink, printPopupLink, pdfLink, exportLink);
-	}
-	
-	private void initFilterTools() {
+
 		showFilterLink = LinkFactory.createToolLink("filter.show", translate("filter.show"), this);
 		showFilterLink.setIconLeftCSS("o_icon o_icon-fw o_icon_qual_ana_show_filter");
 		stackPanel.addTool(showFilterLink, Align.right, true);
+		
 		hideFilterLink = LinkFactory.createToolLink("filter.hide", translate("filter.hide"), this);
 		hideFilterLink.setIconLeftCSS("o_icon o_icon-fw o_icon_qual_ana_hide_filter");
 		stackPanel.addTool(hideFilterLink, Align.right, true);
+		
 		doHideFilter();
+		
+		toolComponents = new ToolComponents(stackPanel, printLink, printPopupLink, pdfLink, exportLink, showFilterLink,
+				hideFilterLink);
 	}
 
 	@Override
@@ -402,6 +402,7 @@ public class AnalysisController extends BasicController implements TooledControl
 		toolComponents.setPrintPopupVisibility(false);
 		toolComponents.setPdfVisibility(true);
 		toolComponents.setExportVisibility(true);
+		toolComponents.setFilterVisibility(true);
 	}
 	
 	private void doOpenOverviewReport(UserRequest ureq) {
@@ -453,13 +454,12 @@ public class AnalysisController extends BasicController implements TooledControl
 		removeAsListenerAndDispose(sessionSelectionCtrl);
 
 		sessionSelectionCtrl = new AnalysisSessionSelectionController(ureq, getWindowControl(), form,
-				storage, getReportSessionFilter(), getReportHelper(), stackPanel, filterCtrl, toolComponents);
+				storage, getReportSessionFilter(), getReportHelper(), stackPanel, toolComponents);
 		
 		colsCtrl = new Analysis2ColController(ureq, getWindowControl(), sessionSelectionCtrl, filterCtrl);
 		stackPanel.popUpToController(this);
 		stackPanel.pushController(translate("segments.session.selection"), colsCtrl);
 		segmentButtonsCmp.setSelectedButton(sessionSelectionLink);
-		setEvaluationFormToolComponents();
 	}
 	
 	private void doOpenHeatMap(UserRequest ureq) {
@@ -684,9 +684,6 @@ public class AnalysisController extends BasicController implements TooledControl
 
 	private void setShowFilter(Boolean show) {
 		colsCtrl.setShowFilter(show);
-		if (sessionSelectionCtrl != null) {
-			sessionSelectionCtrl.setShowFilter(show);
-		}
 		if (heatMapCtrl != null) {
 			heatMapCtrl.setShowFilter(show);
 		}
@@ -735,13 +732,20 @@ public class AnalysisController extends BasicController implements TooledControl
 		private final Link printPopupLink;
 		private final Link pdfLink;
 		private final Link exportLink;
+		private final Link showFilterLink;
+		private final Link hideFilterLink;
+		
+		private Link lastVisibleFilter;
 		
-		private ToolComponents(TooledStackedPanel stackPanel, Link printLink, Link printPopupLink, Link pdfLink, Link exportLink) {
+		private ToolComponents(TooledStackedPanel stackPanel, Link printLink, Link printPopupLink, Link pdfLink,
+				Link exportLink, Link showFilterLink, Link hideFilterLink) {
 			this.stackPanel = stackPanel;
 			this.printLink = printLink;
 			this.printPopupLink = printPopupLink;
 			this.pdfLink = pdfLink;
 			this.exportLink = exportLink;
+			this.showFilterLink = showFilterLink;
+			this.hideFilterLink = hideFilterLink;
 		}
 		
 		void setPrintVisibility(boolean visible) {
@@ -772,6 +776,28 @@ public class AnalysisController extends BasicController implements TooledControl
 			}
 		}
 		
+		void setFilterVisibility(boolean visible) {
+			if (visible) {
+				if (!isFilterVisible()) {
+					if (lastVisibleFilter == null || lastVisibleFilter == showFilterLink) {
+						showFilterLink.setVisible(true);
+						hideFilterLink.setVisible(false);
+					} else {
+						showFilterLink.setVisible(false);
+						hideFilterLink.setVisible(true);
+					}
+				}
+			} else {
+				lastVisibleFilter = showFilterLink.isVisible()? showFilterLink: hideFilterLink;
+				showFilterLink.setVisible(false);
+				hideFilterLink.setVisible(false);
+			}
+		}
+
+		private boolean isFilterVisible() {
+			return showFilterLink.isVisible() || hideFilterLink.isVisible();
+		}
+		
 	}
 	
 }
diff --git a/src/main/java/org/olat/modules/quality/analysis/ui/AnalysisSessionSelectionController.java b/src/main/java/org/olat/modules/quality/analysis/ui/AnalysisSessionSelectionController.java
index 208e72c8ca14df900c0b010b253b0f9556d2ec1e..b159fa5cf082111a8336fc3d360c15121f31dff5 100644
--- a/src/main/java/org/olat/modules/quality/analysis/ui/AnalysisSessionSelectionController.java
+++ b/src/main/java/org/olat/modules/quality/analysis/ui/AnalysisSessionSelectionController.java
@@ -20,7 +20,10 @@
 package org.olat.modules.quality.analysis.ui;
 
 import org.olat.core.gui.UserRequest;
+import org.olat.core.gui.components.Component;
+import org.olat.core.gui.components.stack.PopEvent;
 import org.olat.core.gui.components.stack.TooledStackedPanel;
+import org.olat.core.gui.control.Event;
 import org.olat.core.gui.control.WindowControl;
 import org.olat.core.util.Util;
 import org.olat.modules.ceditor.DataStorage;
@@ -40,44 +43,66 @@ import org.olat.modules.quality.analysis.ui.AnalysisController.ToolComponents;
 public class AnalysisSessionSelectionController extends AbstractSessionSelectionController {
 
 	private final TooledStackedPanel stackPanel;
-	private final FilterController filterCtrl;
 	private final ToolComponents toolComponents;
 	
-	private Analysis2ColController colsCtrl;
-	
-	private Boolean showFilter;
+	private EvaluationFormExecutionController theExecutionCtrl;
 
 	public AnalysisSessionSelectionController(UserRequest ureq, WindowControl wControl, Form form, DataStorage storage,
-			SessionFilter filter, ReportHelper reportHelper, TooledStackedPanel stackPanel, FilterController filterCtrl,
-			ToolComponents toolComponents) {
+			SessionFilter filter, ReportHelper reportHelper, TooledStackedPanel stackPanel, ToolComponents toolComponents) {
 		super(ureq, wControl, form, storage, filter, reportHelper, null);
 		setTranslator(Util.createPackageTranslator(AbstractSessionSelectionController.class, getLocale(), getTranslator()));
 		this.stackPanel = stackPanel;
-		this.filterCtrl = filterCtrl;
+		this.stackPanel.addListener(this);
 		this.toolComponents = toolComponents;
+		initToolComponents();
 		initForm(ureq);
 	}
 
 	@Override
 	public void pushController(UserRequest ureq, String breadcrumbName, EvaluationFormExecutionController theExecutionCtrl) {
-		filterCtrl.setReadOnly(true);
-		colsCtrl = new Analysis2ColController(ureq, getWindowControl(), theExecutionCtrl, filterCtrl);
-		listenTo(colsCtrl);
-
-		stackPanel.pushController(breadcrumbName, colsCtrl);
+		this.theExecutionCtrl = theExecutionCtrl;
+		listenTo(theExecutionCtrl);
+		
+		stackPanel.pushController(breadcrumbName, theExecutionCtrl);
 		
-		colsCtrl.setShowFilter(showFilter);
+		initSingleSessionToolComponents();
+	}
+
+	@Override
+	public void event(UserRequest ureq, Component source, Event event) {
+		if (source == stackPanel) {
+			if (event instanceof PopEvent) {
+				PopEvent popEvent = (PopEvent)event;
+				if (popEvent.getController() == theExecutionCtrl) {
+					initToolComponents();
+				}
+			}
+		}
+		super.event(ureq, source, event);
+	}
+
+	private void initToolComponents() {
+		toolComponents.setPrintVisibility(true);
+		toolComponents.setPrintPopupVisibility(false);
+		toolComponents.setPdfVisibility(true);
+		toolComponents.setExportVisibility(true);
+		toolComponents.setFilterVisibility(true);
+	}
+
+	private void initSingleSessionToolComponents() {
 		toolComponents.setPrintVisibility(false);
 		toolComponents.setPrintPopupVisibility(false);
 		toolComponents.setPdfVisibility(false);
 		toolComponents.setExportVisibility(false);
+		toolComponents.setFilterVisibility(false);
 	}
 
-	public void setShowFilter(Boolean show) {
-		this.showFilter = show;
-		if (colsCtrl != null) {
-			colsCtrl.setShowFilter(show);
-		}	
+	@Override
+	protected void doDispose() {
+		if (stackPanel != null) {
+			stackPanel.removeListener(this);
+		}
+		super.doDispose();
 	}
 
 }
diff --git a/src/main/java/org/olat/modules/quality/analysis/ui/FilterController.java b/src/main/java/org/olat/modules/quality/analysis/ui/FilterController.java
index ea1c3d611fc2f7dfaed7f67a05aff3b99d01a0ab..8fbe8fef17d4f7ca48bb80a05e3de98575c7d1fd 100644
--- a/src/main/java/org/olat/modules/quality/analysis/ui/FilterController.java
+++ b/src/main/java/org/olat/modules/quality/analysis/ui/FilterController.java
@@ -42,6 +42,7 @@ import org.olat.core.gui.components.form.flexible.FormItem;
 import org.olat.core.gui.components.form.flexible.FormItemContainer;
 import org.olat.core.gui.components.form.flexible.elements.DateChooser;
 import org.olat.core.gui.components.form.flexible.elements.MultipleSelectionElement;
+import org.olat.core.gui.components.form.flexible.elements.StaticTextElement;
 import org.olat.core.gui.components.form.flexible.impl.FormBasicController;
 import org.olat.core.gui.components.form.flexible.impl.FormEvent;
 import org.olat.core.gui.components.form.flexible.impl.FormLayoutContainer;
@@ -50,6 +51,7 @@ import org.olat.core.gui.control.Controller;
 import org.olat.core.gui.control.WindowControl;
 import org.olat.core.id.Organisation;
 import org.olat.core.id.OrganisationRef;
+import org.olat.core.util.Formatter;
 import org.olat.modules.curriculum.Curriculum;
 import org.olat.modules.curriculum.CurriculumElement;
 import org.olat.modules.curriculum.CurriculumElementRef;
@@ -85,6 +87,7 @@ public class FilterController extends FormBasicController {
 
 	private static final String[] WITH_USER_INFOS_KEYS = new String[] { "filter.with.user.informations" };
 
+	private FormLayoutContainer dateRangeCont;
 	private DateChooser dateRangeFromEl;
 	private DateChooser dateRangeToEl;
 	private MultipleSelectionElement topicIdentityEl;
@@ -102,6 +105,25 @@ public class FilterController extends FormBasicController {
 	private MultipleSelectionElement seriesIndexEl;
 	private MultipleSelectionElement contextRoleEl;
 	private MultipleSelectionElement withUserInformationsEl;
+	
+	private StaticTextElement dateRangeFromRoEl;
+	private StaticTextElement dateRangeToRoEl;
+	private StaticTextElement topicIdentityRoEl;
+	private StaticTextElement topicOrganisationRoEl;
+	private StaticTextElement topicCurriculumRoEl;
+	private StaticTextElement topicCurriculumElementRoEl;
+	private StaticTextElement topicRepositoryRoEl;
+	private StaticTextElement contextExecutorOrganisationRoEl;
+	private StaticTextElement contextCurriculumRoEl;
+	private StaticTextElement contextCurriculumElementRoEl;
+	private StaticTextElement contextCurriculumElementTypeRoEl;
+	private StaticTextElement contextCurriculumOrganisationRoEl;
+	private StaticTextElement contextTaxonomyLevelRoEl;
+	private StaticTextElement contextLocationRoEl;
+	private StaticTextElement seriesIndexRoEl;
+	private StaticTextElement contextRoleRoEl;
+	private StaticTextElement withUserInformationsRoEl;
+	private StaticTextElement noFilterSelectedRoEl;
 
 	private final AnalysisSearchParameter searchParams;
 	private final AvailableAttributes availableAttributes;
@@ -121,6 +143,8 @@ public class FilterController extends FormBasicController {
 		this.availableAttributes = availableAttributes;
 		this.sessionInformationsAvailable = getSessionInformationAvailable(form);
 		initForm(ureq);
+		setReadOnly(false);
+		setSelectionValues();
 		initSelection();
 	}
 
@@ -137,14 +161,14 @@ public class FilterController extends FormBasicController {
 	protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) {
 		formLayout.setElementCssClass("o_qual_ana_filter");
 
-		FormLayoutContainer dateRange = FormLayoutContainer.createHorizontalFormLayout("dateRange", getTranslator());
-		flc.add("dateRange", dateRange);
-		dateRange.setElementCssClass("o_date_range");
-		dateRangeFromEl = uifactory.addDateChooser("filter.date.range.from", null, dateRange);
+		dateRangeCont = FormLayoutContainer.createHorizontalFormLayout("dateRange", getTranslator());
+		flc.add("dateRange", dateRangeCont);
+		dateRangeCont.setElementCssClass("o_date_range");
+		dateRangeFromEl = uifactory.addDateChooser("filter.date.range.from", null, dateRangeCont);
 		dateRangeFromEl.setElementCssClass("o_date_range_from");
 		dateRangeFromEl.addActionListener(FormEvent.ONCHANGE);
 
-		dateRangeToEl = uifactory.addDateChooser("filter.date.range.to", null, dateRange);
+		dateRangeToEl = uifactory.addDateChooser("filter.date.range.to", null, dateRangeCont);
 		dateRangeToEl.setElementCssClass("o_date_range_to");
 		dateRangeToEl.addActionListener(FormEvent.ONCHANGE);
 
@@ -193,30 +217,120 @@ public class FilterController extends FormBasicController {
 		withUserInformationsEl = uifactory.addCheckboxesVertical("filter.with.user.informations.label", formLayout,
 				WITH_USER_INFOS_KEYS, translateAll(getTranslator(), WITH_USER_INFOS_KEYS), 1);
 		withUserInformationsEl.addActionListener(FormEvent.ONCLICK);
-		withUserInformationsEl.setVisible(sessionInformationsAvailable);
-
-		setSelectionValues();
+		
+		// Read only
+		dateRangeFromRoEl = uifactory.addStaticTextElement("filter.date.range.from.ro", "filter.date.range.from", null, formLayout);
+		dateRangeToRoEl = uifactory.addStaticTextElement("filter.date.range.to.ro", "filter.date.range.to", null, formLayout);
+		topicIdentityRoEl = uifactory.addStaticTextElement("filter.topic.identities.ro", "filter.topic.identities", null, formLayout);
+		topicOrganisationRoEl = uifactory.addStaticTextElement("filter.topic.organisations.ro", "filter.topic.organisations", null, formLayout);
+		topicCurriculumRoEl = uifactory.addStaticTextElement("filter.topic.curriculums.ro", "filter.topic.curriculums", null, formLayout);
+		topicCurriculumElementRoEl = uifactory.addStaticTextElement("filter.topic.curriculum.elements.ro", "filter.topic.curriculum.elements", null, formLayout);
+		topicRepositoryRoEl = uifactory.addStaticTextElement("filter.topic.repositories.ro", "filter.topic.repositories", null, formLayout);
+		contextExecutorOrganisationRoEl = uifactory.addStaticTextElement("filter.context.organisations.ro", "filter.context.organisations", null, formLayout);
+		contextCurriculumRoEl = uifactory.addStaticTextElement("filter.context.curriculums.ro", "filter.context.curriculums", null, formLayout);
+		contextCurriculumElementRoEl = uifactory.addStaticTextElement("filter.context.curriculum.elements.ro", "filter.context.curriculum.elements", null, formLayout);
+		contextCurriculumElementTypeRoEl = uifactory.addStaticTextElement("filter.context.curriculum.element.types.ro", "filter.context.curriculum.element.types", null, formLayout);
+		contextCurriculumOrganisationRoEl = uifactory.addStaticTextElement("filter.context.curriculum.organisations.ro", "filter.context.curriculum.organisations", null, formLayout);
+		contextTaxonomyLevelRoEl = uifactory.addStaticTextElement("filter.context.taxonomy.level.ro", "filter.context.taxonomy.level", null, formLayout);
+		contextLocationRoEl = uifactory.addStaticTextElement("filter.context.location.ro", "filter.context.location", null, formLayout);
+		seriesIndexRoEl = uifactory.addStaticTextElement("filter.series.index.ro", "filter.series.index", null, formLayout);
+		contextRoleRoEl = uifactory.addStaticTextElement("filter.context.role.ro", "filter.context.role", null, formLayout);
+		withUserInformationsRoEl = uifactory.addStaticTextElement("filter.with.user.informations.label.ro", "filter.with.user.informations.label", null, formLayout);
+		noFilterSelectedRoEl = uifactory.addStaticTextElement("filter.no.selected.ro", "filter.no.selected.label", translate("filter.no.selected.ro"), formLayout);
 	}
 	
 	void setReadOnly(boolean readOnly) {
-		boolean enabled = !readOnly;
-		dateRangeFromEl.setEnabled(enabled);
-		dateRangeToEl.setEnabled(enabled);
-		topicIdentityEl.setEnabled(enabled);
-		topicOrganisationEl.setEnabled(enabled);
-		topicCurriculumEl.setEnabled(enabled);
-		topicCurriculumElementEl.setEnabled(enabled);
-		topicRepositoryEl.setEnabled(enabled);
-		contextExecutorOrganisationEl.setEnabled(enabled);
-		contextCurriculumEl.setEnabled(enabled);
-		contextCurriculumElementEl.setEnabled(enabled);
-		contextCurriculumElementTypeEl.setEnabled(enabled);
-		contextCurriculumOrganisationEl.setEnabled(enabled);
-		contextTaxonomyLevelEl.setEnabled(enabled);
-		contextLocationEl.setEnabled(enabled);
-		seriesIndexEl.setEnabled(enabled);
-		contextRoleEl.setEnabled(enabled);
-		withUserInformationsEl.setEnabled(enabled);
+		// selection
+		boolean selection = !readOnly;
+		dateRangeCont.setVisible(selection);
+		dateRangeFromEl.setVisible(selection);
+		dateRangeToEl.setVisible(selection);
+		topicIdentityEl.setVisible(selection && availableAttributes.isTopicIdentity());
+		topicOrganisationEl.setVisible(selection && availableAttributes.isTopicOrganisation() && organisationModule.isEnabled());
+		topicCurriculumEl.setVisible(selection && availableAttributes.isTopicCurriculum() && curriculumModule.isEnabled());
+		topicCurriculumElementEl.setVisible(selection && availableAttributes.isTopicCurriculumElement() && curriculumModule.isEnabled());
+		topicRepositoryEl.setVisible(selection && availableAttributes.isTopicRepository());
+		contextExecutorOrganisationEl.setVisible(selection && availableAttributes.isContextExecutorOrganisation() && organisationModule.isEnabled());
+		contextCurriculumEl.setVisible(selection && availableAttributes.isContextCurriculum() && curriculumModule.isEnabled());
+		contextCurriculumElementEl.setVisible(selection && availableAttributes.isContextCurriculumElement() && curriculumModule.isEnabled());
+		contextCurriculumElementTypeEl.setVisible(selection && availableAttributes.isContextCurriculumElementType() && curriculumModule.isEnabled());
+		contextCurriculumOrganisationEl.setVisible(selection && availableAttributes.isContextCurriculumOrganisation()
+				&& organisationModule.isEnabled() && curriculumModule.isEnabled());
+		contextTaxonomyLevelEl.setVisible(selection && availableAttributes.isContextTaxonomyLevel());
+		contextLocationEl.setVisible(selection && availableAttributes.isContextLocation());
+		seriesIndexEl.setVisible(selection && availableAttributes.isSeriesIndex());
+		contextRoleEl.setVisible(selection);
+		withUserInformationsEl.setVisible(selection && sessionInformationsAvailable);
+		
+		// read only
+		showReadOnly(readOnly, dateRangeFromRoEl, dateRangeFromEl);
+		showReadOnly(readOnly, dateRangeToRoEl, dateRangeToEl);
+		showReadOnly(readOnly, topicIdentityRoEl, topicIdentityEl);
+		showReadOnly(readOnly, topicOrganisationRoEl, topicOrganisationEl);
+		showReadOnly(readOnly, topicCurriculumRoEl, topicCurriculumEl);
+		showReadOnly(readOnly, topicCurriculumElementRoEl, topicCurriculumElementEl);
+		showReadOnly(readOnly, topicRepositoryRoEl, topicRepositoryEl);
+		showReadOnly(readOnly, contextExecutorOrganisationRoEl, contextExecutorOrganisationEl);
+		showReadOnly(readOnly, contextCurriculumRoEl, contextCurriculumEl);
+		showReadOnly(readOnly, contextCurriculumElementRoEl, contextCurriculumElementEl);
+		showReadOnly(readOnly, contextCurriculumElementTypeRoEl, contextCurriculumElementTypeEl);
+		showReadOnly(readOnly, contextCurriculumOrganisationRoEl, contextCurriculumOrganisationEl);
+		showReadOnly(readOnly, contextTaxonomyLevelRoEl, contextTaxonomyLevelEl);
+		showReadOnly(readOnly, contextLocationRoEl, contextLocationEl);
+		showReadOnly(readOnly, seriesIndexRoEl, seriesIndexEl);
+		showReadOnly(readOnly, contextRoleRoEl, contextRoleEl);
+		
+		if (readOnly && withUserInformationsEl.isAtLeastSelected(1)) {
+			String value = withUserInformationsEl.getSelectedValues().get(0);
+			withUserInformationsRoEl.setValue(value);
+			withUserInformationsRoEl.setVisible(true);
+		} else {
+			withUserInformationsRoEl.setVisible(false);
+		}
+		
+		noFilterSelectedRoEl.setVisible(readOnly && !isAtLeastOneRoVisible());
+	}
+
+	private void showReadOnly(boolean readOnly, StaticTextElement roEl, DateChooser dateEl) {
+		if (readOnly && dateEl.getDate() != null) {
+			String value = Formatter.getInstance(getLocale()).formatDate(dateEl.getDate());
+			roEl.setValue(value);
+			roEl.setVisible(true);
+		} else {
+			roEl.setVisible(false);
+		}
+	}
+	
+	private void showReadOnly(boolean readOnly, StaticTextElement roEl, MultipleSelectionElement selectEl) {
+		if (readOnly && selectEl.isAtLeastSelected(1)) {
+			List<String> selectedValues = selectEl.getSelectedValues();
+			String value = QualityUIFactory.toHtmlList(selectedValues);
+			roEl.setValue(value);
+			roEl.setVisible(true);
+		} else {
+			roEl.setVisible(false);
+		}
+	}
+	
+	private boolean isAtLeastOneRoVisible() {
+		return dateRangeFromRoEl.isVisible()
+			|| dateRangeToRoEl.isVisible()
+			|| topicIdentityRoEl.isVisible()
+			|| topicOrganisationRoEl.isVisible()
+			|| topicCurriculumRoEl.isVisible()
+			|| topicCurriculumElementRoEl.isVisible()
+			|| topicRepositoryRoEl.isVisible()
+			|| contextExecutorOrganisationRoEl.isVisible()
+			|| contextCurriculumRoEl.isVisible()
+			|| contextCurriculumElementRoEl.isVisible()
+			|| contextCurriculumElementTypeRoEl.isVisible()
+			|| contextCurriculumOrganisationRoEl.isVisible()
+			|| contextTaxonomyLevelRoEl.isVisible()
+			|| contextLocationRoEl.isVisible()
+			|| seriesIndexRoEl.isVisible()
+			|| contextRoleRoEl.isVisible()
+			|| withUserInformationsRoEl.isVisible()
+			|| noFilterSelectedRoEl.isVisible();
 	}
 
 	private void setSelectionValues() {
@@ -265,9 +379,7 @@ public class FilterController extends FormBasicController {
 	}
 
 	private void setTopicIdentityValues() {
-		if (!availableAttributes.isTopicIdentity()) {
-			topicIdentityEl.setVisible(false);
-		}
+		if (!topicIdentityEl.isVisible()) return;
 
 		Collection<String> selectedKeys = topicIdentityEl.getSelectedKeys();
 
@@ -298,10 +410,7 @@ public class FilterController extends FormBasicController {
 	}
 
 	private void setTopicOrganisationValues() {
-		if (!availableAttributes.isTopicOrganisation() || !organisationModule.isEnabled()) {
-			topicOrganisationEl.setVisible(false);
-			return;
-		}
+		if (!topicOrganisationEl.isVisible()) return;
 
 		Collection<String> selectedKeys = topicOrganisationEl.getSelectedKeys();
 
@@ -332,10 +441,7 @@ public class FilterController extends FormBasicController {
 	}
 
 	private void setTopicCurriculumValues() {
-		if (!availableAttributes.isTopicCurriculum() || !curriculumModule.isEnabled()) {
-			topicCurriculumEl.setVisible(false);
-			return;
-		}
+		if (!topicCurriculumEl.isVisible()) return;
 
 		Collection<String> selectedKeys = topicCurriculumEl.getSelectedKeys();
 
@@ -365,10 +471,7 @@ public class FilterController extends FormBasicController {
 	}
 
 	private void setTopicCurriculumElementValues() {
-		if (!availableAttributes.isTopicCurriculumElement() || !curriculumModule.isEnabled()) {
-			topicCurriculumElementEl.setVisible(false);
-			return;
-		}
+		if (!topicCurriculumElementEl.isVisible()) return;
 
 		Collection<String> selectedKeys = topicCurriculumEl.getSelectedKeys();
 
@@ -400,9 +503,7 @@ public class FilterController extends FormBasicController {
 	}
 
 	private void setTopicRepositoryValues() {
-		if (!availableAttributes.isTopicRepository()) {
-			topicRepositoryEl.setVisible(false);
-		}
+		if (!topicRepositoryEl.isVisible()) return;
 
 		Collection<String> selectedKeys = topicRepositoryEl.getSelectedKeys();
 
@@ -433,10 +534,7 @@ public class FilterController extends FormBasicController {
 	}
 
 	private void setContextExecutorOrganisationValues() {
-		if (!availableAttributes.isContextExecutorOrganisation() || !organisationModule.isEnabled()) {
-			contextExecutorOrganisationEl.setVisible(false);
-			return;
-		}
+		if (!contextExecutorOrganisationEl.isVisible()) return;
 
 		Collection<String> selectedKeys = contextExecutorOrganisationEl.getSelectedKeys();
 
@@ -469,10 +567,7 @@ public class FilterController extends FormBasicController {
 	}
 
 	private void setContextCurriculumValues() {
-		if (!availableAttributes.isContextCurriculum() || !curriculumModule.isEnabled()) {
-			contextCurriculumEl.setVisible(false);
-			return;
-		}
+		if (!contextCurriculumEl.isVisible()) return;
 
 		Collection<String> selectedKeys = contextCurriculumEl.getSelectedKeys();
 
@@ -502,10 +597,7 @@ public class FilterController extends FormBasicController {
 	}
 	
 	private void setContextCurriculumElementValues() {
-		if (!availableAttributes.isContextCurriculumElement() || !curriculumModule.isEnabled()) {
-			contextCurriculumElementEl.setVisible(false);
-			return;
-		}
+		if (!contextCurriculumElementEl.isVisible()) return;
 
 		Collection<String> selectedKeys = contextCurriculumElementEl.getSelectedKeys();
 
@@ -545,10 +637,7 @@ public class FilterController extends FormBasicController {
 	}
 
 	private void setContextCurriculumElementTypeValues() {
-		if (!availableAttributes.isContextCurriculumElementType() || !curriculumModule.isEnabled()) {
-			contextCurriculumElementTypeEl.setVisible(false);
-			return;
-		}
+		if (!contextCurriculumElementTypeEl.isVisible()) return;
 
 		Collection<String> selectedKeys = contextCurriculumElementTypeEl.getSelectedKeys();
 
@@ -586,11 +675,7 @@ public class FilterController extends FormBasicController {
 	}
 
 	private void setContextCurriculumOrganisationValues() {
-		if (!availableAttributes.isContextCurriculumOrganisation() || !organisationModule.isEnabled()
-				|| !curriculumModule.isEnabled()) {
-			contextCurriculumOrganisationEl.setVisible(false);
-			return;
-		}
+		if (!contextCurriculumOrganisationEl.isVisible()) return;
 
 		Collection<String> selectedKeys = contextCurriculumOrganisationEl.getSelectedKeys();
 
@@ -626,10 +711,7 @@ public class FilterController extends FormBasicController {
 	}
 	
 	private void setContextTaxonomyLevelValues() {
-		if (!availableAttributes.isContextTaxonomyLevel()) {
-			contextTaxonomyLevelEl.setVisible(false);
-			return;
-		}
+		if (!contextTaxonomyLevelEl.isVisible()) return;
 
 		Collection<String> selectedKeys = contextTaxonomyLevelEl.getSelectedKeys();
 
@@ -679,10 +761,7 @@ public class FilterController extends FormBasicController {
 	}
 
 	private void setContextLocationValues() {
-		if (!availableAttributes.isContextLocation()) {
-			contextLocationEl.setVisible(false);
-			return;
-		}
+		if (!contextLocationEl.isVisible()) return;
 
 		Collection<String> selectedKeys = contextLocationEl.getSelectedKeys();
 
@@ -712,10 +791,7 @@ public class FilterController extends FormBasicController {
 	}
 
 	private void setSeriesIndexValues() {
-		if (!availableAttributes.isSeriesIndex()) {
-			seriesIndexEl.setVisible(false);
-			return;
-		}
+		if (!seriesIndexEl.isVisible()) return;
 
 		Collection<String> selectedKeys = seriesIndexEl.getSelectedKeys();
 
diff --git a/src/main/java/org/olat/modules/quality/analysis/ui/GroupByController.java b/src/main/java/org/olat/modules/quality/analysis/ui/GroupByController.java
index 63cc1d587af541eca8a12ba6733ffaf664b70e7d..141c81149e4dba846dd03069db30f9bd5d7fe517 100644
--- a/src/main/java/org/olat/modules/quality/analysis/ui/GroupByController.java
+++ b/src/main/java/org/olat/modules/quality/analysis/ui/GroupByController.java
@@ -42,6 +42,7 @@ import java.util.stream.Collectors;
 import org.olat.basesecurity.model.IdentityRefImpl;
 import org.olat.basesecurity.model.OrganisationRefImpl;
 import org.olat.core.gui.UserRequest;
+import org.olat.core.gui.components.Component;
 import org.olat.core.gui.components.EscapeMode;
 import org.olat.core.gui.components.form.flexible.FormItem;
 import org.olat.core.gui.components.form.flexible.FormItemContainer;
@@ -58,9 +59,11 @@ import org.olat.core.gui.components.form.flexible.impl.elements.table.FlexiTable
 import org.olat.core.gui.components.form.flexible.impl.elements.table.SelectionEvent;
 import org.olat.core.gui.components.form.flexible.impl.elements.table.StaticFlexiCellRenderer;
 import org.olat.core.gui.components.form.flexible.impl.elements.table.TextFlexiCellRenderer;
+import org.olat.core.gui.components.stack.PopEvent;
 import org.olat.core.gui.components.stack.TooledStackedPanel;
 import org.olat.core.gui.components.util.KeyValues;
 import org.olat.core.gui.control.Controller;
+import org.olat.core.gui.control.Event;
 import org.olat.core.gui.control.WindowControl;
 import org.olat.core.gui.control.creator.ControllerCreator;
 import org.olat.core.util.StringHelper;
@@ -143,7 +146,6 @@ public abstract class GroupByController extends FormBasicController implements F
 	private Boolean showFilter;
 	private Analysis2ColController sliderTrendColsCtrl;
 	private SliderTrendController sliderTrendCtrl;
-	private Analysis2ColController dataCollectionColsCtrl;
 	private Controller dataCollectionCtrl;
 	
 	// This list is the master for the sort order of the questions (sliders).
@@ -172,6 +174,7 @@ public abstract class GroupByController extends FormBasicController implements F
 			TrendDifference trendDifference, String rubricId) {
 		super(ureq, wControl, LAYOUT_BAREBONE);
 		this.stackPanel = stackPanel;
+		this.stackPanel.addListener(this);
 		this.filterCtrl = filterCtrl;
 		this.availableAttributes = availableAttributes;
 		this.multiGroupBy = multiGroupBy;
@@ -289,10 +292,17 @@ public abstract class GroupByController extends FormBasicController implements F
 	
 	void setToolComponents(ToolComponents toolComponents) {
 		this.toolComponents = toolComponents;
-		toolComponents.setPrintVisibility(false);
-		toolComponents.setPrintPopupVisibility(true);
-		toolComponents.setPdfVisibility(true);
-		toolComponents.setExportVisibility(true);
+		initToolComponents();
+	}
+
+	private void initToolComponents() {
+		if (toolComponents != null) {
+			toolComponents.setPrintVisibility(false);
+			toolComponents.setPrintPopupVisibility(true);
+			toolComponents.setPdfVisibility(true);
+			toolComponents.setExportVisibility(true);
+			toolComponents.setFilterVisibility(true);
+		}
 	}
 
 	void setShowFilter(Boolean show) {
@@ -519,6 +529,22 @@ public abstract class GroupByController extends FormBasicController implements F
 		refreshDiagram();
 	}
 
+	@Override
+	public void event(UserRequest ureq, Component source, Event event) {
+		if (source == stackPanel) {
+			if (event instanceof PopEvent) {
+				PopEvent popEvent = (PopEvent)event;
+				if (popEvent.getController() == dataCollectionCtrl) {
+					initToolComponents();
+				} else if (popEvent.getController() == sliderTrendColsCtrl) {
+					initToolComponents();
+					filterCtrl.setReadOnly(false);
+				}
+			}
+		}
+		super.event(ureq, source, event);
+	}
+
 	@Override
 	protected void formInnerEvent(UserRequest ureq, FormItem source, FormEvent event) {
 		if (source == groupEl1 || source == groupEl2 || source == groupEl3) {
@@ -752,6 +778,7 @@ public abstract class GroupByController extends FormBasicController implements F
 		toolComponents.setPrintPopupVisibility(true);
 		toolComponents.setPdfVisibility(true);
 		toolComponents.setExportVisibility(false);
+		toolComponents.setFilterVisibility(true);
 	}
 
 	private AnalysisSearchParameter getTrendSearchParams(MultiKey multiKey) {
@@ -877,17 +904,14 @@ public abstract class GroupByController extends FormBasicController implements F
 			dataCollectionCtrl = new DataCollectionReportController(ureq, getWindowControl(), dataCollection);
 			listenTo(dataCollectionCtrl);
 			
-			filterCtrl.setReadOnly(true);
-			dataCollectionColsCtrl = new Analysis2ColController(ureq, getWindowControl(), dataCollectionCtrl, filterCtrl);
-
-			String detailTrend = translate("analysis.trend.breadcrumb", new String[] { dataCollection.getTitle() });
-			stackPanel.pushController(detailTrend, dataCollectionColsCtrl);
+			String title = translate("analysis.data.collection.breadcrumb", new String[] { dataCollection.getTitle() });
+			stackPanel.pushController(title, dataCollectionCtrl);
 
-			dataCollectionColsCtrl.setShowFilter(showFilter);
 			toolComponents.setPrintVisibility(false);
 			toolComponents.setPrintPopupVisibility(false);
 			toolComponents.setPdfVisibility(false);
 			toolComponents.setExportVisibility(false);
+			toolComponents.setFilterVisibility(false);
 		}
 	}
 	
@@ -910,7 +934,9 @@ public abstract class GroupByController extends FormBasicController implements F
 
 	@Override
 	protected void doDispose() {
-		//
+		if (stackPanel != null) {
+			stackPanel.removeListener(this);
+		}
 	}
 	
 	public final static class SliderWrapper {
diff --git a/src/main/java/org/olat/modules/quality/analysis/ui/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/modules/quality/analysis/ui/_i18n/LocalStrings_de.properties
index 41dbd72f1de95dfb5999eed02d1546b552300b75..83c79be7b8d4e8fccc817d8582023f7e8d958a27 100644
--- a/src/main/java/org/olat/modules/quality/analysis/ui/_i18n/LocalStrings_de.properties
+++ b/src/main/java/org/olat/modules/quality/analysis/ui/_i18n/LocalStrings_de.properties
@@ -1,3 +1,4 @@
+analysis.data.collection.breadcrumb=Datenerhebung "{0}"
 analysis.details=Trend Details
 analysis.details.print.title={0}: {1}
 analysis.export=Export Excel
@@ -29,8 +30,10 @@ filter.context.role=Rolle des Teilnehmers
 filter.context.taxonomy.level=Fachbereich
 filter.count=Anzahl Datenerhebungen
 filter.date.range.from=Datenerhebungen von
-filter.date.range.to=Datenerhebungen to
+filter.date.range.to=Datenerhebungen bis
 filter.hide=Filter
+filter.no.selected.ro=<i>Es sind keine Filter gesetzt.</i>
+filter.no.selected.label=
 filter.panel.header=Filter
 filter.series.index.value=Datenerhebung {0}
 filter.series.index=Serie
diff --git a/src/main/java/org/olat/modules/quality/analysis/ui/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/modules/quality/analysis/ui/_i18n/LocalStrings_en.properties
index 6170846e9faf821003945ccce99ce48511ef68f5..006a893059e4895a9355ebee487ac6c3a1789a6b 100644
--- a/src/main/java/org/olat/modules/quality/analysis/ui/_i18n/LocalStrings_en.properties
+++ b/src/main/java/org/olat/modules/quality/analysis/ui/_i18n/LocalStrings_en.properties
@@ -1,3 +1,4 @@
+analysis.data.collection.breadcrumb=Data collection "{0}"
 analysis.details=Trend details
 analysis.details.print.title={0}: {1}
 analysis.export=Export Excel
@@ -5,7 +6,7 @@ analysis.pdf=Export PDF
 analysis.print=Print
 analysis.table.data.collections.latest=Latest data collection
 analysis.table.data.collections.number=Data collections
-analysis.table.data.collections.soonest=Soonest data collection
+analysis.table.data.collections.soonest=First data collection
 analysis.table.empty=This table contains no data.
 analysis.table.form.created.on=Created on {0}
 analysis.table.form.created=Created
@@ -31,6 +32,8 @@ filter.count=Number of data collections
 filter.date.range.from=Data collections from
 filter.date.range.to=Data collections to
 filter.hide=Filters
+filter.no.selected.ro=<i>No filters active.</i>
+filter.no.selected.label=
 filter.panel.header=Filters
 filter.series.index.value=Data collection {0}
 filter.series.index=Series
diff --git a/src/main/java/org/olat/modules/quality/ui/QualityUIFactory.java b/src/main/java/org/olat/modules/quality/ui/QualityUIFactory.java
index a964a3ea9d3f3856831b20054d0dcc6c4ac0d091..a01745069906453c0502bd766a065bdd03f57d8b 100644
--- a/src/main/java/org/olat/modules/quality/ui/QualityUIFactory.java
+++ b/src/main/java/org/olat/modules/quality/ui/QualityUIFactory.java
@@ -546,6 +546,17 @@ public class QualityUIFactory {
 		return null;
 	}
 	
+	public static String toHtmlList(List<String> values) {
+		StringBuilder sb = new StringBuilder();
+		sb.append("<ul>");
+		for (String value : values) {
+			sb.append("<li>").append(value.trim()).append("</li>");
+		}
+		sb.append("</ul>");
+		String value = sb.toString();
+		return value;
+	}
+	
 	public static boolean validateInteger(TextElement el, int min, int max) {
 		boolean allOk = true;
 		el.clearError();