diff --git a/src/main/java/org/olat/course/run/RunMainController.java b/src/main/java/org/olat/course/run/RunMainController.java
index d82f35107b6ebed44520288728b6c279b3d3d5c2..8c09f5800353d3e21fc6472bee179143baa6d2d4 100644
--- a/src/main/java/org/olat/course/run/RunMainController.java
+++ b/src/main/java/org/olat/course/run/RunMainController.java
@@ -251,12 +251,16 @@ public class RunMainController extends MainLayoutBasicController implements Gene
 		// it is to correctly apply external links using course-internal links via javascript
 		coursemain.contextPut("courserepokey", courseRepositoryEntry.getKey());
 		coursemain.put("coursemain", columnLayoutCtr.getInitialComponent());
-		// on initial call we have to set the data-nodeid manually. later it will be updated by updateCourseDataAttributes() automatically. 
-		String initNodeId = currentCourseNode != null ? currentCourseNode.getIdent() : null;
-		if (initNodeId == null) {
-			initNodeId = treeModel.getRootNode().getIdent();
+		// on initial call we have to set the data-nodeid manually. later it
+		// will be updated by updateCourseDataAttributes() automatically, but
+		// only when course visible to users (menu tree not null)
+		if (treeModel != null) {
+			String initNodeId = currentCourseNode != null ? currentCourseNode.getIdent() : null;
+			if (initNodeId == null) {
+				initNodeId = treeModel.getRootNode().getIdent();
+			}
+			coursemain.contextPut("initNodeId", initNodeId);
 		}
-		coursemain.contextPut("initNodeId", initNodeId);
 		putInitialPanel(coursemain);
 
 		// disposed message controller must be created beforehand