diff --git a/src/main/java/org/olat/course/assessment/ui/tool/ConfirmStopAssessmentModeController.java b/src/main/java/org/olat/course/assessment/ui/tool/ConfirmStopAssessmentModeController.java
index 164afa212a8d3a7fd078c478208a2b1bc34597a0..3e91dd4991661903785c2a7f8d01309ead96d47f 100644
--- a/src/main/java/org/olat/course/assessment/ui/tool/ConfirmStopAssessmentModeController.java
+++ b/src/main/java/org/olat/course/assessment/ui/tool/ConfirmStopAssessmentModeController.java
@@ -19,16 +19,19 @@
  */
 package org.olat.course.assessment.ui.tool;
 
-import java.util.Arrays;
 import java.util.List;
 import java.util.Set;
+import java.util.stream.Collectors;
 
 import org.olat.basesecurity.IdentityRef;
+import org.olat.basesecurity.model.IdentityRefImpl;
 import org.olat.core.commons.persistence.DB;
 import org.olat.core.gui.UserRequest;
 import org.olat.core.gui.components.form.flexible.FormItemContainer;
+import org.olat.core.gui.components.form.flexible.elements.MultipleSelectionElement;
 import org.olat.core.gui.components.form.flexible.impl.FormBasicController;
 import org.olat.core.gui.components.form.flexible.impl.FormLayoutContainer;
+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;
@@ -36,6 +39,7 @@ import org.olat.core.util.StringHelper;
 import org.olat.course.assessment.AssessmentMode;
 import org.olat.course.assessment.AssessmentModeCoordinationService;
 import org.olat.course.assessment.AssessmentModeManager;
+import org.olat.ims.qti21.QTI21Service;
 import org.olat.modules.dcompensation.DisadvantageCompensationService;
 import org.springframework.beans.factory.annotation.Autowired;
 
@@ -48,10 +52,15 @@ import org.springframework.beans.factory.annotation.Autowired;
 public class ConfirmStopAssessmentModeController extends FormBasicController {
 	
 	private final AssessmentMode mode;
+	
+	private MultipleSelectionElement withDisadvantagesEl;
+	private MultipleSelectionElement pullRunningSessionsEl;
 
 	@Autowired
 	private DB dbInstance;
 	@Autowired
+	private QTI21Service qti21Service;
+	@Autowired
 	private AssessmentModeManager assessmentModeManager;
 	@Autowired
 	private DisadvantageCompensationService disadvantageCompensationService;
@@ -66,11 +75,49 @@ public class ConfirmStopAssessmentModeController extends FormBasicController {
 
 	@Override
 	protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) {
+		List<String> nodeList = mode.getElementAsList();
+		Set<Long> assessedIdentityKeys = assessmentModeManager.getAssessedIdentityKeys(mode);
+		boolean extensionTime = assessmentModeCoordinationService.isDisadvantageCompensationExtensionTime(mode);
+		
+		boolean runningSessions;
+		if(extensionTime) {
+			Set<Long> disadvantegCompensationAssessedIdentityKeys = getIdentitiesWithDisadvantageCompensations(assessedIdentityKeys, nodeList);
+			runningSessions = hasAssessmentTestSessionsRunning(disadvantegCompensationAssessedIdentityKeys, nodeList);
+			initFormExtensionTime(formLayout);
+		} else {
+			runningSessions = hasAssessmentTestSessionsRunning(assessedIdentityKeys, nodeList);
+			initForm(formLayout, nodeList, assessedIdentityKeys);
+		}
+		
+		if(runningSessions && false) {//TODO assessment mode
+			KeyValues keyValues = new KeyValues();
+			keyValues.add(KeyValues.entry("with", translate("confirm.stop.pull.running.sessions")));
+			pullRunningSessionsEl = uifactory.addCheckboxesHorizontal("runningSessions", "confirm.stop.pull.running.sessions", formLayout,
+					keyValues.keys(), keyValues.values());
+			pullRunningSessionsEl.select(keyValues.keys()[0], true);
+		}
+
+		uifactory.addFormCancelButton("cancel", formLayout, ureq, getWindowControl());
+		uifactory.addFormSubmitButton("stop", formLayout);
+	}
+	
+	private void initFormExtensionTime(FormItemContainer formLayout) {
+		if(formLayout instanceof FormLayoutContainer) {
+			FormLayoutContainer layoutCont = (FormLayoutContainer)formLayout;
+			String name = StringHelper.escapeHtml(mode.getName());
+			layoutCont.contextPut("msg", translate("confirm.stop.final.text.details", new String[] { name }));
+		}
+	}
+	
+	private void initForm(FormItemContainer formLayout, List<String> nodeList, Set<Long> assessedIdentityKeys) {
+		Set<Long> disadvantegCompensationAssessedIdentityKeys = getIdentitiesWithDisadvantageCompensations(assessedIdentityKeys, nodeList);
+		int numOfDisadvantagedUsers = disadvantegCompensationAssessedIdentityKeys.size();
+
 		if(formLayout instanceof FormLayoutContainer) {
 			FormLayoutContainer layoutCont = (FormLayoutContainer)formLayout;
 			String name = StringHelper.escapeHtml(mode.getName());
 			layoutCont.contextPut("msg", translate("confirm.stop.text.details", new String[] { name }));
-			int numOfDisadvantagedUsers = hasDisadvantageCompensations();
+
 			if(numOfDisadvantagedUsers == 1) {
 				layoutCont.contextPut("compensationMsg", translate("confirm.stop.text.compensations"));
 			} else if(numOfDisadvantagedUsers > 1) {
@@ -78,9 +125,13 @@ public class ConfirmStopAssessmentModeController extends FormBasicController {
 						new String[] { Integer.toString(numOfDisadvantagedUsers) }));
 			}
 		}
-
-		uifactory.addFormCancelButton("cancel", formLayout, ureq, getWindowControl());
-		uifactory.addFormSubmitButton("stop", formLayout);
+		
+		if(numOfDisadvantagedUsers > 0) {
+			KeyValues keyValues = new KeyValues();
+			keyValues.add(KeyValues.entry("with", translate("confirm.stop.with.disadvantages")));
+			withDisadvantagesEl = uifactory.addCheckboxesHorizontal("disadvantages", "confirm.stop.with.disadvantages", formLayout,
+					keyValues.keys(), keyValues.values());
+		}
 	}
 	
 	@Override
@@ -88,26 +139,28 @@ public class ConfirmStopAssessmentModeController extends FormBasicController {
 		//
 	}
 	
-	private int hasDisadvantageCompensations() {
-		String nodes = mode.getElementList();
-		List<String> nodeList = StringHelper.containsNonWhitespace(nodes) ? Arrays.asList(nodes.split("[,]")) : null;
-		List<IdentityRef> disadvantagedIdentities = disadvantageCompensationService
+	private Set<Long> getIdentitiesWithDisadvantageCompensations(final Set<Long> assessedIdentityKeys, final List<String> nodeList) {
+		final List<IdentityRef> disadvantagedIdentities = disadvantageCompensationService
 				.getActiveDisadvantagedUsers(mode.getRepositoryEntry(), nodeList);
-		Set<Long> assessedIdentityKeys = assessmentModeManager.getAssessedIdentityKeys(mode);
-		
-		int count = 0;
-		for(IdentityRef disadvantagedIdentity:disadvantagedIdentities) {
-			if(assessedIdentityKeys.contains(disadvantagedIdentity.getKey())) {
-				count++;
-			}
-		}
-		return count;
+		return disadvantagedIdentities.stream()
+			.filter(ref -> assessedIdentityKeys.contains(ref.getKey()))
+			.map(IdentityRef::getKey)
+			.collect(Collectors.toSet());
+	}
+	
+	private boolean hasAssessmentTestSessionsRunning(Set<Long> assessedIdentityKeys, List<String> nodeList) {
+		List<IdentityRef> identities = assessedIdentityKeys.stream()
+				.map(IdentityRefImpl::new)
+				.collect(Collectors.toList());
+		return qti21Service.isRunningAssessmentTestSession(mode.getRepositoryEntry(), nodeList, identities);
 	}
 
 	@Override
 	protected void formOK(UserRequest ureq) {
 		AssessmentMode reloadedMode = assessmentModeManager.getAssessmentModeById(mode.getKey());
-		assessmentModeCoordinationService.stopAssessment(reloadedMode);
+		boolean pullTests = pullRunningSessionsEl != null && pullRunningSessionsEl.isAtLeastSelected(1);
+		boolean withDisadvantaged = withDisadvantagesEl == null || withDisadvantagesEl.isAtLeastSelected(1);
+		assessmentModeCoordinationService.stopAssessment(reloadedMode, pullTests, withDisadvantaged);
 		dbInstance.commit();
 		fireEvent(ureq, Event.DONE_EVENT);
 	}