diff --git a/src/main/java/org/olat/ims/qti21/manager/QTI21ServiceImpl.java b/src/main/java/org/olat/ims/qti21/manager/QTI21ServiceImpl.java
index 1e1280292d5630b18fa299120a8869ad8fed2b82..0b657df44d3197f2ad3b4794b0048445c092162b 100644
--- a/src/main/java/org/olat/ims/qti21/manager/QTI21ServiceImpl.java
+++ b/src/main/java/org/olat/ims/qti21/manager/QTI21ServiceImpl.java
@@ -1039,6 +1039,10 @@ public class QTI21ServiceImpl implements QTI21Service, UserDataDeletable, Initia
 				RetrieveAssessmentTestSessionEvent event = new RetrieveAssessmentTestSessionEvent(session.getKey());
 				OLATResourceable sessionOres = OresHelper.createOLATResourceableInstance(AssessmentTestSession.class, session.getKey());
 				coordinatorManager.getCoordinator().getEventBus().fireEventToListenersOf(event, sessionOres);
+				
+				// remove session controllers from multi-window cache
+				testSessionControllersCache.remove(reloadedSession);
+				
 				return reloadedSession;
 			}
 		}
diff --git a/src/main/java/org/olat/repository/ui/list/OverviewRepositoryListController.java b/src/main/java/org/olat/repository/ui/list/OverviewRepositoryListController.java
index e5d11a0a41f5bf6acee96b46849c9ec9cb024f2b..69df96a2f2852607cb371414066d11c9d3204e79 100644
--- a/src/main/java/org/olat/repository/ui/list/OverviewRepositoryListController.java
+++ b/src/main/java/org/olat/repository/ui/list/OverviewRepositoryListController.java
@@ -181,18 +181,7 @@ public class OverviewRepositoryListController extends BasicController implements
 	public void activate(UserRequest ureq, List<ContextEntry> entries, StateEntry state) {
 		if(entries == null || entries.isEmpty()) {
 			if(currentCtrl == null) {
-				if(isGuestOnly) {
-					doOpenMyCourses(ureq);
-					segmentView.select(myCourseLink);
-				} else {
-					boolean markEmpty = doOpenMark(ureq).isEmpty();
-					if(markEmpty) {
-						doOpenMyCourses(ureq);
-						segmentView.select(myCourseLink);
-					} else {
-						segmentView.select(favoriteLink);
-					}
-				}
+				activateDefault(ureq);
 			}
 			
 			if(favoritDirty && markedCtrl != null) {
@@ -223,12 +212,16 @@ public class OverviewRepositoryListController extends BasicController implements
 				if(ctrl != null) {
 					ctrl.activate(ureq, entries, entry.getTransientState());
 					segmentView.select(catalogLink);
+				} else if(currentCtrl == null) {
+					activateDefault(ureq);
 				}
 			} else if("Curriculum".equalsIgnoreCase(segment)) {
 				CurriculumListController ctrl = doOpenCurriculum(ureq);
 				if(ctrl != null) {
 					ctrl.activate(ureq, subEntries, entry.getTransientState());
 					segmentView.select(curriculumLink);
+				} else if(currentCtrl == null) {
+					activateDefault(ureq);
 				}
 			} else if("Search".equalsIgnoreCase(segment) && searchCourseLink != null) {
 				doOpenSearchCourses(ureq).activate(ureq, subEntries, entry.getTransientState());
@@ -237,9 +230,22 @@ public class OverviewRepositoryListController extends BasicController implements
 				doOpenClosedCourses(ureq).activate(ureq, subEntries, entry.getTransientState());
 				segmentView.select(closedCourseLink);
 			} else {
-				//default if the others fail
-				doOpenMyCourses(ureq).activate(ureq, subEntries, entry.getTransientState());
+				activateDefault(ureq);
+			}
+		}
+	}
+	
+	private void activateDefault(UserRequest ureq) {
+		if(isGuestOnly) {
+			doOpenMyCourses(ureq);
+			segmentView.select(myCourseLink);
+		} else {
+			boolean markEmpty = doOpenMark(ureq).isEmpty();
+			if(markEmpty) {
+				doOpenMyCourses(ureq);
 				segmentView.select(myCourseLink);
+			} else {
+				segmentView.select(favoriteLink);
 			}
 		}
 	}