diff --git a/src/main/java/org/olat/course/nodes/cp/CPRunController.java b/src/main/java/org/olat/course/nodes/cp/CPRunController.java
index 160ec30744f82ffba46198838b2448a841e76172..ec0a89ed267f5081b30d14ed10319055fdebed69 100644
--- a/src/main/java/org/olat/course/nodes/cp/CPRunController.java
+++ b/src/main/java/org/olat/course/nodes/cp/CPRunController.java
@@ -205,7 +205,7 @@ public class CPRunController extends BasicController implements ControllerEventL
 			
 			cpAssessmentProvider = userCourseEnv.getIdentityEnvironment().getRoles().isGuestOnly()
 					? DryRunAssessmentProvider.create()
-					: PersistingAssessmentProvider.create(re, getIdentity());
+					: PersistingAssessmentProvider.create(re, getIdentity(), userCourseEnv.isParticipant());
 		}
 		// else cpRoot is already set (save some db access if the user opens /
 		// closes / reopens the cp from the same CPRuncontroller instance)
diff --git a/src/main/java/org/olat/course/nodes/wiki/WikiRunController.java b/src/main/java/org/olat/course/nodes/wiki/WikiRunController.java
index c34a609dee8f55a2a7c22aa8231eecc98efe3266..65ea410ae3f42c60eb58ca5d92a2acd461c20ca5 100644
--- a/src/main/java/org/olat/course/nodes/wiki/WikiRunController.java
+++ b/src/main/java/org/olat/course/nodes/wiki/WikiRunController.java
@@ -117,7 +117,7 @@ public class WikiRunController extends BasicController implements Activateable2
 			callback = new WikiSecurityCallbackImpl(courseEditRight, isAdmininstrator, isGuestOnly, false,
 					isResourceOwner, subsContext);
 			assessmentProvider = userCourseEnv.isParticipant()
-					? PersistingAssessmentProvider.create(wikiEntry, getIdentity())
+					? PersistingAssessmentProvider.create(wikiEntry, getIdentity(), true)
 					: DryRunAssessmentProvider.create();
 		}
 		
diff --git a/src/main/java/org/olat/course/nodes/wiki/_content/WikiToolController.java b/src/main/java/org/olat/course/nodes/wiki/_content/WikiToolController.java
index 11e4b6e923146515a98fa12ccdd423aeafdfdacc..be55b784cb2f9e78401763b358d2630a528d375e 100644
--- a/src/main/java/org/olat/course/nodes/wiki/_content/WikiToolController.java
+++ b/src/main/java/org/olat/course/nodes/wiki/_content/WikiToolController.java
@@ -99,7 +99,7 @@ public class WikiToolController extends BasicController implements Activateable2
 				callback = new WikiSecurityCallbackImpl(Boolean.TRUE, isAdmininstrator, isGuestOnly, false,
 						isResourceOwner, subsContext);
 				assessmentProvider = userCourseEnv.isParticipant()
-						? PersistingAssessmentProvider.create(wikiEntry, getIdentity())
+						? PersistingAssessmentProvider.create(wikiEntry, getIdentity(), false)
 						: DryRunAssessmentProvider.create();
 			}
 			
diff --git a/src/main/java/org/olat/course/run/navigation/NavigationHandler.java b/src/main/java/org/olat/course/run/navigation/NavigationHandler.java
index 4cbc8db22115f6a29df462a82ba9d19fbabcd374..a2b8c7cff6c1cb806928e0474aac9efaa25a29d6 100644
--- a/src/main/java/org/olat/course/run/navigation/NavigationHandler.java
+++ b/src/main/java/org/olat/course/run/navigation/NavigationHandler.java
@@ -446,6 +446,7 @@ public class NavigationHandler implements Disposable {
 				}
 				if (evaluateTree) {
 					treeModel = createTreeModel();
+					reattachExternalTreeModels(treeModel);
 				}
 				
 				if((TreeEvent.COMMAND_TREENODE_OPEN.equals(nodeSubCmd) || TreeEvent.COMMAND_TREENODE_CLOSE.equals(nodeSubCmd)) &&
@@ -567,10 +568,6 @@ public class NavigationHandler implements Disposable {
 			// always insert before already existing course building block children
 			parent.insert(chdc, 0);
 		}
-		
-		if (parent instanceof GenericTreeNode) {
-			((GenericTreeNode)parent).setIdent(root.getIdent());
-		}
 	}
 	
 	private static class SubTree {
diff --git a/src/main/java/org/olat/ims/cp/ui/CPEditMainController.java b/src/main/java/org/olat/ims/cp/ui/CPEditMainController.java
index 2996dc554fbf0d67411cba883015d2b8b5f64b5b..8cfa79b7c0ae059a065aac6d78f1872fe66b6287 100644
--- a/src/main/java/org/olat/ims/cp/ui/CPEditMainController.java
+++ b/src/main/java/org/olat/ims/cp/ui/CPEditMainController.java
@@ -108,7 +108,7 @@ public class CPEditMainController extends BasicController implements ToolbarAwar
 			} else {
 				showInfo("contentcontroller.no.lock");
 				
-				CPAssessmentProvider cpAssessmentProvider = PersistingAssessmentProvider.create(cpEntry, getIdentity());
+				CPAssessmentProvider cpAssessmentProvider = PersistingAssessmentProvider.create(cpEntry, getIdentity(), false);
 				Controller cpCtr = CPUIFactory.getInstance()
 						.createMainLayoutController(ureq, wControl, cpContainer, true, deliveryOptions, cpAssessmentProvider);
 				putInitialPanel(cpCtr.getInitialComponent());
diff --git a/src/main/java/org/olat/modules/cp/CPAssessmentProvider.java b/src/main/java/org/olat/modules/cp/CPAssessmentProvider.java
index c8305fb35eb4a969efde3e336204ae6875754bdc..21d1404fa1b41cc36b3002391bf58b0e5857b5f9 100644
--- a/src/main/java/org/olat/modules/cp/CPAssessmentProvider.java
+++ b/src/main/java/org/olat/modules/cp/CPAssessmentProvider.java
@@ -29,6 +29,8 @@ import org.olat.modules.assessment.model.AssessmentEntryStatus;
  */
 public interface CPAssessmentProvider {
 	
+	boolean isLearningPathCSS();
+	
 	AssessmentEntryStatus onPageVisited(String itemIdentifier);
 
 	AssessmentEntryStatus getStatus(String itemIdentifier);
diff --git a/src/main/java/org/olat/modules/cp/CPDisplayController.java b/src/main/java/org/olat/modules/cp/CPDisplayController.java
index 2e1a8eb349060cdfa5b88894888f9a59761f5902..991ebd8bfd4155cff8f73bb9b2d7ac45d02bf9c5 100644
--- a/src/main/java/org/olat/modules/cp/CPDisplayController.java
+++ b/src/main/java/org/olat/modules/cp/CPDisplayController.java
@@ -498,8 +498,10 @@ public class CPDisplayController extends BasicController implements Activateable
 		UserObject userObject = (UserObject)treeNode.getUserObject();
 		String identifier = userObject.getIdentifier();
 		AssessmentEntryStatus status = cpAssessmentProvider.onPageVisited(identifier);
-		String cssClass = CPManifestTreeModel.getItemCssClass(status);
-		((GenericTreeNode)treeNode).setCssClass(cssClass);
+		if (cpAssessmentProvider.isLearningPathCSS()) {
+			String cssClass = CPManifestTreeModel.getItemCssClass(status);
+			((GenericTreeNode)treeNode).setCssClass(cssClass);
+		}
 	}
 
 	@Override
diff --git a/src/main/java/org/olat/modules/cp/CPManifestTreeModel.java b/src/main/java/org/olat/modules/cp/CPManifestTreeModel.java
index e939daa7d058eb45e940931fa0094359072d3c1a..ce66b0bc41545dc1f586c3a09b0dee7138e9ba6c 100644
--- a/src/main/java/org/olat/modules/cp/CPManifestTreeModel.java
+++ b/src/main/java/org/olat/modules/cp/CPManifestTreeModel.java
@@ -212,7 +212,9 @@ public class CPManifestTreeModel extends GenericTreeModel {
 			}
 		} else if (item.getName().equals("item")) {
 			gtn.setIconCssClass("o_cp_item");
-			gtn.setCssClass(getItemCssClass(identifier));
+			if (cpAssessmentProvider.isLearningPathCSS()) {
+				gtn.setCssClass(getItemCssClass(identifier));
+			}
 			//set resolved file path directly
 			String identifierref = item.attributeValue("identifierref");
 			if(identifierref != null) {
diff --git a/src/main/java/org/olat/modules/cp/DryRunAssessmentProvider.java b/src/main/java/org/olat/modules/cp/DryRunAssessmentProvider.java
index 46eb53be33d31851aee827a2794f5855c7108a70..2513643c5e54de90ca9a875d1618c406fb9958b5 100644
--- a/src/main/java/org/olat/modules/cp/DryRunAssessmentProvider.java
+++ b/src/main/java/org/olat/modules/cp/DryRunAssessmentProvider.java
@@ -38,6 +38,11 @@ public class DryRunAssessmentProvider implements CPAssessmentProvider {
 	private DryRunAssessmentProvider() {
 		//
 	}
+
+	@Override
+	public boolean isLearningPathCSS() {
+		return false;
+	}
 	
 	@Override
 	public AssessmentEntryStatus onPageVisited(String itemIdentifier) {
diff --git a/src/main/java/org/olat/modules/cp/PersistingAssessmentProvider.java b/src/main/java/org/olat/modules/cp/PersistingAssessmentProvider.java
index af87aad28f7cea642fd84eac80484ea2ee8fe4e6..08fa9e87cce587c6a0026fc21b03bcbbfd8ec09a 100644
--- a/src/main/java/org/olat/modules/cp/PersistingAssessmentProvider.java
+++ b/src/main/java/org/olat/modules/cp/PersistingAssessmentProvider.java
@@ -39,24 +39,32 @@ public class PersistingAssessmentProvider implements CPAssessmentProvider {
 
 	private final Identity identity;
 	private final RepositoryEntry cpEntry;
+	private final boolean learningPathCSS;
 	
 	private Map<String, AssessmentEntryStatus> identifierToStatus;
 	
 	private AssessmentService assessmentService;
 	
-	public static final CPAssessmentProvider create(RepositoryEntry cpEntry, Identity identity) {
-		return new PersistingAssessmentProvider(cpEntry, identity);
+	public static final CPAssessmentProvider create(RepositoryEntry cpEntry, Identity identity,
+			boolean learningPathCSS) {
+		return new PersistingAssessmentProvider(cpEntry, identity, learningPathCSS);
 	}
 	
-	private PersistingAssessmentProvider(RepositoryEntry cpEntry, Identity identity) {
+	private PersistingAssessmentProvider(RepositoryEntry cpEntry, Identity identity, boolean learningPathCSS) {
 		this.identity = identity;
 		this.cpEntry = cpEntry;
+		this.learningPathCSS = learningPathCSS;
 		this.assessmentService = CoreSpringFactory.getImpl(AssessmentService.class);
 		this.identifierToStatus = assessmentService.loadAssessmentEntriesByAssessedIdentity(identity, cpEntry).stream()
 				.filter(ae -> ae.getSubIdent() != null && ae.getAssessmentStatus() != null)
 				.collect(Collectors.toMap(AssessmentEntry::getSubIdent, AssessmentEntry::getAssessmentStatus));
 	}
 
+	@Override
+	public boolean isLearningPathCSS() {
+		return learningPathCSS;
+	}
+
 	@Override
 	public AssessmentEntryStatus onPageVisited(String itemIdentifier) {
 		AssessmentEntry assessmentEntry = assessmentService.getOrCreateAssessmentEntry(identity, null, cpEntry, itemIdentifier, false, null);
diff --git a/src/main/java/org/olat/modules/wiki/DryRunAssessmentProvider.java b/src/main/java/org/olat/modules/wiki/DryRunAssessmentProvider.java
index 9f4c0b046319364dbb848c99a3e441b83f7f9876..e4fdcc66f712ad068d159383bda22259b3e21d15 100644
--- a/src/main/java/org/olat/modules/wiki/DryRunAssessmentProvider.java
+++ b/src/main/java/org/olat/modules/wiki/DryRunAssessmentProvider.java
@@ -39,6 +39,11 @@ public class DryRunAssessmentProvider implements WikiAssessmentProvider {
 		//
 	}
 
+	@Override
+	public boolean isLearningPathCSS() {
+		return false;
+	}
+
 	@Override
 	public void setStatusDone(String pageId) {
 		//
diff --git a/src/main/java/org/olat/modules/wiki/PersistingAssessmentProvider.java b/src/main/java/org/olat/modules/wiki/PersistingAssessmentProvider.java
index 8330bdef120a97690ac280fc7b1543da4f399f4f..d65456397984a69903072b9a4c98aff3e4302f6b 100644
--- a/src/main/java/org/olat/modules/wiki/PersistingAssessmentProvider.java
+++ b/src/main/java/org/olat/modules/wiki/PersistingAssessmentProvider.java
@@ -39,24 +39,31 @@ public class PersistingAssessmentProvider implements WikiAssessmentProvider {
 
 	private final Identity identity;
 	private final RepositoryEntry wikiEntry;
+	private final boolean learningPathCSS;
 	
 	private Map<String, AssessmentEntryStatus> pageIdToStatus;
 	
 	private AssessmentService assessmentService;
 	
-	public static final WikiAssessmentProvider create(RepositoryEntry wikiEntry, Identity identity) {
-		return new PersistingAssessmentProvider(wikiEntry, identity);
+	public static final WikiAssessmentProvider create(RepositoryEntry wikiEntry, Identity identity, boolean learningPathCSS) {
+		return new PersistingAssessmentProvider(wikiEntry, identity, learningPathCSS);
 	}
 	
-	private PersistingAssessmentProvider(RepositoryEntry wikiEntry, Identity identity) {
+	private PersistingAssessmentProvider(RepositoryEntry wikiEntry, Identity identity, boolean learningPathCSS) {
 		this.identity = identity;
 		this.wikiEntry = wikiEntry;
+		this.learningPathCSS = learningPathCSS;
 		this.assessmentService = CoreSpringFactory.getImpl(AssessmentService.class);
 		this.pageIdToStatus = assessmentService.loadAssessmentEntriesByAssessedIdentity(identity, wikiEntry).stream()
 				.filter(ae -> ae.getSubIdent() != null && ae.getAssessmentStatus() != null)
 				.collect(Collectors.toMap(AssessmentEntry::getSubIdent, AssessmentEntry::getAssessmentStatus));
 	}
 
+	@Override
+	public boolean isLearningPathCSS() {
+		return learningPathCSS;
+	}
+
 	@Override
 	public void setStatusDone(String pageId) {
 		AssessmentEntry assessmentEntry = assessmentService.getOrCreateAssessmentEntry(identity, null, wikiEntry, pageId, false, null);
diff --git a/src/main/java/org/olat/modules/wiki/WikiAssessmentProvider.java b/src/main/java/org/olat/modules/wiki/WikiAssessmentProvider.java
index 0457946b328eb9670217fde263c104dd05111cd0..118559b62f14cd5b38193bdadc6e3d022bc9ad81 100644
--- a/src/main/java/org/olat/modules/wiki/WikiAssessmentProvider.java
+++ b/src/main/java/org/olat/modules/wiki/WikiAssessmentProvider.java
@@ -28,6 +28,8 @@ import org.olat.modules.assessment.model.AssessmentEntryStatus;
  *
  */
 public interface WikiAssessmentProvider {
+	
+	boolean isLearningPathCSS();
 
 	void setStatusDone(String pageId);
 	
diff --git a/src/main/java/org/olat/modules/wiki/WikiMainController.java b/src/main/java/org/olat/modules/wiki/WikiMainController.java
index 2c5d77acef5218dce87bff672ca28f7448abaeaf..0d63b7d72f93ecae2d8aafe9f6daff5e84984b1f 100644
--- a/src/main/java/org/olat/modules/wiki/WikiMainController.java
+++ b/src/main/java/org/olat/modules/wiki/WikiMainController.java
@@ -465,14 +465,19 @@ public class WikiMainController extends BasicController implements CloneableCont
 	}
 
 	private String getNodeCssClass(AssessmentEntryStatus status) {
-		if (AssessmentEntryStatus.done.equals(status)) {
-			return getNodeDoneCssClass();
+		if (assessmentProvider.isLearningPathCSS()) {
+			if (AssessmentEntryStatus.done.equals(status)) {
+				return getNodeDoneCssClass();
+			}
+			return "o_lp_ready o_lp_not_in_sequence o_lp_contains_no_sequence";
 		}
-		return "o_lp_ready o_lp_not_in_sequence o_lp_contains_no_sequence";
+		return "";
 	}
 	
 	private String getNodeDoneCssClass() {
-		return "o_lp_done o_lp_not_in_sequence o_lp_contains_no_sequence";
+		return assessmentProvider.isLearningPathCSS()
+				? "o_lp_done o_lp_not_in_sequence o_lp_contains_no_sequence"
+				: "";
 	}
 
 	@Override
diff --git a/src/main/java/org/olat/repository/handlers/ImsCPHandler.java b/src/main/java/org/olat/repository/handlers/ImsCPHandler.java
index 902fea30e09bbfbfd91af7f1addb0ee399d1a4bd..ae5e4e4ce3992961f9fdc4f40e4fa2e06438f84b 100644
--- a/src/main/java/org/olat/repository/handlers/ImsCPHandler.java
+++ b/src/main/java/org/olat/repository/handlers/ImsCPHandler.java
@@ -230,7 +230,7 @@ public class ImsCPHandler extends FileHandler {
 			CoreSpringFactory.getImpl(UserCourseInformationsManager.class)
 				.updateUserCourseInformations(entry.getOlatResource(), uureq.getIdentity());
 			
-			CPAssessmentProvider cpAssessmentProvider = PersistingAssessmentProvider.create(re, uureq.getIdentity());
+			CPAssessmentProvider cpAssessmentProvider = PersistingAssessmentProvider.create(re, uureq.getIdentity(), false);
 			CPDisplayController cpCtr = new CPDisplayController(uureq, wwControl, vfsWrapper, true, true, activateFirstPage, true, deliveryOptions,
 					initialUri, entry.getOlatResource(), "", false, cpAssessmentProvider);
 			LayoutMain3ColsController ctr = new LayoutMain3ColsController(uureq, wwControl, cpCtr.getMenuComponent(), cpCtr.getInitialComponent(), vfsWrapper.getName());
diff --git a/src/main/java/org/olat/repository/handlers/WikiHandler.java b/src/main/java/org/olat/repository/handlers/WikiHandler.java
index 6a582080b0a99cc03d3a9222bc294a4181b87969..bb7e43e0a42af16c04ea8f90a895c11f095d794d 100644
--- a/src/main/java/org/olat/repository/handlers/WikiHandler.java
+++ b/src/main/java/org/olat/repository/handlers/WikiHandler.java
@@ -223,7 +223,7 @@ public class WikiHandler implements RepositoryHandler {
 		final ContextEntry ce = bc.popLauncherContextEntry();
 		SubscriptionContext subsContext = new SubscriptionContext(res, WikiManager.WIKI_RESOURCE_FOLDER_NAME);
 		final WikiSecurityCallback callback = new WikiSecurityCallbackImpl(null, isOLatAdmin, isGuestOnly, false, isResourceOwner, subsContext);
-		WikiAssessmentProvider assessmentProvider = PersistingAssessmentProvider.create(re, ureq.getIdentity());
+		WikiAssessmentProvider assessmentProvider = PersistingAssessmentProvider.create(re, ureq.getIdentity(), false);
 
 		return new RepositoryEntryRuntimeController(ureq, wControl, re, reSecurity,
 			new RuntimeControllerCreator() {