diff --git a/src/main/java/org/olat/NewControllerFactory.java b/src/main/java/org/olat/NewControllerFactory.java
index 3da37ec879219bab2608bb2080eea6756939c7d9..9a2960af31b21a8372fec375bdef115ac048e90f 100644
--- a/src/main/java/org/olat/NewControllerFactory.java
+++ b/src/main/java/org/olat/NewControllerFactory.java
@@ -159,12 +159,19 @@ public class NewControllerFactory extends LogDelegator {
 		boolean ceConsumed = false;
 		RepositoryEntry re = null;
 		if (ores.getResourceableTypeName().equals(OresHelper.calculateTypeName(RepositoryEntry.class))) {
-			// It is a repository-entry => get OLATResourceable from RepositoryEntry
-			RepositoryManager repom = RepositoryManager.getInstance();
-			re = repom.lookupRepositoryEntry(ores.getResourceableId());
-			if (re != null){
+			if(ores instanceof RepositoryEntry) {
+				re = (RepositoryEntry)ores;
 				ores = re.getOlatResource();
 				ceConsumed = true;
+			} else {
+				// It is a repository-entry => get OLATResourceable from RepositoryEntry
+				RepositoryManager repom = RepositoryManager.getInstance();
+				re = repom.lookupRepositoryEntry(ores.getResourceableId());
+				if (re != null){
+					ores = re.getOlatResource();
+					ceConsumed = true;
+					mainCe.upgradeOLATResourceable(re);
+				}
 			}
 		}
 
diff --git a/src/main/java/org/olat/core/id/context/BusinessControlFactory.java b/src/main/java/org/olat/core/id/context/BusinessControlFactory.java
index af968d4205053cb9c4cea13b66732446c11ede42..ac9572086c8a53ea1fc8607eeffecdc67c1c1dc4 100644
--- a/src/main/java/org/olat/core/id/context/BusinessControlFactory.java
+++ b/src/main/java/org/olat/core/id/context/BusinessControlFactory.java
@@ -527,7 +527,7 @@ public class BusinessControlFactory {
 class MyContextEntry implements ContextEntry, Serializable {
 
 	private static final long serialVersionUID = 949522581806327579L;
-	private final OLATResourceable olatResourceable;
+	private OLATResourceable olatResourceable;
 
 	//fxdiff BAKS-7 Resume function
 	private StateEntry state;
@@ -542,7 +542,12 @@ class MyContextEntry implements ContextEntry, Serializable {
 	public OLATResourceable getOLATResourceable() {
 		return olatResourceable;
 	}
-	
+
+	@Override
+	public void upgradeOLATResourceable(OLATResourceable ores) {
+		olatResourceable = ores;
+	}
+
 	@Override
 	//fxdiff BAKS-7 Resume function
 	public StateEntry getTransientState() {
diff --git a/src/main/java/org/olat/core/id/context/ContextEntry.java b/src/main/java/org/olat/core/id/context/ContextEntry.java
index 99bdaaa9c70a4778c917bf18e1e9d068ba131843..dee24f0ad0927bbe03ff9de2bbc66a42482a6642 100644
--- a/src/main/java/org/olat/core/id/context/ContextEntry.java
+++ b/src/main/java/org/olat/core/id/context/ContextEntry.java
@@ -39,12 +39,18 @@ import org.olat.core.id.OLATResourceable;
  * @author Felix Jost
  */
 public interface ContextEntry extends Cloneable {
+	
 	public OLATResourceable getOLATResourceable();
+	
+	/**
+	 * Use it to replace an OresHelper generate resourceable with
+	 * the real object.
+	 * @param ores
+	 */
+	public void upgradeOLATResourceable(OLATResourceable ores);
 
-	//fxdiff BAKS-7 Resume function
 	public StateEntry getTransientState();
 
-	//fxdiff BAKS-7 Resume function
 	public void setTransientState(StateEntry state);
 	
 	public ContextEntry clone();
diff --git a/src/main/java/org/olat/course/site/CourseSiteContextEntryControllerCreator.java b/src/main/java/org/olat/course/site/CourseSiteContextEntryControllerCreator.java
index 2b550ec86e0ccebd30d14927d95bb0a72ba016cb..a3b2afbdea23f443f0efd432bf1aa8f2ad3a64c1 100644
--- a/src/main/java/org/olat/course/site/CourseSiteContextEntryControllerCreator.java
+++ b/src/main/java/org/olat/course/site/CourseSiteContextEntryControllerCreator.java
@@ -129,9 +129,13 @@ public class CourseSiteContextEntryControllerCreator extends DefaultContextEntry
 	
 	private RepositoryEntry getRepositoryEntry(ContextEntry ce) {
 		if(repoEntry == null) {
-			OLATResourceable ores = ce.getOLATResourceable();
-			RepositoryManager rm = RepositoryManager.getInstance();
-			repoEntry = rm.lookupRepositoryEntry(ores.getResourceableId());
+			if(ce.getOLATResourceable() instanceof RepositoryEntry) {
+				repoEntry = (RepositoryEntry)ce.getOLATResourceable();
+			} else {
+				OLATResourceable ores = ce.getOLATResourceable();
+				RepositoryManager rm = RepositoryManager.getInstance();
+				repoEntry = rm.lookupRepositoryEntry(ores.getResourceableId());
+			}
 		}
 		return repoEntry;
 	}
diff --git a/src/main/java/org/olat/repository/RepositoryContextEntryControllerCreator.java b/src/main/java/org/olat/repository/RepositoryContextEntryControllerCreator.java
index 92307e0a92602d776e0a3c07b1b2f5b1eb92cbdd..aa600b1e7fb0e3618fac30ed0700252019c736f6 100644
--- a/src/main/java/org/olat/repository/RepositoryContextEntryControllerCreator.java
+++ b/src/main/java/org/olat/repository/RepositoryContextEntryControllerCreator.java
@@ -82,9 +82,13 @@ public class RepositoryContextEntryControllerCreator extends DefaultContextEntry
 	
 	private RepositoryEntry getRepositoryEntry(ContextEntry ce) {
 		if(repoEntry == null) {
-			OLATResourceable ores = ce.getOLATResourceable();
-			RepositoryManager rm = RepositoryManager.getInstance();
-			repoEntry = rm.lookupRepositoryEntry(ores.getResourceableId());
+			if(ce.getOLATResourceable() instanceof RepositoryEntry) {
+				repoEntry = (RepositoryEntry)ce.getOLATResourceable();
+			} else {
+				OLATResourceable ores = ce.getOLATResourceable();
+				RepositoryManager rm = RepositoryManager.getInstance();
+				repoEntry = rm.lookupRepositoryEntry(ores.getResourceableId());
+			}
 		}
 		return repoEntry;
 	}