diff --git a/src/main/java/org/olat/ims/qti21/ui/QTI21ConfirmDeleteDataController.java b/src/main/java/org/olat/ims/qti21/ui/QTI21ConfirmDeleteDataController.java
new file mode 100644
index 0000000000000000000000000000000000000000..24c4486d03d1047ae9447ece64b906e93273d9d4
--- /dev/null
+++ b/src/main/java/org/olat/ims/qti21/ui/QTI21ConfirmDeleteDataController.java
@@ -0,0 +1,104 @@
+/**
+ * <a href="http://www.openolat.org">
+ * OpenOLAT - Online Learning and Training</a><br>
+ * <p>
+ * Licensed under the Apache License, Version 2.0 (the "License"); <br>
+ * you may not use this file except in compliance with the License.<br>
+ * You may obtain a copy of the License at the
+ * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a>
+ * <p>
+ * Unless required by applicable law or agreed to in writing,<br>
+ * software distributed under the License is distributed on an "AS IS" BASIS, <br>
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br>
+ * See the License for the specific language governing permissions and <br>
+ * limitations under the License.
+ * <p>
+ * Initial code contributed and copyrighted by<br>
+ * frentix GmbH, http://www.frentix.com
+ * <p>
+ */
+package org.olat.ims.qti21.ui;
+
+import java.util.List;
+
+import org.olat.core.gui.UserRequest;
+import org.olat.core.gui.components.form.flexible.FormItemContainer;
+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.control.Controller;
+import org.olat.core.gui.control.Event;
+import org.olat.core.gui.control.WindowControl;
+import org.olat.course.CorruptedCourseException;
+import org.olat.course.CourseFactory;
+import org.olat.course.ICourse;
+import org.olat.repository.RepositoryEntry;
+import org.olat.resource.references.Reference;
+import org.olat.resource.references.ReferenceManager;
+import org.springframework.beans.factory.annotation.Autowired;
+
+/**
+ * 
+ * Initial date: 25.08.2016<br>
+ * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com
+ *
+ */
+public class QTI21ConfirmDeleteDataController extends FormBasicController {
+	
+	private final RepositoryEntry testEntry;
+	
+	@Autowired
+	private ReferenceManager referenceManager;
+	
+	public QTI21ConfirmDeleteDataController(UserRequest ureq, WindowControl wControl, RepositoryEntry testEntry) {
+		super(ureq, wControl, "confirm_delete");
+		this.testEntry = testEntry;
+		initForm(ureq);
+	}
+
+	@Override
+	protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) {
+	
+		StringBuilder sb = new StringBuilder();
+		List<Reference> referencees = referenceManager.getReferencesTo(testEntry.getOlatResource());
+		for(Reference ref:referencees) {
+			if ("CourseModule".equals(ref.getSource().getResourceableTypeName())) {
+				if(sb.length() > 0) sb.append(", ");
+				try {
+					ICourse course = CourseFactory.loadCourse(ref.getSource().getResourceableId());
+					sb.append(course.getCourseTitle());
+				} catch(CorruptedCourseException e) {
+					logError("", e);
+				}
+			}
+		}
+
+		if(formLayout instanceof FormLayoutContainer) {
+			FormLayoutContainer layoutCont = (FormLayoutContainer)formLayout;
+			layoutCont.contextPut("referencees", sb.toString());
+		}
+
+		final FormLayoutContainer buttonGroupLayout = FormLayoutContainer.createButtonLayout("buttons", getTranslator());
+		buttonGroupLayout.setRootForm(mainForm);
+		formLayout.add(buttonGroupLayout);
+		
+		if(referencees.size() == 0) {
+			uifactory.addFormSubmitButton("delete", buttonGroupLayout);
+		}
+		uifactory.addFormCancelButton("cancel", buttonGroupLayout, ureq, getWindowControl());
+	}
+	
+	@Override
+	protected void doDispose() {
+		//
+	}
+
+	@Override
+	protected void formOK(UserRequest ureq) {
+		fireEvent(ureq, Event.DONE_EVENT);
+	}
+
+	@Override
+	protected void formCancelled(UserRequest ureq) {
+		fireEvent(ureq, Event.CANCELLED_EVENT);
+	}
+}
diff --git a/src/main/java/org/olat/ims/qti21/ui/QTI21RuntimeController.java b/src/main/java/org/olat/ims/qti21/ui/QTI21RuntimeController.java
index 68fa935c95b13543b0626ae8188548d316b9dd55..85cc5603040f3753960747c59fe716ea4e765204 100644
--- a/src/main/java/org/olat/ims/qti21/ui/QTI21RuntimeController.java
+++ b/src/main/java/org/olat/ims/qti21/ui/QTI21RuntimeController.java
@@ -39,9 +39,8 @@ import org.olat.core.gui.components.stack.PopEvent;
 import org.olat.core.gui.control.Controller;
 import org.olat.core.gui.control.Event;
 import org.olat.core.gui.control.WindowControl;
+import org.olat.core.gui.control.generic.closablewrapper.CloseableModalController;
 import org.olat.core.gui.control.generic.dtabs.Activateable2;
-import org.olat.core.gui.control.generic.modal.DialogBoxController;
-import org.olat.core.gui.control.generic.modal.DialogBoxUIFactory;
 import org.olat.core.id.Identity;
 import org.olat.core.id.OLATResourceable;
 import org.olat.core.logging.activity.ThreadLocalUserActivityLogger;
@@ -77,11 +76,12 @@ import uk.ac.ed.ph.jqtiplus.resolution.ResolvedAssessmentTest;
 public class QTI21RuntimeController extends RepositoryEntryRuntimeController  {
 	
 	private Link assessmentLink, testStatisticLink, qtiOptionsLink, resetDataLink;
-	
-	private DialogBoxController confirmResetDialog;
+
+	private CloseableModalController cmd;
 	private QTI21DeliveryOptionsController optionsCtrl;
 	private AssessmentToolController assessmentToolCtrl;
 	private QTI21RuntimeStatisticsController statsToolCtr;
+	private QTI21ConfirmDeleteDataController confirmResetDialog;
 	
 	private boolean reloadRuntime = false;
 
@@ -185,12 +185,25 @@ public class QTI21RuntimeController extends RepositoryEntryRuntimeController  {
 	@Override
 	protected void event(UserRequest ureq, Controller source, Event event) {
 		if(confirmResetDialog == source) {
-			if(DialogBoxUIFactory.isOkEvent(event) || DialogBoxUIFactory.isYesEvent(event)) {
+			if(event == Event.DONE_EVENT) {
 				doReset(ureq);
 			}
+			cmd.deactivate();
+			cleanUp();
+		} else if(cmd == source) {
+			cleanUp();
 		}
 		super.event(ureq, source, event);
 	}
+	
+	@Override
+	protected void cleanUp() {
+		super.cleanUp();
+		removeAsListenerAndDispose(confirmResetDialog);
+		removeAsListenerAndDispose(cmd);
+		confirmResetDialog = null;
+		cmd = null;
+	}
 
 	private void doReloadRuntimeController(UserRequest ureq) {
 		disposeRuntimeController();
@@ -276,9 +289,15 @@ public class QTI21RuntimeController extends RepositoryEntryRuntimeController  {
 	}
 	
 	private void doConfirmResetData(UserRequest ureq) {
+		if(confirmResetDialog != null) return;
+
+		confirmResetDialog = new QTI21ConfirmDeleteDataController(ureq, getWindowControl(), getRepositoryEntry());
+		listenTo(confirmResetDialog);
+
 		String title = translate("reset.test.data.title");
-		String text = translate("reset.test.data.text");
-		confirmResetDialog = activateOkCancelDialog(ureq, title, text, confirmResetDialog);
+		cmd = new CloseableModalController(getWindowControl(), translate("close"), confirmResetDialog.getInitialComponent(), true, title);
+		cmd.activate();
+		listenTo(cmd);
 	}
 	
 	private void doReset(UserRequest ureq) {
diff --git a/src/main/java/org/olat/ims/qti21/ui/_content/confirm_delete.html b/src/main/java/org/olat/ims/qti21/ui/_content/confirm_delete.html
new file mode 100644
index 0000000000000000000000000000000000000000..7fc00d614ced4d81388ab6b6729522f0404c8384
--- /dev/null
+++ b/src/main/java/org/olat/ims/qti21/ui/_content/confirm_delete.html
@@ -0,0 +1,9 @@
+#if($r.isNotEmpty($referencees))
+	<div class="o_warning">$r.translate("reset.test.data.text.ref", $referencees)</div>
+#else
+	<div class="o_warning">$r.translate("reset.test.data.text")</div>
+#end
+
+<div class="o_button_group">
+	$r.render("buttons")
+</div>
\ No newline at end of file
diff --git a/src/main/java/org/olat/ims/qti21/ui/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/ims/qti21/ui/_i18n/LocalStrings_de.properties
index 5893364a2634e30dca35529a7258dee628c6e48e..1940f3c2a174f293166d80d69f8100646df05953 100644
--- a/src/main/java/org/olat/ims/qti21/ui/_i18n/LocalStrings_de.properties
+++ b/src/main/java/org/olat/ims/qti21/ui/_i18n/LocalStrings_de.properties
@@ -101,6 +101,7 @@ question.progress.answered=Antwortet
 question.progress.noMaxScore=$org.olat.modules.iq\:noMaxScore
 question.progress.score=$org.olat.modules.iq\:actualPoints
 reset.test.data.text=Wollen Sie wirklich alle Daten von dem Test zur\u00FCcksetzen? Die Resultate werden definitiv gel\u00F6scht.
+reset.test.data.text.ref=Sie k\u00F6nnen nicht alle Daten von dem Test weil noch an diesem Ressourcen "{0}" verbunden ist.
 reset.test.data.title=Daten von Test zur\u00FCcksetzen
 results.duration=Dauer
 results.end.time=Enddatum
diff --git a/src/main/java/org/olat/ims/qti21/ui/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/ims/qti21/ui/_i18n/LocalStrings_en.properties
index cdff5a93103f0647252cb4f3c29ae3797eae70e5..2a5912aac42107d6818889f4949af1b768c0b95f 100644
--- a/src/main/java/org/olat/ims/qti21/ui/_i18n/LocalStrings_en.properties
+++ b/src/main/java/org/olat/ims/qti21/ui/_i18n/LocalStrings_en.properties
@@ -110,6 +110,7 @@ question.progress.answered=Answered
 question.progress.noMaxScore=$org.olat.modules.iq\:noMaxScore
 question.progress.score=$org.olat.modules.iq\:actualPoints
 reset.test.data.text=Do you really want to reset the assessment data of test? The results will be definitively deleted.
+reset.test.data.text.ref=You cannot delete all the data of this test because it's referenced by the following ressources "{0}".
 reset.test.data.title=Reset data of test
 results.duration=Duration
 results.end.time=End date