diff --git a/src/main/java/org/olat/NewControllerFactory.java b/src/main/java/org/olat/NewControllerFactory.java
index 1998c8bdadbb9a30542489c0818f423ac175961c..d5c8aa14617136cb0cf1474e92b225a76504bc44 100644
--- a/src/main/java/org/olat/NewControllerFactory.java
+++ b/src/main/java/org/olat/NewControllerFactory.java
@@ -45,7 +45,7 @@ import org.olat.core.id.context.BusinessControl;
 import org.olat.core.id.context.BusinessControlFactory;
 import org.olat.core.id.context.ContextEntry;
 import org.olat.core.id.context.ContextEntryControllerCreator;
-import org.olat.core.id.context.ContextEntryControllerCreator2;
+import org.olat.core.id.context.TabContext;
 import org.olat.core.logging.AssertException;
 import org.olat.core.logging.LogDelegator;
 import org.olat.core.util.resource.OresHelper;
@@ -177,12 +177,7 @@ public class NewControllerFactory extends LogDelegator {
 		}
 
 		//fxdiff BAKS-7 Resume function
-		String siteClassName;
-		if(typeHandler instanceof ContextEntryControllerCreator2) {
-			siteClassName = ((ContextEntryControllerCreator2)typeHandler).getSiteClassName(ureq, mainCe);
-		} else {
-			siteClassName = typeHandler.getSiteClassName(mainCe);
-		}
+		String siteClassName = typeHandler.getSiteClassName(mainCe, ureq);
 			
 		// open in existing site
 		if (siteClassName != null) {
@@ -218,23 +213,23 @@ public class NewControllerFactory extends LogDelegator {
 					}
 				}
 			}
-			dts.activateStatic(ureq, siteClassName, viewIdentifyer, entries);
+
+			TabContext context = typeHandler.getTabContext(ureq, ores, mainCe, entries);
+			dts.activateStatic(ureq, siteClassName, viewIdentifyer, context.getContext());
 		} else {
 			List<ContextEntry> entries = new ArrayList<ContextEntry>();
+			while(bc.hasContextEntry()) {
+				entries.add(bc.popLauncherContextEntry());
+			}
+			TabContext context = typeHandler.getTabContext(ureq, ores, mainCe, entries);
 			
 			// or create new tab
-			String tabName = typeHandler.getTabName(mainCe);
+			//String tabName = typeHandler.getTabName(mainCe, ureq);
 			// create and add Tab
-			dt = dts.createDTab(ores, re, tabName);
+			dt = dts.createDTab(context.getTabResource(), re, context.getName());
 			if (dt == null) {
-				// tabs are full: TODO
-				// user error message is generated in BaseFullWebappController, nothing
-				// to do here
+				// user error message is generated in BaseFullWebappController, nothing to do here
 			} else {
-				while(bc.hasContextEntry()) {
-					entries.add(bc.popLauncherContextEntry());
-				}
-
 				WindowControl bwControl = BusinessControlFactory.getInstance().createBusinessWindowControl(bc, dt.getWindowControl());
 				Controller launchC = typeHandler.createController(mainCe, ureq, bwControl);
 				if (launchC == null) {
@@ -244,7 +239,7 @@ public class NewControllerFactory extends LogDelegator {
 
 				dt.setController(launchC);
 				dts.addDTab(dt);
-				dts.activate(ureq, dt, null, entries); // null: do not activate to a certain view
+				dts.activate(ureq, dt, null, context.getContext()); // null: do not activate to a certain view
 			}
 		}
 	}
diff --git a/src/main/java/org/olat/admin/user/UserAdminContextEntryControllerCreator.java b/src/main/java/org/olat/admin/user/UserAdminContextEntryControllerCreator.java
index be416451358b6f37e517bec0b9afe37a234bf6b8..4180151f2cfef5c356673a1ccb8a4ed4a7aab62d 100644
--- a/src/main/java/org/olat/admin/user/UserAdminContextEntryControllerCreator.java
+++ b/src/main/java/org/olat/admin/user/UserAdminContextEntryControllerCreator.java
@@ -24,7 +24,7 @@ import org.olat.core.gui.UserRequest;
 import org.olat.core.gui.control.Controller;
 import org.olat.core.gui.control.WindowControl;
 import org.olat.core.id.context.ContextEntry;
-import org.olat.core.id.context.ContextEntryControllerCreator;
+import org.olat.core.id.context.DefaultContextEntryControllerCreator;
 
 /**
  * Description:<br>
@@ -35,7 +35,7 @@ import org.olat.core.id.context.ContextEntryControllerCreator;
  *
  * @author srosse
  */
-public class UserAdminContextEntryControllerCreator implements ContextEntryControllerCreator {
+public class UserAdminContextEntryControllerCreator extends DefaultContextEntryControllerCreator {
 
 	/**
 	 * @see org.olat.core.id.context.ContextEntryControllerCreator#createController(org.olat.core.id.context.ContextEntry,
@@ -49,7 +49,8 @@ public class UserAdminContextEntryControllerCreator implements ContextEntryContr
 	/**
 	 * @see org.olat.core.id.context.ContextEntryControllerCreator#getSiteClassName(org.olat.core.id.context.ContextEntry)
 	 */
-	public String getSiteClassName(ContextEntry ce) {
+	@Override
+	public String getSiteClassName(ContextEntry ce, UserRequest ureq) {
 		// opened as site not tab
 		return UserAdminSite.class.getName();
 	}
@@ -57,7 +58,8 @@ public class UserAdminContextEntryControllerCreator implements ContextEntryContr
 	/**
 	 * @see org.olat.core.id.context.ContextEntryControllerCreator#getTabName(org.olat.core.id.context.ContextEntry)
 	 */
-	public String getTabName(ContextEntry ce) {
+	@Override
+	public String getTabName(ContextEntry ce, UserRequest ureq) {
 		return null;
 	}
 
diff --git a/src/main/java/org/olat/core/gui/components/table/TableController.java b/src/main/java/org/olat/core/gui/components/table/TableController.java
index ed8c00b8846b1a7f785956846a66a9aa5d68f798..51ebae905c194a614725626e8c3ae823d85582ac 100644
--- a/src/main/java/org/olat/core/gui/components/table/TableController.java
+++ b/src/main/java/org/olat/core/gui/components/table/TableController.java
@@ -647,6 +647,22 @@ public class TableController extends BasicController {
 	public void setSelectedRowId(final int selectedRowId) {
 		table.setSelectedRowId(selectedRowId);
 	}
+	
+	/**
+	 * Set the page viewed if pageing is enabled
+	 * @param pageNr
+	 */
+	public void setPage(Integer pageNr) {
+		table.updatePageing(pageNr);
+	}
+	
+	/**
+	 * Return the number of items per page if pageing is enable
+	 * @return
+	 */
+	public int getPageSize() {
+		return table.getResultsPerPage();
+	}
 
 	/**
 	 * Sets the sortColumn to a specific colun id. Check if the column can be accessed 
diff --git a/src/main/java/org/olat/core/id/context/ContextEntryControllerCreator.java b/src/main/java/org/olat/core/id/context/ContextEntryControllerCreator.java
index b2de3cfd2f995c3df643c1fb8a0e8c022dd0f26d..45a2788266066f88cc72b932502289b6eb93d673 100644
--- a/src/main/java/org/olat/core/id/context/ContextEntryControllerCreator.java
+++ b/src/main/java/org/olat/core/id/context/ContextEntryControllerCreator.java
@@ -28,9 +28,12 @@
 */
 package org.olat.core.id.context;
 
+import java.util.List;
+
 import org.olat.core.gui.UserRequest;
 import org.olat.core.gui.control.Controller;
 import org.olat.core.gui.control.WindowControl;
+import org.olat.core.id.OLATResourceable;
 
 /**
  * Description:<br>
@@ -61,16 +64,6 @@ public interface ContextEntryControllerCreator {
 	 */
 	public Controller createController(ContextEntry ce, UserRequest ureq, WindowControl wControl);
 
-	/**
-	 * The name of the dynamic tab if such a tab should be created or NULL if
-	 * opened as Site
-	 * 
-	 * @param ce
-	 * @return Return tab name for certain context entry or NULL if the target is
-	 *         the opeing of an existing site
-	 */
-	public String getTabName(ContextEntry ce);
-
 	/**
 	 * The class name of the site that must be activated or NULL if opened as dTab
 	 * 
@@ -78,7 +71,7 @@ public interface ContextEntryControllerCreator {
 	 * @return Return the class name that is used to activate an existing site or
 	 *         NULL if the target is a new dtab
 	 */
-	public String getSiteClassName(ContextEntry ce);
+	public String getSiteClassName(ContextEntry ce, UserRequest ureq);
 	
 	/**
 	 * 
@@ -88,4 +81,12 @@ public interface ContextEntryControllerCreator {
 	 * @return true, if this contextentry can be launched
 	 */
 	public boolean validateContextEntryAndShowError(ContextEntry ce, UserRequest ureq, WindowControl wControl);
+	
+	/**
+	 * Allow to rewrite the business path
+	 * @param ureq
+	 * @param entries
+	 * @return
+	 */
+	public TabContext getTabContext(UserRequest ureq, OLATResourceable ores, ContextEntry mainEntry,  List<ContextEntry> entries);
 }
diff --git a/src/main/java/org/olat/core/id/context/DefaultContextEntryControllerCreator.java b/src/main/java/org/olat/core/id/context/DefaultContextEntryControllerCreator.java
new file mode 100644
index 0000000000000000000000000000000000000000..ef132378678b50f29bbd2d9f1556985648a980e5
--- /dev/null
+++ b/src/main/java/org/olat/core/id/context/DefaultContextEntryControllerCreator.java
@@ -0,0 +1,56 @@
+/**
+ * <a href="http://www.openolat.org">
+ * OpenOLAT - Online Learning and Training</a><br>
+ * <p>
+ * Licensed under the Apache License, Version 2.0 (the "License"); <br>
+ * you may not use this file except in compliance with the License.<br>
+ * You may obtain a copy of the License at the
+ * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a>
+ * <p>
+ * Unless required by applicable law or agreed to in writing,<br>
+ * software distributed under the License is distributed on an "AS IS" BASIS, <br>
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br>
+ * See the License for the specific language governing permissions and <br>
+ * limitations under the License.
+ * <p>
+ * Initial code contributed and copyrighted by<br>
+ * frentix GmbH, http://www.frentix.com
+ * <p>
+ */
+package org.olat.core.id.context;
+
+import java.util.List;
+
+import org.olat.core.gui.UserRequest;
+import org.olat.core.gui.control.Controller;
+import org.olat.core.gui.control.WindowControl;
+import org.olat.core.id.OLATResourceable;
+
+/**
+ * 
+ * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com
+ *
+ */
+public class DefaultContextEntryControllerCreator implements ContextEntryControllerCreator {
+
+	public Controller createController(ContextEntry ce, UserRequest ureq, WindowControl wControl) {
+		return null;
+	}
+
+	public String getTabName(ContextEntry ce, UserRequest ureq) {
+		return null;
+	}
+
+	public String getSiteClassName(ContextEntry ce, UserRequest ureq) {
+		return null;
+	}
+
+	public boolean validateContextEntryAndShowError(ContextEntry ce, UserRequest ureq, WindowControl wControl) {
+		return true;
+	}
+
+	@Override
+	public TabContext getTabContext(UserRequest ureq, OLATResourceable ores, ContextEntry mainEntry, List<ContextEntry> entries) {
+		return new TabContext(getTabName(mainEntry, ureq), ores, entries);
+	}
+}
\ No newline at end of file
diff --git a/src/main/java/org/olat/core/id/context/SiteContextEntryControllerCreator.java b/src/main/java/org/olat/core/id/context/SiteContextEntryControllerCreator.java
index 866bf605f4b3d90cf8d44282dd7365c46082b908..ab8766a54be6f98c76ccd609dafe676c1bf858d3 100644
--- a/src/main/java/org/olat/core/id/context/SiteContextEntryControllerCreator.java
+++ b/src/main/java/org/olat/core/id/context/SiteContextEntryControllerCreator.java
@@ -34,7 +34,7 @@ import org.olat.core.gui.control.navigation.SiteInstance;
  *
  * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com
  */
-public class SiteContextEntryControllerCreator implements ContextEntryControllerCreator {
+public class SiteContextEntryControllerCreator extends DefaultContextEntryControllerCreator {
 	private final Class<? extends SiteInstance> site;
 	
 	public SiteContextEntryControllerCreator(Class<? extends SiteInstance> site) {
@@ -45,11 +45,13 @@ public class SiteContextEntryControllerCreator implements ContextEntryController
 		return null;
 	}
 
-	public String getSiteClassName(ContextEntry ce) {
+	@Override
+	public String getSiteClassName(ContextEntry ce, UserRequest ureq) {
 		return site.getName();
 	}
 
-	public String getTabName(ContextEntry ce) {
+	@Override
+	public String getTabName(ContextEntry ce, UserRequest ureq) {
 		return null;
 	}
 
diff --git a/src/main/java/org/olat/core/id/context/ContextEntryControllerCreator2.java b/src/main/java/org/olat/core/id/context/TabContext.java
similarity index 51%
rename from src/main/java/org/olat/core/id/context/ContextEntryControllerCreator2.java
rename to src/main/java/org/olat/core/id/context/TabContext.java
index d91775a6e51f0ad9802cb9b3e8fa7746d38dcec5..1aa6cd2123602941d2ebdc895d9f669299111beb 100644
--- a/src/main/java/org/olat/core/id/context/ContextEntryControllerCreator2.java
+++ b/src/main/java/org/olat/core/id/context/TabContext.java
@@ -19,11 +19,46 @@
  */
 package org.olat.core.id.context;
 
-import org.olat.core.gui.UserRequest;
+import java.util.List;
 
-//fxdiff BAKS-7 Resume function
-public interface ContextEntryControllerCreator2 extends ContextEntryControllerCreator {
+import org.olat.core.id.OLATResourceable;
 
+/**
+ * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com
+ */
+public class TabContext {
+	
+	private final String name;
+	private final OLATResourceable resource;
+	private final List<ContextEntry> contextEntries;
+	
+	public TabContext (String name, OLATResourceable resource, List<ContextEntry> contextEntries) {
+		this.name = name;
+		this.resource = resource;
+		this.contextEntries = contextEntries;
+	}
+	
+	/**
+	 * The name of the tab
+	 * @return
+	 */
+	public String getName() {
+		return name;
+	}
+	
+	/**
+	 * The resource which identified the tab
+	 * @return
+	 */
+	public OLATResourceable getTabResource() {
+		return resource;
+	}
 
-	public String getSiteClassName(UserRequest ureq, ContextEntry ce);
-}
+	/**
+	 * 
+	 * @return
+	 */
+	public List<ContextEntry> getContext() {
+		return contextEntries;
+	}
+}
\ No newline at end of file
diff --git a/src/main/java/org/olat/core/util/mail/MailBoxExtension.java b/src/main/java/org/olat/core/util/mail/MailBoxExtension.java
index 70939502e10c27cb4b45860739080064c82b4b3e..1eefcd7c7190aced6ec5f839dc5e606285f73bf0 100644
--- a/src/main/java/org/olat/core/util/mail/MailBoxExtension.java
+++ b/src/main/java/org/olat/core/util/mail/MailBoxExtension.java
@@ -32,7 +32,7 @@ import org.olat.core.id.Identity;
 import org.olat.core.id.context.BusinessControl;
 import org.olat.core.id.context.BusinessControlFactory;
 import org.olat.core.id.context.ContextEntry;
-import org.olat.core.id.context.ContextEntryControllerCreator;
+import org.olat.core.id.context.DefaultContextEntryControllerCreator;
 import org.olat.core.logging.OLog;
 import org.olat.core.logging.Tracing;
 import org.olat.core.manager.BasicManager;
@@ -67,20 +67,20 @@ public class MailBoxExtension extends BasicManager implements MailContextResolve
 	}
 	
 	public void init() {
-		NewControllerFactory.getInstance().addContextEntryControllerCreator("Inbox", new ContextEntryControllerCreator(){
+		NewControllerFactory.getInstance().addContextEntryControllerCreator("Inbox", new DefaultContextEntryControllerCreator(){
 			@Override
 			public Controller createController(ContextEntry ce, UserRequest ureq, WindowControl wControl) {
 				return null;
 			}
 
 			@Override
-			public String getTabName(ContextEntry ce) {
+			public String getTabName(ContextEntry ce, UserRequest ureq) {
 				// opens in home-tab
 				return null;
 			}
 
 			@Override
-			public String getSiteClassName(ContextEntry ce) {
+			public String getSiteClassName(ContextEntry ce, UserRequest ureq) {
 				return HomeSite.class.getName();
 			}
 
diff --git a/src/main/java/org/olat/group/BusinessGroupContextEntryControllerCreator.java b/src/main/java/org/olat/group/BusinessGroupContextEntryControllerCreator.java
index 81d6f4da56b629b1b658adb3c2640261c79bbb80..2acab2c2c8fbe9466895de37d8e0828a93ba8d58 100644
--- a/src/main/java/org/olat/group/BusinessGroupContextEntryControllerCreator.java
+++ b/src/main/java/org/olat/group/BusinessGroupContextEntryControllerCreator.java
@@ -27,7 +27,7 @@ import org.olat.core.gui.control.Controller;
 import org.olat.core.gui.control.WindowControl;
 import org.olat.core.id.OLATResourceable;
 import org.olat.core.id.context.ContextEntry;
-import org.olat.core.id.context.ContextEntryControllerCreator;
+import org.olat.core.id.context.DefaultContextEntryControllerCreator;
 import org.olat.group.ui.BGControllerFactory;
 import org.olat.resource.OLATResource;
 import org.olat.resource.OLATResourceManager;
@@ -44,7 +44,7 @@ import org.olat.resource.accesscontrol.manager.ACFrontendManager;
  * 
  * @author gnaegi, gnaegi@frentix.com, www.frentix.com
  */
-public class BusinessGroupContextEntryControllerCreator implements ContextEntryControllerCreator {
+public class BusinessGroupContextEntryControllerCreator extends DefaultContextEntryControllerCreator {
 
 	/**
 	 * @see org.olat.core.id.context.ContextEntryControllerCreator#createController(org.olat.core.id.context.ContextEntry,
@@ -71,7 +71,8 @@ public class BusinessGroupContextEntryControllerCreator implements ContextEntryC
 	/**
 	 * @see org.olat.core.id.context.ContextEntryControllerCreator#getTabName(org.olat.core.id.context.ContextEntry)
 	 */
-	public String getTabName(ContextEntry ce) {
+	@Override
+	public String getTabName(ContextEntry ce, UserRequest ureq) {
 		OLATResourceable ores = ce.getOLATResourceable();
 		Long gKey = ores.getResourceableId();
 		BusinessGroupManager bman = BusinessGroupManagerImpl.getInstance();
@@ -79,13 +80,6 @@ public class BusinessGroupContextEntryControllerCreator implements ContextEntryC
 		return bgroup.getName();
 	}
 
-	/**
-	 * @see org.olat.core.id.context.ContextEntryControllerCreator#getSiteClassName(org.olat.core.id.context.ContextEntry)
-	 */
-	public String getSiteClassName(ContextEntry ce) {
-		return null;
-	}
-
 	@Override
 	public boolean validateContextEntryAndShowError(ContextEntry ce, UserRequest ureq, WindowControl wControl) {
 		OLATResourceable ores = ce.getOLATResourceable();
diff --git a/src/main/java/org/olat/home/controllerCreators/GuestHomeCEControllerCreator.java b/src/main/java/org/olat/home/controllerCreators/GuestHomeCEControllerCreator.java
index 7eba1fe6a4318dcb62904bb82917f841154b01f0..8505c16671c8e49f14808e778adaceae1edc53a8 100644
--- a/src/main/java/org/olat/home/controllerCreators/GuestHomeCEControllerCreator.java
+++ b/src/main/java/org/olat/home/controllerCreators/GuestHomeCEControllerCreator.java
@@ -23,7 +23,7 @@ import org.olat.core.gui.UserRequest;
 import org.olat.core.gui.control.Controller;
 import org.olat.core.gui.control.WindowControl;
 import org.olat.core.id.context.ContextEntry;
-import org.olat.core.id.context.ContextEntryControllerCreator;
+import org.olat.core.id.context.DefaultContextEntryControllerCreator;
 import org.olat.home.HomeSite;
 
 /**
@@ -35,7 +35,7 @@ import org.olat.home.HomeSite;
  * Initial Date:  15 juil. 2011 <br>
  * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com
  */
-public class GuestHomeCEControllerCreator  implements ContextEntryControllerCreator {
+public class GuestHomeCEControllerCreator extends DefaultContextEntryControllerCreator {
 
 	public GuestHomeCEControllerCreator() {
 
@@ -45,11 +45,11 @@ public class GuestHomeCEControllerCreator  implements ContextEntryControllerCrea
 		return null;
 	}
 
-	public String getSiteClassName(ContextEntry ce) {
+	public String getSiteClassName(ContextEntry ce, UserRequest ureq) {
 		return HomeSite.class.getName();
 	}
 
-	public String getTabName(ContextEntry ce) {
+	public String getTabName(ContextEntry ce, UserRequest ureq) {
 		return null;
 	}
 
diff --git a/src/main/java/org/olat/modules/webFeed/portfolio/LiveBlogContextEntryControllerCreator.java b/src/main/java/org/olat/modules/webFeed/portfolio/LiveBlogContextEntryControllerCreator.java
index e6fd7a693871f413dc6d002334e4b862d68b70c7..dee63e8550ca95f8f3dac9f73b4b1a04a44e4e81 100644
--- a/src/main/java/org/olat/modules/webFeed/portfolio/LiveBlogContextEntryControllerCreator.java
+++ b/src/main/java/org/olat/modules/webFeed/portfolio/LiveBlogContextEntryControllerCreator.java
@@ -28,7 +28,7 @@ import org.olat.core.gui.control.Controller;
 import org.olat.core.gui.control.WindowControl;
 import org.olat.core.id.OLATResourceable;
 import org.olat.core.id.context.ContextEntry;
-import org.olat.core.id.context.ContextEntryControllerCreator;
+import org.olat.core.id.context.DefaultContextEntryControllerCreator;
 import org.olat.core.logging.OLog;
 import org.olat.core.logging.Tracing;
 import org.olat.modules.webFeed.FeedResourceSecurityCallback;
@@ -53,7 +53,7 @@ public class LiveBlogContextEntryControllerCreator  {
 
 	public LiveBlogContextEntryControllerCreator(final FeedManager feedManager) {
 		
-		NewControllerFactory.getInstance().addContextEntryControllerCreator("LiveBlog", new ContextEntryControllerCreator(){
+		NewControllerFactory.getInstance().addContextEntryControllerCreator("LiveBlog", new DefaultContextEntryControllerCreator(){
 			
 			@Override
 			public Controller createController(ContextEntry ce, UserRequest ureq, WindowControl wControl) {
@@ -67,14 +67,14 @@ public class LiveBlogContextEntryControllerCreator  {
 			}
 
 			@Override
-			public String getTabName(ContextEntry ce) {
+			public String getTabName(ContextEntry ce, UserRequest ureq) {
 				OLATResourceable ores = ce.getOLATResourceable();
 				Feed feed = feedManager.getFeed(ores);
 				return feed.getTitle();
 			}
 
 			@Override
-			public String getSiteClassName(ContextEntry ce) {
+			public String getSiteClassName(ContextEntry ce, UserRequest ureq) {
 				return null;
 			}
 
diff --git a/src/main/java/org/olat/portfolio/EPArtefactPoolExtension.java b/src/main/java/org/olat/portfolio/EPArtefactPoolExtension.java
index 0c75197a98300e8aea630f05f08acd948155a5dc..8612c380d36db99696b4c4a60d8c04b8101e08a8 100644
--- a/src/main/java/org/olat/portfolio/EPArtefactPoolExtension.java
+++ b/src/main/java/org/olat/portfolio/EPArtefactPoolExtension.java
@@ -19,12 +19,19 @@
  */
 package org.olat.portfolio;
 
+import java.util.ArrayList;
+import java.util.List;
+
 import org.olat.NewControllerFactory;
 import org.olat.core.gui.UserRequest;
-import org.olat.core.gui.control.Controller;
 import org.olat.core.gui.control.WindowControl;
+import org.olat.core.id.Identity;
+import org.olat.core.id.OLATResourceable;
+import org.olat.core.id.context.BusinessControlFactory;
 import org.olat.core.id.context.ContextEntry;
-import org.olat.core.id.context.ContextEntryControllerCreator;
+import org.olat.core.id.context.DefaultContextEntryControllerCreator;
+import org.olat.core.id.context.TabContext;
+import org.olat.core.util.resource.OresHelper;
 import org.olat.home.HomeSite;
 import org.olat.portfolio.model.artefacts.AbstractArtefact;
 
@@ -41,29 +48,30 @@ public class EPArtefactPoolExtension {
 
 	public EPArtefactPoolExtension() {
 		
-		NewControllerFactory.getInstance().addContextEntryControllerCreator(AbstractArtefact.class.getSimpleName(), new ContextEntryControllerCreator(){
+		NewControllerFactory.getInstance().addContextEntryControllerCreator(AbstractArtefact.class.getSimpleName(), new DefaultContextEntryControllerCreator(){
 			
 			@Override
-			public Controller createController(ContextEntry ce, UserRequest ureq, WindowControl wControl) {
-				return null;
+			public String getSiteClassName(ContextEntry ce, UserRequest ureq) {
+				return HomeSite.class.getName();
 			}
 
 			@Override
-			public String getTabName(ContextEntry ce) {
-				// opens in home-tab
-				return null;
+			public boolean validateContextEntryAndShowError(ContextEntry ce, UserRequest ureq, WindowControl wControl) {
+				return true;
 			}
 
 			@Override
-			public String getSiteClassName(ContextEntry ce) {
-				return HomeSite.class.getName();
-			}
+			public TabContext getTabContext(UserRequest ureq, OLATResourceable ores, ContextEntry mainEntry, List<ContextEntry> entries) {
+				Identity identity = ureq.getIdentity();
 
-			@Override
-			public boolean validateContextEntryAndShowError(ContextEntry ce, UserRequest ureq, WindowControl wControl) {
-				return true;
+				OLATResourceable mapsRes = OresHelper.createOLATResourceableType("EPArtefacts");
+				ContextEntry mapsEntry = BusinessControlFactory.getInstance().createContextEntry(mapsRes);
+				List<ContextEntry> rewritedEntries = new ArrayList<ContextEntry>();
+				rewritedEntries.add(mapsEntry);//Menu node
+				rewritedEntries.add(mainEntry);//Map
+				OLATResourceable homeRes = OresHelper.createOLATResourceableInstance("HomeSite", identity.getKey());
+				return new TabContext("", homeRes, rewritedEntries);
 			}
-			
 		});	
 	}
 }
diff --git a/src/main/java/org/olat/portfolio/EPMapExtension.java b/src/main/java/org/olat/portfolio/EPMapExtension.java
new file mode 100644
index 0000000000000000000000000000000000000000..1621c8c37af035928a2605c01dd8595af0e8f0cc
--- /dev/null
+++ b/src/main/java/org/olat/portfolio/EPMapExtension.java
@@ -0,0 +1,105 @@
+/**
+ * <a href="http://www.openolat.org">
+ * OpenOLAT - Online Learning and Training</a><br>
+ * <p>
+ * Licensed under the Apache License, Version 2.0 (the "License"); <br>
+ * you may not use this file except in compliance with the License.<br>
+ * You may obtain a copy of the License at the
+ * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a>
+ * <p>
+ * Unless required by applicable law or agreed to in writing,<br>
+ * software distributed under the License is distributed on an "AS IS" BASIS, <br>
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br>
+ * See the License for the specific language governing permissions and <br>
+ * limitations under the License.
+ * <p>
+ * Initial code contributed and copyrighted by<br>
+ * frentix GmbH, http://www.frentix.com
+ * <p>
+ */
+package org.olat.portfolio;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import org.olat.NewControllerFactory;
+import org.olat.core.CoreSpringFactory;
+import org.olat.core.gui.UserRequest;
+import org.olat.core.gui.control.WindowControl;
+import org.olat.core.id.Identity;
+import org.olat.core.id.OLATResourceable;
+import org.olat.core.id.context.BusinessControlFactory;
+import org.olat.core.id.context.ContextEntry;
+import org.olat.core.id.context.DefaultContextEntryControllerCreator;
+import org.olat.core.id.context.TabContext;
+import org.olat.core.util.resource.OresHelper;
+import org.olat.home.HomeSite;
+import org.olat.portfolio.manager.EPFrontendManager;
+import org.olat.portfolio.model.structel.EPDefaultMap;
+import org.olat.resource.OLATResource;
+
+/**
+ * Rewrite the business path to map
+ * @author srosse
+ *
+ */
+public class EPMapExtension {
+
+	public EPMapExtension() {
+		NewControllerFactory.getInstance().addContextEntryControllerCreator(EPDefaultMap.class.getSimpleName(), new MapContextEntryControllerCreator());	
+	}
+	
+	private class MapContextEntryControllerCreator extends DefaultContextEntryControllerCreator {
+
+		@Override
+		public boolean validateContextEntryAndShowError(ContextEntry ce, UserRequest ureq, WindowControl wControl) {
+			return true;
+		}
+
+		@Override
+		public String getSiteClassName(ContextEntry ce, UserRequest ureq) {
+			return HomeSite.class.getName();
+		}
+
+		@Override
+		public TabContext getTabContext(UserRequest ureq, OLATResourceable ores, ContextEntry mainEntry, List<ContextEntry> entries) {
+			Identity identity = ureq.getIdentity();
+			EPFrontendManager ePFMgr = CoreSpringFactory.getImpl(EPFrontendManager.class);
+			
+			String nodeTypeName = null;
+			OLATResource mapOres = ePFMgr.loadOlatResourceFromByKey(mainEntry.getOLATResourceable().getResourceableId());
+			if(mapOres == null) {
+				//nothing to do;
+			} else if(ePFMgr.isMapOwner(identity, mapOres)) {
+				if("EPStructuredMap".equals(mapOres.getResourceableTypeName())) {
+					nodeTypeName = "EPStructuredMaps";
+				} else {
+					nodeTypeName = "EPMaps";
+				}
+			} else if(ePFMgr.isMapVisible(ureq.getIdentity(), mapOres)) {
+				//go to the shared pane
+				if(ePFMgr.isMapShared(mapOres)) {
+					nodeTypeName = "EPSharedMaps";
+				}
+			}
+			
+			if(nodeTypeName == null) {
+				OLATResourceable homeRes = OresHelper.createOLATResourceableInstance("HomeSite", identity.getKey());
+				return new TabContext("", homeRes, Collections.<ContextEntry>emptyList());
+			}
+			
+			OLATResourceable mapsRes = OresHelper.createOLATResourceableType(nodeTypeName);
+			ContextEntry mapsEntry = BusinessControlFactory.getInstance().createContextEntry(mapsRes);
+			List<ContextEntry> rewritedEntries = new ArrayList<ContextEntry>();
+			rewritedEntries.add(mapsEntry);//Menu node
+			rewritedEntries.add(mainEntry);//Map
+			if(entries != null && !entries.isEmpty()) {
+				rewritedEntries.addAll(entries);//more details
+			}
+			// -> HomeSite
+			OLATResourceable homeRes = OresHelper.createOLATResourceableInstance("HomeSite", identity.getKey());
+			return new TabContext("", homeRes, rewritedEntries);
+		}	
+	}
+}
diff --git a/src/main/java/org/olat/portfolio/EPMapOnInvitationExtension.java b/src/main/java/org/olat/portfolio/EPMapOnInvitationExtension.java
index 3b80a6fe5bb41c622bd0743fbc401824bac046a5..1b095e4518aa156761b5375710190c7a36426670 100644
--- a/src/main/java/org/olat/portfolio/EPMapOnInvitationExtension.java
+++ b/src/main/java/org/olat/portfolio/EPMapOnInvitationExtension.java
@@ -26,7 +26,7 @@ import org.olat.core.gui.UserRequest;
 import org.olat.core.gui.control.Controller;
 import org.olat.core.gui.control.WindowControl;
 import org.olat.core.id.context.ContextEntry;
-import org.olat.core.id.context.ContextEntryControllerCreator;
+import org.olat.core.id.context.DefaultContextEntryControllerCreator;
 import org.olat.portfolio.manager.EPFrontendManager;
 import org.olat.portfolio.model.structel.PortfolioStructureMap;
 
@@ -45,7 +45,7 @@ public class EPMapOnInvitationExtension {
 
 	public EPMapOnInvitationExtension() {
 
-		NewControllerFactory.getInstance().addContextEntryControllerCreator("MapInvitation", new ContextEntryControllerCreator(){
+		NewControllerFactory.getInstance().addContextEntryControllerCreator("MapInvitation", new DefaultContextEntryControllerCreator(){
 			
 			@Override
 			public Controller createController(ContextEntry ce, UserRequest ureq, WindowControl wControl) {
@@ -64,13 +64,13 @@ public class EPMapOnInvitationExtension {
 			}
 
 			@Override
-			public String getTabName(ContextEntry ce) {
+			public String getTabName(ContextEntry ce, UserRequest ureq) {
 				PortfolioStructureMap map = getMapFromContext(ce);
 				return map.getTitle();
 			}
 
 			@Override
-			public String getSiteClassName(ContextEntry ce) {
+			public String getSiteClassName(ContextEntry ce, UserRequest ureq) {
 				return null;
 			}
 
diff --git a/src/main/java/org/olat/portfolio/EPMyMapsExtension.java b/src/main/java/org/olat/portfolio/EPMyMapsExtension.java
index aff9ce29378afb689fda9ce0104302375996a18f..7a2848de5c35dcf12dc13a7ce502daa1b88d9274 100644
--- a/src/main/java/org/olat/portfolio/EPMyMapsExtension.java
+++ b/src/main/java/org/olat/portfolio/EPMyMapsExtension.java
@@ -24,7 +24,7 @@ import org.olat.core.gui.UserRequest;
 import org.olat.core.gui.control.Controller;
 import org.olat.core.gui.control.WindowControl;
 import org.olat.core.id.context.ContextEntry;
-import org.olat.core.id.context.ContextEntryControllerCreator;
+import org.olat.core.id.context.DefaultContextEntryControllerCreator;
 import org.olat.home.HomeSite;
 import org.olat.portfolio.model.structel.EPDefaultMap;
 
@@ -43,7 +43,7 @@ public class EPMyMapsExtension {
 
 	public EPMyMapsExtension() {
 
-		NewControllerFactory.getInstance().addContextEntryControllerCreator(EPDefaultMap.class.getSimpleName(), new ContextEntryControllerCreator(){
+		NewControllerFactory.getInstance().addContextEntryControllerCreator(EPDefaultMap.class.getSimpleName(), new DefaultContextEntryControllerCreator(){
 			
 			@Override
 			public Controller createController(ContextEntry ce, UserRequest ureq, WindowControl wControl) {
@@ -51,13 +51,13 @@ public class EPMyMapsExtension {
 			}
 
 			@Override
-			public String getTabName(ContextEntry ce) {
+			public String getTabName(ContextEntry ce, UserRequest ureq) {
 				// opens in home-tab
 				return null;
 			}
 
 			@Override
-			public String getSiteClassName(ContextEntry ce) {
+			public String getSiteClassName(ContextEntry ce, UserRequest ureq) {
 				return HomeSite.class.getName();
 			}
 
diff --git a/src/main/java/org/olat/portfolio/EPMyStructuredMapsExtension.java b/src/main/java/org/olat/portfolio/EPMyStructuredMapsExtension.java
index 2f3d3f12a50bfd00a3b97644eed2becf57affcfd..add40d4c96505b006201298b52c2b86c01d9ea5c 100644
--- a/src/main/java/org/olat/portfolio/EPMyStructuredMapsExtension.java
+++ b/src/main/java/org/olat/portfolio/EPMyStructuredMapsExtension.java
@@ -24,7 +24,7 @@ import org.olat.core.gui.UserRequest;
 import org.olat.core.gui.control.Controller;
 import org.olat.core.gui.control.WindowControl;
 import org.olat.core.id.context.ContextEntry;
-import org.olat.core.id.context.ContextEntryControllerCreator;
+import org.olat.core.id.context.DefaultContextEntryControllerCreator;
 import org.olat.home.HomeSite;
 import org.olat.portfolio.model.structel.EPStructuredMap;
 
@@ -41,7 +41,7 @@ public class EPMyStructuredMapsExtension {
 
 	public EPMyStructuredMapsExtension() {
 
-		NewControllerFactory.getInstance().addContextEntryControllerCreator(EPStructuredMap.class.getSimpleName(), new ContextEntryControllerCreator(){
+		NewControllerFactory.getInstance().addContextEntryControllerCreator(EPStructuredMap.class.getSimpleName(), new DefaultContextEntryControllerCreator(){
 
 			@Override
 			public Controller createController(ContextEntry ce, UserRequest ureq, WindowControl wControl) {
@@ -49,13 +49,13 @@ public class EPMyStructuredMapsExtension {
 			}
 
 			@Override
-			public String getTabName(ContextEntry ce) {
+			public String getTabName(ContextEntry ce, UserRequest ureq) {
 				// opens in home-tab
 				return null;
 			}
 
 			@Override
-			public String getSiteClassName(ContextEntry ce) {
+			public String getSiteClassName(ContextEntry ce, UserRequest ureq) {
 				return HomeSite.class.getName();
 			}
 
diff --git a/src/main/java/org/olat/portfolio/EPOtherMapsExtension.java b/src/main/java/org/olat/portfolio/EPOtherMapsExtension.java
index b9a88dd15e0e7bbbee9372812b0cb92c33c37df9..5d5bcf3c06d778ade0e196001279b803aaf36f6e 100644
--- a/src/main/java/org/olat/portfolio/EPOtherMapsExtension.java
+++ b/src/main/java/org/olat/portfolio/EPOtherMapsExtension.java
@@ -24,7 +24,7 @@ import org.olat.core.gui.UserRequest;
 import org.olat.core.gui.control.Controller;
 import org.olat.core.gui.control.WindowControl;
 import org.olat.core.id.context.ContextEntry;
-import org.olat.core.id.context.ContextEntryControllerCreator;
+import org.olat.core.id.context.DefaultContextEntryControllerCreator;
 import org.olat.home.HomeSite;
 
 /**
@@ -43,7 +43,7 @@ public class EPOtherMapsExtension {
 	public EPOtherMapsExtension() {
 
 		NewControllerFactory.getInstance().addContextEntryControllerCreator("Map",
-				new ContextEntryControllerCreator() {
+				new DefaultContextEntryControllerCreator() {
 
 					@Override
 					public Controller createController(ContextEntry ce, UserRequest ureq, WindowControl wControl) {
@@ -51,13 +51,13 @@ public class EPOtherMapsExtension {
 					}
 
 					@Override
-				public String getTabName(ContextEntry ce) {
+				public String getTabName(ContextEntry ce, UserRequest ureq) {
 					// opens in home-tab
 						return null;
 					}
 
 					@Override
-					public String getSiteClassName(ContextEntry ce) {
+					public String getSiteClassName(ContextEntry ce, UserRequest ureq) {
 						return HomeSite.class.getName();
 					}
 
diff --git a/src/main/java/org/olat/portfolio/_spring/portfolioContext.xml b/src/main/java/org/olat/portfolio/_spring/portfolioContext.xml
index 33d6c7f72dc7086f682a63e4f505de51d4c4f3f2..98f870f9720ffef38f363de7160afc739626a252 100644
--- a/src/main/java/org/olat/portfolio/_spring/portfolioContext.xml
+++ b/src/main/java/org/olat/portfolio/_spring/portfolioContext.xml
@@ -77,16 +77,10 @@
 	<bean class="org.olat.portfolio.EPArtefactPoolExtension"/>
 	
 	<!-- Portfolio map view in users Home -->
-	<bean class="org.olat.portfolio.EPMyMapsExtension"/>
+	<bean class="org.olat.portfolio.EPMapExtension"/>
 	
 	<!-- Portfolio map view for invitee -->
 	<bean class="org.olat.portfolio.EPMapOnInvitationExtension"/>
-	
-	<!-- Portfolio map view in users Home -->
-	<bean class="org.olat.portfolio.EPMyStructuredMapsExtension"/>
-	
-	<!-- Portfolio map view in users Home -->
-	<bean class="org.olat.portfolio.EPOtherMapsExtension"/>
 
 	<bean name="epArtefactManager" class="org.olat.portfolio.manager.EPArtefactManager">
 		<property name="dbInstance" ref="database"/>
diff --git a/src/main/java/org/olat/portfolio/manager/EPFrontendManager.java b/src/main/java/org/olat/portfolio/manager/EPFrontendManager.java
index f4fbccbe06723f77f917ad3064b48e92b230aa54..fd7aadee845dcd61cd7e233e4e42ffd701ccec7b 100755
--- a/src/main/java/org/olat/portfolio/manager/EPFrontendManager.java
+++ b/src/main/java/org/olat/portfolio/manager/EPFrontendManager.java
@@ -926,6 +926,15 @@ public class EPFrontendManager extends BasicManager {
 		return structureManager.loadPortfolioStructureByKey(key);
 	}
 	
+	/**
+	 * Load the OLAT resource with the primary of the structure element
+	 * @param key cannot be null
+	 * @return The resource or null if not found
+	 */
+	public OLATResource loadOlatResourceFromByKey(Long key) {
+		return structureManager.loadOlatResourceFromStructureElByKey(key);
+	}
+	
 	/**
 	 * Retrieve the parent of the structure
 	 * @param structure
@@ -1033,6 +1042,10 @@ public class EPFrontendManager extends BasicManager {
 	
 	public boolean isMapShared(PortfolioStructureMap map) {
 		OLATResource resource = map.getOlatResource();
+		return isMapShared(resource);
+	}
+		
+	public boolean isMapShared(OLATResourceable resource) {
 		List<Policy> policies = securityManager.getPoliciesOfResource(resource, null);
 		for(Policy policy:policies) {
 			if(policy.getPermission().contains(Constants.PERMISSION_READ)) {
diff --git a/src/main/java/org/olat/portfolio/manager/EPNotificationsHandler.java b/src/main/java/org/olat/portfolio/manager/EPNotificationsHandler.java
index ed54fc4a7f076c2cf65acf9e0b24d4ab90ed7c4c..473487fd20ae64082644d7d90f111dcb4576290b 100644
--- a/src/main/java/org/olat/portfolio/manager/EPNotificationsHandler.java
+++ b/src/main/java/org/olat/portfolio/manager/EPNotificationsHandler.java
@@ -66,7 +66,8 @@ public class EPNotificationsHandler implements NotificationsHandler {
 			// only do that if a map was found.
 
 			// init the helper;
-			EPNotificationsHelper helper = new EPNotificationsHelper(p.getBusinessPath(), locale, subscriber.getIdentity());
+			String businessPath = "[EPDefaultMap:" + amap.getKey() + "]";
+			EPNotificationsHelper helper = new EPNotificationsHelper(businessPath, locale, subscriber.getIdentity());
 
 			// gather all changes for the current map
 			if (NotificationsManager.getInstance().isPublisherValid(p)) {
diff --git a/src/main/java/org/olat/portfolio/manager/EPNotificationsHelper.java b/src/main/java/org/olat/portfolio/manager/EPNotificationsHelper.java
index 67a958970141c25d0f1421e0794096619725c758..be78f41a909bca11699a0dabde2d130d98d29951 100644
--- a/src/main/java/org/olat/portfolio/manager/EPNotificationsHelper.java
+++ b/src/main/java/org/olat/portfolio/manager/EPNotificationsHelper.java
@@ -115,8 +115,14 @@ public class EPNotificationsHelper {
 					allItems.add(new SubscriptionListItem(translator.translate("li.newpage", new String[] { childPage.getTitle() }), urlToSend, structLink
 							.getCreationDate(), "b_ep_page_icon"));
 				} else {
+					String urlToSend = "";
+					if(structLink.getParent() instanceof EPPage) {
+						EPPage childPage = (EPPage) structLink.getParent();
+						String businessPath = rootBusinessPath + "[EPPage:" + childPage.getKey() + "]";
+						urlToSend = BusinessControlFactory.getInstance().getURLFromBusinessPathString(businessPath);
+					}
 					allItems.add(new SubscriptionListItem(translator.translate("li.newstruct", new String[] { structLink.getChild().getTitle() }),
-							"", structLink.getCreationDate(), "b_ep_struct_icon"));
+							urlToSend, structLink.getCreationDate(), "b_ep_struct_icon"));
 				}
 			}
 		}
@@ -129,8 +135,9 @@ public class EPNotificationsHelper {
 		}
 		for (AbstractArtefact artfc : allAs) {
 			if (artfc.getCollectionDate().after(compareDate)) {
+				String urlToSend = BusinessControlFactory.getInstance().getURLFromBusinessPathString(rootBusinessPath);
 				allItems.add(new SubscriptionListItem(translator.translate("li.newartefact", new String[] { getFullNameFromUser(artfc.getAuthor()
-						.getUser()) }), "", artfc.getCollectionDate(), "b_eportfolio_link"));
+						.getUser()) }), urlToSend, artfc.getCollectionDate(), "b_eportfolio_link"));
 			}
 		}
 
@@ -172,8 +179,9 @@ public class EPNotificationsHelper {
 		}
 		for (AbstractArtefact artfc : allAs) {
 			if (artfc.getCollectionDate().after(compareDate)) {
+				String urlToSend = BusinessControlFactory.getInstance().getURLFromBusinessPathString(rootBusinessPath);
 				allItems.add(new SubscriptionListItem(
-						translator.translate("li.newartefact", new String[] { getFullNameFromUser(artfc.getAuthor()) }), "", artfc
+						translator.translate("li.newartefact", new String[] { getFullNameFromUser(artfc.getAuthor()) }), urlToSend, artfc
 								.getCollectionDate(), "b_eportfolio_link"));
 			}
 		}
diff --git a/src/main/java/org/olat/portfolio/manager/EPStructureManager.java b/src/main/java/org/olat/portfolio/manager/EPStructureManager.java
index 6345033db8a3eb1cd8af9e09cc26a33bea0a3bd3..160b87c350ee78c6fd7f7a910acb776db8aca93d 100755
--- a/src/main/java/org/olat/portfolio/manager/EPStructureManager.java
+++ b/src/main/java/org/olat/portfolio/manager/EPStructureManager.java
@@ -1530,6 +1530,23 @@ public class EPStructureManager extends BasicManager {
 		if (resources.isEmpty()) return null;
 		return resources.get(0);
 	}
+	
+	public OLATResource loadOlatResourceFromStructureElByKey(Long key) {
+		if (key == null) throw new NullPointerException();
+		
+		StringBuilder sb = new StringBuilder();
+		sb.append("select element.olatResource from ").append(EPStructureElement.class.getName()).append(" element")
+			.append(" where element.key=:key or element.olatResource.resId=:key ");
+		
+		DBQuery query = dbInstance.createQuery(sb.toString());
+		query.setLong("key", key);
+		
+		@SuppressWarnings("unchecked")
+		List<OLATResource> resources = query.list();
+		// if not found, it is an empty list
+		if (resources.isEmpty()) return null;
+		return resources.get(0);
+	}
 
 /**
  * Create a basic structure element
diff --git a/src/main/java/org/olat/portfolio/ui/EPArtefactPoolRunController.java b/src/main/java/org/olat/portfolio/ui/EPArtefactPoolRunController.java
index 66a2652997ca3ace34b4a5b6351000ed8574fc06..1310f4d8791a5994e50d768b7b7e5d2fba40ea75 100755
--- a/src/main/java/org/olat/portfolio/ui/EPArtefactPoolRunController.java
+++ b/src/main/java/org/olat/portfolio/ui/EPArtefactPoolRunController.java
@@ -35,6 +35,10 @@ import org.olat.core.gui.control.Controller;
 import org.olat.core.gui.control.Event;
 import org.olat.core.gui.control.WindowControl;
 import org.olat.core.gui.control.controller.BasicController;
+import org.olat.core.gui.control.generic.dtabs.Activateable2;
+import org.olat.core.id.OLATResourceable;
+import org.olat.core.id.context.ContextEntry;
+import org.olat.core.id.context.StateEntry;
 import org.olat.portfolio.EPSecurityCallback;
 import org.olat.portfolio.EPSecurityCallbackImpl;
 import org.olat.portfolio.PortfolioModule;
@@ -61,7 +65,7 @@ import org.olat.portfolio.ui.filter.PortfolioFilterEditEvent;
  * 
  * @author Roman Haag, roman.haag@frentix.com, http://www.frentix.com
  */
-public class EPArtefactPoolRunController extends BasicController {
+public class EPArtefactPoolRunController extends BasicController implements Activateable2 {
 
 	private VelocityContainer vC;
 	private EPFrontendManager ePFMgr;
@@ -290,6 +294,15 @@ public class EPArtefactPoolRunController extends BasicController {
 		}
 	}
 	
+	@Override
+	public void activate(UserRequest ureq, List<ContextEntry> entries, StateEntry state) {
+		if(entries == null || entries.isEmpty()) return;
+		
+		if(artCtrl != null) {
+			artCtrl.activate(ureq, entries, state);
+		}
+	}
+
 	private enum Filter {
 		read_only,
 		tags,
diff --git a/src/main/java/org/olat/portfolio/ui/artefacts/view/EPMultiArtefactsController.java b/src/main/java/org/olat/portfolio/ui/artefacts/view/EPMultiArtefactsController.java
index f83b1ce64ac14f69f6c9eea458134b379173f1b7..d253301b03bb3b004b2672b89b8ea77c63419951 100644
--- a/src/main/java/org/olat/portfolio/ui/artefacts/view/EPMultiArtefactsController.java
+++ b/src/main/java/org/olat/portfolio/ui/artefacts/view/EPMultiArtefactsController.java
@@ -23,6 +23,7 @@ import java.util.List;
 
 import org.olat.core.gui.UserRequest;
 import org.olat.core.gui.control.Controller;
+import org.olat.core.gui.control.generic.dtabs.Activateable2;
 import org.olat.portfolio.model.artefacts.AbstractArtefact;
 
 /**
@@ -34,7 +35,7 @@ import org.olat.portfolio.model.artefacts.AbstractArtefact;
  * Initial Date:  16.11.2010 <br>
  * @author Roman Haag, roman.haag@frentix.com, http://www.frentix.com
  */
-public interface EPMultiArtefactsController extends Controller {
+public interface EPMultiArtefactsController extends Controller, Activateable2 {
 
 	/**
 	 * signal the controller to refresh its childs or artefact-representations
diff --git a/src/main/java/org/olat/portfolio/ui/artefacts/view/EPMultipleArtefactPreviewController.java b/src/main/java/org/olat/portfolio/ui/artefacts/view/EPMultipleArtefactPreviewController.java
index 3d6314f234d57247d1add566acc22ef0ca76b7ad..2955e02c744dfb12ba20684461b80d0c5f533dfe 100644
--- a/src/main/java/org/olat/portfolio/ui/artefacts/view/EPMultipleArtefactPreviewController.java
+++ b/src/main/java/org/olat/portfolio/ui/artefacts/view/EPMultipleArtefactPreviewController.java
@@ -40,6 +40,9 @@ import org.olat.core.gui.control.WindowControl;
 import org.olat.core.gui.control.controller.BasicController;
 import org.olat.core.gui.control.generic.closablewrapper.CloseableCalloutWindowController;
 import org.olat.core.id.Identity;
+import org.olat.core.id.OLATResourceable;
+import org.olat.core.id.context.ContextEntry;
+import org.olat.core.id.context.StateEntry;
 import org.olat.portfolio.manager.EPFrontendManager;
 import org.olat.portfolio.model.artefacts.AbstractArtefact;
 
@@ -228,6 +231,27 @@ public class EPMultipleArtefactPreviewController extends BasicController impleme
 
 	}
 
+	@Override
+	public void activate(UserRequest ureq, List<ContextEntry> entries, StateEntry state) {
+		if(entries == null || entries.isEmpty()) return;
+		
+		OLATResourceable ores = entries.get(0).getOLATResourceable();
+		if("AbstractArtefact".equals(ores.getResourceableTypeName())) {
+			Long resId = ores.getResourceableId();
+			
+			int index = 0;
+			for(AbstractArtefact artefact: artefactsFullList) {
+				if(artefact.getKey().equals(resId) || artefact.getResourceableId().equals(resId)) {
+					int rest = (index % artefactsPerPage);
+					int page = (index - rest) / artefactsPerPage;
+					preparePaging(ureq, page + 1);
+					break;
+				}
+				index++;
+			}
+		}
+	}
+
 	private Map<String, Boolean> getArtefactAttributeDisplayConfig(Identity ident) {
 		if (artAttribConfig == null) {
 			artAttribConfig = ePFMgr.getArtefactAttributeConfig(ident);
diff --git a/src/main/java/org/olat/portfolio/ui/artefacts/view/EPMultipleArtefactSmallReadOnlyPreviewController.java b/src/main/java/org/olat/portfolio/ui/artefacts/view/EPMultipleArtefactSmallReadOnlyPreviewController.java
index 39f9429538b9ae5d54c647289a006a09873bbaf8..e3a98f3ddafafb17a735badf0f2693df41f30bc1 100644
--- a/src/main/java/org/olat/portfolio/ui/artefacts/view/EPMultipleArtefactSmallReadOnlyPreviewController.java
+++ b/src/main/java/org/olat/portfolio/ui/artefacts/view/EPMultipleArtefactSmallReadOnlyPreviewController.java
@@ -32,6 +32,9 @@ import org.olat.core.gui.control.Controller;
 import org.olat.core.gui.control.Event;
 import org.olat.core.gui.control.WindowControl;
 import org.olat.core.gui.control.controller.BasicController;
+import org.olat.core.id.OLATResourceable;
+import org.olat.core.id.context.ContextEntry;
+import org.olat.core.id.context.StateEntry;
 import org.olat.portfolio.EPArtefactHandler;
 import org.olat.portfolio.EPSecurityCallback;
 import org.olat.portfolio.PortfolioModule;
@@ -180,6 +183,22 @@ public class EPMultipleArtefactSmallReadOnlyPreviewController extends BasicContr
 		super.event(ureq, source, event);
 		fireEvent(ureq, event); // pass to others
 	}
+	
+	@Override
+	public void activate(UserRequest ureq, List<ContextEntry> entries, StateEntry state) {
+		if(entries == null || entries.isEmpty()) return;
+		
+		OLATResourceable ores = entries.get(0).getOLATResourceable();
+		if("AbstractArtefact".equals(ores.getResourceableTypeName())) {
+			Long resId = ores.getResourceableId();
+			for(AbstractArtefact artefact: artefacts) {
+				if(artefact.getKey().equals(resId) || artefact.getResourceableId().equals(resId)) {
+					System.out.println("Match");
+				}
+			}
+		}
+		
+	}
 
 	/**
 	 * @see org.olat.core.gui.control.DefaultController#doDispose()
diff --git a/src/main/java/org/olat/portfolio/ui/artefacts/view/EPMultipleArtefactsAsTableController.java b/src/main/java/org/olat/portfolio/ui/artefacts/view/EPMultipleArtefactsAsTableController.java
index 9360667fe9b4d943935b8710f61e77c20e64d6ea..1c327b24cb1c90bc80efa8e533d12a53f598dd5f 100644
--- a/src/main/java/org/olat/portfolio/ui/artefacts/view/EPMultipleArtefactsAsTableController.java
+++ b/src/main/java/org/olat/portfolio/ui/artefacts/view/EPMultipleArtefactsAsTableController.java
@@ -40,6 +40,9 @@ import org.olat.core.gui.control.generic.closablewrapper.CloseableModalWindowWra
 import org.olat.core.gui.control.generic.modal.DialogBoxController;
 import org.olat.core.gui.control.generic.modal.DialogBoxUIFactory;
 import org.olat.core.gui.translator.Translator;
+import org.olat.core.id.OLATResourceable;
+import org.olat.core.id.context.ContextEntry;
+import org.olat.core.id.context.StateEntry;
 import org.olat.portfolio.EPArtefactHandler;
 import org.olat.portfolio.EPSecurityCallback;
 import org.olat.portfolio.EPUIFactory;
@@ -259,6 +262,27 @@ public class EPMultipleArtefactsAsTableController extends BasicController implem
 		super.event(ureq, source, event);
 	}
 	
+	@Override
+	public void activate(UserRequest ureq, List<ContextEntry> entries, StateEntry state) {
+		if(entries == null || entries.isEmpty()) return;
+
+		OLATResourceable ores = entries.get(0).getOLATResourceable();
+		if("AbstractArtefact".equals(ores.getResourceableTypeName())) {
+			Long resId = ores.getResourceableId();
+			ArtefactTableDataModel model = (ArtefactTableDataModel)  artefactListTblCtrl.getTableDataModel();
+			for(int i=0; i< model.getRowCount(); i++) {
+				AbstractArtefact artefact = (AbstractArtefact)model.getObject(i);
+				if(artefact.getKey().equals(resId)) {
+					int artefactsPerPage = artefactListTblCtrl.getPageSize();
+					int rest = (i % artefactsPerPage);
+					int page = (i - rest) / artefactsPerPage;
+					artefactListTblCtrl.setPage(new Integer(page + 1));
+					break;
+				}	
+			}
+		}
+	}
+	
 	private void showMoveTree(UserRequest ureq, AbstractArtefact artefact){
 		moveTreeCtrl = new EPCollectStepForm04(ureq, getWindowControl(), artefact, struct);
 		listenTo(moveTreeCtrl);
diff --git a/src/main/java/org/olat/portfolio/ui/structel/EPMapViewController.java b/src/main/java/org/olat/portfolio/ui/structel/EPMapViewController.java
index 7653dec380636d048be01c3ef9be885bc3e2330a..cbb2f8512084be92da06123792866c371479a705 100644
--- a/src/main/java/org/olat/portfolio/ui/structel/EPMapViewController.java
+++ b/src/main/java/org/olat/portfolio/ui/structel/EPMapViewController.java
@@ -232,6 +232,10 @@ public class EPMapViewController extends BasicController implements Activateable
 		pageCtrl.activate(ureq, entries, state);
 	}
 	
+	public PortfolioStructureMap getMap() {
+		return map;
+	}
+	
 	private EPPage getSelectedPage(PortfolioStructure structure) {
 		PortfolioStructure current = structure;
 		
diff --git a/src/main/java/org/olat/portfolio/ui/structel/EPMultipleMapController.java b/src/main/java/org/olat/portfolio/ui/structel/EPMultipleMapController.java
index 1f89a093bf807ce7ae46ee1dec17df97c0fa4afe..9519a636d2073be656fb315fed51193da0dbe4fc 100644
--- a/src/main/java/org/olat/portfolio/ui/structel/EPMultipleMapController.java
+++ b/src/main/java/org/olat/portfolio/ui/structel/EPMultipleMapController.java
@@ -23,7 +23,6 @@ import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 
-import org.olat.basesecurity.BaseSecurityManager;
 import org.olat.core.CoreSpringFactory;
 import org.olat.core.gui.UserRequest;
 import org.olat.core.gui.Windows;
@@ -44,11 +43,9 @@ import org.olat.core.gui.control.generic.modal.DialogBoxController;
 import org.olat.core.gui.control.generic.modal.DialogBoxUIFactory;
 import org.olat.core.helpers.Settings;
 import org.olat.core.id.Identity;
-import org.olat.core.id.UserConstants;
 import org.olat.core.id.context.ContextEntry;
 import org.olat.core.id.context.StateEntry;
 import org.olat.core.logging.activity.ThreadLocalUserActivityLogger;
-import org.olat.core.util.StringHelper;
 import org.olat.core.util.resource.OresHelper;
 import org.olat.home.HomeSite;
 import org.olat.portfolio.EPLoggingAction;
@@ -480,14 +477,29 @@ public class EPMultipleMapController extends BasicController implements Activate
 	private void activateMap(UserRequest ureq, Long mapKey) {
 		if(mapKey == null) return;
 		
-		// we have a key, find the corresponding map
+		boolean foundTheMap = false;
+		// we have a key, find the corresponding map with the current option (restrcited view or not)
 		for(PortfolioStructureMap map: userMaps) {
 			if(map.getKey().equals(mapKey) || (map.getResourceableId().equals(mapKey))) {
 				activateMap(ureq, map);
 				fireEvent(ureq, new EPMapEvent(EPStructureEvent.SELECT, map));
+				foundTheMap = true;
 				break;
 			}
 		}
+		
+		if(!foundTheMap) {
+			// map not found, switch the option and retry to found the map
+			restrictShareView = !restrictShareView;
+			initOrUpdateMaps(ureq);
+			for(PortfolioStructureMap map: userMaps) {
+				if(map.getKey().equals(mapKey) || (map.getResourceableId().equals(mapKey))) {
+					activateMap(ureq, map);
+					fireEvent(ureq, new EPMapEvent(EPStructureEvent.SELECT, map));
+					break;
+				}
+			}
+		}
 	}
 	
 	public void activateMap(UserRequest ureq, PortfolioStructureMap struct){
diff --git a/src/main/java/org/olat/repository/CatalogContextEntryControllerCreator.java b/src/main/java/org/olat/repository/CatalogContextEntryControllerCreator.java
index 0a4fd9b0c68dec19aa22f2e0196f8e1a04065d50..6f1a58b3745f8c59ccb101e5f450a612bb73cb11 100644
--- a/src/main/java/org/olat/repository/CatalogContextEntryControllerCreator.java
+++ b/src/main/java/org/olat/repository/CatalogContextEntryControllerCreator.java
@@ -24,7 +24,7 @@ import org.olat.core.gui.UserRequest;
 import org.olat.core.gui.control.Controller;
 import org.olat.core.gui.control.WindowControl;
 import org.olat.core.id.context.ContextEntry;
-import org.olat.core.id.context.ContextEntryControllerCreator;
+import org.olat.core.id.context.DefaultContextEntryControllerCreator;
 import org.olat.repository.site.RepositorySite;
 
 /**
@@ -34,7 +34,7 @@ import org.olat.repository.site.RepositorySite;
  * Initial Date:  11 fev. 2010 <br>
  * @author srosse, stephane.rosse@frentix.com
  */
-public class CatalogContextEntryControllerCreator implements ContextEntryControllerCreator {
+public class CatalogContextEntryControllerCreator extends DefaultContextEntryControllerCreator {
 
 	@Override
 	public Controller createController(ContextEntry ce, UserRequest ureq, WindowControl wControl) {
@@ -42,12 +42,12 @@ public class CatalogContextEntryControllerCreator implements ContextEntryControl
 	}
 
 	@Override
-	public String getSiteClassName(ContextEntry ce) {
+	public String getSiteClassName(ContextEntry ce, UserRequest ureq) {
 		return RepositorySite.class.getName();
 	}
 
 	@Override
-	public String getTabName(ContextEntry ce) {
+	public String getTabName(ContextEntry ce, UserRequest ureq) {
 		return null;
 	}
 
diff --git a/src/main/java/org/olat/repository/RepositoryContextEntryControllerCreator.java b/src/main/java/org/olat/repository/RepositoryContextEntryControllerCreator.java
index 643caf2e19a5554ff7245b526e90423479b94218..f09e8d5cc07cfcc51ebf19051c596e084045d281 100644
--- a/src/main/java/org/olat/repository/RepositoryContextEntryControllerCreator.java
+++ b/src/main/java/org/olat/repository/RepositoryContextEntryControllerCreator.java
@@ -24,7 +24,7 @@ import org.olat.core.gui.control.Controller;
 import org.olat.core.gui.control.WindowControl;
 import org.olat.core.id.OLATResourceable;
 import org.olat.core.id.context.ContextEntry;
-import org.olat.core.id.context.ContextEntryControllerCreator;
+import org.olat.core.id.context.DefaultContextEntryControllerCreator;
 
 /**
  * <h3>Description:</h3>
@@ -36,7 +36,7 @@ import org.olat.core.id.context.ContextEntryControllerCreator;
  * 
  * @author gnaegi, gnaegi@frentix.com, www.frentix.com
  */
-public class RepositoryContextEntryControllerCreator implements ContextEntryControllerCreator {
+public class RepositoryContextEntryControllerCreator extends DefaultContextEntryControllerCreator {
 
 	/**
 	 * @see org.olat.core.id.context.ContextEntryControllerCreator#createController(org.olat.core.id.context.ContextEntry,
@@ -56,7 +56,8 @@ public class RepositoryContextEntryControllerCreator implements ContextEntryCont
 	/**
 	 * @see org.olat.core.id.context.ContextEntryControllerCreator#getTabName(org.olat.core.id.context.ContextEntry)
 	 */
-	public String getTabName(ContextEntry ce) {
+	@Override
+	public String getTabName(ContextEntry ce, UserRequest ureq) {
 		OLATResourceable ores = ce.getOLATResourceable();
 
 		RepositoryManager repom = RepositoryManager.getInstance();
@@ -67,7 +68,8 @@ public class RepositoryContextEntryControllerCreator implements ContextEntryCont
 	/**
 	 * @see org.olat.core.id.context.ContextEntryControllerCreator#getSiteClassName(org.olat.core.id.context.ContextEntry)
 	 */
-	public String getSiteClassName(ContextEntry ce) {
+	@Override
+	public String getSiteClassName(ContextEntry ce, UserRequest ureq) {
 		return null;
 	}
 
diff --git a/src/main/java/org/olat/user/IdentityContextEntryControllerCreator.java b/src/main/java/org/olat/user/IdentityContextEntryControllerCreator.java
index 35ac132fa70a2bd0a50f740a90349cad4612b613..eac01605c6e919ddb178907cd2c535690629eb25 100644
--- a/src/main/java/org/olat/user/IdentityContextEntryControllerCreator.java
+++ b/src/main/java/org/olat/user/IdentityContextEntryControllerCreator.java
@@ -26,10 +26,9 @@ import org.olat.core.gui.control.WindowControl;
 import org.olat.core.id.Identity;
 import org.olat.core.id.OLATResourceable;
 import org.olat.core.id.context.ContextEntry;
-import org.olat.core.id.context.ContextEntryControllerCreator2;
+import org.olat.core.id.context.DefaultContextEntryControllerCreator;
 import org.olat.core.logging.OLog;
 import org.olat.core.logging.Tracing;
-
 import org.olat.home.HomeSite;
 
 /**
@@ -42,7 +41,7 @@ import org.olat.home.HomeSite;
  * 
  * @author gnaegi, gnaegi@frentix.com, www.frentix.com
  */
-public class IdentityContextEntryControllerCreator implements ContextEntryControllerCreator2 {
+public class IdentityContextEntryControllerCreator extends DefaultContextEntryControllerCreator {
 	private static final OLog log = Tracing.createLoggerFor(IdentityContextEntryControllerCreator.class);
 
 	/**
@@ -57,17 +56,9 @@ public class IdentityContextEntryControllerCreator implements ContextEntryContro
 		return uimc;
 	}
 
-	/**
-	 * @see org.olat.core.id.context.ContextEntryControllerCreator#getSiteClassName(org.olat.core.id.context.ContextEntry)
-	 */
-	public String getSiteClassName(ContextEntry ce) {
-		// opened as tab not site
-		return null;
-	}
-
 	@Override
 	//fxdiff BAKS-7 Resume function
-	public String getSiteClassName(UserRequest ureq, ContextEntry ce) {
+	public String getSiteClassName(ContextEntry ce, UserRequest ureq) {
 		Long resId = ce.getOLATResourceable().getResourceableId();
 		if(resId != null && resId.equals(ureq.getIdentity().getKey())) {
 			return HomeSite.class.getName();
@@ -78,7 +69,7 @@ public class IdentityContextEntryControllerCreator implements ContextEntryContro
 	/**
 	 * @see org.olat.core.id.context.ContextEntryControllerCreator#getTabName(org.olat.core.id.context.ContextEntry)
 	 */
-	public String getTabName(ContextEntry ce) {
+	public String getTabName(ContextEntry ce, UserRequest ureq) {
 		Identity identity = extractIdentity(ce);
 		if (identity == null) return null;
 		return identity.getName();