diff --git a/src/main/java/org/olat/course/nodes/iq/QTI21AssessmentRunController.java b/src/main/java/org/olat/course/nodes/iq/QTI21AssessmentRunController.java
index 4a23c7a5db0e2562340e6a82ca7ccecaffe8c1b3..312c45d5cf22458a8edaadaefec166c19e1adf2f 100644
--- a/src/main/java/org/olat/course/nodes/iq/QTI21AssessmentRunController.java
+++ b/src/main/java/org/olat/course/nodes/iq/QTI21AssessmentRunController.java
@@ -200,7 +200,6 @@ public class QTI21AssessmentRunController extends BasicController implements Gen
 				mainVC.contextPut("hasPassedValue", (scoreEval.getPassed() == null ? Boolean.FALSE : Boolean.TRUE));
 				mainVC.contextPut("passed", scoreEval.getPassed());
 				mainVC.contextPut("attempts", attempts); //at least one attempt
-				exposeResults(ureq);
 			}
 		} else if(courseNode instanceof IQTESTCourseNode) {
 			IQTESTCourseNode testCourseNode = (IQTESTCourseNode)courseNode;
@@ -236,7 +235,9 @@ public class QTI21AssessmentRunController extends BasicController implements Gen
 					mainVC.contextPut("log", am.getUserNodeLog(courseNode, identity));
 				}
 			}
-		}	
+		}
+		
+		exposeResults(ureq);
 	}
 	
 	private void checkChats (UserRequest ureq) {
@@ -383,26 +384,38 @@ public class QTI21AssessmentRunController extends BasicController implements Gen
 	private void doShowResults(UserRequest ureq) {
 		removeAsListenerAndDispose(resultCtrl);
 		
-		AssessmentManager am = userCourseEnv.getCourseEnvironment().getAssessmentManager();
-		AssessmentEntry assessmentEntry = am.getAssessmentEntry(courseNode, getIdentity());
-		AssessmentTestSession session = qtiService.getAssessmentTestSession(assessmentEntry.getAssessmentId());
+		AssessmentTestSession session = null;
+		if(courseNode instanceof SelfAssessableCourseNode) {
+			RepositoryEntry courseEntry = userCourseEnv.getCourseEnvironment().getCourseGroupManager().getCourseEntry();
+			session = qtiService.getLastAssessmentTestSessions(courseEntry, courseNode.getIdent(), testEntry, getIdentity());
+		} else {
+			AssessmentManager am = userCourseEnv.getCourseEnvironment().getAssessmentManager();
+			AssessmentEntry assessmentEntry = am.getAssessmentEntry(courseNode, getIdentity());
+			session = qtiService.getAssessmentTestSession(assessmentEntry.getAssessmentId());
+		}
+		
 		if(session == null) {
 			mainVC.contextPut("showResults", Boolean.FALSE);
 		} else {
-			FileResourceManager frm = FileResourceManager.getInstance();
-			File fUnzippedDirRoot = frm.unzipFileResource(session.getTestEntry().getOlatResource());
-			URI assessmentObjectUri = qtiService.createAssessmentObjectUri(fUnzippedDirRoot);
-			File submissionDir = qtiService.getAssessmentResultFile(session);
-			String mapperUri = registerCacheableMapper(null, "QTI21CNResults::" + session.getTestEntry().getKey(),
-					new ResourcesMapper(assessmentObjectUri, submissionDir));
-	
-			resultCtrl = new AssessmentResultController(ureq, getWindowControl(), getIdentity(), true,
-					session, getDeliveryOptions().getShowResultsOnFinish(), fUnzippedDirRoot, mapperUri, false, false);
-			listenTo(resultCtrl);
-			mainVC.put("resultReport", resultCtrl.getInitialComponent());
-			mainVC.contextPut("showResults", Boolean.TRUE);
+			doShowResults(ureq, session);
 		}
 	}
+
+	private void doShowResults(UserRequest ureq, AssessmentTestSession session) {
+		FileResourceManager frm = FileResourceManager.getInstance();
+		File fUnzippedDirRoot = frm.unzipFileResource(session.getTestEntry().getOlatResource());
+		URI assessmentObjectUri = qtiService.createAssessmentObjectUri(fUnzippedDirRoot);
+		File submissionDir = qtiService.getAssessmentResultFile(session);
+		String mapperUri = registerCacheableMapper(null, "QTI21CNResults::" + session.getTestEntry().getKey(),
+				new ResourcesMapper(assessmentObjectUri, submissionDir));
+
+		resultCtrl = new AssessmentResultController(ureq, getWindowControl(), getIdentity(), true,
+				session, getDeliveryOptions().getShowResultsOnFinish(), fUnzippedDirRoot, mapperUri, false, false);
+		listenTo(resultCtrl);
+		mainVC.put("resultReport", resultCtrl.getInitialComponent());
+		mainVC.contextPut("showResults", Boolean.TRUE);
+	}
+	
 	
 	private void doHideResults() {
 		mainVC.contextPut("showResults", Boolean.FALSE);