diff --git a/src/main/java/org/olat/ims/qti/QTIResultDetailsController.java b/src/main/java/org/olat/ims/qti/QTIResultDetailsController.java
index 233b2318358568d88047ec97f8acc7bcae603cfb..ef78c9b1c5d333165d8386725c4ac017680d9ae6 100644
--- a/src/main/java/org/olat/ims/qti/QTIResultDetailsController.java
+++ b/src/main/java/org/olat/ims/qti/QTIResultDetailsController.java
@@ -110,7 +110,6 @@ public class QTIResultDetailsController extends BasicController {
 		
 		String resourcePath = courseResourceableId + File.separator + nodeIdent;
 		qtiPersister = new FilePersister(assessedIdentity, resourcePath);
-		System.out.println("qti.ser: " + qtiPersister.exists());
 		
 		init(ureq);
 	}
@@ -171,21 +170,37 @@ public class QTIResultDetailsController extends BasicController {
 				
 				cmc.activate();
 			} else if(tEvent.getActionId().equals("ret")) {
-				String fullname = UserManager.getInstance().getUserDisplayName(assessedIdentity.getUser());
-				String title = translate("retrievetest.confirm.title");
-				String text = translate("retrievetest.confirm.text", new String[]{fullname});
-				retrieveConfirmationCtr = activateYesNoDialog(ureq, title, text, retrieveConfirmationCtr);
+				updateTableModel();
+				if(tableModel.isTestRunning()) {
+					String fullname = UserManager.getInstance().getUserDisplayName(assessedIdentity.getUser());
+					String title = translate("retrievetest.confirm.title");
+					String text = translate("retrievetest.confirm.text", new String[]{fullname});
+					retrieveConfirmationCtr = activateYesNoDialog(ureq, title, text, retrieveConfirmationCtr);
+				}
 			}
+		} else if (source == cmc) {
+			updateTableModel();
+			removeAsListenerAndDispose(cmc);
+			cmc = null;
 		} else if (source == retrieveConfirmationCtr) {
 			if(DialogBoxUIFactory.isYesEvent(event)) {
-				IQRetrievedEvent retrieveEvent = new IQRetrievedEvent(assessedIdentity, courseResourceableId, nodeIdent);
-				CoordinatorManager.getInstance().getCoordinator().getEventBus().fireEventToListenersOf(retrieveEvent, retrieveEvent);
-				doRetrieveTest(ureq);
+				updateTableModel();
+				if(tableModel.isTestRunning()) {
+					IQRetrievedEvent retrieveEvent = new IQRetrievedEvent(assessedIdentity, courseResourceableId, nodeIdent);
+					CoordinatorManager.getInstance().getCoordinator().getEventBus().fireEventToListenersOf(retrieveEvent, retrieveEvent);
+					doRetrieveTest(ureq);
+				}
 			}
 			removeAsListenerAndDispose(retrieveConfirmationCtr);
 			retrieveConfirmationCtr = null;
 		}
 	}
+	
+	private void updateTableModel() {
+		List<QTIResultSet> resultSets = qrm.getResultSets(courseResourceableId, nodeIdent, repositoryEntry.getKey(), assessedIdentity);
+		tableModel = new QTIResultTableModel(resultSets, qtiPersister, getTranslator());
+		tableCtr.setTableDataModel(tableModel);
+	}
 
 	/**
 	 * @see org.olat.core.gui.control.DefaultController#doDispose(boolean)
diff --git a/src/main/java/org/olat/ims/qti/QTIResultTableModel.java b/src/main/java/org/olat/ims/qti/QTIResultTableModel.java
index 06038bf1382a151e59406f1a3a80516d720647d8..994c88e4cc3f336dc286f317c572275df415fef5 100644
--- a/src/main/java/org/olat/ims/qti/QTIResultTableModel.java
+++ b/src/main/java/org/olat/ims/qti/QTIResultTableModel.java
@@ -45,6 +45,7 @@ public class QTIResultTableModel implements TableDataModel<QTIResultSet> {
 	private static final int COLUMN_COUNT = 3;
 	private List<QTIResultSet> resultSets;
 	private Persister persister;
+	private boolean inTest;
 	private final Translator translator;
 	
 	/**
@@ -60,13 +61,24 @@ public class QTIResultTableModel implements TableDataModel<QTIResultSet> {
 	public QTIResultTableModel(List<QTIResultSet> resultSets, Persister persister, Translator translator) {
 		this.resultSets = resultSets;
 		this.persister = persister;
+		this.inTest = (persister == null ? false : persister.exists());
 		this.translator = translator;
 	}
 	
-	private boolean isTestReleased() {
-		return persister == null || !persister.exists();
+	public boolean updateStatus() {
+		boolean newStatus = (persister == null ? false : persister.exists());
+		if(newStatus == inTest) {
+			return false;
+		}
+		inTest = newStatus;
+		return true;
+	}
+	
+	public boolean isTestRunning() {
+		return (persister == null ? false : persister.exists());
 	}
 	
+	
 	/**
 	 * @see org.olat.core.gui.components.table.TableDataModel#getColumnCount()
 	 */
@@ -78,7 +90,7 @@ public class QTIResultTableModel implements TableDataModel<QTIResultSet> {
 	 * @see org.olat.core.gui.components.table.TableDataModel#getRowCount()
 	 */
 	public int getRowCount() {
-		return resultSets.size() + (isTestReleased() ? 0 : 1);
+		return resultSets.size() + (inTest ? 1 : 0);
 	}
 	
 	@Override
@@ -100,7 +112,7 @@ public class QTIResultTableModel implements TableDataModel<QTIResultSet> {
 	 * @see org.olat.core.gui.components.table.TableDataModel#getValueAt(int, int)
 	 */
 	public Object getValueAt(int row, int col) {
-		if(!isTestReleased() && (row+1 == getRowCount())) {
+		if(inTest && (row + 1 == getRowCount())) {
 			switch (col) {
 				case 0: return persister.getLastModified();
 				case 1: return "<span class='o_ochre'>" + translator.translate("notReleased") + "</span>";