Index: dbLearnStar-webApp/src/main/java/dblearnstar/webapp/pages/ExamsAndTasksOverviewPage.java
===================================================================
--- dbLearnStar-webApp/src/main/java/dblearnstar/webapp/pages/ExamsAndTasksOverviewPage.java	(revision e96fbd37458d5fb4b59dfda0a6d00800095c298a)
+++ dbLearnStar-webApp/src/main/java/dblearnstar/webapp/pages/ExamsAndTasksOverviewPage.java	(revision c1fe4e186716eff250058fcc5078d5146508c403)
@@ -44,4 +44,5 @@
 import org.slf4j.Logger;
 
+import dblearnstar.model.entities.Task;
 import dblearnstar.model.entities.TaskInTestInstance;
 import dblearnstar.model.entities.TaskIsOfType;
@@ -77,4 +78,6 @@
 	@Inject
 	private AjaxResponseRenderer ajaxResponseRenderer;
+	@Inject
+	private DigestService digestService;
 
 	@SessionState
@@ -93,4 +96,6 @@
 	@InjectPage
 	private QueryTest queryTest;
+	@InjectPage
+	private SubmissionEvaluations submissionEvaluations;
 
 	@Property
@@ -113,6 +118,7 @@
 	public void onActivate() {
 		studentId = pm.getStudentsByPersonId(userInfo.getPersonId()).get(0).getStudentId();
-		if (testCollection == null)
+		if (testCollection == null) {
 			testCollection = getTestCollections().stream().findFirst().orElse(null);
+		}
 	}
 
@@ -125,7 +131,4 @@
 	}
 
-	@Inject
-	private DigestService digestService;
-
 	public String getHashedTestInstanceId() {
 		return digestService.obfuscate(Long.toString(testInstance.getTestInstanceId()));
@@ -135,10 +138,5 @@
 
 	public List<TestCollection> getTestCollections() {
-		List<TestCollection> list = (UsefulMethods.castList(TestCollection.class,
-				genericService.getAll(TestCollection.class)))
-				.stream()
-				.filter(p -> (p.getTestInstances() != null && p.getTestInstances().size() > 0)
-						|| (p.getSubCollections() != null && p.getSubCollections().size() > 0))
-				.collect(Collectors.toList());
+		List<TestCollection> list = testManager.getTestCollectionsWithTestInstances();
 		ComparatorTestCollection c = new ComparatorTestCollection();
 		Collections.sort(list, c);
@@ -166,18 +164,21 @@
 		List<TestInstance> list;
 		if (userInfo.isAdministrator()) {
-			list = testManager.getAllTestInstancesByTestType(testType.getTestTypeId());
+			if (testCollection == null) {
+				list = testManager.getAllTestInstancesByTestType(testType.getTestTypeId());
+			} else {
+				list = testManager.getAllTestInstancesByTestTypeAndCollection(testType.getTestTypeId(),
+						testCollection.getTestCollectionId());
+			}
 		} else if (userInfo.isStudent()) {
-			list = testManager.getTestInstancesForStudentByTestType(studentId, testType.getTestTypeId());
+			if (testCollection == null) {
+				list = testManager.getTestInstancesForStudentByTestType(studentId, testType.getTestTypeId());
+			} else {
+				list = testManager.getTestInstancesForStudentByTestTypeAndCollection(studentId,
+						testType.getTestTypeId(), testCollection.getTestCollectionId());
+			}
 		} else {
 			list = new ArrayList<TestInstance>();
 		}
-		if (testCollection == null) {
-			return list;
-		} else {
-			return list.stream()
-					.filter(ti -> ti.getTestCollection() != null
-							&& ti.getTestCollection().getTestCollectionId() == testCollection.getTestCollectionId())
-					.collect(Collectors.toList());
-		}
+		return list;
 	}
 
@@ -225,11 +226,11 @@
 
 	public String getTranslateTestInstanceTitle() {
-		String translated = translationService.getTranslation("TestInstance", "title", testInstance.getTestInstanceId(),
-				persistentLocale.get().getLanguage().toLowerCase());
+		String translated = translationService.getTranslation(TestInstance.class.getSimpleName(), "title",
+				testInstance.getTestInstanceId(), persistentLocale.get().getLanguage().toLowerCase());
 		return (translated != null ? translated : testInstance.getTitle());
 	}
 
 	public String getTranslatedTestInstanceDescription() {
-		String translated = translationService.getTranslation("TestInstance", "description",
+		String translated = translationService.getTranslation(TestInstance.class.getSimpleName(), "description",
 				testInstance.getTestInstanceId(), persistentLocale.get().getLanguage().toLowerCase());
 		return (translated != null ? translated : testInstance.getDescription());
@@ -237,12 +238,12 @@
 
 	public String getTranslateTestTypeTitle() {
-		String translated = translationService.getTranslation("TestType", "title", testType.getTestTypeId(),
-				persistentLocale.get().getLanguage().toLowerCase());
+		String translated = translationService.getTranslation(TestType.class.getSimpleName(), "title",
+				testType.getTestTypeId(), persistentLocale.get().getLanguage().toLowerCase());
 		return (translated != null ? translated : testType.getTitle());
 	}
 
 	public String getTranslatedTaskInTestInstanceTaskTitle() {
-		String translated = translationService.getTranslation("Task", "title", taskInTestInstance.getTask().getTaskId(),
-				persistentLocale.get().getLanguage().toLowerCase());
+		String translated = translationService.getTranslation(Task.class.getSimpleName(), "title",
+				taskInTestInstance.getTask().getTaskId(), persistentLocale.get().getLanguage().toLowerCase());
 		return (translated != null ? translated : taskInTestInstance.getTask().getTitle());
 	}
@@ -277,7 +278,4 @@
 	}
 
-	@InjectPage
-	private SubmissionEvaluations submissionEvaluations;
-
 	public Object onEvaluate(TestInstance ti) {
 		submissionEvaluations.onValueChangedFromSelectTestInstance(ti);
Index: dbLearnStar-webApp/src/main/java/dblearnstar/webapp/services/TestManager.java
===================================================================
--- dbLearnStar-webApp/src/main/java/dblearnstar/webapp/services/TestManager.java	(revision e96fbd37458d5fb4b59dfda0a6d00800095c298a)
+++ dbLearnStar-webApp/src/main/java/dblearnstar/webapp/services/TestManager.java	(revision c1fe4e186716eff250058fcc5078d5146508c403)
@@ -30,4 +30,5 @@
 import dblearnstar.model.entities.Task;
 import dblearnstar.model.entities.TaskInTestInstance;
+import dblearnstar.model.entities.TestCollection;
 import dblearnstar.model.entities.TestInstance;
 
@@ -38,4 +39,6 @@
 	public List<TestInstance> getAllTestInstancesByTestType(long testTypeId);
 
+	public List<TestInstance> getAllTestInstancesByTestTypeAndCollection(long testTypeId, long testCollectionId);
+
 	public List<TestInstance> getAllCurrentlyAvailableTestInstancesByTestType(long testTypeId);
 
@@ -43,4 +46,7 @@
 
 	public List<TestInstance> getTestInstancesForStudentByTestType(long studentId, long testTypeId);
+
+	public List<TestInstance> getTestInstancesForStudentByTestTypeAndCollection(long studentId, long testTypeId,
+			long testCollectionId);
 
 	public Boolean isTaskInTestInstanceSolvedByStudent(long taskInTestInstanceId, long studentId);
@@ -91,3 +97,5 @@
 
 	public String getCodeType(StudentSubmitSolution submittedSolution);
+
+	public List<TestCollection> getTestCollectionsWithTestInstances();
 }
Index: dbLearnStar-webApp/src/main/java/dblearnstar/webapp/services/TestManagerImpl.java
===================================================================
--- dbLearnStar-webApp/src/main/java/dblearnstar/webapp/services/TestManagerImpl.java	(revision e96fbd37458d5fb4b59dfda0a6d00800095c298a)
+++ dbLearnStar-webApp/src/main/java/dblearnstar/webapp/services/TestManagerImpl.java	(revision c1fe4e186716eff250058fcc5078d5146508c403)
@@ -42,4 +42,5 @@
 import dblearnstar.model.entities.TaskInTestInstance;
 import dblearnstar.model.entities.TaskIsOfType;
+import dblearnstar.model.entities.TestCollection;
 import dblearnstar.model.entities.TestInstance;
 
@@ -96,4 +97,38 @@
 
 	@Override
+	public List<TestInstance> getTestInstancesForStudentByTestTypeAndCollection(long studentId, long testTypeId,
+			long testCollectionId) {
+		String query = """
+				from TestInstance ti
+				join t.testTemplate ttem
+				join ttem.testType tt
+				join t.testCollection tc
+				where
+					tt.testTypeId = :testTypeId and
+				    tc.testCollectionId = :testCollectionId and
+					(
+						ti.openToAllStudents=true or
+						ti in (
+							select ti2
+							from GroupMember gm
+							join gm.student s
+							join s.person p
+							join gm.group g
+							join g.groupFocusOnTests gft
+							join gft.testInstance ti2
+							where
+								s.studentId=:studentId and
+								now() between ti2.scheduledFor and ti2.scheduledUntil
+						)
+					)
+				order by t.title desc
+				""";
+		return UsefulMethods.castList(TestInstance.class,
+				getEntityManager().createQuery(query).setParameter("studentId", studentId)
+						.setParameter("testTypeId", testTypeId).setParameter("testCollectionId", testCollectionId)
+						.getResultList());
+	}
+
+	@Override
 	public List<TestInstance> getAllTestInstancesByTestType(long testTypeId) {
 		String query = """
@@ -101,8 +136,22 @@
 				where
 					t.testTemplate.testType.testTypeId = :testTypeId
-				order by t.title desc
+				order by t.ordering asc, t.title desc
 				""";
 		return UsefulMethods.castList(TestInstance.class,
 				getEntityManager().createQuery(query).setParameter("testTypeId", testTypeId).getResultList());
+	}
+
+	@Override
+	public List<TestInstance> getAllTestInstancesByTestTypeAndCollection(long testTypeId, long testCollectionId) {
+		String query = """
+				from TestInstance t
+				where
+					t.testTemplate.testType.testTypeId = :testTypeId and
+					t.testCollection.testCollectionId = :testCollectionId
+				order by t.ordering asc, t.title desc
+				""";
+		return UsefulMethods.castList(TestInstance.class,
+				getEntityManager().createQuery(query).setParameter("testTypeId", testTypeId)
+						.setParameter("testCollectionId", testCollectionId).getResultList());
 	}
 
@@ -464,3 +513,25 @@
 	}
 
+	@Override
+	public List<TestCollection> getTestCollectionsWithTestInstances() {
+		try {
+			// TestCollections that have TestInstances
+			List<TestCollection> list = UsefulMethods.castList(TestCollection.class, getEntityManager().createQuery("""
+					select distinct ti.testCollection
+					from TestInstance ti
+					""").getResultList());
+			// Add to them TestCollectionts that are Parents to another, or that have subCollections
+			List<TestCollection> listAdded = UsefulMethods.castList(TestCollection.class,
+					getEntityManager().createQuery("""
+							select distinct tc.parentCollection
+							from TestCollection tc
+							""").getResultList());
+			list.addAll(listAdded);
+			return list;
+		} catch (Exception e) {
+			logger.error("Error {}", e.getMessage());
+			return null;
+		}
+	}
+
 }
Index: dbLearnStar-webApp/src/main/resources/dblearnstar/webapp/pages/ExamsAndTasksOverviewPage.tml
===================================================================
--- dbLearnStar-webApp/src/main/resources/dblearnstar/webapp/pages/ExamsAndTasksOverviewPage.tml	(revision e96fbd37458d5fb4b59dfda0a6d00800095c298a)
+++ dbLearnStar-webApp/src/main/resources/dblearnstar/webapp/pages/ExamsAndTasksOverviewPage.tml	(revision c1fe4e186716eff250058fcc5078d5146508c403)
@@ -20,96 +20,98 @@
 
 <div t:type="zone" t:id="collectionZone" id="collectionZone">
+	<div t:type="if" t:test="testCollection">
+		<div t:type="loop" t:source="testTypes" t:value="testType"
+			class="testType">
 
-	<div t:type="loop" t:source="testTypes" t:value="testType"
-		class="testType">
+			<div t:type="if" t:test="testInstances">
 
-		<div t:type="if" t:test="testInstances">
+				<h2>${translateTestTypeTitle}</h2>
 
-			<h2>${translateTestTypeTitle}</h2>
+				<div class="mb-3" id="accordion" role="tablist"
+					aria-multiselectable="false">
 
-			<div class="mb-3" id="accordion" role="tablist"
-				aria-multiselectable="false">
+					<div class="card p-0 mb-2" t:type="loop" t:source="testInstances"
+						t:value="testInstance" id="ti${hashedTestInstanceId}">
 
-				<div class="card p-0 mb-2" t:type="loop" t:source="testInstances"
-					t:value="testInstance" id="ti${hashedTestInstanceId}">
-
-					<div class="card-header ${classTestIsNow} pt-2 pb-0" role="tab"
-						id="heading${hashedTestInstanceId}">
-						<div class="float-right text-right col-3 p-0 " t:type="if"
-							t:test="userInfo.instructor">
-							<a href="" class="btn btn-sm btn-secondary mr-3"
-								t:type="eventlink" t:id="evaluate" t:context="testInstance">Evaluation</a>
-							${message:openToAllStudents-label}: <a href=""
-								class="btn btn-sm p-0 ${ClassOpenToAllStudents}" t:type="eventlink"
-								t:id="toggleOpenToAll" t:context="testInstance"><span
-								t:type="booleanindicator"
-								t:value="testInstance.openToAllStudents" t:showCheckMark="true"
-								t:showNo="true" /></a><br />
-							${message:openForReviewByStudents-label}: <a href=""
-								class="btn btn-sm p-0 ${ClassOpenForReviewByStudents}" t:type="eventlink"
-								t:id="toggleOpenForReviewByStudents" t:context="testInstance"><span
-								t:type="booleanindicator"
-								t:value="testInstance.openForReviewByStudents"
-								t:showCheckMark="true" t:showNo="true" /></a><br />
-						</div>
-						<div class="col-9">
-							<a role="button" data-toggle="collapse" data-parent="#accordion"
-								href="#collapseTasks${hashedTestInstanceId}"
-								aria-expanded="true"
-								aria-controls="collapseTasks${hashedTestInstanceId}"
-								class="btn p-0 col-12 text-left"><h3>${translateTestInstanceTitle}</h3></a>
-						</div>
-					</div>
-
-					<div id="collapseTasks${hashedTestInstanceId}"
-						class="card-body p-3 collapse" role="tabpanel"
-						aria-labelledby="heading${hashedTestInstanceId}">
-
-						<div class="float-right">
-							<t:if t:test="testInstance.openForReviewByStudents">
-								<a href="" class="btn btn-outline-info" t:type="pagelink"
-									t:page="SolutionComparator" t:context="testInstance">
-									${message:solutionComparator-pagelink}</a>
-								<a href="" class="btn btn-outline-info" t:type="pagelink"
-									t:page="OpenDiscussions" t:context="testInstance">
-									${message:OpenDiscussions-pagelink}</a>
-							</t:if>
+						<div class="card-header ${classTestIsNow} pt-2 pb-0" role="tab"
+							id="heading${hashedTestInstanceId}">
+							<div class="float-right text-right col-3 p-0 " t:type="if"
+								t:test="userInfo.instructor">
+								<a href="" class="btn btn-sm btn-secondary mr-3"
+									t:type="eventlink" t:id="evaluate" t:context="testInstance">Evaluation</a>
+								${message:openToAllStudents-label}: <a href=""
+									class="btn btn-sm p-0 ${ClassOpenToAllStudents}"
+									t:type="eventlink" t:id="toggleOpenToAll"
+									t:context="testInstance"><span t:type="booleanindicator"
+									t:value="testInstance.openToAllStudents" t:showCheckMark="true"
+									t:showNo="true" /></a><br />
+								${message:openForReviewByStudents-label}: <a href=""
+									class="btn btn-sm p-0 ${ClassOpenForReviewByStudents}"
+									t:type="eventlink" t:id="toggleOpenForReviewByStudents"
+									t:context="testInstance"><span t:type="booleanindicator"
+									t:value="testInstance.openForReviewByStudents"
+									t:showCheckMark="true" t:showNo="true" /></a><br />
+							</div>
+							<div class="col-9">
+								<a role="button" data-toggle="collapse" data-parent="#accordion"
+									href="#collapseTasks${hashedTestInstanceId}"
+									aria-expanded="true"
+									aria-controls="collapseTasks${hashedTestInstanceId}"
+									class="btn p-0 col-12 text-left"><h3>${translateTestInstanceTitle}</h3></a>
+							</div>
 						</div>
 
-						<p>${message:scheduledFor-label}:
-							<span class="badge badge-pill badge-info">${testInstance.scheduledFor}</span>
-							- ${message:scheduledUntil-label}: <span
-								class="badge badge-pill badge-info">${testInstance.scheduledUntil}</span>
-						</p>
-						<p>
-							<t:outputraw t:value="translatedTestInstanceDescription" />
-						</p>
-						<table class="table table-hover table-bordered table-striped">
-							<thead>
-								<tr class="d-flex">
-									<th class="col-2">${message:task-label}</th>
-									<th class="col-1">${message:task-points-label}</th>
-									<th class="col-7">${message:description-label}</th>
-									<th class="col-2">${message:task-status-label}</th>
-								</tr>
-							</thead>
-							<tbody>
-								<tr class="d-flex taskElement" t:type="loop"
-									t:source="taskInTestInstances" t:value="taskInTestInstance">
-									<td class="col-2 taskTitleCell"><a
-										class="col-12 btn ${classBtnSolved} btn-sm" t:type="PageLink"
-										t:page="QueryTest" t:id="SolveTest"
-										t:context="taskInTestInstance">${translatedTaskInTestInstanceTaskTitle}</a>
-									</td>
-									<td class="col-1">${taskInTestInstance.points}</td>
-									<td class="col-7 taskContentCell"><p t:type="outputraw"
-											t:value="translateTaskDescription" /></td>
-									<td class="col-2">${message:numPersonsTriedToSolve-label}:
-										${numPersonsTriedToSolve} <br />
-										${message:numPersonsSuccessful-label}: ${numPersonsSuccessful}
-									</td>
-								</tr>
-							</tbody>
-						</table>
+						<div id="collapseTasks${hashedTestInstanceId}"
+							class="card-body p-3 collapse" role="tabpanel"
+							aria-labelledby="heading${hashedTestInstanceId}">
+
+							<div class="float-right">
+								<t:if t:test="testInstance.openForReviewByStudents">
+									<a href="" class="btn btn-outline-info" t:type="pagelink"
+										t:page="SolutionComparator" t:context="testInstance">
+										${message:solutionComparator-pagelink}</a>
+									<a href="" class="btn btn-outline-info" t:type="pagelink"
+										t:page="OpenDiscussions" t:context="testInstance">
+										${message:OpenDiscussions-pagelink}</a>
+								</t:if>
+							</div>
+
+							<p>${message:scheduledFor-label}:
+								<span class="badge badge-pill badge-info">${testInstance.scheduledFor}</span>
+								- ${message:scheduledUntil-label}: <span
+									class="badge badge-pill badge-info">${testInstance.scheduledUntil}</span>
+							</p>
+							<p>
+								<t:outputraw t:value="translatedTestInstanceDescription" />
+							</p>
+							<table class="table table-hover table-bordered table-striped">
+								<thead>
+									<tr class="d-flex">
+										<th class="col-2">${message:task-label}</th>
+										<th class="col-1">${message:task-points-label}</th>
+										<th class="col-7">${message:description-label}</th>
+										<th class="col-2">${message:task-status-label}</th>
+									</tr>
+								</thead>
+								<tbody>
+									<tr class="d-flex taskElement" t:type="loop"
+										t:source="taskInTestInstances" t:value="taskInTestInstance">
+										<td class="col-2 taskTitleCell"><a
+											class="col-12 btn ${classBtnSolved} btn-sm" t:type="PageLink"
+											t:page="QueryTest" t:id="SolveTest"
+											t:context="taskInTestInstance">${translatedTaskInTestInstanceTaskTitle}</a>
+										</td>
+										<td class="col-1">${taskInTestInstance.points}</td>
+										<td class="col-7 taskContentCell"><p t:type="outputraw"
+												t:value="translateTaskDescription" /></td>
+										<td class="col-2">${message:numPersonsTriedToSolve-label}:
+											${numPersonsTriedToSolve} <br />
+											${message:numPersonsSuccessful-label}:
+											${numPersonsSuccessful}
+										</td>
+									</tr>
+								</tbody>
+							</table>
+						</div>
 					</div>
 				</div>
@@ -118,3 +120,4 @@
 	</div>
 </div>
+
 </html>
