diff --git a/src/main/java/org/olat/ims/qti21/ui/editor/AssessmentTestComposerController.java b/src/main/java/org/olat/ims/qti21/ui/editor/AssessmentTestComposerController.java
index b37eb8a65eabcd58f5d89a6e129da8f150ec558f..e4e195e521be4722edd79e817f27ba3eb638d4b3 100644
--- a/src/main/java/org/olat/ims/qti21/ui/editor/AssessmentTestComposerController.java
+++ b/src/main/java/org/olat/ims/qti21/ui/editor/AssessmentTestComposerController.java
@@ -794,6 +794,10 @@ public class AssessmentTestComposerController extends MainLayoutBasicController
 	private void doInsert(UserRequest ureq, List<QuestionItemView> items) {
 		TreeNode selectedNode = menuTree.getSelectedNode();
 		TreeNode sectionNode = getNearestSection(selectedNode);
+		if(sectionNode == null) {
+			showWarning("error.missing.section");
+			return;
+		}
 
 		boolean allOk = true;
 		String firstItemId = null;
@@ -843,6 +847,10 @@ public class AssessmentTestComposerController extends MainLayoutBasicController
 	private void doInsert(UserRequest ureq, AssessmentItemsPackage importPackage) {
 		TreeNode selectedNode = menuTree.getSelectedNode();
 		TreeNode sectionNode = getNearestSection(selectedNode);
+		if(sectionNode == null) {
+			showWarning("error.missing.section");
+			return;
+		}
 		
 		String firstItemId = null;
 		boolean errorOnImport = false;
@@ -988,7 +996,7 @@ public class AssessmentTestComposerController extends MainLayoutBasicController
 			TreeNode rootNode = menuTree.getTreeModel().getRootNode();
 			AssessmentTest assessmentTest = (AssessmentTest)rootNode.getUserObject();
 			List<TestPart> parts = assessmentTest.getTestParts();
-			if(parts != null && parts.size() > 0) {
+			if(parts != null && !parts.isEmpty()) {
 				parentPart = parts.get(0);
 			} else {
 				showWarning("error.cannot.create.section");
@@ -1032,6 +1040,10 @@ public class AssessmentTestComposerController extends MainLayoutBasicController
 	private void doNewAssessmentItem(UserRequest ureq, TreeNode selectedNode, AssessmentItemBuilder itemBuilder) {
 		try {
 			TreeNode sectionNode = getNearestSection(selectedNode);
+			if(sectionNode == null) {
+				showWarning("error.missing.section");
+				return;
+			}
 			AssessmentSection section = (AssessmentSection)sectionNode.getUserObject();
 			
 			AssessmentItemRef itemRef = new AssessmentItemRef(section);
diff --git a/src/main/java/org/olat/ims/qti21/ui/editor/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/ims/qti21/ui/editor/_i18n/LocalStrings_de.properties
index 6c4967be0b07e3750b9d001abcb2499c678a85ee..2de18b06514907ef5e8638632bd7813086ed7be6 100644
--- a/src/main/java/org/olat/ims/qti21/ui/editor/_i18n/LocalStrings_de.properties
+++ b/src/main/java/org/olat/ims/qti21/ui/editor/_i18n/LocalStrings_de.properties
@@ -49,6 +49,7 @@ error.mimetype=$org.olat.core.commons.modules.bc\:WrongMimeType
 error.min.score.bigger.max=Minimal erreichbare Punktzahl muss kleiner als then maximal erreichbare Punktzahl sein.
 error.missing.fib=Die Frage mussen mindestens einen L\u00FCckentext oder eine Numerische Eingabe enthalten.
 error.missing.hottext=Die Frage mussen mindestens einen Hottext enthalten.
+error.missing.section=Sie m\u00FCssen mindestens eine Sektion im Test oder Test Part haben.
 error.need.correct.answer=Sie m\u00FCssen mindestens eine Antwort als korrekt markieren.
 error.positive.double=Falsches Zahlenformat, nur positive Nummer sind erlaubt. Beispiele\: 15.0, 5.5, 10
 error.singlechoice=Genau ein ausw\u00E4hlen
diff --git a/src/main/java/org/olat/ims/qti21/ui/editor/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/ims/qti21/ui/editor/_i18n/LocalStrings_en.properties
index 402e824fbc0f2095d91c2b3c213fa72e3a65a907..39055cfd0125b7b061475e64972ecd796fa454b2 100644
--- a/src/main/java/org/olat/ims/qti21/ui/editor/_i18n/LocalStrings_en.properties
+++ b/src/main/java/org/olat/ims/qti21/ui/editor/_i18n/LocalStrings_en.properties
@@ -49,6 +49,7 @@ error.mimetype=$org.olat.core.commons.modules.bc\:WrongMimeType
 error.min.score.bigger.max=Min. score must be bigger than the max. score.
 error.missing.fib=The question need at least a gap text or a numerical input.
 error.missing.hottext=The question need at least a hottext.
+error.missing.section=You must have at least one section in your test or test part.
 error.need.correct.answer=You need a least one correct answer.
 error.positive.double=Only positive number are allowed. Example\: 15.0, 5.5, 10
 error.singlechoice=Choose exactly one