diff --git a/src/main/java/org/olat/course/nodes/IQSELFCourseNode.java b/src/main/java/org/olat/course/nodes/IQSELFCourseNode.java
index 42d584c70efcc167fe9a0e8e088c50550a475c52..2004cd28864c2d30d57e4c3b32341db6b176bde3 100644
--- a/src/main/java/org/olat/course/nodes/IQSELFCourseNode.java
+++ b/src/main/java/org/olat/course/nodes/IQSELFCourseNode.java
@@ -88,6 +88,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
@@ -131,20 +132,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");
diff --git a/src/main/java/org/olat/course/nodes/IQSURVCourseNode.java b/src/main/java/org/olat/course/nodes/IQSURVCourseNode.java
index 3251ff2431168e563f9f1ea117ab1bea9cfd44df..db4a7b9d7da7481fa83a9cca648c46cab3ea85e2 100644
--- a/src/main/java/org/olat/course/nodes/IQSURVCourseNode.java
+++ b/src/main/java/org/olat/course/nodes/IQSURVCourseNode.java
@@ -56,6 +56,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;
@@ -138,14 +139,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 83840c6b3fa9bf5c2d5036547cb2b7b8389b3849..85ea3586f73131a974009805c6ab3fde2cb9f1a6 100644
--- a/src/main/java/org/olat/course/nodes/IQTESTCourseNode.java
+++ b/src/main/java/org/olat/course/nodes/IQTESTCourseNode.java
@@ -176,30 +176,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);
 				}
 			}
 		}