diff --git a/src/main/java/org/olat/ims/qti21/manager/QTI21StatisticsManagerImpl.java b/src/main/java/org/olat/ims/qti21/manager/QTI21StatisticsManagerImpl.java
index 8e54fffece6a436effee5bab587c49a0cbeb88df..68e0055fb7b3262bc4c61965f21839e4270a5c73 100644
--- a/src/main/java/org/olat/ims/qti21/manager/QTI21StatisticsManagerImpl.java
+++ b/src/main/java/org/olat/ims/qti21/manager/QTI21StatisticsManagerImpl.java
@@ -108,7 +108,8 @@ public class QTI21StatisticsManagerImpl implements QTI21StatisticsManager {
 		}
 		
 		sb.append(" and asession.lastModified = (select max(a2session.lastModified) from qtiassessmenttestsession a2session")
-		  .append("   where asession.testEntry.key=a2session.testEntry.key and a2session.repositoryEntry.key=asession.repositoryEntry.key");
+		  .append("   where asession.testEntry.key=a2session.testEntry.key and a2session.repositoryEntry.key=asession.repositoryEntry.key")
+		  .append("   and a2session.exploded=false and a2session.cancelled=false");
 		if(searchParams.getNodeIdent() != null ) {
 			sb.append(" and a2session.subIdent=asession.subIdent");
 		} else {
@@ -125,7 +126,7 @@ public class QTI21StatisticsManagerImpl implements QTI21StatisticsManager {
 			sb.append(" and asession.identity.key in (select data.identity.key from assessmententry data")
 			  .append("   where data.repositoryEntry.key=asession.repositoryEntry.key")
 			  .append(" )");
-		} else if(searchParams.getLimitToGroups() != null && searchParams.getLimitToGroups().size() > 0) {
+		} else if(searchParams.getLimitToGroups() != null && !searchParams.getLimitToGroups().isEmpty()) {
 			sb.append(" and asession.identity.key in ( select membership.identity.key from bgroupmember membership")
 			  .append("   where membership.group in (:baseGroups) and membership.role='").append(GroupRole.participant).append("'")
 			  .append(" )");
@@ -164,7 +165,7 @@ public class QTI21StatisticsManagerImpl implements QTI21StatisticsManager {
 			//
 		} else if(searchParams.isViewAllUsers()) {
 			//
-		} else if(searchParams.getLimitToGroups() != null && searchParams.getLimitToGroups().size() > 0) {
+		} else if(searchParams.getLimitToGroups() != null && !searchParams.getLimitToGroups().isEmpty()) {
 			query.setParameter("baseGroups", searchParams.getLimitToGroups());
 		}
 	}
@@ -236,7 +237,7 @@ public class QTI21StatisticsManagerImpl implements QTI21StatisticsManager {
 			}
 			dataPos++;
 		}
-		if (rawDatas.size() == 0) {
+		if (rawDatas.isEmpty()) {
 			minScore = 0;
 		}
 		
@@ -344,7 +345,7 @@ public class QTI21StatisticsManagerImpl implements QTI21StatisticsManager {
 		}
 
 		for(RawData result:results) {
-			Long numOfAnswers = result.getCount();;
+			Long numOfAnswers = result.getCount();
 			if(numOfAnswers != null && numOfAnswers.longValue() > 0) {
 				String stringuifiedResponse = result.getStringuifiedResponse();
 				for(int i=simpleChoices.size(); i-->0; ) {
@@ -377,7 +378,7 @@ public class QTI21StatisticsManagerImpl implements QTI21StatisticsManager {
 		}
 
 		for(RawData result:results) {
-			Long numOfAnswers = result.getCount();;
+			Long numOfAnswers = result.getCount();
 			if(numOfAnswers != null && numOfAnswers.longValue() > 0) {
 				String stringuifiedResponse = result.getStringuifiedResponse();
 				for(int i=hottexts.size(); i-->0; ) {
@@ -410,7 +411,7 @@ public class QTI21StatisticsManagerImpl implements QTI21StatisticsManager {
 		}
 
 		for(RawData result:results) {
-			Long numOfAnswers = result.getCount();;
+			Long numOfAnswers = result.getCount();
 			if(numOfAnswers != null && numOfAnswers.longValue() > 0) {
 				String stringuifiedResponse = result.getStringuifiedResponse();
 				for(int i=hotspotChoices.size(); i-->0; ) {
@@ -583,7 +584,7 @@ public class QTI21StatisticsManagerImpl implements QTI21StatisticsManager {
 			correctResponse = solution.toString();
 		}
 		
-		double points = Double.NaN;
+		double points;
 		if(numericalEntry.getScore() == null) {
 			points = 0.0d;//all score
 		} else  {
diff --git a/src/main/java/org/olat/ims/qti21/ui/QTI21AssessmentTestSessionTableModel.java b/src/main/java/org/olat/ims/qti21/ui/QTI21AssessmentTestSessionTableModel.java
index 957c7468deb6692010114d97854b803054ed65f2..58e84e16da80e5c2ff702f68ce1cf5b61c80a228 100644
--- a/src/main/java/org/olat/ims/qti21/ui/QTI21AssessmentTestSessionTableModel.java
+++ b/src/main/java/org/olat/ims/qti21/ui/QTI21AssessmentTestSessionTableModel.java
@@ -122,17 +122,19 @@ public class QTI21AssessmentTestSessionTableModel extends DefaultFlexiTableDataM
 				}
 				return "";
 			}
-			case open: {
-				Date finished = session.getTestSession().getFinishTime();
-				return finished == null ? Boolean.FALSE : Boolean.TRUE;
-			}
+			case open: return Boolean.valueOf(!isTestSessionOpen(session));
 			case correction: return (lastSession != null && lastSession.equals(session.getTestSession()));
-			case invalidate: return !session.getTestSession().isCancelled() && !session.getTestSession().isExploded();
+			case invalidate: return !isTestSessionOpen(session) && !session.getTestSession().isCancelled() && !session.getTestSession().isExploded();
 			case tools: return session.getToolsLink();
 			default: return "ERROR";
 		}
 	}
 	
+	private boolean isTestSessionOpen(QTI21AssessmentTestSessionDetails session) {
+		Date finished = session.getTestSession().getFinishTime();
+		return finished == null;
+	}
+	
 	private Date getTerminationTime(QTI21AssessmentTestSessionDetails session) {
 		Date endTime = session.getTestSession().getTerminationTime();
 		if(endTime == null) {
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 3609c7c119911054c0a7e8c1264afe054f83ba62..2226b5e766a78711fafa2f36296d4669e65e2a45 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
@@ -142,7 +142,7 @@ interaction.order.target=Ziel
 invalidate=Annullieren
 invalidate.overwrite=Annullieren und Resultat \u00FCbertragen
 invalidate.test.confirm.title=Annullieren
-invalidate.test.confirm.text=Wollen Sie den Test Session ung\u00FCltig machen? Die Daten werden nicht gel\u00F6scht.
+invalidate.test.confirm.text=Wollen Sie diese Test-Session als ung\u00FCltig markieren? Die Daten werden nicht gel\u00F6scht.
 item.comment=Kommentar
 kprim.minus=Falsch
 kprim.plus=Richtig
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 7752005110caaa7d432f3bce726c1e1ed989340b..11da9ba0b05c7f6a4d96cbe6e13b21473135d3e9 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
@@ -142,7 +142,7 @@ interaction.order.target=Target
 invalidate=Invalidate
 invalidate.overwrite=Invalidate and transfer result
 invalidate.test.confirm.title=Invalidate
-invalidate.test.confirm.text=Do you want to invalidate this test session? The date will not be deleted.
+invalidate.test.confirm.text=Do you want to mark this test session as invalid? The data will not be deleted.
 item.comment=Comment
 kprim.minus=False
 kprim.plus=True