diff --git a/src/main/java/org/olat/course/nodes/iq/QTI21IdentityListCourseNodeToolsController.java b/src/main/java/org/olat/course/nodes/iq/QTI21IdentityListCourseNodeToolsController.java
index ac72b5777eb659cc10a326f78958658564c0ff5d..7ce2075705b4e049d424d3aedd1e7df2acf42e56 100644
--- a/src/main/java/org/olat/course/nodes/iq/QTI21IdentityListCourseNodeToolsController.java
+++ b/src/main/java/org/olat/course/nodes/iq/QTI21IdentityListCourseNodeToolsController.java
@@ -314,7 +314,7 @@ public class QTI21IdentityListCourseNodeToolsController extends AbstractToolsCon
 		Map<Identity, TestSessionState> testSessionStates = new HashMap<>();
 		testSessionStates.put(assessedIdentity, testSessionState);
 		CorrectionOverviewModel model = new CorrectionOverviewModel(courseEntry, testCourseNode, testEntry,
-				resolvedAssessmentTest, manifestBuilder, lastSessionMap, testSessionStates);
+				resolvedAssessmentTest, manifestBuilder, lastSessionMap, testSessionStates, getTranslator());
 		
 		correctionCtrl = new CorrectionIdentityAssessmentItemListController(ureq, getWindowControl(), stackPanel, model, assessedIdentity, assessmentEntryDone);
 		listenTo(correctionCtrl);
diff --git a/src/main/java/org/olat/ims/qti21/ui/QTI21AssessmentDetailsController.java b/src/main/java/org/olat/ims/qti21/ui/QTI21AssessmentDetailsController.java
index eb129c2b63c025e29db49d38ecf0f705e05cf7aa..0aed78139fe192eeaaecb0522e4e93be0bbbda8d 100644
--- a/src/main/java/org/olat/ims/qti21/ui/QTI21AssessmentDetailsController.java
+++ b/src/main/java/org/olat/ims/qti21/ui/QTI21AssessmentDetailsController.java
@@ -480,7 +480,7 @@ public class QTI21AssessmentDetailsController extends FormBasicController {
 			testSessionStates.put(assessedIdentity, testSessionState);
 			boolean correctionReadOnly = readOnly || assessmentEntryDone;
 			CorrectionOverviewModel model = new CorrectionOverviewModel(entry, courseNode, testEntry,
-					resolvedAssessmentTest, manifestBuilder, lastSessions, testSessionStates);
+					resolvedAssessmentTest, manifestBuilder, lastSessions, testSessionStates, getTranslator());
 			correctionCtrl = new CorrectionIdentityAssessmentItemListController(ureq, getWindowControl(), stackPanel,
 					model, assessedIdentity, correctionReadOnly);
 			listenTo(correctionCtrl);
diff --git a/src/main/java/org/olat/ims/qti21/ui/assessment/CorrectionAssessmentItemListController.java b/src/main/java/org/olat/ims/qti21/ui/assessment/CorrectionAssessmentItemListController.java
index 12ca5fd64c525c49e1b6e5588d6fadac23906e52..e62983cf31b74a0630e15369f85a74f436601a15 100644
--- a/src/main/java/org/olat/ims/qti21/ui/assessment/CorrectionAssessmentItemListController.java
+++ b/src/main/java/org/olat/ims/qti21/ui/assessment/CorrectionAssessmentItemListController.java
@@ -411,7 +411,6 @@ public class CorrectionAssessmentItemListController extends FormBasicController
 		}
 		
 		//reorder to match the list of identities
-		int count = 1;
 		List<Identity> assessedIdentities = model.getAssessedIdentities();
 		List<AssessmentItemListEntry> reorderItemSessions = new ArrayList<>(assessedIdentities.size());
 		for(Identity assessedIdentity:assessedIdentities) {
@@ -424,7 +423,7 @@ public class CorrectionAssessmentItemListController extends FormBasicController
 		
 					String title;
 					if(anonymous) {
-						title = translate("number.assessed.identity", new String[] { Integer.toString(count++)} );
+						title = model.getAnonymizedName(assessedIdentity);
 					} else {
 						title = userManager.getUserDisplayName(assessedIdentity);
 					}
diff --git a/src/main/java/org/olat/ims/qti21/ui/assessment/CorrectionIdentityListController.java b/src/main/java/org/olat/ims/qti21/ui/assessment/CorrectionIdentityListController.java
index ab80e635b0d1f35ef1a7cde756f8bbf926b791c1..95149d69537c4b9bbd66cc00de01964e260cbb14 100644
--- a/src/main/java/org/olat/ims/qti21/ui/assessment/CorrectionIdentityListController.java
+++ b/src/main/java/org/olat/ims/qti21/ui/assessment/CorrectionIdentityListController.java
@@ -219,15 +219,14 @@ public class CorrectionIdentityListController extends FormBasicController {
 			}
 		}
 		
-		int count = 0;
 		List<CorrectionIdentityRow> rows = new ArrayList<>(model.getNumberOfAssessedIdentities());
 		Map<Identity, CorrectionIdentityRow> identityToRows = new HashMap<>();
 		for(Map.Entry<Identity, AssessmentTestSession> entry:model.getLastSessions().entrySet()) {
-			TestSessionState testSessionState = model.getTestSessionStates().get(entry.getKey());
+			Identity assessedIdentity = entry.getKey();
+			TestSessionState testSessionState = model.getTestSessionStates().get(assessedIdentity);
 			if(testSessionState != null) {
-				String user = translate("number.assessed.identity", new String[]{ Integer.toString(++count) });
-				CorrectionIdentityRow row = new CorrectionIdentityRow(user, entry.getKey(), entry.getValue(), userPropertyHandlers, getLocale());
-				rows.add(row);
+				String user = model.getAnonymizedName(assessedIdentity);
+				CorrectionIdentityRow row = new CorrectionIdentityRow(user, assessedIdentity, entry.getValue(), userPropertyHandlers, getLocale());
 				identityToRows.put(entry.getKey(), row);
 				
 				for(Map.Entry<TestPlanNodeKey, ItemSessionState> itemEntry:testSessionState.getItemSessionStates().entrySet()) {
@@ -239,6 +238,16 @@ public class CorrectionIdentityListController extends FormBasicController {
 			}
 		}
 		
+		for(Identity assessedIdentity:model.getAssessedIdentities()) {
+			CorrectionIdentityRow row = identityToRows.remove(assessedIdentity);
+			if(row != null) {
+				rows.add(row);
+			}
+		}
+		if(!identityToRows.isEmpty()) {
+			rows.addAll(identityToRows.values());
+		}
+		
 		tableModel.setObjects(rows);
 		tableEl.reset(reset, reset, true);
 	}
diff --git a/src/main/java/org/olat/ims/qti21/ui/assessment/CorrectionOverviewController.java b/src/main/java/org/olat/ims/qti21/ui/assessment/CorrectionOverviewController.java
index 206a334d09253e645b7f5138ccf5d7891eec1b92..08295ae7a04134b7959b5ecc1edb4aae2e250e84 100644
--- a/src/main/java/org/olat/ims/qti21/ui/assessment/CorrectionOverviewController.java
+++ b/src/main/java/org/olat/ims/qti21/ui/assessment/CorrectionOverviewController.java
@@ -111,7 +111,7 @@ public class CorrectionOverviewController extends BasicController implements Too
 
 		List<Identity> assessedIdentities = initializeAssessedIdentities();
 		model = new CorrectionOverviewModel(courseEntry, courseNode, testEntry,
-				resolvedAssessmentTest, manifestBuilder, assessedIdentities);
+				resolvedAssessmentTest, manifestBuilder, assessedIdentities, getTranslator());
 		
 		segmentButtonsCmp = new ButtonGroupComponent("segments");
 		assessmentItemsLink = LinkFactory.createLink("correction.assessment.items", getTranslator(), this);
diff --git a/src/main/java/org/olat/ims/qti21/ui/assessment/CorrectionOverviewModel.java b/src/main/java/org/olat/ims/qti21/ui/assessment/CorrectionOverviewModel.java
index 17dedb9adb07dc61529e2f941f6b2905238b8479..1f183f489b52e4c86d889c79bfa28c62f5c9ad28 100644
--- a/src/main/java/org/olat/ims/qti21/ui/assessment/CorrectionOverviewModel.java
+++ b/src/main/java/org/olat/ims/qti21/ui/assessment/CorrectionOverviewModel.java
@@ -30,8 +30,10 @@ import java.util.concurrent.ConcurrentHashMap;
 
 import org.apache.logging.log4j.Logger;
 import org.olat.core.CoreSpringFactory;
+import org.olat.core.gui.translator.Translator;
 import org.olat.core.id.Identity;
 import org.olat.core.logging.Tracing;
+import org.olat.core.util.StringHelper;
 import org.olat.course.CourseFactory;
 import org.olat.course.assessment.AssessmentHelper;
 import org.olat.course.assessment.CourseAssessmentService;
@@ -47,6 +49,7 @@ import org.olat.modules.assessment.model.AssessmentEntryStatus;
 import org.olat.repository.RepositoryEntry;
 import org.springframework.beans.factory.annotation.Autowired;
 
+import edu.emory.mathcs.backport.java.util.Collections;
 import uk.ac.ed.ph.jqtiplus.node.item.AssessmentItem;
 import uk.ac.ed.ph.jqtiplus.node.item.interaction.DrawingInteraction;
 import uk.ac.ed.ph.jqtiplus.node.item.interaction.ExtendedTextInteraction;
@@ -79,6 +82,7 @@ public class CorrectionOverviewModel {
 	private final Set<Identity> identityWithErrors = new HashSet<>();
 	private final Map<String,Boolean> manualCorrections = new ConcurrentHashMap<>();
 
+	private final Map<Identity,String> anomyzedNamed;
 	private Map<Identity,AssessmentTestSession> lastSessions;
 	private final Map<AssessmentTestSession,Identity> reversedLastSessions = new HashMap<>();
 	private final Map<Identity,Boolean> assessedIdentitiesDone = new HashMap<>();
@@ -90,7 +94,8 @@ public class CorrectionOverviewModel {
 	
 	public CorrectionOverviewModel(RepositoryEntry courseEntry, IQTESTCourseNode courseNode, RepositoryEntry testEntry,
 			ResolvedAssessmentTest resolvedAssessmentTest, ManifestBuilder manifestBuilder,
-			Map<Identity,AssessmentTestSession> lastSessions, Map<Identity, TestSessionState> testSessionStates) {
+			Map<Identity,AssessmentTestSession> lastSessions, Map<Identity, TestSessionState> testSessionStates,
+			Translator translator) {
 		CoreSpringFactory.autowireObject(this);
 		this.courseEntry = courseEntry;
 		this.courseNode = courseNode;
@@ -100,15 +105,18 @@ public class CorrectionOverviewModel {
 		this.lastSessions = lastSessions;
 		this.testSessionStates = testSessionStates;
 		assessedIdentities = new ArrayList<>(lastSessions.keySet());
+		Collections.shuffle(assessedIdentities);
 		
 		for(Map.Entry<Identity, AssessmentTestSession> entry:lastSessions.entrySet()) {
 			reversedLastSessions.put(entry.getValue(), entry.getKey());
 		}
+		
+		anomyzedNamed = anonymize(translator);
 	}
 	
 	public CorrectionOverviewModel(RepositoryEntry courseEntry, IQTESTCourseNode courseNode, RepositoryEntry testEntry,
 			ResolvedAssessmentTest resolvedAssessmentTest, ManifestBuilder manifestBuilder,
-			List<Identity> assessedIdentities) {
+			List<Identity> assessedIdentities, Translator translator) {
 		CoreSpringFactory.autowireObject(this);
 		this.courseEntry = courseEntry;
 		this.courseNode = courseNode;
@@ -116,8 +124,36 @@ public class CorrectionOverviewModel {
 		this.manifestBuilder = manifestBuilder;
 		this.resolvedAssessmentTest = resolvedAssessmentTest;
 		this.assessedIdentities = new ArrayList<>(assessedIdentities);
+		Collections.shuffle(this.assessedIdentities);
+		
 		lastSessions = loadLastSessions();
 		testSessionStates = getTestSessionStates(lastSessions);
+		
+		anomyzedNamed = anonymize(translator);
+	}
+	
+	protected String getAnonymizedName(Identity identity) {
+		String name = anomyzedNamed.get(identity);
+		if(!StringHelper.containsNonWhitespace(name)) {
+			name = "UNKOWN";
+		}
+		return name;
+	}
+	
+	private Map<Identity,String> anonymize(Translator translator) {
+		int count = 0;
+
+		Map<Identity,String> names = new HashMap<>();
+		for(Identity assessedIdentity:assessedIdentities) {
+			if(lastSessions.containsKey(assessedIdentity)) {
+				String title = translator.translate("number.assessed.identity", new String[] { Integer.toString(++count)} );
+				names.put(assessedIdentity, title);
+			} else {
+				String title = translator.translate("number.assessed.identity", new String[] { "ERR" } );
+				names.put(assessedIdentity, title);
+			}
+		}
+		return Map.copyOf(names);
 	}
 
 	public String getSubIdent() {
diff --git a/src/main/java/org/olat/modules/grading/ui/GradingAssignmentsListController.java b/src/main/java/org/olat/modules/grading/ui/GradingAssignmentsListController.java
index d6acbd17a3554a49b1c7abb97140c69e9e0ad21b..2b6e15c41403f02c9700ebc3b67c29d2df390076 100644
--- a/src/main/java/org/olat/modules/grading/ui/GradingAssignmentsListController.java
+++ b/src/main/java/org/olat/modules/grading/ui/GradingAssignmentsListController.java
@@ -596,7 +596,7 @@ public class GradingAssignmentsListController extends FormBasicController implem
 				Map<Identity, TestSessionState> testSessionStates = new HashMap<>();
 				testSessionStates.put(assessedIdentity, testSessionState);
 				CorrectionOverviewModel model = new CorrectionOverviewModel(entry, courseNode, referenceEntry,
-						resolvedAssessmentTest, manifestBuilder, lastSessions, testSessionStates);
+						resolvedAssessmentTest, manifestBuilder, lastSessions, testSessionStates, getTranslator());
 				GradingTimeRecordRef record = gradingService.getCurrentTimeRecord(assignment, ureq.getRequestTimestamp());
 				
 				correctionCtrl = new CorrectionIdentityAssessmentItemListController(ureq, getWindowControl(), stackPanel,