diff --git a/src/main/java/org/olat/admin/user/UserAdminController.java b/src/main/java/org/olat/admin/user/UserAdminController.java
index a3e1c5db1577157bae6d07ac6406ab436769e4d4..8742a1cd33f9f9f5f136a2457cf35a018c7adf8d 100644
--- a/src/main/java/org/olat/admin/user/UserAdminController.java
+++ b/src/main/java/org/olat/admin/user/UserAdminController.java
@@ -37,7 +37,7 @@ import org.olat.basesecurity.Constants;
 import org.olat.basesecurity.SecurityGroup;
 import org.olat.core.commons.modules.bc.FolderConfig;
 import org.olat.core.commons.persistence.DBFactory;
-import org.olat.core.commons.services.notifications.NotificationUIFactory;
+import org.olat.core.commons.services.notifications.ui.NotificationSubscriptionController;
 import org.olat.core.gui.UserRequest;
 import org.olat.core.gui.components.Component;
 import org.olat.core.gui.components.link.Link;
@@ -329,7 +329,7 @@ public class UserAdminController extends BasicController implements Activateable
 
 		Boolean canSubscriptions = BaseSecurityModule.USERMANAGER_CAN_MODIFY_SUBSCRIPTIONS;
 		if (canSubscriptions.booleanValue() || isOlatAdmin) {
-			Controller subscriptionsCtr = NotificationUIFactory.createSubscriptionListingController(identity, ureq, getWindowControl());
+			Controller subscriptionsCtr = new NotificationSubscriptionController(ureq, getWindowControl(), identity, true);
 			listenTo(subscriptionsCtr); // auto-dispose
 			userTabP.addTab(translate(NLS_VIEW_SUBSCRIPTIONS), subscriptionsCtr.getInitialComponent());			
 		}
diff --git a/src/main/java/org/olat/core/commons/services/notifications/NotificationUIFactory.java b/src/main/java/org/olat/core/commons/services/notifications/NotificationUIFactory.java
index 4409c41f6181a396340b782f0d9be05290a1fcde..efe2ab48354872ecc6086d9af0f061e38f86ed8f 100644
--- a/src/main/java/org/olat/core/commons/services/notifications/NotificationUIFactory.java
+++ b/src/main/java/org/olat/core/commons/services/notifications/NotificationUIFactory.java
@@ -29,7 +29,6 @@ import java.util.Date;
 import org.olat.NewControllerFactory;
 import org.olat.core.commons.services.notifications.ui.NotificationNewsController;
 import org.olat.core.commons.services.notifications.ui.NotificationSubscriptionAndNewsController;
-import org.olat.core.commons.services.notifications.ui.NotificationSubscriptionController;
 import org.olat.core.gui.UserRequest;
 import org.olat.core.gui.control.WindowControl;
 import org.olat.core.gui.translator.Translator;
@@ -48,19 +47,6 @@ import org.olat.core.util.Util;
  */
 public class NotificationUIFactory {
 
-	/**
-	 * Create a controller that displays the subscriptions for a specific user
-	 * 
-	 * @param subscriberIdentity
-	 * @param ureq
-	 * @param windowControl
-	 * @return
-	 */
-	public static NotificationSubscriptionController createSubscriptionListingController(Identity subscriberIdentity, UserRequest ureq,
-			WindowControl windowControl) {
-		return new NotificationSubscriptionController(subscriberIdentity, ureq, windowControl);
-	}
-
 	/**
 	 * Create a controller that displays the users news from his subscriptions
 	 * 
diff --git a/src/main/java/org/olat/core/commons/services/notifications/ui/NotificationSubscriptionAndNewsController.java b/src/main/java/org/olat/core/commons/services/notifications/ui/NotificationSubscriptionAndNewsController.java
index 766b7c71dde073e96d42232b8961369f1576f03a..37d2f4ed431e810975141948f0f1dcb6f68bcefd 100644
--- a/src/main/java/org/olat/core/commons/services/notifications/ui/NotificationSubscriptionAndNewsController.java
+++ b/src/main/java/org/olat/core/commons/services/notifications/ui/NotificationSubscriptionAndNewsController.java
@@ -103,7 +103,7 @@ public class NotificationSubscriptionAndNewsController extends BasicController i
 				// Lazy initialize the notification subscription controller when the
 				// user clicks the tab the first time
 				if (tabbedEvent.getNewComponent() == subscriptionPanel && subscriptionCtr == null) {
-					subscriptionCtr = NotificationUIFactory.createSubscriptionListingController(subscriberIdentity, ureq, getWindowControl());
+					subscriptionCtr = new NotificationSubscriptionController(ureq, getWindowControl(), subscriberIdentity, false);
 					listenTo(subscriptionCtr);
 					subscriptionPanel.setContent(subscriptionCtr.getInitialComponent());
 				}
diff --git a/src/main/java/org/olat/core/commons/services/notifications/ui/NotificationSubscriptionController.java b/src/main/java/org/olat/core/commons/services/notifications/ui/NotificationSubscriptionController.java
index 211ea9db2a0ca4ee89465e690a98f34c9ed62377..966bfdf175ff06ebc3dc55b44c9ba1bb0601674f 100644
--- a/src/main/java/org/olat/core/commons/services/notifications/ui/NotificationSubscriptionController.java
+++ b/src/main/java/org/olat/core/commons/services/notifications/ui/NotificationSubscriptionController.java
@@ -64,16 +64,18 @@ public class NotificationSubscriptionController extends BasicController {
 	private DialogBoxController delYesNoC;
 	private Identity subscriberIdentity;
 
-	public NotificationSubscriptionController(Identity subscriberIdentity, UserRequest ureq, WindowControl wControl) {
+	public NotificationSubscriptionController(UserRequest ureq, WindowControl wControl,
+			Identity subscriberIdentity, boolean adminColumns) {
 		// use home fallback for rss translations
 		super(ureq, wControl, Util.createPackageTranslator(HomeMainController.class, ureq.getLocale()));
 		this.subscriberIdentity = subscriberIdentity;
 		// Build the table that contains all the subscriptions
 		TableGuiConfiguration tableGuiPrefs = new TableGuiConfiguration();
 		tableGuiPrefs.setTableEmptyMessage(translate("subscriptions.no.subscriptions"));
+		tableGuiPrefs.setPreferencesOffered(true, "notifications-" + adminColumns);
 		subscriptionsTableCtr = new TableController(tableGuiPrefs, ureq, wControl, getTranslator());
 		subscriptionsTableModel = new NotificationSubscriptionTableDataModel(getTranslator());
-		subscriptionsTableModel.addTableColumns(subscriptionsTableCtr);
+		subscriptionsTableModel.addTableColumns(subscriptionsTableCtr, adminColumns);
 		updateSubscriptionsDataModel();
 		listenTo(subscriptionsTableCtr);
 		// Main view is a velocity container
diff --git a/src/main/java/org/olat/core/commons/services/notifications/ui/NotificationSubscriptionTableDataModel.java b/src/main/java/org/olat/core/commons/services/notifications/ui/NotificationSubscriptionTableDataModel.java
index 7ee74ef1e66ec1b6c0f78a999d8835957e7d1861..e1a4aac387246356eba795c49e0c41251e2cd258 100644
--- a/src/main/java/org/olat/core/commons/services/notifications/ui/NotificationSubscriptionTableDataModel.java
+++ b/src/main/java/org/olat/core/commons/services/notifications/ui/NotificationSubscriptionTableDataModel.java
@@ -54,10 +54,13 @@ class NotificationSubscriptionTableDataModel extends DefaultTableDataModel<Subsc
 	 * 
 	 * @param subscriptionsTableCtr
 	 */
-	void addTableColumns(TableController subscriptionsTableCtr) {
-		subscriptionsTableCtr.addColumnDescriptor(new DefaultColumnDescriptor("overview.column.type", 0, "launch", getLocale()));
-		subscriptionsTableCtr.addColumnDescriptor(new DefaultColumnDescriptor("overview.column.resname", 1, null, getLocale()));
-		subscriptionsTableCtr.addColumnDescriptor(new DefaultColumnDescriptor("overview.column.subidentifier", 2, null, getLocale()));
+	void addTableColumns(TableController subscriptionsTableCtr, boolean admin) {
+		subscriptionsTableCtr.addColumnDescriptor(false, new DefaultColumnDescriptor("overview.column.key", 0, "launch", getLocale()));
+		subscriptionsTableCtr.addColumnDescriptor(new DefaultColumnDescriptor("overview.column.type", 1, "launch", getLocale()));
+		subscriptionsTableCtr.addColumnDescriptor(new DefaultColumnDescriptor("overview.column.resname", 2, null, getLocale()));
+		subscriptionsTableCtr.addColumnDescriptor(new DefaultColumnDescriptor("overview.column.subidentifier", 3, null, getLocale()));
+		subscriptionsTableCtr.addColumnDescriptor(admin, new DefaultColumnDescriptor("overview.column.creationDate", 4, null, getLocale()));
+		subscriptionsTableCtr.addColumnDescriptor(admin, new DefaultColumnDescriptor("overview.column.lastEmail", 5, null, getLocale()));
 		subscriptionsTableCtr.addColumnDescriptor(new StaticColumnDescriptor("del", "overview.column.action", trans
 				.translate("overview.column.action.cellvalue")));
 	}
@@ -80,13 +83,14 @@ class NotificationSubscriptionTableDataModel extends DefaultTableDataModel<Subsc
 		Publisher pub = sub.getPublisher();
 		
 		switch (col) {
-			case 0:
+			case 0: return sub.getKey();
+			case 1:
 				String innerType = pub.getType();
 				return NewControllerFactory.translateResourceableTypeName(innerType, getLocale());
-			case 1:
+			case 2:
 				String containerType = pub.getResName();
 				return NewControllerFactory.translateResourceableTypeName(containerType, getLocale());
-			case 2:
+			case 3:
 				NotificationsHandler handler = NotificationsManager.getInstance().getNotificationsHandler(pub);
 				if(handler == null){
 					return "";
@@ -96,6 +100,8 @@ class NotificationSubscriptionTableDataModel extends DefaultTableDataModel<Subsc
 					return "";
 				}
 				return title;
+			case 4: return sub.getCreationDate();
+			case 5: return sub.getLatestEmailed();
 			default:
 				return "ERROR";
 		}
diff --git a/src/main/java/org/olat/core/commons/services/notifications/ui/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/core/commons/services/notifications/ui/_i18n/LocalStrings_de.properties
index 9775dfad370e3ab1d18737d2b451a5a9593fceaf..e4dd2f6e414fee18ec56ed4e8ed6462e5851fb7c 100644
--- a/src/main/java/org/olat/core/commons/services/notifications/ui/_i18n/LocalStrings_de.properties
+++ b/src/main/java/org/olat/core/commons/services/notifications/ui/_i18n/LocalStrings_de.properties
@@ -45,6 +45,9 @@ notificationsPortlet.multiple.news.in = {0} 
 notificationsPortlet.single.news.in = 1 Ă„nderung in {0}
 overview.column.action=Aktion
 overview.column.action.cellvalue=L\u00F6schen
+overview.column.creationDate=Erstellt am
+overview.column.lastEmail=Letztes E-Mail
+overview.column.key=ID
 overview.column.resname=Art
 overview.column.subidentifier=Titel
 overview.column.type=Typ
diff --git a/src/main/java/org/olat/core/commons/services/notifications/ui/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/core/commons/services/notifications/ui/_i18n/LocalStrings_en.properties
index f2909503157ef896d341ba1074f9d8a4e655ba4d..4f833807b6643e7869b6aa920de7e8f60378e989 100644
--- a/src/main/java/org/olat/core/commons/services/notifications/ui/_i18n/LocalStrings_en.properties
+++ b/src/main/java/org/olat/core/commons/services/notifications/ui/_i18n/LocalStrings_en.properties
@@ -58,6 +58,9 @@ notificationsPortlet.single.news.in=1 modification in {0}
 notificationsPortlet.title=My notifications
 overview.column.action=Action
 overview.column.action.cellvalue=Delete
+overview.column.creationDate=Created on
+overview.column.key=ID
+overview.column.lastEmail=Last e-mail
 overview.column.resname=Type
 overview.column.subidentifier=Title
 overview.column.type=Type
diff --git a/src/main/java/org/olat/course/nodes/TitledWrapperHelper.java b/src/main/java/org/olat/course/nodes/TitledWrapperHelper.java
index 1dac8485ea80a4562167b0dbf548b5d0f97f3b33..de723be7443f30a787e6e4bdf51288f2726dade7 100644
--- a/src/main/java/org/olat/course/nodes/TitledWrapperHelper.java
+++ b/src/main/java/org/olat/course/nodes/TitledWrapperHelper.java
@@ -47,7 +47,7 @@ public class TitledWrapperHelper {
 				if (StringHelper.containsNonWhitespace(iconCssClass)) {
 					titleInfo.setIconCssClass(iconCssClass);
 				}
-				controller = new TitledWrapperController(ureq, wControl, controller, "o_course_run", titleInfo); 
+				controller = new TitledWrapperController(ureq, wControl, controller, null, titleInfo); 
 			}
 		} else if (CourseNode.DISPLAY_OPTS_TITLE_CONTENT.equals(displayOption)) {
 			if(StringHelper.containsNonWhitespace(courseNode.getLongTitle())) {
@@ -56,7 +56,7 @@ public class TitledWrapperHelper {
 				if (StringHelper.containsNonWhitespace(iconCssClass)) {
 					titleInfo.setIconCssClass(iconCssClass);
 				}
-				controller = new TitledWrapperController(ureq, wControl, controller, "o_course_run", titleInfo);
+				controller = new TitledWrapperController(ureq, wControl, controller, null, titleInfo);
 			}
 		} else if (CourseNode.DISPLAY_OPTS_SHORT_TITLE_DESCRIPTION_CONTENT.equals(displayOption)) {
 			String title = courseNode.getShortTitle();
@@ -73,7 +73,7 @@ public class TitledWrapperHelper {
 				if (StringHelper.containsNonWhitespace(iconCssClass)) {
 					titleInfo.setIconCssClass(iconCssClass);
 				}
-				controller = new TitledWrapperController(ureq, wControl, controller, "o_course_run", titleInfo);
+				controller = new TitledWrapperController(ureq, wControl, controller, null, titleInfo);
 			}
 		} else if (CourseNode.DISPLAY_OPTS_TITLE_DESCRIPTION_CONTENT.equals(displayOption)) {
 
@@ -89,7 +89,7 @@ public class TitledWrapperHelper {
 				if (StringHelper.containsNonWhitespace(iconCssClass)) {
 					titleInfo.setIconCssClass(iconCssClass);
 				}
-				controller = new TitledWrapperController(ureq, wControl, controller, "o_course_run", titleInfo);
+				controller = new TitledWrapperController(ureq, wControl, controller, null, titleInfo);
 			} 
 		}
 		return controller;
diff --git a/src/main/java/org/olat/course/run/_content/index.html b/src/main/java/org/olat/course/run/_content/index.html
index 139e73892404caef0e8feabc1b03e16db38de42d..6690446357d68bed623e29c6631ef3656f5fabf6 100644
--- a/src/main/java/org/olat/course/run/_content/index.html
+++ b/src/main/java/org/olat/course/run/_content/index.html
@@ -13,4 +13,6 @@ function o_activateCourseNode(nodeid) {
 }
 /* ]]> */ 
 </script>
-$r.render("coursemain")
\ No newline at end of file
+<div class="o_course_run">
+	$r.render("coursemain")
+</div>
\ No newline at end of file