diff --git a/src/main/java/org/olat/course/nodes/IQSELFCourseNode.java b/src/main/java/org/olat/course/nodes/IQSELFCourseNode.java
index d25a52f24ebf9d6b92ea5c8b553b7eaf75f06acc..aafd861e08b31df23e5dfdc3298df25de6b7f1dc 100644
--- a/src/main/java/org/olat/course/nodes/IQSELFCourseNode.java
+++ b/src/main/java/org/olat/course/nodes/IQSELFCourseNode.java
@@ -89,6 +89,7 @@ import org.olat.repository.RepositoryEntryImportExport;
 import org.olat.repository.RepositoryManager;
 import org.olat.repository.handlers.RepositoryHandler;
 import org.olat.repository.handlers.RepositoryHandlerFactory;
+import org.olat.resource.OLATResource;
 
 /**
  * Initial Date: Feb 9, 2004
@@ -132,20 +133,17 @@ public class IQSELFCourseNode extends AbstractAccessableCourseNode implements Se
 			UserCourseEnvironment userCourseEnv, NodeEvaluation ne, String nodecmd) {
 		
 		Controller runController;
-		ModuleConfiguration config = getModuleConfiguration();
-		AssessmentManager am = userCourseEnv.getCourseEnvironment().getAssessmentManager();
-		boolean onyx = IQEditController.CONFIG_VALUE_QTI2.equals(config.get(IQEditController.CONFIG_KEY_TYPE_QTI));
-		if (onyx) {
+		RepositoryEntry testEntry = getReferencedRepositoryEntry();
+		OLATResource ores = testEntry.getOlatResource();
+		if (QTIResourceTypeModule.isOnyxTest(ores)) {
 			Translator trans = Util.createPackageTranslator(IQEditController.class, ureq.getLocale());
 			runController = MessageUIFactory.createInfoMessage(ureq, wControl, "", trans.translate("error.onyx"));
+		} else if(ImsQTI21Resource.TYPE_NAME.equals(ores.getResourceableTypeName())) {
+			runController = new QTI21AssessmentRunController(ureq, wControl, userCourseEnv, this);
 		} else {
-			RepositoryEntry testEntry = getReferencedRepositoryEntry();
-			if(ImsQTI21Resource.TYPE_NAME.equals(testEntry.getOlatResource().getResourceableTypeName())) {
-				runController = new QTI21AssessmentRunController(ureq, wControl, userCourseEnv, this);
-			} else {
-				IQSecurityCallback sec = new CourseIQSecurityCallback(this, am, ureq.getIdentity());
-				runController = new IQRunController(userCourseEnv, getModuleConfiguration(), sec, ureq, wControl, this);
-			}
+			AssessmentManager am = userCourseEnv.getCourseEnvironment().getAssessmentManager();
+			IQSecurityCallback sec = new CourseIQSecurityCallback(this, am, ureq.getIdentity());
+			runController = new IQRunController(userCourseEnv, getModuleConfiguration(), sec, ureq, wControl, this);
 		}
 		
 		Controller ctrl = TitledWrapperHelper.getWrapper(ureq, wControl, runController, this, "o_iqself_icon");
@@ -379,7 +377,7 @@ public class IQSELFCourseNode extends AbstractAccessableCourseNode implements Se
 					.getLastAssessmentTestSessions(courseEntry, getIdent(), referencedRepositoryEntry, assessedIdentity);
 			if(testSession != null) {
 				boolean fullyAssessed = (testSession.getFinishTime() != null || testSession.getTerminationTime() != null);
-				Float score = testSession.getScore().floatValue();
+				Float score = testSession.getScore() == null ? null : testSession.getScore().floatValue();
 				return new ScoreEvaluation(score, testSession.getPassed(), fullyAssessed, testSession.getKey());
 			}
 		} else {
diff --git a/src/main/java/org/olat/course/nodes/IQSURVCourseNode.java b/src/main/java/org/olat/course/nodes/IQSURVCourseNode.java
index 284f6fbdbc9f87a588856956a687d496c178ad3e..a2726385d4f19399ae267d8b8aa0b12959eb6063 100644
--- a/src/main/java/org/olat/course/nodes/IQSURVCourseNode.java
+++ b/src/main/java/org/olat/course/nodes/IQSURVCourseNode.java
@@ -57,6 +57,7 @@ import org.olat.course.editor.StatusDescription;
 import org.olat.course.nodes.iq.CourseIQSecurityCallback;
 import org.olat.course.nodes.iq.IQEditController;
 import org.olat.course.nodes.iq.IQRunController;
+import org.olat.course.nodes.iq.QTIResourceTypeModule;
 import org.olat.course.properties.CoursePropertyManager;
 import org.olat.course.run.navigation.NodeRunConstructionResult;
 import org.olat.course.run.userview.NodeEvaluation;
@@ -139,14 +140,12 @@ public class IQSURVCourseNode extends AbstractAccessableCourseNode implements QT
 			String message = trans.translate("guestnoaccess.message");
 			controller = MessageUIFactory.createInfoMessage(ureq, wControl, title, message);
 		} else {
-			ModuleConfiguration config = getModuleConfiguration();
-			boolean onyx = IQEditController.CONFIG_VALUE_QTI2.equals(config.get(IQEditController.CONFIG_KEY_TYPE_QTI));
-			if (onyx) {
+			RepositoryEntry repositoryEntry = getReferencedRepositoryEntry();
+			OLATResourceable ores = repositoryEntry.getOlatResource();
+			if (QTIResourceTypeModule.isOnyxTest(ores)) {
 				Translator trans = Util.createPackageTranslator(IQEditController.class, ureq.getLocale());
 				controller = MessageUIFactory.createInfoMessage(ureq, wControl, "", trans.translate("error.onyx"));
 			} else {
-				RepositoryEntry repositoryEntry = getReferencedRepositoryEntry();
-				OLATResourceable ores = repositoryEntry.getOlatResource();
 				Long resId = ores.getResourceableId();
 				SurveyFileResource fr = new SurveyFileResource();
 				fr.overrideResourceableId(resId);
diff --git a/src/main/java/org/olat/course/nodes/IQTESTCourseNode.java b/src/main/java/org/olat/course/nodes/IQTESTCourseNode.java
index a389d0e19e11733fb7c171ae37e6691ae6a5e17e..61fd99931a000ec124c55a8c3d639295b0e31080 100644
--- a/src/main/java/org/olat/course/nodes/IQTESTCourseNode.java
+++ b/src/main/java/org/olat/course/nodes/IQTESTCourseNode.java
@@ -173,30 +173,26 @@ public class IQTESTCourseNode extends AbstractAccessableCourseNode implements Pe
 				controller = MessageUIFactory.createInfoMessage(ureq, wControl, title, message);
 			}
 		} else {
-			ModuleConfiguration config = getModuleConfiguration();
-			boolean onyx = IQEditController.CONFIG_VALUE_QTI2.equals(config.get(IQEditController.CONFIG_KEY_TYPE_QTI));
-			if (onyx) {
+			RepositoryEntry testEntry = getReferencedRepositoryEntry();
+			OLATResource ores = testEntry.getOlatResource();
+			if(ImsQTI21Resource.TYPE_NAME.equals(ores.getResourceableTypeName())) {
+				//QTI 2.1
+				controller = new QTI21AssessmentRunController(ureq, wControl, userCourseEnv, this);
+			} else if(QTIResourceTypeModule.isOnyxTest(ores)) {
 				Translator transe = Util.createPackageTranslator(IQEditController.class, ureq.getLocale());
 				controller = MessageUIFactory.createInfoMessage(ureq, wControl, "", transe.translate("error.onyx"));
 			} else {
-				RepositoryEntry testEntry = getReferencedRepositoryEntry();
-				OLATResource ores = testEntry.getOlatResource();
-				if(ImsQTI21Resource.TYPE_NAME.equals(ores.getResourceableTypeName())) {
-					//QTI 2.1
-					controller = new QTI21AssessmentRunController(ureq, wControl, userCourseEnv, this);
+				//QTI 1.2
+				TestFileResource fr = new TestFileResource();
+				fr.overrideResourceableId(ores.getResourceableId());
+				if(!CoordinatorManager.getInstance().getCoordinator().getLocker().isLocked(fr, null)) {
+					AssessmentManager am = userCourseEnv.getCourseEnvironment().getAssessmentManager();
+					IQSecurityCallback sec = new CourseIQSecurityCallback(this, am, ureq.getIdentity());
+					controller = new IQRunController(userCourseEnv, getModuleConfiguration(), sec, ureq, wControl, this, testEntry);
 				} else {
-					//QTI 1.2
-					TestFileResource fr = new TestFileResource();
-					fr.overrideResourceableId(ores.getResourceableId());
-					if(!CoordinatorManager.getInstance().getCoordinator().getLocker().isLocked(fr, null)) {
-						AssessmentManager am = userCourseEnv.getCourseEnvironment().getAssessmentManager();
-						IQSecurityCallback sec = new CourseIQSecurityCallback(this, am, ureq.getIdentity());
-						controller = new IQRunController(userCourseEnv, getModuleConfiguration(), sec, ureq, wControl, this, testEntry);
-					} else {
-						String title = trans.translate("editor.lock.title");
-						String message = trans.translate("editor.lock.message");
-						controller = MessageUIFactory.createInfoMessage(ureq, wControl, title, message);
-					}
+					String title = trans.translate("editor.lock.title");
+					String message = trans.translate("editor.lock.message");
+					controller = MessageUIFactory.createInfoMessage(ureq, wControl, title, message);
 				}
 			}
 		}
diff --git a/src/main/java/org/olat/course/nodes/iq/QTI21AssessmentRunController.java b/src/main/java/org/olat/course/nodes/iq/QTI21AssessmentRunController.java
index 2f4244e681fd8654d7464f6a9d24a0577810defb..a9cd8136382f5f9d68f2abc1d2c71211407fd7ec 100644
--- a/src/main/java/org/olat/course/nodes/iq/QTI21AssessmentRunController.java
+++ b/src/main/java/org/olat/course/nodes/iq/QTI21AssessmentRunController.java
@@ -587,7 +587,7 @@ public class QTI21AssessmentRunController extends BasicController implements Gen
 		if (guiPrefs != null) {
 			guiPrefs.putAndSave(QTI21AssessmentRunController.class, getOpenPanelId(panelId), Boolean.valueOf(newValue));
 		}
-		mainVC.contextPut("in-" + panelId, Boolean.valueOf(newValue));
+		mainVC.getContext().put("in-" + panelId, Boolean.valueOf(newValue));
 	}
 	
 	private String getOpenPanelId(String panelId) {