diff --git a/src/main/java/org/olat/course/assessment/ui/tool/AssessmentIdentityCourseController.java b/src/main/java/org/olat/course/assessment/ui/tool/AssessmentIdentityCourseController.java
index 780fbdff2a7ed5ab7cabbb9440e5134814c7b5ca..b401cf4bac0c359b56ba1a6b5e47f4fcc9e866df 100644
--- a/src/main/java/org/olat/course/assessment/ui/tool/AssessmentIdentityCourseController.java
+++ b/src/main/java/org/olat/course/assessment/ui/tool/AssessmentIdentityCourseController.java
@@ -158,6 +158,9 @@ public class AssessmentIdentityCourseController extends BasicController implemen
 				fireEvent(ureq, aee.cloneNotClose());
 			} else if(event == Event.CANCELLED_EVENT) {
 				stackPanel.popController(currentNodeCtrl);
+			} else if(event == Event.CHANGED_EVENT) {
+				treeOverviewCtrl.doIdentityAssessmentOverview(ureq);
+				fireEvent(ureq, event);
 			}
 		}
 		super.event(ureq, source, event);
@@ -211,7 +214,6 @@ public class AssessmentIdentityCourseController extends BasicController implemen
 			}
 			
 			if(nextNode.getParent() != null) {
-			
 				doSelectCourseNode(ureq, nextNode);
 			}
 		}
diff --git a/src/main/java/org/olat/course/assessment/ui/tool/AssessmentIdentityCourseNodeController.java b/src/main/java/org/olat/course/assessment/ui/tool/AssessmentIdentityCourseNodeController.java
index cf1342c4a42389be07204c30d23563678e46921c..cfea08833c5a922e4a6e5ad94bf6a32b1fcdbbd1 100644
--- a/src/main/java/org/olat/course/assessment/ui/tool/AssessmentIdentityCourseNodeController.java
+++ b/src/main/java/org/olat/course/assessment/ui/tool/AssessmentIdentityCourseNodeController.java
@@ -194,6 +194,7 @@ public class AssessmentIdentityCourseNodeController extends BasicController impl
 			// reset SCORM test
 			if(event == Event.CHANGED_EVENT) {
 				assessmentForm.reloadData(true);
+				fireEvent(ureq, event);
 			} else if(event == Event.DONE_EVENT) {
 				fireEvent(ureq, Event.DONE_EVENT);
 			} else if(event instanceof OpenSubDetailsEvent) {
diff --git a/src/main/java/org/olat/course/assessment/ui/tool/IdentityListCourseNodeController.java b/src/main/java/org/olat/course/assessment/ui/tool/IdentityListCourseNodeController.java
index 0fb374528d0da2761f727b043f1fd18066189e23..7bb53ee0cf9082f5f9b22268ab9b813df95db609 100644
--- a/src/main/java/org/olat/course/assessment/ui/tool/IdentityListCourseNodeController.java
+++ b/src/main/java/org/olat/course/assessment/ui/tool/IdentityListCourseNodeController.java
@@ -76,7 +76,6 @@ import org.olat.course.certificate.CertificateLight;
 import org.olat.course.certificate.CertificatesManager;
 import org.olat.course.certificate.ui.DownloadCertificateCellRenderer;
 import org.olat.course.nodes.AssessableCourseNode;
-import org.olat.course.nodes.AssessmentToolOptions;
 import org.olat.course.nodes.CalculatedAssessableCourseNode;
 import org.olat.course.nodes.CourseNode;
 import org.olat.course.nodes.CourseNodeFactory;
@@ -86,6 +85,7 @@ import org.olat.course.run.userview.UserCourseEnvironment;
 import org.olat.course.run.userview.UserCourseEnvironmentImpl;
 import org.olat.group.BusinessGroup;
 import org.olat.modules.assessment.AssessmentEntry;
+import org.olat.modules.assessment.AssessmentToolOptions;
 import org.olat.modules.assessment.model.AssessmentEntryStatus;
 import org.olat.modules.assessment.ui.AssessedIdentityController;
 import org.olat.modules.assessment.ui.AssessedIdentityElementRow;
diff --git a/src/main/java/org/olat/course/nodes/AbstractAccessableCourseNode.java b/src/main/java/org/olat/course/nodes/AbstractAccessableCourseNode.java
index 3af6351497cbab7396e62a324741d5801e821e8e..129afb34044c1a2b7c85c100d01301fa636fbdc8 100644
--- a/src/main/java/org/olat/course/nodes/AbstractAccessableCourseNode.java
+++ b/src/main/java/org/olat/course/nodes/AbstractAccessableCourseNode.java
@@ -44,6 +44,7 @@ import org.olat.course.condition.interpreter.ConditionInterpreter;
 import org.olat.course.export.CourseEnvironmentMapper;
 import org.olat.course.run.environment.CourseEnvironment;
 import org.olat.course.run.userview.NodeEvaluation;
+import org.olat.modules.assessment.AssessmentToolOptions;
 
 import de.bps.course.nodes.CourseNodePasswordManagerImpl;
 
diff --git a/src/main/java/org/olat/course/nodes/AssessableCourseNode.java b/src/main/java/org/olat/course/nodes/AssessableCourseNode.java
index 8e4fec8cdf0a95ec5ad6732ae65a625c2a990d7c..e1864f989c2d3ec3714bb622cbf809b8a0007f50 100644
--- a/src/main/java/org/olat/course/nodes/AssessableCourseNode.java
+++ b/src/main/java/org/olat/course/nodes/AssessableCourseNode.java
@@ -37,6 +37,7 @@ import org.olat.course.run.environment.CourseEnvironment;
 import org.olat.course.run.scoring.AssessmentEvaluation;
 import org.olat.course.run.scoring.ScoreEvaluation;
 import org.olat.course.run.userview.UserCourseEnvironment;
+import org.olat.modules.assessment.AssessmentToolOptions;
 
 
 /**
diff --git a/src/main/java/org/olat/course/nodes/GTACourseNode.java b/src/main/java/org/olat/course/nodes/GTACourseNode.java
index d7cd3b016d06b32d8d65769e64a0e72b51481940..a93bf15b684a9edcb04b48f7f414219b8e1270be 100644
--- a/src/main/java/org/olat/course/nodes/GTACourseNode.java
+++ b/src/main/java/org/olat/course/nodes/GTACourseNode.java
@@ -90,6 +90,7 @@ import org.olat.course.run.userview.UserCourseEnvironment;
 import org.olat.group.BusinessGroup;
 import org.olat.modules.ModuleConfiguration;
 import org.olat.modules.assessment.AssessmentEntry;
+import org.olat.modules.assessment.AssessmentToolOptions;
 import org.olat.repository.RepositoryEntry;
 import org.olat.user.UserManager;
 
diff --git a/src/main/java/org/olat/course/nodes/IQSURVCourseNode.java b/src/main/java/org/olat/course/nodes/IQSURVCourseNode.java
index 629edbeca337785c8cf09b7cb5535645545d0df7..1c9d91ff57c5872c776b7462fa2b037496668146 100644
--- a/src/main/java/org/olat/course/nodes/IQSURVCourseNode.java
+++ b/src/main/java/org/olat/course/nodes/IQSURVCourseNode.java
@@ -82,6 +82,7 @@ import org.olat.ims.qti21.model.QTI21StatisticSearchParams;
 import org.olat.ims.qti21.ui.statistics.QTI21StatisticResourceResult;
 import org.olat.ims.qti21.ui.statistics.QTI21StatisticsSecurityCallback;
 import org.olat.modules.ModuleConfiguration;
+import org.olat.modules.assessment.AssessmentToolOptions;
 import org.olat.modules.iq.IQSecurityCallback;
 import org.olat.repository.RepositoryEntry;
 import org.olat.repository.RepositoryEntryImportExport;
diff --git a/src/main/java/org/olat/course/nodes/IQTESTCourseNode.java b/src/main/java/org/olat/course/nodes/IQTESTCourseNode.java
index 1f5bfe4f14aaa81b2a161a4aa52f7f62880806ea..57515d61333fbbcdb68d41ea314cf96c55df63ba 100644
--- a/src/main/java/org/olat/course/nodes/IQTESTCourseNode.java
+++ b/src/main/java/org/olat/course/nodes/IQTESTCourseNode.java
@@ -101,6 +101,7 @@ import org.olat.ims.qti21.ui.statistics.QTI21StatisticsSecurityCallback;
 import org.olat.ims.qti21.ui.statistics.QTI21StatisticsToolController;
 import org.olat.modules.ModuleConfiguration;
 import org.olat.modules.assessment.AssessmentEntry;
+import org.olat.modules.assessment.AssessmentToolOptions;
 import org.olat.modules.iq.IQSecurityCallback;
 import org.olat.repository.RepositoryEntry;
 import org.olat.repository.RepositoryEntryImportExport;
diff --git a/src/main/java/org/olat/course/nodes/MSCourseNode.java b/src/main/java/org/olat/course/nodes/MSCourseNode.java
index f87b0e06f1a76f1a4246c6d252ca2a2554af7b7e..47219453d630a7e046fbfff703d020abfff7b4e1 100644
--- a/src/main/java/org/olat/course/nodes/MSCourseNode.java
+++ b/src/main/java/org/olat/course/nodes/MSCourseNode.java
@@ -64,6 +64,7 @@ import org.olat.course.run.userview.NodeEvaluation;
 import org.olat.course.run.userview.UserCourseEnvironment;
 import org.olat.modules.ModuleConfiguration;
 import org.olat.modules.assessment.AssessmentEntry;
+import org.olat.modules.assessment.AssessmentToolOptions;
 import org.olat.properties.Property;
 import org.olat.repository.RepositoryEntry;
 import org.olat.resource.OLATResource;
diff --git a/src/main/java/org/olat/course/nodes/ProjectBrokerCourseNode.java b/src/main/java/org/olat/course/nodes/ProjectBrokerCourseNode.java
index fc85bd7480eab2497399e58a1e3445d138a31204..9c87b6ce12cceb6d2bce67b5591b092be1f60fa8 100644
--- a/src/main/java/org/olat/course/nodes/ProjectBrokerCourseNode.java
+++ b/src/main/java/org/olat/course/nodes/ProjectBrokerCourseNode.java
@@ -112,6 +112,7 @@ import org.olat.group.BusinessGroupService;
 import org.olat.group.model.BusinessGroupReference;
 import org.olat.modules.ModuleConfiguration;
 import org.olat.modules.assessment.AssessmentEntry;
+import org.olat.modules.assessment.AssessmentToolOptions;
 import org.olat.properties.Property;
 import org.olat.repository.RepositoryEntry;
 import org.olat.resource.OLATResource;
diff --git a/src/main/java/org/olat/course/nodes/TACourseNode.java b/src/main/java/org/olat/course/nodes/TACourseNode.java
index ad5a6e5f1db1cd6d2b6687d591a167eb3b0a30f3..7774e076a8c981dd06044d1618d5d3a90c314812 100644
--- a/src/main/java/org/olat/course/nodes/TACourseNode.java
+++ b/src/main/java/org/olat/course/nodes/TACourseNode.java
@@ -96,6 +96,7 @@ import org.olat.course.run.userview.NodeEvaluation;
 import org.olat.course.run.userview.UserCourseEnvironment;
 import org.olat.modules.ModuleConfiguration;
 import org.olat.modules.assessment.AssessmentEntry;
+import org.olat.modules.assessment.AssessmentToolOptions;
 import org.olat.properties.Property;
 import org.olat.repository.RepositoryEntry;
 import org.olat.resource.OLATResource;
diff --git a/src/main/java/org/olat/course/nodes/gta/ui/BulkDownloadToolController.java b/src/main/java/org/olat/course/nodes/gta/ui/BulkDownloadToolController.java
index 9aec7c6a22be0339b83c3c3a03150f64ac81f0fb..ad5983b25b03fa87ec254b74485a7e4ddcbadbbe 100644
--- a/src/main/java/org/olat/course/nodes/gta/ui/BulkDownloadToolController.java
+++ b/src/main/java/org/olat/course/nodes/gta/ui/BulkDownloadToolController.java
@@ -28,9 +28,9 @@ import org.olat.core.gui.control.WindowControl;
 import org.olat.core.gui.control.controller.BasicController;
 import org.olat.course.archiver.ArchiveResource;
 import org.olat.course.nodes.ArchiveOptions;
-import org.olat.course.nodes.AssessmentToolOptions;
 import org.olat.course.nodes.GTACourseNode;
 import org.olat.course.run.environment.CourseEnvironment;
+import org.olat.modules.assessment.AssessmentToolOptions;
 import org.olat.resource.OLATResource;
 
 /**
diff --git a/src/main/java/org/olat/course/nodes/ta/BulkDownloadToolController.java b/src/main/java/org/olat/course/nodes/ta/BulkDownloadToolController.java
index 44aad7023de334df682f25838fa60a316df2d5c4..7a3fa8ba92403a7af6c9c91d49d5ccddfb8673d9 100644
--- a/src/main/java/org/olat/course/nodes/ta/BulkDownloadToolController.java
+++ b/src/main/java/org/olat/course/nodes/ta/BulkDownloadToolController.java
@@ -28,9 +28,9 @@ import org.olat.core.gui.control.WindowControl;
 import org.olat.core.gui.control.controller.BasicController;
 import org.olat.course.archiver.ArchiveResource;
 import org.olat.course.nodes.ArchiveOptions;
-import org.olat.course.nodes.AssessmentToolOptions;
 import org.olat.course.nodes.TACourseNode;
 import org.olat.course.run.environment.CourseEnvironment;
+import org.olat.modules.assessment.AssessmentToolOptions;
 import org.olat.resource.OLATResource;
 
 /**
diff --git a/src/main/java/org/olat/ims/qti/resultexport/QTI12ExportResultsReportController.java b/src/main/java/org/olat/ims/qti/resultexport/QTI12ExportResultsReportController.java
index d92119a86c47353e0cda2edb6d5074e756cde385..a9656e0fb4586396601a8c031bccd714f697c8c6 100644
--- a/src/main/java/org/olat/ims/qti/resultexport/QTI12ExportResultsReportController.java
+++ b/src/main/java/org/olat/ims/qti/resultexport/QTI12ExportResultsReportController.java
@@ -32,12 +32,12 @@ import org.olat.core.gui.control.WindowControl;
 import org.olat.core.gui.control.controller.BasicController;
 import org.olat.core.gui.media.MediaResource;
 import org.olat.core.id.Identity;
-import org.olat.course.nodes.AssessmentToolOptions;
 import org.olat.course.nodes.QTICourseNode;
 import org.olat.course.run.environment.CourseEnvironment;
 import org.olat.group.BusinessGroup;
 import org.olat.group.BusinessGroupService;
 import org.olat.ims.qti21.QTI21Service;
+import org.olat.modules.assessment.AssessmentToolOptions;
 import org.springframework.beans.factory.annotation.Autowired;
 
 
diff --git a/src/main/java/org/olat/ims/qti/resultexport/QTI21ExportResultsReportController.java b/src/main/java/org/olat/ims/qti/resultexport/QTI21ExportResultsReportController.java
index e8161a5f66f802ae82c16b4d8650f9f924786aec..0b495ae3825f82779527b9fa7c4cf6e52eda90b2 100644
--- a/src/main/java/org/olat/ims/qti/resultexport/QTI21ExportResultsReportController.java
+++ b/src/main/java/org/olat/ims/qti/resultexport/QTI21ExportResultsReportController.java
@@ -32,12 +32,12 @@ import org.olat.core.gui.control.WindowControl;
 import org.olat.core.gui.control.controller.BasicController;
 import org.olat.core.gui.media.MediaResource;
 import org.olat.core.id.Identity;
-import org.olat.course.nodes.AssessmentToolOptions;
 import org.olat.course.nodes.QTICourseNode;
 import org.olat.course.run.environment.CourseEnvironment;
 import org.olat.group.BusinessGroup;
 import org.olat.group.BusinessGroupService;
 import org.olat.ims.qti21.QTI21Service;
+import org.olat.modules.assessment.AssessmentToolOptions;
 import org.springframework.beans.factory.annotation.Autowired;
 
 
diff --git a/src/main/java/org/olat/ims/qti/statistics/ui/QTI12PullTestsToolController.java b/src/main/java/org/olat/ims/qti/statistics/ui/QTI12PullTestsToolController.java
index 815d4ef66d6a148d307db45361d005899781e4be..320f8eb2fcd6a14517abcac524f46ddf22ed5599 100644
--- a/src/main/java/org/olat/ims/qti/statistics/ui/QTI12PullTestsToolController.java
+++ b/src/main/java/org/olat/ims/qti/statistics/ui/QTI12PullTestsToolController.java
@@ -44,7 +44,6 @@ import org.olat.core.util.i18n.I18nModule;
 import org.olat.course.CourseFactory;
 import org.olat.course.ICourse;
 import org.olat.course.assessment.AssessmentHelper;
-import org.olat.course.nodes.AssessmentToolOptions;
 import org.olat.course.nodes.IQTESTCourseNode;
 import org.olat.course.run.environment.CourseEnvironment;
 import org.olat.course.run.scoring.ScoreEvaluation;
@@ -55,6 +54,7 @@ import org.olat.ims.qti.process.AssessmentFactory;
 import org.olat.ims.qti.process.AssessmentInstance;
 import org.olat.ims.qti.process.FilePersister;
 import org.olat.modules.ModuleConfiguration;
+import org.olat.modules.assessment.AssessmentToolOptions;
 import org.olat.modules.iq.IQManager;
 import org.olat.modules.iq.IQRetrievedEvent;
 import org.olat.user.UserManager;
diff --git a/src/main/java/org/olat/ims/qti/statistics/ui/QTI12StatisticsToolController.java b/src/main/java/org/olat/ims/qti/statistics/ui/QTI12StatisticsToolController.java
index 8e5251cc7bfde28caf0f7d1b271bb8f3e37a3d2c..bd6d42ec216ce551ef915114fa09ce6277d56e39 100644
--- a/src/main/java/org/olat/ims/qti/statistics/ui/QTI12StatisticsToolController.java
+++ b/src/main/java/org/olat/ims/qti/statistics/ui/QTI12StatisticsToolController.java
@@ -45,13 +45,13 @@ import org.olat.core.id.context.StateEntry;
 import org.olat.core.util.nodes.INode;
 import org.olat.core.util.resource.OresHelper;
 import org.olat.course.nodes.ArchiveOptions;
-import org.olat.course.nodes.AssessmentToolOptions;
-import org.olat.course.nodes.AssessmentToolOptions.AlternativeToIdentities;
 import org.olat.course.nodes.QTICourseNode;
 import org.olat.course.run.environment.CourseEnvironment;
 import org.olat.course.statistic.StatisticResourceNode;
 import org.olat.ims.qti.statistics.QTIStatisticResourceResult;
 import org.olat.ims.qti.statistics.QTIStatisticSearchParams;
+import org.olat.modules.assessment.AssessmentToolOptions;
+import org.olat.modules.assessment.AssessmentToolOptions.AlternativeToIdentities;
 import org.olat.repository.RepositoryEntry;
 import org.olat.resource.OLATResource;
 
diff --git a/src/main/java/org/olat/ims/qti21/ui/QTI21AssessableResource.java b/src/main/java/org/olat/ims/qti21/ui/QTI21AssessableResource.java
new file mode 100644
index 0000000000000000000000000000000000000000..e39b4921491f2e5f8cae66cb64254ceab3a9eb5b
--- /dev/null
+++ b/src/main/java/org/olat/ims/qti21/ui/QTI21AssessableResource.java
@@ -0,0 +1,55 @@
+/**
+ * <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.ArrayList;
+import java.util.List;
+
+import org.olat.core.gui.UserRequest;
+import org.olat.core.gui.components.stack.TooledStackedPanel;
+import org.olat.core.gui.control.Controller;
+import org.olat.core.gui.control.WindowControl;
+import org.olat.modules.assessment.AssessmentToolOptions;
+import org.olat.modules.assessment.ui.AssessableResource;
+import org.olat.repository.RepositoryEntry;
+
+/**
+ * 
+ * Initial date: 7 nov. 2016<br>
+ * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com
+ *
+ */
+public class QTI21AssessableResource extends AssessableResource {
+	
+	public QTI21AssessableResource(boolean hasScore, boolean hasPassed, boolean hasAttempts, boolean hasComments,
+			Double minScore, Double maxScore, Double cutValue) {
+		super(hasScore, hasPassed, hasAttempts, hasComments, minScore, maxScore, cutValue);
+	}
+
+	@Override
+	public List<Controller> createAssessmentTools(UserRequest ureq, WindowControl wControl,
+			TooledStackedPanel stackPanel, RepositoryEntry entry, AssessmentToolOptions options) {
+
+		Controller resetToolCtrl = new QTI21ResetToolController(ureq, wControl, entry, options);
+		List<Controller> toolsCtrl = new ArrayList<>(1);
+		toolsCtrl.add(resetToolCtrl);
+		return toolsCtrl;
+	}
+}
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 3d1b321558a37f8246b099d58645b85f999fc6b4..e7b2b65d79c3158672e88ab5d9ff23febedca434 100644
--- a/src/main/java/org/olat/ims/qti21/ui/QTI21AssessmentDetailsController.java
+++ b/src/main/java/org/olat/ims/qti21/ui/QTI21AssessmentDetailsController.java
@@ -29,6 +29,7 @@ import java.util.List;
 
 import org.olat.core.commons.persistence.DB;
 import org.olat.core.gui.UserRequest;
+import org.olat.core.gui.components.Component;
 import org.olat.core.gui.components.EscapeMode;
 import org.olat.core.gui.components.form.flexible.FormItem;
 import org.olat.core.gui.components.form.flexible.FormItemContainer;
@@ -65,7 +66,10 @@ import org.olat.ims.qti21.ui.assessment.IdentityAssessmentTestCorrectionControll
 import org.olat.ims.qti21.ui.event.RetrieveAssessmentTestSessionEvent;
 import org.olat.modules.assessment.AssessmentEntry;
 import org.olat.modules.assessment.AssessmentService;
+import org.olat.modules.assessment.AssessmentToolOptions;
 import org.olat.repository.RepositoryEntry;
+import org.olat.repository.RepositoryManager;
+import org.olat.repository.model.RepositoryEntrySecurity;
 import org.olat.user.UserManager;
 import org.springframework.beans.factory.annotation.Autowired;
 
@@ -77,6 +81,7 @@ import org.springframework.beans.factory.annotation.Autowired;
  */
 public class QTI21AssessmentDetailsController extends FormBasicController {
 
+	private Component resetToolCmp;
 	private FlexiTableElement tableEl;
 	private QTI21TestSessionTableModel tableModel;
 	
@@ -86,10 +91,12 @@ public class QTI21AssessmentDetailsController extends FormBasicController {
 	private final Identity assessedIdentity;
 	
 	private IQTESTCourseNode courseNode;
+	private final RepositoryEntrySecurity reSecurity;
 	private UserCourseEnvironment assessedUserCourseEnv;
 	
 	private CloseableModalController cmc;
 	private AssessmentResultController resultCtrl;
+	private QTI21ResetToolController resetToolCtrl;
 	private DialogBoxController retrieveConfirmationCtr;
 	private IdentityAssessmentTestCorrectionController correctionCtrl;
 	
@@ -100,6 +107,8 @@ public class QTI21AssessmentDetailsController extends FormBasicController {
 	@Autowired
 	protected QTI21Service qtiService;
 	@Autowired
+	private RepositoryManager repositoryManager;
+	@Autowired
 	private AssessmentService assessmentService;
 	
 	public QTI21AssessmentDetailsController(UserRequest ureq, WindowControl wControl,
@@ -112,6 +121,9 @@ public class QTI21AssessmentDetailsController extends FormBasicController {
 		RepositoryEntry testEntry = courseNode.getReferencedRepositoryEntry();
 		assessedIdentity = assessedUserCourseEnv.getIdentityEnvironment().getIdentity();
 		manualCorrections = qtiService.needManualCorrection(testEntry);
+		
+		RepositoryEntry courseEntry = assessedUserCourseEnv.getCourseEnvironment().getCourseGroupManager().getCourseEntry();
+		reSecurity = repositoryManager.isAllowed(ureq, courseEntry);
 
 		initForm(ureq);
 		updateModel();
@@ -124,6 +136,7 @@ public class QTI21AssessmentDetailsController extends FormBasicController {
 		subIdent = null;
 		this.assessedIdentity = assessedIdentity;
 		manualCorrections = qtiService.needManualCorrection(assessableEntry);
+		reSecurity = repositoryManager.isAllowed(ureq, assessableEntry);
 
 		initForm(ureq);
 		updateModel();
@@ -145,7 +158,23 @@ public class QTI21AssessmentDetailsController extends FormBasicController {
 
 		tableModel = new QTI21TestSessionTableModel(columnsModel, getTranslator());
 		tableEl = uifactory.addTableElement(getWindowControl(), "sessions", tableModel, 20, false, getTranslator(), formLayout);
-	}
+		tableEl.setEmtpyTableMessageKey("results.empty");
+		
+		
+		if(reSecurity.isEntryAdmin()) {
+			AssessmentToolOptions asOptions = new AssessmentToolOptions();
+			asOptions.setAdmin(reSecurity.isEntryAdmin());
+			asOptions.setIdentities(Collections.singletonList(assessedIdentity));
+			if(courseNode != null) {
+				resetToolCtrl = new QTI21ResetToolController(ureq, getWindowControl(),
+						assessedUserCourseEnv.getCourseEnvironment(), asOptions, courseNode);
+			} else {
+				resetToolCtrl = new QTI21ResetToolController(ureq, getWindowControl(), entry, asOptions);
+			}
+			listenTo(resetToolCtrl);
+			resetToolCmp = resetToolCtrl.getInitialComponent();	
+		}
+	} 
 
 	@Override
 	protected void doDispose() {
@@ -158,6 +187,14 @@ public class QTI21AssessmentDetailsController extends FormBasicController {
 		tableModel.setObjects(sessions);
 		tableEl.reloadData();
 		tableEl.reset();
+			
+		if(resetToolCmp != null) {
+			if(sessions.size() > 0) {
+				flc.getFormItemComponent().put("reset.tool", resetToolCmp);
+			} else {
+				flc.getFormItemComponent().remove(resetToolCmp);
+			}
+		}
 	}
 
 	@Override
@@ -181,6 +218,11 @@ public class QTI21AssessmentDetailsController extends FormBasicController {
 				doPullSession((AssessmentTestSession)retrieveConfirmationCtr.getUserObject());
 				updateModel();
 			}
+		} else if(resetToolCtrl == source) {
+			if(event == Event.DONE_EVENT) {
+				updateModel();
+				fireEvent(ureq, Event.CHANGED_EVENT);
+			}
 		}
 		super.event(ureq, source, event);
 	}
diff --git a/src/main/java/org/olat/ims/qti21/ui/QTI21ConfirmDeleteDataController.java b/src/main/java/org/olat/ims/qti21/ui/QTI21ConfirmDeleteDataController.java
deleted file mode 100644
index 86c7d21f1453496d47f3529cab3121081aa1ac74..0000000000000000000000000000000000000000
--- a/src/main/java/org/olat/ims/qti21/ui/QTI21ConfirmDeleteDataController.java
+++ /dev/null
@@ -1,105 +0,0 @@
-/**
- * <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.core.util.StringHelper;
-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(StringHelper.escapeHtml(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/QTI21ResetToolController.java b/src/main/java/org/olat/ims/qti21/ui/QTI21ResetToolController.java
index e40416fecdd25764a227d1470eb15b9122e3bfb7..bfd68fe6336cee511b83c8444055b75da2aa10d3 100644
--- a/src/main/java/org/olat/ims/qti21/ui/QTI21ResetToolController.java
+++ b/src/main/java/org/olat/ims/qti21/ui/QTI21ResetToolController.java
@@ -22,20 +22,26 @@ package org.olat.ims.qti21.ui;
 import java.io.File;
 import java.io.FileOutputStream;
 import java.io.IOException;
+import java.nio.file.Path;
+import java.nio.file.Paths;
 import java.util.Date;
 import java.util.List;
 import java.util.zip.ZipOutputStream;
 
+import org.olat.core.commons.modules.bc.FolderConfig;
 import org.olat.core.gui.UserRequest;
 import org.olat.core.gui.components.Component;
+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.link.Link;
 import org.olat.core.gui.components.link.LinkFactory;
 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.controller.BasicController;
-import org.olat.core.gui.control.generic.modal.DialogBoxController;
-import org.olat.core.gui.control.generic.modal.DialogBoxUIFactory;
+import org.olat.core.gui.control.generic.closablewrapper.CloseableModalController;
 import org.olat.core.id.Identity;
 import org.olat.core.id.IdentityEnvironment;
 import org.olat.core.id.Roles;
@@ -44,7 +50,6 @@ import org.olat.core.util.StringHelper;
 import org.olat.course.CourseFactory;
 import org.olat.course.ICourse;
 import org.olat.course.nodes.ArchiveOptions;
-import org.olat.course.nodes.AssessmentToolOptions;
 import org.olat.course.nodes.IQTESTCourseNode;
 import org.olat.course.nodes.QTICourseNode;
 import org.olat.course.run.environment.CourseEnvironment;
@@ -53,6 +58,8 @@ import org.olat.course.run.userview.UserCourseEnvironment;
 import org.olat.course.run.userview.UserCourseEnvironmentImpl;
 import org.olat.group.BusinessGroupService;
 import org.olat.ims.qti21.QTI21Service;
+import org.olat.ims.qti21.manager.archive.QTI21ArchiveFormat;
+import org.olat.modules.assessment.AssessmentToolOptions;
 import org.olat.repository.RepositoryEntry;
 import org.springframework.beans.factory.annotation.Autowired;
 
@@ -65,13 +72,16 @@ import org.springframework.beans.factory.annotation.Autowired;
 public class QTI21ResetToolController extends BasicController {
 	
 	private final Roles studentRoles = new Roles(false, false, false, false, false, false, false, false);
-	private final Link resetButton;
+	private Link resetButton;
 	
-	private DialogBoxController confirmResetDialog;
+	private CloseableModalController cmc;
+	private ConfirmResetController confirmResetCtrl;
 	
-	private final QTICourseNode courseNode;
-	private final CourseEnvironment courseEnv;
-	private final AssessmentToolOptions asOptions;
+	private ArchiveOptions options;
+	private QTICourseNode courseNode;
+	private List<Identity> identities;
+	private CourseEnvironment courseEnv;
+	private RepositoryEntry assessedEntry;
 	
 	@Autowired
 	private QTI21Service qtiService;
@@ -83,9 +93,28 @@ public class QTI21ResetToolController extends BasicController {
 		super(ureq, wControl);
 		this.courseNode = courseNode;
 		this.courseEnv = courseEnv;
-		this.asOptions = asOptions;
+		initButton(asOptions);
+	}
+	
+	public QTI21ResetToolController(UserRequest ureq, WindowControl wControl, 
+			RepositoryEntry assessedEntry, AssessmentToolOptions asOptions) {
+		super(ureq, wControl);
+		this.assessedEntry = assessedEntry;
+		initButton(asOptions);
+	}
+	
+	private void initButton(AssessmentToolOptions asOptions) {
+		options = new ArchiveOptions();
+		if(asOptions.getGroup() == null) {
+			identities = asOptions.getIdentities();
+			options.setIdentities(identities);
+		} else {
+			identities = businessGroupService.getMembers(asOptions.getGroup());
+			options.setGroup(asOptions.getGroup());
+		}
 		
 		resetButton = LinkFactory.createButton("reset.test.data.title", null, this);
+		resetButton.setIconLeftCSS("o_icon o_icon_delete_item");
 		resetButton.setTranslator(getTranslator());
 		putInitialPanel(resetButton);
 		getInitialComponent().setSpanAsDomReplaceable(true); // override to wrap panel as span to not break link layout 
@@ -105,55 +134,63 @@ public class QTI21ResetToolController extends BasicController {
 
 	@Override
 	protected void event(UserRequest ureq, Controller source, Event event) {
-		if(confirmResetDialog == source) {
-			if(DialogBoxUIFactory.isOkEvent(event) || DialogBoxUIFactory.isYesEvent(event)) {
+		if(confirmResetCtrl == source) {
+			if(event == Event.DONE_EVENT) {
 				doReset(ureq);
+				fireEvent(ureq, Event.DONE_EVENT);
 			}
+			cmc.deactivate();
+			cleanUp();
+		} else if (cmc == source) {
+			cleanUp();
 		}
 		super.event(ureq, source, event);
 	}
+	
+	private void cleanUp() {
+		removeAsListenerAndDispose(confirmResetCtrl);
+		removeAsListenerAndDispose(cmc);
+		confirmResetCtrl = null;
+		cmc = null;
+	}
 
 	private void doConfirmReset(UserRequest ureq) {
+		if(confirmResetCtrl != null) return;
+		
+		confirmResetCtrl = new ConfirmResetController(ureq, this.getWindowControl());
+		listenTo(confirmResetCtrl);
+
 		String title = translate("reset.test.data.title");
-		String text = translate("reset.test.data.text");
-		confirmResetDialog = activateOkCancelDialog(ureq, title, text, confirmResetDialog);
+		cmc = new CloseableModalController(getWindowControl(), null, confirmResetCtrl.getInitialComponent(), true, title, true);
+		listenTo(cmc);
+		cmc.activate();
 	}
 	
 	private void doReset(UserRequest ureq) {
-		List<Identity> identities;
-
-		ArchiveOptions options = new ArchiveOptions();
-		if(asOptions.getGroup() == null) {
-			identities = asOptions.getIdentities();
-			options.setIdentities(identities);
-		} else {
-			identities = businessGroupService.getMembers(asOptions.getGroup());
-			options.setGroup(asOptions.getGroup());
-		}
-
-		RepositoryEntry testEntry = courseNode.getReferencedRepositoryEntry();
-		RepositoryEntry courseEntry = courseEnv.getCourseGroupManager().getCourseEntry();
-
 		if(courseNode instanceof IQTESTCourseNode) {
 			IQTESTCourseNode testCourseNode = (IQTESTCourseNode)courseNode;
+			RepositoryEntry testEntry = courseNode.getReferencedRepositoryEntry();
+			RepositoryEntry courseEntry = courseEnv.getCourseGroupManager().getCourseEntry();
 			
 			ICourse course = CourseFactory.loadCourse(courseEntry);
-			archiveData(course, options);
+			archiveData(course);
 			
 			qtiService.deleteAssessmentTestSession(identities, testEntry, courseEntry, courseNode.getIdent());
 			for(Identity identity:identities) {
 				ScoreEvaluation scoreEval = new ScoreEvaluation(null, null);
-				
 				IdentityEnvironment ienv = new IdentityEnvironment(identity, studentRoles);
 				UserCourseEnvironment uce = new UserCourseEnvironmentImpl(ienv, courseEnv);
 				testCourseNode.updateUserScoreEvaluation(scoreEval, uce, getIdentity(), false);
 			}
+		} else if(assessedEntry != null) {
+			archiveData(assessedEntry);
+			qtiService.deleteAssessmentTestSession(identities, assessedEntry, null, null);
 		}
 		
 		fireEvent(ureq, Event.CHANGED_EVENT);
 	}
 	
-	private void archiveData(ICourse course, ArchiveOptions options) {
+	private void archiveData(ICourse course) {
 		File exportDirectory = CourseFactory.getOrCreateDataExportDirectory(getIdentity(), course.getCourseTitle());
 		String archiveName = courseNode.getType() + "_"
 				+ StringHelper.transformDisplayNameToFileSystemName(courseNode.getShortName())
@@ -168,4 +205,87 @@ public class QTI21ResetToolController extends BasicController {
 			logError("", e);
 		}
 	}
+	
+	private void archiveData(RepositoryEntry testEntry) {
+		//backup
+		String archiveName = "qti21test_"
+				+ StringHelper.transformDisplayNameToFileSystemName(testEntry.getDisplayname())
+				+ "_" + Formatter.formatDatetimeFilesystemSave(new Date(System.currentTimeMillis())) + ".zip";
+		Path exportPath = Paths.get(FolderConfig.getCanonicalRoot(), FolderConfig.getUserHomes(), getIdentity().getName(),
+				"private", "archive", StringHelper.transformDisplayNameToFileSystemName(testEntry.getDisplayname()), archiveName);
+		File exportFile = exportPath.toFile();
+		exportFile.getParentFile().mkdirs();
+		
+		try(FileOutputStream fileStream = new FileOutputStream(exportFile);
+			ZipOutputStream exportStream = new ZipOutputStream(fileStream)) {
+			new QTI21ArchiveFormat(getLocale(), true, true, true).export(testEntry, exportStream);
+		} catch (IOException e) {
+			logError("", e);
+		}
+		
+	}
+	
+	private class ConfirmResetController extends FormBasicController {
+		
+		private final String[] onKeys = new String[]{ "on" };
+
+		private MultipleSelectionElement acknowledgeEl;
+		
+		public ConfirmResetController(UserRequest ureq, WindowControl wControl) {
+			super(ureq, wControl, "confirm_reset_data");
+			
+			initForm(ureq);
+		}
+
+		@Override
+		protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) {
+			if(formLayout instanceof FormLayoutContainer) {
+				FormLayoutContainer layoutCont = (FormLayoutContainer)formLayout;
+				String[] args = new String[]{ Integer.toString(identities.size()) };
+				String msg = translate("reset.test.data.text", args);
+				layoutCont.contextPut("msg", msg);
+			}
+			
+			FormLayoutContainer confirmCont = FormLayoutContainer.createDefaultFormLayout("confirm", getTranslator());
+			formLayout.add("confirm", confirmCont);
+			confirmCont.setRootForm(mainForm);
+			
+			String[] onValues = new String[]{ translate("reset.test.data.acknowledge") };
+			acknowledgeEl = uifactory.addCheckboxesHorizontal("acknowledge", "confirmation", confirmCont, onKeys, onValues);
+			
+			FormLayoutContainer buttonsCont = FormLayoutContainer.createButtonLayout("buttons", getTranslator());
+			buttonsCont.setRootForm(mainForm);
+			confirmCont.add(buttonsCont);
+			uifactory.addFormCancelButton("cancel", buttonsCont, ureq, getWindowControl());
+			uifactory.addFormSubmitButton("reset.data", buttonsCont);
+		}
+		
+		@Override
+		protected void doDispose() {
+			//
+		}
+
+		@Override
+		protected boolean validateFormLogic(UserRequest ureq) {
+			boolean allOk = true;
+			
+			acknowledgeEl.clearError();
+			if(!acknowledgeEl.isAtLeastSelected(1)) {
+				acknowledgeEl.setErrorKey("form.legende.mandatory", null);
+				allOk &= false;
+			}
+			
+			return allOk & super.validateFormLogic(ureq);
+		}
+
+		@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/QTI21RetrieveTestsToolController.java b/src/main/java/org/olat/ims/qti21/ui/QTI21RetrieveTestsToolController.java
index c6d6bae4b048999d6301d0846365d5e04435ae3c..657e8ed3dff14c75fbe9af6bc03d839232bd973a 100644
--- a/src/main/java/org/olat/ims/qti21/ui/QTI21RetrieveTestsToolController.java
+++ b/src/main/java/org/olat/ims/qti21/ui/QTI21RetrieveTestsToolController.java
@@ -43,7 +43,6 @@ import org.olat.core.util.StringHelper;
 import org.olat.core.util.Util;
 import org.olat.core.util.coordinate.CoordinatorManager;
 import org.olat.core.util.resource.OresHelper;
-import org.olat.course.nodes.AssessmentToolOptions;
 import org.olat.course.nodes.IQTESTCourseNode;
 import org.olat.course.run.environment.CourseEnvironment;
 import org.olat.ims.qti.QTIResultManager;
@@ -51,6 +50,7 @@ import org.olat.ims.qti21.AssessmentSessionAuditLogger;
 import org.olat.ims.qti21.AssessmentTestSession;
 import org.olat.ims.qti21.QTI21Service;
 import org.olat.ims.qti21.ui.event.RetrieveAssessmentTestSessionEvent;
+import org.olat.modules.assessment.AssessmentToolOptions;
 import org.olat.user.UserManager;
 import org.springframework.beans.factory.annotation.Autowired;
 
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 b9aa5fa9f620fe09a4d51c925c7d6f670507d3fd..ef6c615bdbd8eac645bfc0d8d93a07fc0057192b 100644
--- a/src/main/java/org/olat/ims/qti21/ui/QTI21RuntimeController.java
+++ b/src/main/java/org/olat/ims/qti21/ui/QTI21RuntimeController.java
@@ -20,15 +20,7 @@
 package org.olat.ims.qti21.ui;
 
 import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import java.util.Date;
-import java.util.List;
-import java.util.zip.ZipOutputStream;
 
-import org.olat.core.commons.modules.bc.FolderConfig;
 import org.olat.core.gui.UserRequest;
 import org.olat.core.gui.components.Component;
 import org.olat.core.gui.components.dropdown.Dropdown;
@@ -39,21 +31,16 @@ 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.id.Identity;
 import org.olat.core.id.OLATResourceable;
 import org.olat.core.logging.activity.ThreadLocalUserActivityLogger;
-import org.olat.core.util.Formatter;
-import org.olat.core.util.StringHelper;
 import org.olat.core.util.resource.OresHelper;
-import org.olat.course.nodes.AssessmentToolOptions;
 import org.olat.fileresource.FileResourceManager;
 import org.olat.ims.qti21.QTI21Constants;
 import org.olat.ims.qti21.QTI21Service;
-import org.olat.ims.qti21.manager.archive.QTI21ArchiveFormat;
 import org.olat.ims.qti21.model.xml.QtiNodesExtractor;
 import org.olat.ims.qti21.ui.editor.AssessmentTestComposerController;
+import org.olat.modules.assessment.AssessmentToolOptions;
 import org.olat.modules.assessment.ui.AssessableResource;
 import org.olat.modules.assessment.ui.AssessmentToolController;
 import org.olat.modules.assessment.ui.AssessmentToolSecurityCallback;
@@ -75,13 +62,11 @@ import uk.ac.ed.ph.jqtiplus.resolution.ResolvedAssessmentTest;
  */
 public class QTI21RuntimeController extends RepositoryEntryRuntimeController  {
 	
-	private Link assessmentLink, testStatisticLink, qtiOptionsLink, resetDataLink;
+	private Link assessmentLink, testStatisticLink, qtiOptionsLink;
 
-	private CloseableModalController cmd;
 	private QTI21DeliveryOptionsController optionsCtrl;
 	private AssessmentToolController assessmentToolCtrl;
 	private QTI21RuntimeStatisticsController statsToolCtr;
-	private QTI21ConfirmDeleteDataController confirmResetDialog;
 	
 	private boolean reloadRuntime = false;
 
@@ -137,18 +122,6 @@ public class QTI21RuntimeController extends RepositoryEntryRuntimeController  {
 			settingsDropdown.addComponent(qtiOptionsLink);
 		}
 	}
-	
-	@Override
-	protected void initDeleteTools(Dropdown settingsDropdown, boolean needSpacer) {
-		if (reSecurity.isEntryAdmin()) {
-			settingsDropdown.addComponent(new Spacer(""));
-
-			resetDataLink = LinkFactory.createToolLink("resetData", translate("tab.reset.data"), this, "o_sel_repo_reset_data");
-			resetDataLink.setIconLeftCSS("o_icon o_icon-fw o_icon_delete_item");
-			settingsDropdown.addComponent(resetDataLink);
-		}
-		super.initDeleteTools(settingsDropdown, !reSecurity.isEntryAdmin());
-	}
 
 	@Override
 	protected void event(UserRequest ureq, Component source, Event event) {
@@ -158,8 +131,6 @@ public class QTI21RuntimeController extends RepositoryEntryRuntimeController  {
 			doAssessmentTool(ureq);
 		} else if(qtiOptionsLink == source) {
 			doQtiOptions(ureq);
-		} else if(resetDataLink == source) {
-			doConfirmResetData(ureq);
 		} else if(toolbarPanel == source) {
 			if(event instanceof PopEvent) {
 				PopEvent pe = (PopEvent)event;
@@ -181,34 +152,6 @@ public class QTI21RuntimeController extends RepositoryEntryRuntimeController  {
 		}
 		super.event(ureq, source, event);
 	}
-	
-	@Override
-	protected void event(UserRequest ureq, Controller source, Event event) {
-		if(confirmResetDialog == source) {
-			if(event == Event.DONE_EVENT) {
-				doReset(ureq);
-			}
-			cmd.deactivate();
-			//only this one
-			cleanUpReset();
-		} else if(cmd == source) {
-			cleanUp();
-		}
-		super.event(ureq, source, event);
-	}
-	
-	@Override
-	protected void cleanUp() {
-		super.cleanUp();
-		cleanUpReset();
-	}
-	
-	private void cleanUpReset() {
-		removeAsListenerAndDispose(confirmResetDialog);
-		removeAsListenerAndDispose(cmd);
-		confirmResetDialog = null;
-		cmd = null;
-	}
 
 	private void doReloadRuntimeController(UserRequest ureq) {
 		disposeRuntimeController();
@@ -290,49 +233,6 @@ public class QTI21RuntimeController extends RepositoryEntryRuntimeController  {
 		Double minScore = QtiNodesExtractor.extractMinScore(assessmentTest);
 		boolean hasScore = assessmentTest.getOutcomeDeclaration(QTI21Constants.SCORE_IDENTIFIER) != null;
 		boolean hasPassed = assessmentTest.getOutcomeDeclaration(QTI21Constants.PASS_IDENTIFIER) != null;
-		return new AssessableResource(hasScore, hasPassed, true, true, minScore, maxScore, null);
-	}
-	
-	private void doConfirmResetData(UserRequest ureq) {
-		if(confirmResetDialog != null) return;
-
-		confirmResetDialog = new QTI21ConfirmDeleteDataController(ureq, getWindowControl(), getRepositoryEntry());
-		listenTo(confirmResetDialog);
-
-		String title = translate("reset.test.data.title");
-		cmd = new CloseableModalController(getWindowControl(), translate("close"), confirmResetDialog.getInitialComponent(), true, title);
-		cmd.activate();
-		listenTo(cmd);
-	}
-	
-	private void doReset(UserRequest ureq) {
-		RepositoryEntry testEntry = getRepositoryEntry();
-		List<Identity> identities = repositoryService.getMembers(testEntry);
-		
-		//backup
-		String archiveName = "qti21test_"
-				+ StringHelper.transformDisplayNameToFileSystemName(testEntry.getDisplayname())
-				+ "_" + Formatter.formatDatetimeFilesystemSave(new Date(System.currentTimeMillis())) + ".zip";
-		Path exportPath = Paths.get(FolderConfig.getCanonicalRoot(), FolderConfig.getUserHomes(), getIdentity().getName(),
-				"private", "archive", StringHelper.transformDisplayNameToFileSystemName(testEntry.getDisplayname()), archiveName);
-		File exportFile = exportPath.toFile();
-		exportFile.getParentFile().mkdirs();
-		
-		try(FileOutputStream fileStream = new FileOutputStream(exportFile);
-			ZipOutputStream exportStream = new ZipOutputStream(fileStream)) {
-			new QTI21ArchiveFormat(getLocale(), true, true, true).export(testEntry, exportStream);
-		} catch (IOException e) {
-			logError("", e);
-		}
-
-		//delete
-		qtiService.deleteAssessmentTestSession(identities, testEntry, null, null);
-		
-		//reload
-		if(toolbarPanel.size() == 1) {
-			doReloadRuntimeController(ureq);
-		} else {
-			reloadRuntime = true;
-		}
+		return new QTI21AssessableResource(hasScore, hasPassed, true, true, minScore, maxScore, null);
 	}
 }
\ No newline at end of file
diff --git a/src/main/java/org/olat/ims/qti21/ui/QTI21RuntimeStatisticsController.java b/src/main/java/org/olat/ims/qti21/ui/QTI21RuntimeStatisticsController.java
index fefa388fd11d0fa8e4e045ade75b7ae1a4c2c6e7..6151fecb71f37eab4c3eadba809fa0b711900503 100644
--- a/src/main/java/org/olat/ims/qti21/ui/QTI21RuntimeStatisticsController.java
+++ b/src/main/java/org/olat/ims/qti21/ui/QTI21RuntimeStatisticsController.java
@@ -40,13 +40,13 @@ import org.olat.core.id.context.ContextEntry;
 import org.olat.core.id.context.StateEntry;
 import org.olat.core.util.resource.OresHelper;
 import org.olat.course.nodes.ArchiveOptions;
-import org.olat.course.nodes.AssessmentToolOptions;
-import org.olat.course.nodes.AssessmentToolOptions.AlternativeToIdentities;
 import org.olat.ims.qti21.QTI21DeliveryOptions;
 import org.olat.ims.qti21.QTI21Service;
 import org.olat.ims.qti21.model.QTI21StatisticSearchParams;
 import org.olat.ims.qti21.ui.statistics.QTI21StatisticResourceResult;
 import org.olat.ims.qti21.ui.statistics.QTI21StatisticsSecurityCallback;
+import org.olat.modules.assessment.AssessmentToolOptions;
+import org.olat.modules.assessment.AssessmentToolOptions.AlternativeToIdentities;
 import org.olat.repository.RepositoryEntry;
 import org.springframework.beans.factory.annotation.Autowired;
 
diff --git a/src/main/java/org/olat/ims/qti21/ui/_content/assessment_details.html b/src/main/java/org/olat/ims/qti21/ui/_content/assessment_details.html
index 0b8ce06d66d0f4ea2b5c9370d02dd8508e78c702..06f44a101c145a5f5f6146e395ef73680c508325 100644
--- a/src/main/java/org/olat/ims/qti21/ui/_content/assessment_details.html
+++ b/src/main/java/org/olat/ims/qti21/ui/_content/assessment_details.html
@@ -1 +1,6 @@
-$r.render("sessions")
\ No newline at end of file
+$r.render("sessions")
+#if($r.available("reset.tool"))
+	<div class="o_button_group">
+		$r.render("reset.tool")
+	</div>
+#end
\ No newline at end of file
diff --git a/src/main/java/org/olat/ims/qti21/ui/_content/confirm_reset_data.html b/src/main/java/org/olat/ims/qti21/ui/_content/confirm_reset_data.html
new file mode 100644
index 0000000000000000000000000000000000000000..dc8558725afb89b62eecf5ce6bc1df798e18e859
--- /dev/null
+++ b/src/main/java/org/olat/ims/qti21/ui/_content/confirm_reset_data.html
@@ -0,0 +1,4 @@
+<div class="o_error clearfix">
+	<i class="o_icon o_icon-lg o_icon_important"> </i> $msg
+</div>
+$r.render("confirm")
\ 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 7c92b57d65ce2b7fb434a8f1ce33e061b4d71cc0..60d1c24e11adf10c4fcb0c0f4038038229a39e83 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
@@ -55,6 +55,7 @@ confirm.finish.test.title=Test beenden
 confirm.finish.testpart.text=Sind Sie sicher dass Sie den Test Part beenden wollen? Ihre Antworten werden dadurch gespeichert.\u00A0
 confirm.finish.testpart.title=Test Part beenden
 confirm.suspend.test=$org.olat.modules.iq\:confirmSuspend
+confirmation=Bestätigung
 correction=Korrigieren
 debug.outcomes=Output Daten
 debug.responses=Antworten Daten
@@ -113,11 +114,14 @@ qti.form.summary.section=$org.olat.course.nodes.iq\:qti.form.summary.section
 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.data=Daten zur\u00FCcksetzen
+reset.test.data.acknowledge=Ich verstehe dass die Daten werden endg\u00FCltig gel\u00F6scht.
+reset.test.data.text=Wollen Sie wirklich alle Daten von dem Test zur\u00FCcksetzen? Die Resultate von <strong>{0} Benutzer</strong> 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
+results.empty=Es wurden keine Resultate gefunden, die angezeigt werden k\u00F6nnen.
 results.entry.time=Startdatum
 results.score.yourscore=$org.olat.course.nodes.iq\:score.yourscore
 results.session.status=Status
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 0c45e98a3bbf18e294e783be4a9fcf6a4df905c8..d04b3de38273f6cb7f57a7aa8a23a12c5ae920cc 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
@@ -55,6 +55,7 @@ confirm.finish.test.title=Finish test
 confirm.finish.testpart.text=Finish / Are you sure? This will commit your answers for this test part.
 confirm.finish.testpart.title=Finish test part
 confirm.suspend.test=$org.olat.modules.iq\:confirmSuspend
+confirmation=Confirmation
 correction=Grade
 debug.outcomes=Output data
 debug.responses=Responses data
@@ -113,10 +114,13 @@ qti.form.summary.section=$org.olat.course.nodes.iq\:qti.form.summary.section
 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.data=Reset data
+reset.test.data.acknowledge=I understand that the data will be definitely deleted.
+reset.test.data.text=Do you really want to reset the assessment data of test? The results of <strong>{0} users</strong> 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.empty=No results found that could be displayed.
 results.end.time=End date
 results.entry.time=Start date
 results.score.yourscore=$org.olat.course.nodes.iq\:score.yourscore
diff --git a/src/main/java/org/olat/ims/qti21/ui/assessment/IdentitiesAssessmentTestCorrectionController.java b/src/main/java/org/olat/ims/qti21/ui/assessment/IdentitiesAssessmentTestCorrectionController.java
index f775f8e305f896934ba28d9d71600e54538a2e4e..78114e8324439400ea6d44f4d1efe0aac48f1f85 100644
--- a/src/main/java/org/olat/ims/qti21/ui/assessment/IdentitiesAssessmentTestCorrectionController.java
+++ b/src/main/java/org/olat/ims/qti21/ui/assessment/IdentitiesAssessmentTestCorrectionController.java
@@ -39,7 +39,6 @@ import org.olat.core.gui.control.Event;
 import org.olat.core.gui.control.WindowControl;
 import org.olat.core.gui.control.controller.BasicController;
 import org.olat.core.id.Identity;
-import org.olat.course.nodes.AssessmentToolOptions;
 import org.olat.course.nodes.IQTESTCourseNode;
 import org.olat.course.run.environment.CourseEnvironment;
 import org.olat.fileresource.FileResourceManager;
@@ -47,6 +46,7 @@ import org.olat.ims.qti21.AssessmentItemSession;
 import org.olat.ims.qti21.AssessmentTestHelper;
 import org.olat.ims.qti21.AssessmentTestSession;
 import org.olat.ims.qti21.QTI21Service;
+import org.olat.modules.assessment.AssessmentToolOptions;
 import org.olat.repository.RepositoryEntry;
 import org.springframework.beans.factory.annotation.Autowired;
 
diff --git a/src/main/java/org/olat/ims/qti21/ui/assessment/QTI21CorrectionToolController.java b/src/main/java/org/olat/ims/qti21/ui/assessment/QTI21CorrectionToolController.java
index 21be668cf5d01e2fff3a0cbd76a9f58c58b73c3e..d208d656568256e2db5fb27e6922a460b6f00934 100644
--- a/src/main/java/org/olat/ims/qti21/ui/assessment/QTI21CorrectionToolController.java
+++ b/src/main/java/org/olat/ims/qti21/ui/assessment/QTI21CorrectionToolController.java
@@ -34,12 +34,12 @@ import org.olat.core.gui.control.WindowControl;
 import org.olat.core.gui.control.controller.BasicController;
 import org.olat.core.gui.control.generic.closablewrapper.CloseableModalController;
 import org.olat.course.assessment.AssessmentHelper;
-import org.olat.course.nodes.AssessmentToolOptions;
 import org.olat.course.nodes.IQTESTCourseNode;
 import org.olat.course.run.environment.CourseEnvironment;
 import org.olat.course.run.scoring.ScoreEvaluation;
 import org.olat.course.run.userview.UserCourseEnvironment;
 import org.olat.ims.qti21.AssessmentTestSession;
+import org.olat.modules.assessment.AssessmentToolOptions;
 import org.olat.modules.assessment.ui.event.CompleteAssessmentTestSessionEvent;
 
 /**
diff --git a/src/main/java/org/olat/ims/qti21/ui/statistics/QTI21StatisticsToolController.java b/src/main/java/org/olat/ims/qti21/ui/statistics/QTI21StatisticsToolController.java
index e1aef9a596a36be03dc9d1e831bd7759faef1131..29709d026e3027d1718af8104917da17a2f0d67e 100644
--- a/src/main/java/org/olat/ims/qti21/ui/statistics/QTI21StatisticsToolController.java
+++ b/src/main/java/org/olat/ims/qti21/ui/statistics/QTI21StatisticsToolController.java
@@ -45,14 +45,14 @@ import org.olat.core.id.context.StateEntry;
 import org.olat.core.util.nodes.INode;
 import org.olat.core.util.resource.OresHelper;
 import org.olat.course.nodes.ArchiveOptions;
-import org.olat.course.nodes.AssessmentToolOptions;
-import org.olat.course.nodes.AssessmentToolOptions.AlternativeToIdentities;
 import org.olat.course.nodes.QTICourseNode;
 import org.olat.course.run.environment.CourseEnvironment;
 import org.olat.course.statistic.StatisticResourceNode;
 import org.olat.ims.qti21.QTI21DeliveryOptions;
 import org.olat.ims.qti21.QTI21Service;
 import org.olat.ims.qti21.model.QTI21StatisticSearchParams;
+import org.olat.modules.assessment.AssessmentToolOptions;
+import org.olat.modules.assessment.AssessmentToolOptions.AlternativeToIdentities;
 import org.olat.repository.RepositoryEntry;
 import org.springframework.beans.factory.annotation.Autowired;
 
diff --git a/src/main/java/org/olat/course/nodes/AssessmentToolOptions.java b/src/main/java/org/olat/modules/assessment/AssessmentToolOptions.java
similarity index 98%
rename from src/main/java/org/olat/course/nodes/AssessmentToolOptions.java
rename to src/main/java/org/olat/modules/assessment/AssessmentToolOptions.java
index da31805994e51151ae7352a35541adbbb2980af3..3a455f0419eb643bd258961c12517063183fbdff 100644
--- a/src/main/java/org/olat/course/nodes/AssessmentToolOptions.java
+++ b/src/main/java/org/olat/modules/assessment/AssessmentToolOptions.java
@@ -17,7 +17,7 @@
  * frentix GmbH, http://www.frentix.com
  * <p>
  */
-package org.olat.course.nodes;
+package org.olat.modules.assessment;
 
 import java.util.List;
 
diff --git a/src/main/java/org/olat/modules/assessment/ui/AssessableResource.java b/src/main/java/org/olat/modules/assessment/ui/AssessableResource.java
index 03396323d994b036f2d9c608c11fbdedb2de8afb..6bce24068d3ced6ed917d8a039dca5046ba8a175 100644
--- a/src/main/java/org/olat/modules/assessment/ui/AssessableResource.java
+++ b/src/main/java/org/olat/modules/assessment/ui/AssessableResource.java
@@ -19,13 +19,22 @@
  */
 package org.olat.modules.assessment.ui;
 
+import java.util.List;
+
+import org.olat.core.gui.UserRequest;
+import org.olat.core.gui.components.stack.TooledStackedPanel;
+import org.olat.core.gui.control.Controller;
+import org.olat.core.gui.control.WindowControl;
+import org.olat.modules.assessment.AssessmentToolOptions;
+import org.olat.repository.RepositoryEntry;
+
 /**
  * 
  * Initial date: 24.05.2016<br>
  * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com
  *
  */
-public class AssessableResource {
+public abstract class AssessableResource {
 	
 	private Double minScore;
 	private Double maxScore;
@@ -74,5 +83,8 @@ public class AssessableResource {
 	public boolean hasCommentConfigured() {
 		return hasComments;
 	}
+	
+	public abstract List<Controller> createAssessmentTools(UserRequest ureq, WindowControl wControl, TooledStackedPanel stackPanel,
+			RepositoryEntry entry, AssessmentToolOptions options);
 
 }
diff --git a/src/main/java/org/olat/modules/assessment/ui/AssessedIdentityListController.java b/src/main/java/org/olat/modules/assessment/ui/AssessedIdentityListController.java
index b806e52ffa44f8a80fbc3e9cf85d4b1126391941..591f4e132eef21f39b0f083c92e3289ec0dbac18 100644
--- a/src/main/java/org/olat/modules/assessment/ui/AssessedIdentityListController.java
+++ b/src/main/java/org/olat/modules/assessment/ui/AssessedIdentityListController.java
@@ -44,6 +44,7 @@ import org.olat.core.gui.components.form.flexible.impl.elements.table.FlexiTable
 import org.olat.core.gui.components.form.flexible.impl.elements.table.SelectionEvent;
 import org.olat.core.gui.components.link.Link;
 import org.olat.core.gui.components.link.LinkFactory;
+import org.olat.core.gui.components.stack.BreadcrumbPanelAware;
 import org.olat.core.gui.components.stack.TooledStackedPanel;
 import org.olat.core.gui.components.stack.TooledStackedPanel.Align;
 import org.olat.core.gui.control.Controller;
@@ -66,6 +67,7 @@ import org.olat.group.BusinessGroup;
 import org.olat.group.BusinessGroupService;
 import org.olat.group.model.SearchBusinessGroupParams;
 import org.olat.modules.assessment.AssessmentEntry;
+import org.olat.modules.assessment.AssessmentToolOptions;
 import org.olat.modules.assessment.model.AssessmentEntryStatus;
 import org.olat.modules.assessment.ui.AssessedIdentityListTableModel.IdentityCourseElementCols;
 import org.olat.repository.RepositoryEntry;
@@ -87,6 +89,7 @@ public class AssessedIdentityListController extends FormBasicController implemen
 	private final RepositoryEntry testEntry;
 	private final AssessableResource element;
 	private final boolean isAdministrativeUser;
+	private SearchAssessedIdentityParams searchParams;
 	private final List<UserPropertyHandler> userPropertyHandlers;
 	private final AssessmentToolSecurityCallback assessmentCallback;
 	
@@ -94,7 +97,8 @@ public class AssessedIdentityListController extends FormBasicController implemen
 	private FlexiTableElement tableEl;
 	private final TooledStackedPanel stackPanel;
 	private AssessedIdentityListTableModel usersTableModel;
-	
+
+	private List<Controller> toolsCtrl;
 	private AssessedIdentityController currentIdentityCtrl;
 	
 	@Autowired
@@ -111,7 +115,7 @@ public class AssessedIdentityListController extends FormBasicController implemen
 	private RepositoryHandlerFactory repositoryHandlerFactory;
 	
 	public AssessedIdentityListController(UserRequest ureq, WindowControl wControl, TooledStackedPanel stackPanel,
-			RepositoryEntry testEntry, AssessableResource element,  AssessmentToolSecurityCallback assessmentCallback) {
+			RepositoryEntry testEntry, AssessableResource element, AssessmentToolSecurityCallback assessmentCallback) {
 		super(ureq, wControl, "identity_element");
 		setTranslator(Util.createPackageTranslator(AssessmentModule.class, getLocale(), getTranslator()));
 		setTranslator(userManager.getPropertyHandlerTranslator(getTranslator()));
@@ -199,9 +203,18 @@ public class AssessedIdentityListController extends FormBasicController implemen
 				tableEl.setExtendedFilterButton(translate("filter.groups"), groupFilters);
 			}
 		}
+		
+	}
+	
+	public class AToolsOptions extends AssessmentToolOptions {
+
+		@Override
+		public List<Identity> getIdentities() {
+			return assessmentToolManager.getAssessedIdentities(getIdentity(), searchParams);
+		}
 	}
 	
-	private void updateModel(String searchString, List<FlexiTableFilter> filters, List<FlexiTableFilter> extendedFilters) {
+	private void updateModel(UserRequest ureq, String searchString, List<FlexiTableFilter> filters, List<FlexiTableFilter> extendedFilters) {
 		SearchAssessedIdentityParams params = new SearchAssessedIdentityParams(testEntry, null, testEntry, assessmentCallback);
 		
 		List<AssessmentEntryStatus> assessmentStatus = null;
@@ -248,6 +261,34 @@ public class AssessedIdentityListController extends FormBasicController implemen
 			usersTableModel.filter(Collections.singletonList(filters.get(0)));
 		}
 		tableEl.reloadData();
+		searchParams = params;
+		
+		List<String> toolCmpNames = new ArrayList<>();
+		AssessmentToolOptions asOptions = new AssessmentToolOptions();
+		asOptions.setAdmin(assessmentCallback.isAdmin());
+		asOptions.setIdentities(assessedIdentities);
+		List<Controller> tools = element.createAssessmentTools(ureq, getWindowControl(), stackPanel,
+				testEntry, asOptions);
+		int count = 0;
+		if(tools.size() > 0) {
+			for(Controller tool:tools) {
+				listenTo(tool);
+				String toolCmpName = "ctrl_" + (count++);
+				flc.put(toolCmpName, tool.getInitialComponent());
+				toolCmpNames.add(toolCmpName);
+				if(tool instanceof BreadcrumbPanelAware) {
+					((BreadcrumbPanelAware)tool).setBreadcrumbPanel(stackPanel);
+				}
+			}
+		}
+		
+		if(toolsCtrl != null) {
+			for(Controller toolCtrl:toolsCtrl) {
+				removeAsListenerAndDispose(toolCtrl);
+			}
+		}
+		toolsCtrl = tools;
+		flc.contextPut("toolCmpNames", toolCmpNames);
 	}
 	@Override
 	protected void doDispose() {
@@ -265,7 +306,7 @@ public class AssessedIdentityListController extends FormBasicController implemen
 		}
 
 		tableEl.setSelectedFilterKey(filter);
-		updateModel(null, tableEl.getSelectedFilters(), null);
+		updateModel(ureq, null, tableEl.getSelectedFilters(), null);
 		
 		if(entries != null && entries.size() > 0) {
 			String resourceType = entries.get(0).getOLATResourceable().getResourceableTypeName();
@@ -300,13 +341,17 @@ public class AssessedIdentityListController extends FormBasicController implemen
 	public void event(UserRequest ureq, Controller source, Event event) {
 		if(currentIdentityCtrl == source) {
 			if(event == Event.CHANGED_EVENT) {
-				updateModel(null, null, null);
+				updateModel(ureq, null, null, null);
 			} else if(event == Event.DONE_EVENT) {
-				updateModel(null, null, null);
+				updateModel(ureq, null, null, null);
 				stackPanel.popController(currentIdentityCtrl);
 			} else if(event == Event.CANCELLED_EVENT) {
 				stackPanel.popController(currentIdentityCtrl);
 			}
+		} else if(toolsCtrl != null && toolsCtrl.contains(source)) {
+			if(event == Event.CHANGED_EVENT) {
+				updateModel(ureq, null, null, null);
+			}
 		}
 		super.event(ureq, source, event);
 	}
@@ -323,7 +368,7 @@ public class AssessedIdentityListController extends FormBasicController implemen
 				}
 			} else if(event instanceof FlexiTableSearchEvent) {
 				FlexiTableSearchEvent ftse = (FlexiTableSearchEvent)event;
-				updateModel(ftse.getSearch(), ftse.getFilters(), ftse.getExtendedFilters());
+				updateModel(ureq, ftse.getSearch(), ftse.getFilters(), ftse.getExtendedFilters());
 			}
 		}
 		
diff --git a/src/main/java/org/olat/modules/assessment/ui/_content/identity_element.html b/src/main/java/org/olat/modules/assessment/ui/_content/identity_element.html
index 74005495897626be7e3b5016cf59c51ba5b701f3..552eea214ecb278c41f56f6fcf27e9848e9e59e4 100644
--- a/src/main/java/org/olat/modules/assessment/ui/_content/identity_element.html
+++ b/src/main/java/org/olat/modules/assessment/ui/_content/identity_element.html
@@ -1,2 +1,10 @@
 <h2><i class="o_icon $cssClass"> </i> $r.escapeHtml($title)</h2>
+#if($r.isNotEmpty($toolCmpNames))
+	<div class="o_button_group o_button_group_right">
+	#foreach($toolCmpName in $toolCmpNames)
+		$r.render($toolCmpName)
+	#end
+	</div>
+#end
+
 $r.render("table")
\ No newline at end of file
diff --git a/src/main/java/org/olat/modules/portfolio/ui/BinderRuntimeController.java b/src/main/java/org/olat/modules/portfolio/ui/BinderRuntimeController.java
index c25c800cd57135532ebf6d591a80d3b5a899dd25..23238aa06e2bbf4939c0436a3192e1c6144cb7f3 100644
--- a/src/main/java/org/olat/modules/portfolio/ui/BinderRuntimeController.java
+++ b/src/main/java/org/olat/modules/portfolio/ui/BinderRuntimeController.java
@@ -38,6 +38,7 @@ import org.olat.modules.assessment.ui.AssessmentToolController;
 import org.olat.modules.assessment.ui.AssessmentToolSecurityCallback;
 import org.olat.modules.portfolio.Binder;
 import org.olat.modules.portfolio.PortfolioService;
+import org.olat.modules.portfolio.ui.model.AssessableBinderResource;
 import org.olat.repository.RepositoryEntry;
 import org.olat.repository.model.RepositoryEntrySecurity;
 import org.olat.repository.ui.RepositoryEntryRuntimeController;
@@ -210,7 +211,7 @@ public class BinderRuntimeController extends RepositoryEntryRuntimeController {
 	private AssessableResource getAssessableElement() {
 		boolean hasScore = false;
 		boolean hasPassed = true;
-		return new AssessableResource(hasScore, hasPassed, true, true, null, null, null);
+		return new AssessableBinderResource(hasScore, hasPassed, true, true, null, null, null);
 	}
 	
 	private void enableRuntimeNavBar(boolean enabled) {
diff --git a/src/main/java/org/olat/modules/portfolio/ui/model/AssessableBinderResource.java b/src/main/java/org/olat/modules/portfolio/ui/model/AssessableBinderResource.java
new file mode 100644
index 0000000000000000000000000000000000000000..6dd0d9255cf2166e349d70db0d5b6b8e269113b4
--- /dev/null
+++ b/src/main/java/org/olat/modules/portfolio/ui/model/AssessableBinderResource.java
@@ -0,0 +1,51 @@
+/**
+ * <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.modules.portfolio.ui.model;
+
+import java.util.Collections;
+import java.util.List;
+
+import org.olat.core.gui.UserRequest;
+import org.olat.core.gui.components.stack.TooledStackedPanel;
+import org.olat.core.gui.control.Controller;
+import org.olat.core.gui.control.WindowControl;
+import org.olat.modules.assessment.AssessmentToolOptions;
+import org.olat.modules.assessment.ui.AssessableResource;
+import org.olat.repository.RepositoryEntry;
+
+/**
+ * 
+ * Initial date: 7 nov. 2016<br>
+ * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com
+ *
+ */
+public class AssessableBinderResource extends AssessableResource {
+	
+	public AssessableBinderResource(boolean hasScore, boolean hasPassed, boolean hasAttempts, boolean hasComments,
+			Double minScore, Double maxScore, Double cutValue) {
+		super(hasScore, hasPassed, hasAttempts, hasComments, minScore, maxScore, cutValue);
+	}
+
+	@Override
+	public List<Controller> createAssessmentTools(UserRequest ureq, WindowControl wControl,
+			TooledStackedPanel stackPanel, RepositoryEntry entry, AssessmentToolOptions options) {
+		return Collections.emptyList();
+	}
+}