diff --git a/src/main/java/de/bps/course/nodes/den/DENCourseNodeConfiguration.java b/src/main/java/de/bps/course/nodes/den/DENCourseNodeConfiguration.java
index ac651442788638589f7d5a4e5e0364d6faca8a48..e5a4739abfc9b770ba1ae81fd84cc81bb8edfbff 100644
--- a/src/main/java/de/bps/course/nodes/den/DENCourseNodeConfiguration.java
+++ b/src/main/java/de/bps/course/nodes/den/DENCourseNodeConfiguration.java
@@ -19,10 +19,8 @@
  */
 package de.bps.course.nodes.den;
 
-import java.util.List;
 import java.util.Locale;
 
-import org.olat.core.extensions.ExtensionResource;
 import org.olat.core.gui.translator.Translator;
 import org.olat.core.util.Util;
 import org.olat.course.nodes.AbstractCourseNodeConfiguration;
@@ -57,17 +55,4 @@ public class DENCourseNodeConfiguration extends AbstractCourseNodeConfiguration
 		Translator translator = Util.createPackageTranslator(this.getClass(), locale, fallback);
 		return translator.translate("title_den");
 	}
-
-	public ExtensionResource getExtensionCSS() {
-		return null;
-	}
-
-	public List getExtensionResources() {
-		return null;
-	}
-
-	public String getName() {
-		return getAlias();
-	}
-
 }
diff --git a/src/main/java/de/bps/course/nodes/den/DENListTableDataModel.java b/src/main/java/de/bps/course/nodes/den/DENListTableDataModel.java
index 56ea0b5be5dcfd01e4e4c213d9e59d18635fdb19..de29c0054738a57cf88ec3d562107a05329dc37f 100644
--- a/src/main/java/de/bps/course/nodes/den/DENListTableDataModel.java
+++ b/src/main/java/de/bps/course/nodes/den/DENListTableDataModel.java
@@ -94,7 +94,7 @@ public class DENListTableDataModel extends DefaultTableDataModel<KalendarEvent>
 				return "";
 			for( String participant : event.getParticipants() ) {
 				Identity identity = BaseSecurityManager.getInstance().findIdentityByName(participant);
-				usernames.append(identity.getName() + "<br>");//TODO username
+				usernames.append(identity.getName() + "<br>");
 			}
 			return usernames.toString();
 		case 7:
diff --git a/src/main/java/de/bps/course/nodes/den/DENManageParticipantsController.java b/src/main/java/de/bps/course/nodes/den/DENManageParticipantsController.java
index 4fc94a693acfa9e18ce3d5797e3e652e58892ce5..d0dbe2884416e28e9cb14e8357034eab2e9b4e4c 100644
--- a/src/main/java/de/bps/course/nodes/den/DENManageParticipantsController.java
+++ b/src/main/java/de/bps/course/nodes/den/DENManageParticipantsController.java
@@ -337,12 +337,7 @@ public class DENManageParticipantsController extends BasicController {
 	private void createParticipantsMail(UserRequest ureq, List<Identity> participants) {
 		VelocityContainer sendMessageVC = createVelocityContainer("sendmessage");
 		ContactMessage cmsg = new ContactMessage(ureq.getIdentity());
-		ContactList contactList = null;
-		if(participants.size() == 1) {
-			contactList = new ContactList(participants.get(0).getName());//TODO username
-		} else {
-			contactList = new ContactList(translate("participants.message.to"));
-		}
+		ContactList contactList = new ContactList(translate("participants.message.to"));
 		contactList.addAllIdentites(participants);
 		cmsg.addEmailTo(contactList);
 		
diff --git a/src/main/java/de/bps/course/nodes/den/DENManager.java b/src/main/java/de/bps/course/nodes/den/DENManager.java
index 7105f47558048bfb2800abb5e4622ccd9d1071bd..2a0ff5df83a1fd460b5efeb2e3d54252ff89184b 100644
--- a/src/main/java/de/bps/course/nodes/den/DENManager.java
+++ b/src/main/java/de/bps/course/nodes/den/DENManager.java
@@ -30,11 +30,13 @@ import java.util.StringTokenizer;
 import org.apache.velocity.VelocityContext;
 import org.olat.basesecurity.BaseSecurity;
 import org.olat.basesecurity.BaseSecurityManager;
+import org.olat.basesecurity.BaseSecurityModule;
 import org.olat.commons.calendar.CalendarManager;
 import org.olat.commons.calendar.CalendarManagerFactory;
 import org.olat.commons.calendar.model.Kalendar;
 import org.olat.commons.calendar.model.KalendarEvent;
 import org.olat.commons.calendar.model.KalendarEventLink;
+import org.olat.core.CoreSpringFactory;
 import org.olat.core.gui.UserRequest;
 import org.olat.core.gui.components.table.BooleanColumnDescriptor;
 import org.olat.core.gui.components.table.DefaultColumnDescriptor;
@@ -188,7 +190,6 @@ public class DENManager {
 		DENStatus status = new DENStatus();
 		ICourse course = CourseFactory.loadCourse(ores);
 		Kalendar cal = calManager.getCourseCalendar(course).getKalendar();
-		Collection<KalendarEvent> collEvents = cal.getEvents();
 		//check if identity is enrolled
 		if( !isEnrolledInDate(identity, event) ) {
 			status.setCancelled(false);
@@ -355,7 +356,7 @@ public class DENManager {
 	 */
 	public int getEventCount(Long courseId, String courseNodeId) {
 		if(courseId != null && courseNodeId != null) {
-			List events = null;
+			List<KalendarEvent> events = null;
 			try {
 				events = getDENEvents(courseId, courseNodeId);
 			} catch(Exception e) {
@@ -498,7 +499,7 @@ public class DENManager {
 			userNewEvent.setLocation(newEvent.getLocation());
 			userNewEvent.setSourceNodeId(newEvent.getSourceNodeId());
 			userNewEvent.setClassification(KalendarEvent.CLASS_PRIVATE);
-			List kalendarEventLinks = userNewEvent.getKalendarEventLinks();
+			List<KalendarEventLink> kalendarEventLinks = userNewEvent.getKalendarEventLinks();
 			kalendarEventLinks.clear();
 			kalendarEventLinks.addAll(newEvent.getKalendarEventLinks());
 			calManager.addEventTo(userCal, userNewEvent);
@@ -608,7 +609,12 @@ public class DENManager {
 		tableCntrl.addColumnDescriptor(new DefaultColumnDescriptor("dates.table.duration", 2, null, ureq.getLocale()));
 		tableCntrl.addColumnDescriptor(new DefaultColumnDescriptor("dates.table.comment", 4, null, ureq.getLocale()));
 		tableCntrl.addColumnDescriptor(new DefaultColumnDescriptor("dates.table.participant.name", 5, null, ureq.getLocale()));
-		tableCntrl.addColumnDescriptor(new DefaultColumnDescriptor("dates.table.participant.username", 6, null, ureq.getLocale()));
+		
+		boolean isAdministrativeUser = CoreSpringFactory.getImpl(BaseSecurityModule.class).isUserAllowedAdminProps(ureq.getUserSession().getRoles());
+		if(isAdministrativeUser) {
+			tableCntrl.addColumnDescriptor(new DefaultColumnDescriptor("dates.table.participant.username", 6, null, ureq.getLocale()));
+		}
+		
 		tableCntrl.addColumnDescriptor(new BooleanColumnDescriptor("participants", 7, DENListTableDataModel.CHANGE_ACTION,
 				trans.translate("dates.table.participant.manage"), ""));
 		tableCntrl.addMultiSelectAction("dates.table.list.email", DENListTableDataModel.MAIL_ACTION);
@@ -855,7 +861,7 @@ public class DENManager {
 	}
 	
 	private void createKalendarEventLinks(ICourse course, DENCourseNode courseNode, KalendarEvent event) {
-		List kalendarEventLinks = event.getKalendarEventLinks();
+		List<KalendarEventLink> kalendarEventLinks = event.getKalendarEventLinks();
 		RepositoryEntry re = RepositoryManager.getInstance().lookupRepositoryEntry(course, true);
 
 		OLATResourceable oresNode = OresHelper.createOLATResourceableInstance("CourseNode", Long.valueOf(courseNode.getIdent()));
diff --git a/src/main/java/de/bps/course/nodes/den/DENParticipantsTableDataModel.java b/src/main/java/de/bps/course/nodes/den/DENParticipantsTableDataModel.java
index 36fe158fb8f0c8dfeb421bcd7c3d3deb7d05f11b..217b1920ac6fbbc51ef3fecd756d7c269491249d 100644
--- a/src/main/java/de/bps/course/nodes/den/DENParticipantsTableDataModel.java
+++ b/src/main/java/de/bps/course/nodes/den/DENParticipantsTableDataModel.java
@@ -29,14 +29,14 @@ import org.olat.core.id.UserConstants;
  * Table data model for the view of participants enrolled in an event
  * @author skoeber
  */
-class DENParticipantsTableDataModel extends DefaultTableDataModel {
+class DENParticipantsTableDataModel extends DefaultTableDataModel<Identity> {
 	
 	public static final String MAIL_ACTION = "denSendMail";
 	public static final String REMOVE_ACTION = "denRemoveParticipant";
 	
 	private static final int COLUMN_COUNT = 2;
 
-	public DENParticipantsTableDataModel(List objects) {
+	public DENParticipantsTableDataModel(List<Identity> objects) {
 		super(objects);
 	}
 
@@ -47,7 +47,7 @@ class DENParticipantsTableDataModel extends DefaultTableDataModel {
 
 	@Override
 	public Object getValueAt(int row, int col) {
-		Identity identity = (Identity)objects.get(row);
+		Identity identity = objects.get(row);
 		
 		switch (col) {
 		case 0:
diff --git a/src/main/java/org/olat/_spring/extensionContext.xml b/src/main/java/org/olat/_spring/extensionContext.xml
index 0759fd7a70257e9b1cb99ff293efc76e85a11ad9..0ed40f525c1693004f961486c0a1ac327831634b 100644
--- a/src/main/java/org/olat/_spring/extensionContext.xml
+++ b/src/main/java/org/olat/_spring/extensionContext.xml
@@ -243,7 +243,27 @@
 					<value>org.olat.admin.SystemAdminMainController</value>
 				</list>
 			</property>
-	</bean>	 
+	</bean>	
+	
+	<!-- Privacy admin. panel -->
+	<bean class="org.olat.core.extensions.action.GenericActionExtension" init-method="initExtensionPoints">
+		<property name="order" value="7423" />
+		<property name="actionController">	
+			<bean class="org.olat.core.gui.control.creator.AutoCreator" scope="prototype">
+				<property name="className" value="org.olat.admin.privacy.PrivacyAdminController"/>
+			</bean>
+		</property>
+		<property name="navigationKey" value="privacy" />
+		<property name="i18nActionKey" value="admin.menu.title"/>
+		<property name="i18nDescriptionKey" value="admin.menu.title.alt"/>
+		<property name="translationPackage" value="org.olat.admin.privacy"/>
+		<property name="parentTreeNodeIdentifier" value="modulesParent" /> 
+		<property name="extensionPoints">
+			<list>	
+				<value>org.olat.admin.SystemAdminMainController</value>		
+			</list>
+		</property>
+	</bean>  
 	
 	
 
diff --git a/src/main/java/org/olat/admin/UserAdminMainController.java b/src/main/java/org/olat/admin/UserAdminMainController.java
index 03e31c46b5d47dd3c43f5ee41a8c9692febf4664..ebd8cc8c8d1b9ebb91228280562b4e07514aa990 100644
--- a/src/main/java/org/olat/admin/UserAdminMainController.java
+++ b/src/main/java/org/olat/admin/UserAdminMainController.java
@@ -74,6 +74,7 @@ import org.olat.core.logging.activity.ThreadLocalUserActivityLogger;
 import org.olat.core.util.coordinate.CoordinatorManager;
 import org.olat.core.util.coordinate.LockResult;
 import org.olat.core.util.resource.OresHelper;
+import org.olat.user.UserManager;
 import org.olat.util.logging.activity.LoggingResourceable;
 
 /**
@@ -104,6 +105,7 @@ public class UserAdminMainController extends MainLayoutBasicController implement
 	private String activatePaneInDetailView = null;
 
 	private LockResult lock;
+	private final UserManager userManager;
 
 	/**
 	 * Constructor of the home main controller
@@ -112,6 +114,9 @@ public class UserAdminMainController extends MainLayoutBasicController implement
 	 */
 	public UserAdminMainController(UserRequest ureq, WindowControl wControl) {
 		super(ureq, wControl);		
+		
+		userManager = UserManager.getInstance();
+		
 		olatMenuTree = new MenuTree("olatMenuTree");
 		olatMenuTree.setExpandSelectedNode(false);
 		TreeModel tm = buildTreeModel(ureq); 
@@ -513,8 +518,8 @@ public class UserAdminMainController extends MainLayoutBasicController implement
 		OLATResourceable lockResourceable = OresHelper.createOLATResourceableTypeWithoutCheck(TabbedPaneController.class.getName());
 		lock = CoordinatorManager.getInstance().getCoordinator().getLocker().acquireLock(lockResourceable, ureq.getIdentity(), "deleteGroup");
 		if (!lock.isSuccess()) {
-		//TODO username
-			String text = getTranslator().translate("error.deleteworkflow.locked.by", new String[]{lock.getOwner().getName()});
+			String fullname = userManager.getUserDisplayName(lock.getOwner());
+			String text = getTranslator().translate("error.deleteworkflow.locked.by", new String[]{ fullname });
 			Controller monoCtr = MessageUIFactory.createInfoMessage(ureq, getWindowControl(), null, text);
 			return monoCtr;
 		}
diff --git a/src/main/java/org/olat/admin/privacy/PrivacyAdminController.java b/src/main/java/org/olat/admin/privacy/PrivacyAdminController.java
new file mode 100644
index 0000000000000000000000000000000000000000..a605ee7418a0c1ad343eed16ccd839f664ed3830
--- /dev/null
+++ b/src/main/java/org/olat/admin/privacy/PrivacyAdminController.java
@@ -0,0 +1,97 @@
+/**
+ * <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.admin.privacy;
+
+import java.util.Set;
+
+import org.olat.basesecurity.BaseSecurityModule;
+import org.olat.core.CoreSpringFactory;
+import org.olat.core.gui.UserRequest;
+import org.olat.core.gui.components.form.flexible.FormItem;
+import org.olat.core.gui.components.form.flexible.FormItemContainer;
+import org.olat.core.gui.components.form.flexible.elements.MultipleSelectionElement;
+import org.olat.core.gui.components.form.flexible.impl.FormBasicController;
+import org.olat.core.gui.components.form.flexible.impl.FormEvent;
+import org.olat.core.gui.control.Controller;
+import org.olat.core.gui.control.WindowControl;
+
+/**
+ * 
+ * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com
+ */
+public class PrivacyAdminController extends FormBasicController {
+	
+	private MultipleSelectionElement adminPropsEl;
+
+	private final BaseSecurityModule module;
+	
+	private String[] adminPropKeys = new String[]{
+			"users","authors", "usermanagers", "groupmanagers", "administrators"
+	};
+	
+	public PrivacyAdminController(UserRequest ureq, WindowControl wControl) {
+		super(ureq, wControl);
+		module = CoreSpringFactory.getImpl(BaseSecurityModule.class);
+		initForm(ureq);
+	}
+
+	@Override
+	protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) {
+		setFormTitle("admin.menu.title");
+		setFormDescription("admin.props.desc");
+
+		String[] adminPropValues = new String[]{
+				translate("admin.props.users"),
+				translate("admin.props.authors"),
+				translate("admin.props.usermanagers"),
+				translate("admin.props.groupmanagers"),
+				translate("admin.props.administrators")
+		};
+		adminPropsEl = uifactory.addCheckboxesVertical("admin.props", formLayout, adminPropKeys, adminPropValues, null, 1);
+		adminPropsEl.select("users", "enabled".equals(module.getUserSearchAdminPropsForUsers()));
+		adminPropsEl.select("authors", "enabled".equals(module.getUserSearchAdminPropsForAuthors()));
+		adminPropsEl.select("usermanagers", "enabled".equals(module.getUserSearchAdminPropsForUsermanagers()));
+		adminPropsEl.select("groupmanagers", "enabled".equals(module.getUserSearchAdminPropsForGroupmanagers()));
+		adminPropsEl.select("administrators", "enabled".equals(module.getUserSearchAdminPropsForAdministrators()));
+		adminPropsEl.addActionListener(this, FormEvent.ONCHANGE);
+	}
+	
+	@Override
+	protected void doDispose() {
+		//
+	}
+
+	@Override
+	protected void formInnerEvent(UserRequest ureq, FormItem source, FormEvent event) {
+		if(source == adminPropsEl) {
+			Set<String> enrolmentSelectedKeys = adminPropsEl.getSelectedKeys();
+			module.setUserSearchAdminPropsForUsers(enrolmentSelectedKeys.contains("users") ? "enabled" : "disabled");
+			module.setUserSearchAdminPropsForAuthors(enrolmentSelectedKeys.contains("authors") ? "enabled" : "disabled");
+			module.setUserSearchAdminPropsForUsermanagers(enrolmentSelectedKeys.contains("usermanagers") ? "enabled" : "disabled");
+			module.setUserSearchAdminPropsForGroupmanagers(enrolmentSelectedKeys.contains("groupmanagers") ? "enabled" : "disabled");
+			module.setUserSearchAdminPropsForAdministrators(enrolmentSelectedKeys.contains("administrators") ? "enabled" : "disabled");
+		}
+	}
+
+	@Override
+	protected void formOK(UserRequest ureq) {
+		//
+	}
+}
\ No newline at end of file
diff --git a/src/main/java/org/olat/admin/privacy/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/admin/privacy/_i18n/LocalStrings_de.properties
new file mode 100644
index 0000000000000000000000000000000000000000..c4edfc67c9552ff6b8dc60d40a73f96494b08b6f
--- /dev/null
+++ b/src/main/java/org/olat/admin/privacy/_i18n/LocalStrings_de.properties
@@ -0,0 +1,10 @@
+#Mon Mar 02 09:54:03 CET 2009
+admin.menu.title=Datenschutz
+admin.menu.title.alt=Datenschutz
+admin.props=Admin. properties
+admin.props.desc=Roles die den Admin. Properties sehen darf.			
+admin.props.administrators=Systemadministratoren
+admin.props.authors=Kursautoren
+admin.props.groupmanagers=Gruppenverwalter
+admin.props.usermanagers=Benutzerverwalter
+admin.props.users=Lernende
\ No newline at end of file
diff --git a/src/main/java/org/olat/admin/privacy/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/admin/privacy/_i18n/LocalStrings_en.properties
new file mode 100644
index 0000000000000000000000000000000000000000..9a9ac7942507e398fb611346d2c3544a433020c4
--- /dev/null
+++ b/src/main/java/org/olat/admin/privacy/_i18n/LocalStrings_en.properties
@@ -0,0 +1,8 @@
+#Sat Jan 22 17:29:25 CET 2011
+admin.menu.title=Privacy
+admin.menu.title.alt=Privacy
+admin.props.administrators=System administrators
+admin.props.authors=Course authors
+admin.props.groupmanagers=Group administrators
+admin.props.usermanagers=User managers
+admin.props.users=Learner
\ No newline at end of file
diff --git a/src/main/java/org/olat/admin/properties/AdvancedPropertiesController.java b/src/main/java/org/olat/admin/properties/AdvancedPropertiesController.java
index d96fd1c991aaa2c41be6c44b696ef35bacf90b6b..d55ee14e3794808331fbf97a822105ab061267c0 100644
--- a/src/main/java/org/olat/admin/properties/AdvancedPropertiesController.java
+++ b/src/main/java/org/olat/admin/properties/AdvancedPropertiesController.java
@@ -27,6 +27,8 @@ package org.olat.admin.properties;
 
 import java.util.List;
 
+import org.olat.basesecurity.BaseSecurityModule;
+import org.olat.core.CoreSpringFactory;
 import org.olat.core.gui.UserRequest;
 import org.olat.core.gui.components.Component;
 import org.olat.core.gui.components.panel.Panel;
@@ -39,6 +41,7 @@ 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.Roles;
 import org.olat.properties.Property;
 import org.olat.properties.PropertyManager;
 
@@ -55,6 +58,7 @@ public class AdvancedPropertiesController extends BasicController {
 	private VelocityContainer vcSearchForm;
 	
 	private TableController tableCtr;
+	private final boolean isAdministrativeUser;
 	
 	/**
 	 * caller of this constructor must make sure only olat admins come here
@@ -63,7 +67,10 @@ public class AdvancedPropertiesController extends BasicController {
 	 * @param wControl
 	 */
 	public AdvancedPropertiesController(UserRequest ureq, WindowControl wControl) {
-		super(ureq,wControl);		
+		super(ureq,wControl);
+		
+		Roles roles = ureq.getUserSession().getRoles();
+		isAdministrativeUser = CoreSpringFactory.getImpl(BaseSecurityModule.class).isUserAllowedAdminProps(roles);
 		
 		//TODO: make special security check as soon as this controller can also modify polices (at the moment: read only)
 		
@@ -101,25 +108,27 @@ public class AdvancedPropertiesController extends BasicController {
 				String propertyName = searchForm.getPropertyName();
 				if (propertyName != null && propertyName.equals("")) propertyName = null;
 
-				List<Property> entries = PropertyManager.getInstance().listProperties(searchForm.getIdentity(), null, resourceTypeName, resTypeId, category, propertyName);				
-				PropertiesTableDataModel ptdm = new PropertiesTableDataModel(entries);
+				List<Property> entries = PropertyManager.getInstance().listProperties(searchForm.getIdentity(), null, resourceTypeName, resTypeId, category, propertyName);
+				
+				
+				PropertiesTableDataModel ptdm = new PropertiesTableDataModel(entries, isAdministrativeUser);
 
 				TableGuiConfiguration tableConfig = new TableGuiConfiguration();
 				
 				removeAsListenerAndDispose(tableCtr);
 				tableCtr = new TableController(tableConfig, ureq, getWindowControl(), getTranslator());
 				//use null as listener argument because we are using listenTo(..) from basiccontroller
-				tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("table.header.userName", 0, null, ureq.getLocale()));
-				tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("table.header.resourceTypeName", 1, null, ureq.getLocale()));
-				tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("table.header.resourceTypeId", 2, null, ureq.getLocale(),ColumnDescriptor.ALIGNMENT_RIGHT));
-				tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("table.header.category", 3, null, ureq.getLocale()));
-				tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("table.header.name", 4, null, ureq.getLocale()));
-				tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("table.header.floatValue", 5, null, ureq.getLocale(), ColumnDescriptor.ALIGNMENT_RIGHT));
-				tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("table.header.stringValue", 6, null, ureq.getLocale()));
-				tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("table.header.longValue", 10, null, ureq.getLocale()));
-				tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("table.header.textValue", 7, null, ureq.getLocale()));
-				tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("table.header.creationdate", 8, null, ureq.getLocale()));
-				tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("table.header.lastmodified", 9, null, ureq.getLocale()));
+				tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("table.header.userName", 0, null, getLocale()));
+				tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("table.header.resourceTypeName", 1, null, getLocale()));
+				tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("table.header.resourceTypeId", 2, null, getLocale(),ColumnDescriptor.ALIGNMENT_RIGHT));
+				tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("table.header.category", 3, null, getLocale()));
+				tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("table.header.name", 4, null, getLocale()));
+				tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("table.header.floatValue", 5, null, getLocale(), ColumnDescriptor.ALIGNMENT_RIGHT));
+				tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("table.header.stringValue", 6, null, getLocale()));
+				tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("table.header.longValue", 10, null, getLocale()));
+				tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("table.header.textValue", 7, null, getLocale()));
+				tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("table.header.creationdate", 8, null, getLocale()));
+				tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("table.header.lastmodified", 9, null, getLocale()));
 				tableCtr.setTableDataModel(ptdm);
 				listenTo(tableCtr);
 
diff --git a/src/main/java/org/olat/admin/properties/PropertiesTableDataModel.java b/src/main/java/org/olat/admin/properties/PropertiesTableDataModel.java
index 0464b11c1fa0b6f723d7fe94bd3fae73eadf8596..f28bdc9e8bb807eea89701c5f0dc25aa5643955f 100644
--- a/src/main/java/org/olat/admin/properties/PropertiesTableDataModel.java
+++ b/src/main/java/org/olat/admin/properties/PropertiesTableDataModel.java
@@ -31,6 +31,7 @@ import java.util.List;
 import org.olat.core.gui.components.table.DefaultTableDataModel;
 import org.olat.core.id.Identity;
 import org.olat.properties.Property;
+import org.olat.user.UserManager;
 
 /**
 *  Description:<br>
@@ -40,20 +41,25 @@ import org.olat.properties.Property;
 */
 public class PropertiesTableDataModel extends DefaultTableDataModel<Property> {
 
-
+	private final boolean isAdministrativeUser;
+	private final UserManager userManager;
+	
 	/**
 	 * Default constructor.
 	 */
-	public PropertiesTableDataModel() {
-		this(new ArrayList<Property>());
+	public PropertiesTableDataModel(boolean isAdministrativeUser) {
+		this(new ArrayList<Property>(), isAdministrativeUser);
+		
 	}
 
 	/**
 	 * Initialize table model with objects.
 	 * @param objects
 	 */
-	public PropertiesTableDataModel(List<Property> objects) {
+	public PropertiesTableDataModel(List<Property> objects, boolean isAdministrativeUser) {
 		super(objects);
+		this.isAdministrativeUser = isAdministrativeUser;
+		userManager = UserManager.getInstance();
 	}
 	
 	/**
@@ -73,7 +79,13 @@ public class PropertiesTableDataModel extends DefaultTableDataModel<Property> {
 		switch(col) {
 			case 0:
 				Identity id = p.getIdentity();
-				return ((id != null) ?  (p.getIdentity().getName()): (null));//TODO username
+				if(id == null) {
+					return null;
+				}
+				if(isAdministrativeUser) {
+					return id.getName();
+				}
+				return userManager.getUserDisplayName(id);
 			case 1:
 				return p.getResourceTypeName();
 			case 2:
diff --git a/src/main/java/org/olat/admin/securitygroup/gui/GroupController.java b/src/main/java/org/olat/admin/securitygroup/gui/GroupController.java
index b7ce7f970beec3030f99cbfeeeaa01bc7445d410..2ddf6cd41113714870ec8c2a666eb68451a53403 100644
--- a/src/main/java/org/olat/admin/securitygroup/gui/GroupController.java
+++ b/src/main/java/org/olat/admin/securitygroup/gui/GroupController.java
@@ -369,7 +369,8 @@ public class GroupController extends BasicController {
 				if (toAdd.size() == 1) {
 					//check if already in group [makes only sense for a single choosen identity]
 					if (securityManager.isIdentityInSecurityGroup(toAdd.get(0), securityGroup)) {
-						getWindowControl().setInfo(translate("msg.subjectalreadyingroup", new String[]{toAdd.get(0).getName()}));//TODO username
+						String fullName = userManager.getUserDisplayName(toAdd.get(0));
+						getWindowControl().setInfo(translate("msg.subjectalreadyingroup", new String[]{ fullName }));
 						return;
 					}
 				} else if (toAdd.size() > 1) {
@@ -384,7 +385,8 @@ public class GroupController extends BasicController {
 					if (!alreadyInGroup.isEmpty()) {
 						StringBuilder names = new StringBuilder();
 						for(Identity ident: alreadyInGroup) {
-							names.append(" ").append(ident.getName());//TODO username
+							if(names.length() > 0) names.append(", ");
+							names.append(userManager.getUserDisplayName(ident));
 							toAdd.remove(ident);
 						}
 						getWindowControl().setInfo(translate("msg.subjectsalreadyingroup", names.toString()));
@@ -502,10 +504,10 @@ public class GroupController extends BasicController {
 		if (confirmDelete != null) confirmDelete.dispose();
 		StringBuilder names = new StringBuilder();
 		for (Identity identity : toRemove) {
-			names.append(identity.getName()).append(" ");//TODO username
+			if(names.length() > 0) names.append(", ");
+			names.append(userManager.getUserDisplayName(identity));
 		}
 		confirmDelete = activateYesNoDialog(ureq, null, translate("remove.text", names.toString()), confirmDelete);
-		return;
 	}
 
 	private void doRemoveIdentitiesFromGroup(UserRequest ureq, List<Identity> toBeRemoved, MailTemplate mailTemplate) {
@@ -561,10 +563,10 @@ public class GroupController extends BasicController {
 		// build info message for identities which could be added.
 		StringBuilder infoMessage = new StringBuilder();
 		for (Identity identity : identitiesAddedEvent.getIdentitiesWithoutPermission()) {
-	    infoMessage.append(translate("msg.isingroupanonymous", identity.getName())).append("<br />");//TODO username
+	    infoMessage.append(translate("msg.isingroupanonymous", userManager.getUserDisplayName(identity))).append("<br />");
 		}
 		for (Identity identity : identitiesAddedEvent.getIdentitiesAlreadyInGroup()) {
-			infoMessage.append(translate("msg.subjectalreadyingroup", identity.getName())).append("<br />");//TODO username
+			infoMessage.append(translate("msg.subjectalreadyingroup", userManager.getUserDisplayName(identity))).append("<br />");
 		}
 		// send the notification mail fro added users
 		StringBuilder errorMessage = new StringBuilder();
diff --git a/src/main/java/org/olat/admin/securitygroup/gui/IdentitiesOfGroupTableDataModel.java b/src/main/java/org/olat/admin/securitygroup/gui/IdentitiesOfGroupTableDataModel.java
index d015055f6acc705e47361a5498e2601e0c6ae884..810f9d25f4f93b64112a87d1e9a18edfc11b8638 100644
--- a/src/main/java/org/olat/admin/securitygroup/gui/IdentitiesOfGroupTableDataModel.java
+++ b/src/main/java/org/olat/admin/securitygroup/gui/IdentitiesOfGroupTableDataModel.java
@@ -63,7 +63,7 @@ public class IdentitiesOfGroupTableDataModel extends DefaultTableDataModel<Group
 	public final Object getValueAt(int row, int col) {
 		GroupMemberView co = getObject(row);
 		switch(col) {
-			case 0: return co.getIdentity().getName();//TODO username
+			case 0: return co.getIdentity().getName();
 			case 1: return co.getOnlineStatus();
 			case 2: return co.getAddedAt();
 			default: {
diff --git a/src/main/java/org/olat/admin/sysinfo/LockController.java b/src/main/java/org/olat/admin/sysinfo/LockController.java
index 1d7377ed08f74bbcf40d026d9eebf7f15f248dfd..efa379c073da5aca5542c7dfe8871c964869b07c 100644
--- a/src/main/java/org/olat/admin/sysinfo/LockController.java
+++ b/src/main/java/org/olat/admin/sysinfo/LockController.java
@@ -27,6 +27,9 @@ package org.olat.admin.sysinfo;
 
 import java.util.List;
 
+import org.olat.admin.sysinfo.LockTableModel.Cols;
+import org.olat.basesecurity.BaseSecurityModule;
+import org.olat.core.CoreSpringFactory;
 import org.olat.core.gui.UserRequest;
 import org.olat.core.gui.components.Component;
 import org.olat.core.gui.components.table.DefaultColumnDescriptor;
@@ -78,9 +81,14 @@ public class LockController extends BasicController {
 		TableGuiConfiguration tableConfig = new TableGuiConfiguration();
 		tableConfig.setDownloadOffered(false);
 		tableCtr = new TableController(tableConfig, ureq, getWindowControl(), getTranslator());
-		tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("lock.key", 0, null, ureq.getLocale()));
-		tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("lock.owner", 1, null, ureq.getLocale()));
-		tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("lock.aquiretime", 2, null, ureq.getLocale()));
+		tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("lock.key", Cols.key.ordinal(), null, getLocale()));
+		
+		BaseSecurityModule securityModule = CoreSpringFactory.getImpl(BaseSecurityModule.class);
+		if(securityModule.isUserAllowedAdminProps(ureq.getUserSession().getRoles())) {
+			tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("lock.owner", Cols.ownerName.ordinal(), null, getLocale()));
+		}
+		tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("lock.owner", Cols.ownerFullname.ordinal(), null, getLocale()));
+		tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("lock.aquiretime", Cols.acquiredTime.ordinal(), null, getLocale()));
 		tableCtr.addColumnDescriptor(new StaticColumnDescriptor("lock.release", "lock.release", translate("lock.release")));
 		listenTo(tableCtr);
 		resetTableModel();
diff --git a/src/main/java/org/olat/admin/sysinfo/LockTableModel.java b/src/main/java/org/olat/admin/sysinfo/LockTableModel.java
index 975156f4aa6abe597f959fb3cbb3e7b446ed773a..745c53f6922c2de286c0ec260dd3fe466c78994f 100644
--- a/src/main/java/org/olat/admin/sysinfo/LockTableModel.java
+++ b/src/main/java/org/olat/admin/sysinfo/LockTableModel.java
@@ -29,9 +29,9 @@ import java.util.Date;
 import java.util.List;
 
 import org.olat.core.gui.components.table.DefaultTableDataModel;
-import org.olat.core.id.UserConstants;
 import org.olat.core.util.Formatter;
 import org.olat.core.util.coordinate.LockEntry;
+import org.olat.user.UserManager;
 
 /**
  * 
@@ -40,16 +40,20 @@ import org.olat.core.util.coordinate.LockEntry;
 
 public class LockTableModel extends DefaultTableDataModel<LockEntry> {
 	
+	private final UserManager userManager;
+	
 	/**
 	 * @param list of locks
 	 */
 	public LockTableModel(List<LockEntry> locks) {
 		super(locks);
+		userManager = UserManager.getInstance();
 	}
 	
 	/**
 	 * @see org.olat.core.gui.components.table.TableDataModel#getColumnCount()
 	 */
+	@Override
 	public int getColumnCount() {
 		return 4;
 	}
@@ -57,15 +61,22 @@ public class LockTableModel extends DefaultTableDataModel<LockEntry> {
 	/**
 	 * @see org.olat.core.gui.components.table.TableDataModel#getValueAt(int, int)
 	 */
+	@Override
 	public Object getValueAt(int row, int col) {
 		LockEntry lock = getObject(row); 
-		switch (col) {
-			case 0: return lock.getKey();//TODO username
-			case 1: return lock.getOwner().getName() + ", " + lock.getOwner().getUser().getProperty(UserConstants.FIRSTNAME, null)
-			                                         + " "  + lock.getOwner().getUser().getProperty(UserConstants.LASTNAME, null);		
-			case 2: return Formatter.formatDatetime(new Date(lock.getLockAquiredTime()));
+		switch (Cols.values()[col]) {
+			case key: return lock.getKey();
+			case ownerName: return lock.getOwner().getName();
+			case ownerFullname: return	userManager.getUserDisplayName(lock.getOwner());	
+			case acquiredTime: return Formatter.formatDatetime(new Date(lock.getLockAquiredTime()));
 			default: return "Error";
 		}
 	}
-
+	
+	public enum Cols {
+		key,
+		ownerName,
+		ownerFullname,
+		acquiredTime	
+	}
 }
diff --git a/src/main/java/org/olat/admin/user/ExtendedIdentitiesTableControllerFactory.java b/src/main/java/org/olat/admin/user/ExtendedIdentitiesTableControllerFactory.java
index 0cf66325cff87e32278b4aac7f02f6e02ee91a18..643332cb140267eaff32aa9a3a3f249e94f1942c 100644
--- a/src/main/java/org/olat/admin/user/ExtendedIdentitiesTableControllerFactory.java
+++ b/src/main/java/org/olat/admin/user/ExtendedIdentitiesTableControllerFactory.java
@@ -29,14 +29,11 @@ import java.util.List;
 import java.util.Locale;
 
 import org.olat.core.gui.UserRequest;
-import org.olat.core.gui.components.table.DefaultColumnDescriptor;
-import org.olat.core.gui.components.table.StaticColumnDescriptor;
 import org.olat.core.gui.components.table.TableController;
 import org.olat.core.gui.components.table.TableGuiConfiguration;
-import org.olat.core.gui.control.ControllerEventListener;
 import org.olat.core.gui.control.WindowControl;
-import org.olat.core.gui.translator.PackageTranslator;
 import org.olat.core.gui.translator.Translator;
+import org.olat.core.id.Identity;
 import org.olat.core.util.Util;
 import org.olat.user.UserManager;
 
@@ -52,17 +49,15 @@ import org.olat.user.UserManager;
  * itself is work in progress.
  */
 public class ExtendedIdentitiesTableControllerFactory {
-	private static final String PACKAGE = Util.getPackageName(ExtendedIdentitiesTableControllerFactory.class);
 	public static final String COMMAND_VCARD = "show.vcard";
 	public static final String COMMAND_SELECTUSER = "select.user";
 
-	
 	/**
 	 * @param args
 	 */
 	public static TableController createController(ExtendedIdentitiesTableDataModel dataModel, UserRequest ureq, WindowControl wControl, boolean actionEnabled) {
 		Locale loc = ureq.getLocale();
-		Translator trans = new PackageTranslator(PACKAGE, loc);
+		Translator trans = Util.createPackageTranslator(ExtendedIdentitiesTableControllerFactory.class, loc);
 		TableGuiConfiguration tableConfig = new TableGuiConfiguration();
 		tableConfig.setDownloadOffered(true);
 		tableConfig.setPreferencesOffered(true, "ExtendedIdentitiesTable");		
@@ -75,7 +70,7 @@ public class ExtendedIdentitiesTableControllerFactory {
 		return tableCtr;
 	}
 	
-	public static ExtendedIdentitiesTableDataModel createTableDataModel(UserRequest ureq, List identities, boolean actionEnabled) {
+	public static ExtendedIdentitiesTableDataModel createTableDataModel(UserRequest ureq, List<Identity> identities, boolean actionEnabled) {
 		return new ExtendedIdentitiesTableDataModel(ureq, identities, actionEnabled);
 	}
 }
\ No newline at end of file
diff --git a/src/main/java/org/olat/admin/user/ExtendedIdentitiesTableDataModel.java b/src/main/java/org/olat/admin/user/ExtendedIdentitiesTableDataModel.java
index 48687de2f51fb8b9adb9c0cdf9b9f1f7405c4c50..bceeba683ecd26bb8587ce8a2c8411c1bf1687c3 100644
--- a/src/main/java/org/olat/admin/user/ExtendedIdentitiesTableDataModel.java
+++ b/src/main/java/org/olat/admin/user/ExtendedIdentitiesTableDataModel.java
@@ -29,6 +29,8 @@ import java.util.ArrayList;
 import java.util.BitSet;
 import java.util.List;
 
+import org.olat.basesecurity.BaseSecurityModule;
+import org.olat.core.CoreSpringFactory;
 import org.olat.core.gui.UserRequest;
 import org.olat.core.gui.components.table.DefaultColumnDescriptor;
 import org.olat.core.gui.components.table.DefaultTableDataModel;
@@ -50,9 +52,10 @@ import org.olat.user.propertyhandlers.UserPropertyHandler;
  * user and its creation date. The idea is to extend the functionality further
  * to display more information using a wrapper object.
  */
-public class ExtendedIdentitiesTableDataModel extends DefaultTableDataModel {
+public class ExtendedIdentitiesTableDataModel extends DefaultTableDataModel<Identity> {
 
-	private boolean actionEnabled;
+	private final boolean actionEnabled;
+	private final boolean isAdministrativeUser;
 	private int colCount = 0;
 	private List<UserPropertyHandler> userPropertyHandlers;
 	private static final String usageIdentifyer = ExtendedIdentitiesTableDataModel.class.getCanonicalName();
@@ -64,12 +67,12 @@ public class ExtendedIdentitiesTableDataModel extends DefaultTableDataModel {
 	 * @param actionEnabled true: the action button is enabled; false: list
 	 *          without action button
 	 */
-	ExtendedIdentitiesTableDataModel(UserRequest ureq, List identities, boolean actionEnabled) {
+	ExtendedIdentitiesTableDataModel(UserRequest ureq, List<Identity> identities, boolean actionEnabled) {
 		super(identities);
 		this.actionEnabled = actionEnabled;
 
 		Roles roles = ureq.getUserSession().getRoles();
-		boolean isAdministrativeUser = (roles.isAuthor() || roles.isGroupManager() || roles.isUserManager() || roles.isOLATAdmin());
+		isAdministrativeUser = CoreSpringFactory.getImpl(BaseSecurityModule.class).isUserAllowedAdminProps(roles);
 		userPropertyHandlers = UserManager.getInstance().getUserPropertyHandlersFor(usageIdentifyer, isAdministrativeUser);
 	}
 
@@ -83,27 +86,26 @@ public class ExtendedIdentitiesTableDataModel extends DefaultTableDataModel {
 		setLocale(trans.getLocale());
 		// first column is users login name
 		// default rows
-		DefaultColumnDescriptor cd0 = new DefaultColumnDescriptor("table.identity.name", 0,
-				(actionEnabled ? ExtendedIdentitiesTableControllerFactory.COMMAND_VCARD : null), getLocale());
-		cd0
-				.setIsPopUpWindowAction(true,
-						"height=700, width=900, location=no, menubar=no, resizable=yes, status=no, scrollbars=yes, toolbar=no");
-		tableCtr.addColumnDescriptor(cd0);
-		colCount++;
+		
+		if(isAdministrativeUser) {
+			String action = (actionEnabled ? ExtendedIdentitiesTableControllerFactory.COMMAND_VCARD : null);
+			DefaultColumnDescriptor cd0 = new DefaultColumnDescriptor("table.identity.name", colCount++, action, getLocale());
+			cd0.setIsPopUpWindowAction(true, "height=700, width=900, location=no, menubar=no, resizable=yes, status=no, scrollbars=yes, toolbar=no");
+			tableCtr.addColumnDescriptor(cd0);
+		}
+
 		UserManager um = UserManager.getInstance();
 		// followed by the users fields
 		for (int i = 0; i < userPropertyHandlers.size(); i++) {
 			UserPropertyHandler userPropertyHandler = userPropertyHandlers.get(i);
 			boolean visible = um.isMandatoryUserProperty(usageIdentifyer, userPropertyHandler);
-			tableCtr.addColumnDescriptor(visible, userPropertyHandler.getColumnDescriptor(i + 1, null, getLocale()));
-			colCount++;
+			tableCtr.addColumnDescriptor(visible, userPropertyHandler.getColumnDescriptor(colCount++, null, getLocale()));
 		}
 		// in the end the last login and creation date
-		tableCtr.addColumnDescriptor(false, new DefaultColumnDescriptor("table.identity.lastlogin", colCount, null, getLocale()));
-		colCount++;
+		tableCtr.addColumnDescriptor(false, new DefaultColumnDescriptor("table.identity.lastlogin", colCount++, null, getLocale()));
 		// creation date at the end, enabled by default
-		tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("table.identity.creationdate", colCount, null, getLocale()));
-		colCount++;
+		tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("table.identity.creationdate", colCount++, null, getLocale()));
+
 		if (actionEnabled) {
 			tableCtr.addColumnDescriptor(new StaticColumnDescriptor(ExtendedIdentitiesTableControllerFactory.COMMAND_SELECTUSER,
 					"table.identity.action", trans.translate("action.select")));
@@ -114,41 +116,32 @@ public class ExtendedIdentitiesTableDataModel extends DefaultTableDataModel {
 	 * @see org.olat.core.gui.components.table.TableDataModel#getValueAt(int, int)
 	 */
 	public final Object getValueAt(int row, int col) {
-		Identity identity = getIdentityAt(row);
+		Identity identity = getObject(row);
 		User user = identity.getUser();
-		if (col == 0) {
-			return identity.getName();//TODO username
-
-		} else if (col > 0 && col < userPropertyHandlers.size() + 1) {
+		int offSet = isAdministrativeUser ? 1 : 0;
+		if (col == 0 && isAdministrativeUser) {
+			return identity.getName();
+		}
+		if (col >= offSet && col < userPropertyHandlers.size() + offSet) {
 			// get user property for this column
-			UserPropertyHandler userPropertyHandler = userPropertyHandlers.get(col - 1);
+			UserPropertyHandler userPropertyHandler = userPropertyHandlers.get(col - offSet);
 			String value = userPropertyHandler.getUserProperty(user, getLocale());
 			return (value == null ? "n/a" : value);
-
-		} else if (col == userPropertyHandlers.size() + 1) {
+		}
+		if (col == userPropertyHandlers.size() + offSet) {
 			return identity.getLastLogin();
-		} else if (col == userPropertyHandlers.size() + 2) {
-			return user.getCreationDate();
-
-		} else {
-			return "error";
 		}
+		if (col == userPropertyHandlers.size() + offSet + 1) {
+			return user.getCreationDate();
+		} 
+		return "error";
 	}
 
 	/**
 	 * @see org.olat.core.gui.components.table.TableDataModel#getColumnCount()
 	 */
 	public int getColumnCount() {
-		return colCount;
-	}
-
-	/**
-	 * @param rowid
-	 * @return The identity at the given position in the table
-	 */
-	public Identity getIdentityAt(int rowid) {
-		Identity ident = (Identity) getObject(rowid);
-		return ident;
+		return colCount + 1;
 	}
 
 	/**
@@ -158,10 +151,9 @@ public class ExtendedIdentitiesTableDataModel extends DefaultTableDataModel {
 	public List<Identity> getIdentities(BitSet selection) {
 		List<Identity> identities = new ArrayList<Identity>();
 		for (int i = selection.nextSetBit(0); i >= 0; i = selection.nextSetBit(i + 1)) {
-			Identity identityAt = getIdentityAt(i);
+			Identity identityAt = getObject(i);
 			identities.add(identityAt);
 		}
 		return identities;
 	}
-
 }
\ No newline at end of file
diff --git a/src/main/java/org/olat/admin/user/UserAdminController.java b/src/main/java/org/olat/admin/user/UserAdminController.java
index a648e3ef4ec56861158c1edb80e79aa5221aacae..ec97ce5046b3b3cd84eb4bb63c940e03edfc42e8 100644
--- a/src/main/java/org/olat/admin/user/UserAdminController.java
+++ b/src/main/java/org/olat/admin/user/UserAdminController.java
@@ -36,6 +36,7 @@ import org.olat.basesecurity.BaseSecurityManager;
 import org.olat.basesecurity.BaseSecurityModule;
 import org.olat.basesecurity.Constants;
 import org.olat.basesecurity.SecurityGroup;
+import org.olat.core.CoreSpringFactory;
 import org.olat.core.commons.modules.bc.FolderConfig;
 import org.olat.core.commons.persistence.DBFactory;
 import org.olat.core.gui.UserRequest;
@@ -109,6 +110,8 @@ public class UserAdminController extends BasicController implements Activateable
 	private ProfileAndHomePageEditController userProfileCtr;
 	private GroupOverviewController grpCtr;
 	
+	private final boolean isAdministrativeUser;
+	private final BaseSecurityModule securityModule;
 
 	/**
 	 * Constructor that creates a back - link as default
@@ -118,6 +121,10 @@ public class UserAdminController extends BasicController implements Activateable
 	 */
 	public UserAdminController(UserRequest ureq, WindowControl wControl, Identity identity) {
 		super(ureq, wControl);
+		
+		securityModule = CoreSpringFactory.getImpl(BaseSecurityModule.class);
+		isAdministrativeUser = securityModule.isUserAllowedAdminProps(ureq.getUserSession().getRoles());
+		
 		BaseSecurity mgr = BaseSecurityManager.getInstance();
 		if (!mgr.isIdentityPermittedOnResourceable(
 				ureq.getIdentity(), 
@@ -153,7 +160,7 @@ public class UserAdminController extends BasicController implements Activateable
 		if("tab".equals(entryPoint)) {
 			userTabP.activate(ureq, entries, state);
 		} else if (userTabP != null) {
-				userTabP.setSelectedPane(translate(entryPoint));
+			userTabP.setSelectedPane(translate(entryPoint));
 		}
 	}
 
@@ -339,11 +346,6 @@ public class UserAdminController extends BasicController implements Activateable
 	 * @param identity
 	 */
 	private void exposeUserDataToVC(UserRequest ureq, Identity identity) {		
-		Locale loc = ureq.getLocale();
-		myContent.contextPut("foundUserName", identity.getName());//TODO username
-		myContent.contextPut("foundFirstName", identity.getUser().getProperty(UserConstants.FIRSTNAME, loc));
-		myContent.contextPut("foundLastName", identity.getUser().getProperty(UserConstants.LASTNAME, loc));
-		myContent.contextPut("foundEmail", identity.getUser().getProperty(UserConstants.EMAIL, loc));
 		removeAsListenerAndDispose(portraitCtr);
 		portraitCtr = new DisplayPortraitController(ureq, getWindowControl(), identity, true, true);
 		myContent.put("portrait", portraitCtr.getInitialComponent());
diff --git a/src/main/java/org/olat/admin/user/UserAuthenticationsEditorController.java b/src/main/java/org/olat/admin/user/UserAuthenticationsEditorController.java
index d28f3ba48e066c78f5ecb2f55f1ec9d7113c0f31..5a098396cd78fb7a4266e0a7cb8f830d8e8f4709 100644
--- a/src/main/java/org/olat/admin/user/UserAuthenticationsEditorController.java
+++ b/src/main/java/org/olat/admin/user/UserAuthenticationsEditorController.java
@@ -46,6 +46,7 @@ import org.olat.core.gui.control.controller.BasicController;
 import org.olat.core.gui.control.generic.modal.DialogBoxController;
 import org.olat.core.gui.control.generic.modal.DialogBoxUIFactory;
 import org.olat.core.id.Identity;
+import org.olat.user.UserManager;
 
 /**
  * Initial Date:  Aug 27, 2004
@@ -117,9 +118,10 @@ public class UserAuthenticationsEditorController extends BasicController{
 				String actionid = te.getActionId();
 				if (actionid.equals("delete")) {
 					int rowid = te.getRowId();
-					Authentication auth = (Authentication) authTableModel.getObject(rowid);
-					//TODO username
-					confirmationDialog = activateYesNoDialog(ureq, null, getTranslator().translate("authedit.delete.confirm", new String[] { auth.getProvider(), changeableIdentity.getName() }), confirmationDialog);
+					Authentication auth = authTableModel.getObject(rowid);
+					String fullname = UserManager.getInstance().getUserDisplayName(auth.getIdentity());
+					String msg = translate("authedit.delete.confirm", new String[] { auth.getProvider(), fullname });
+					confirmationDialog = activateYesNoDialog(ureq, null, msg, confirmationDialog);
 					confirmationDialog.setUserObject(auth);
 					return;
 				}
diff --git a/src/main/java/org/olat/admin/user/UserSearchController.java b/src/main/java/org/olat/admin/user/UserSearchController.java
index 7be8d957d74db1080fafff25780c961e7c38fd64..4bf21a0ce67f91f1a78f1c8185abf7a277d41dda 100644
--- a/src/main/java/org/olat/admin/user/UserSearchController.java
+++ b/src/main/java/org/olat/admin/user/UserSearchController.java
@@ -181,8 +181,8 @@ public class UserSearchController extends BasicController {
 		}
 		
 		Roles roles = ureq.getUserSession().getRoles();
-		boolean isAdmin = securityModule.isUserAllowedAdminProps(roles);
-		searchform = new UserSearchForm(ureq, wControl, isAdmin, cancelbutton);
+		isAdministrativeUser = securityModule.isUserAllowedAdminProps(roles);
+		searchform = new UserSearchForm(ureq, wControl, isAdministrativeUser, cancelbutton);
 		listenTo(searchform);
 		searchPanel.setContent(searchform.getInitialComponent());
 	
@@ -194,7 +194,7 @@ public class UserSearchController extends BasicController {
 		if (ajax && autoCompleteAllowed) {
 			// insert a autocompleter search
 			ListProvider provider = new UserSearchListProvider();
-			autocompleterC = new AutoCompleterController(ureq, getWindowControl(), provider, null, isAdmin, 60, 3, null);
+			autocompleterC = new AutoCompleterController(ureq, getWindowControl(), provider, null, isAdministrativeUser, 60, 3, null);
 			listenTo(autocompleterC);
 			myContent.put("autocompletionsearch", autocompleterC.getInitialComponent());
 		}
@@ -204,9 +204,6 @@ public class UserSearchController extends BasicController {
 		tableConfig.setDownloadOffered(false);// no download because user should not download user-list
 		tableCtr = new TableController(tableConfig, ureq, getWindowControl(), myContent.getTranslator());
 		listenTo(tableCtr);
-		
-		isAdministrativeUser = (roles.isAuthor() || roles.isGroupManager() || roles.isUserManager() || roles.isOLATAdmin());
-
 		putInitialPanel(myContent);
 	}
 
diff --git a/src/main/java/org/olat/admin/user/UserSearchForm.java b/src/main/java/org/olat/admin/user/UserSearchForm.java
index d419349655b562d703f8c9f6fa0a348d691e1cda..fb691653f9b62064574bb10ccd1ac35bce4fa904 100644
--- a/src/main/java/org/olat/admin/user/UserSearchForm.java
+++ b/src/main/java/org/olat/admin/user/UserSearchForm.java
@@ -159,6 +159,7 @@ public class UserSearchForm extends FormBasicController {
 	@Override
 	protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) {
 		login = uifactory.addTextElement("login", "search.form.login", 128, "", formLayout);
+		login.setVisible(isAdminProps);
 
 		UserManager um = UserManager.getInstance();
 		Translator tr = Util.createPackageTranslator(
diff --git a/src/main/java/org/olat/admin/user/UserShortDescription.java b/src/main/java/org/olat/admin/user/UserShortDescription.java
index 029cda4eacfda11e1e3a8ad592dcc3c392dbd20b..761eca26a6d88b92e5987046340412bdfda88745 100644
--- a/src/main/java/org/olat/admin/user/UserShortDescription.java
+++ b/src/main/java/org/olat/admin/user/UserShortDescription.java
@@ -27,6 +27,8 @@ package org.olat.admin.user;
 
 import java.util.List;
 
+import org.olat.basesecurity.BaseSecurityModule;
+import org.olat.core.CoreSpringFactory;
 import org.olat.core.gui.UserRequest;
 import org.olat.core.gui.components.Component;
 import org.olat.core.gui.components.velocity.VelocityContainer;
@@ -60,17 +62,21 @@ public class UserShortDescription extends BasicController {
 		String usernameLabel = translate("table.user.login");
 		//use the PropertyHandlerTranslator for the velocityContainer
 		setTranslator(UserManager.getInstance().getPropertyHandlerTranslator(getTranslator()));
-		velocityContainer = this.createVelocityContainer("userShortDescription");
+		velocityContainer = createVelocityContainer("userShortDescription");
 				
 		Roles roles = ureq.getUserSession().getRoles();
-		boolean isAdministrativeUser = (roles.isAuthor() || roles.isGroupManager() || roles.isUserManager() || roles.isOLATAdmin());		
+		boolean isAdministrativeUser = CoreSpringFactory.getImpl(BaseSecurityModule.class).isUserAllowedAdminProps(roles);
+		//(roles.isAuthor() || roles.isGroupManager() || roles.isUserManager() || roles.isOLATAdmin());		
 		userPropertyHandlers = UserManager.getInstance().getUserPropertyHandlersFor(usageIdentifyer, isAdministrativeUser);
 		velocityContainer.contextPut("userPropertyHandlers", userPropertyHandlers);
 		velocityContainer.contextPut("user", identity.getUser());			
-		velocityContainer.contextPut("username", identity.getName());
+		
+		if(getIdentity().equals(identity) || isAdministrativeUser) {
+			velocityContainer.contextPut("username", identity.getName());
+		}
 		velocityContainer.contextPut("usernameLabel", usernameLabel);
 		
-		this.putInitialPanel(velocityContainer);
+		putInitialPanel(velocityContainer);
 	}
 
 	@Override
diff --git a/src/main/java/org/olat/admin/user/UserTableDataModel.java b/src/main/java/org/olat/admin/user/UserTableDataModel.java
index 706b3da4ad3f80d479c90765d1ba50ff1c548ba7..0de7118a3a33cf402ccd3e1e483471ca67b82206 100644
--- a/src/main/java/org/olat/admin/user/UserTableDataModel.java
+++ b/src/main/java/org/olat/admin/user/UserTableDataModel.java
@@ -49,12 +49,14 @@ import org.olat.user.propertyhandlers.UserPropertyHandler;
  */
 public class UserTableDataModel extends DefaultTableDataModel<Identity> {
 
-	private List<UserPropertyHandler> userPropertyHandlers;
+	private final boolean isAdministrativeUser;
+	private final List<UserPropertyHandler> userPropertyHandlers;
 	private static final String usageIdentifyer = UserTableDataModel.class.getCanonicalName();
 	
-	private UserTableDataModel(Locale locale, List<UserPropertyHandler> userPropertyHandlers) {
+	private UserTableDataModel(Locale locale, List<UserPropertyHandler> userPropertyHandlers, boolean isAdministrativeUser) {
 		super(new ArrayList<Identity>());
 		setLocale(locale);
+		this.isAdministrativeUser = isAdministrativeUser;
 		this.userPropertyHandlers = userPropertyHandlers;
 	}
 	
@@ -64,6 +66,7 @@ public class UserTableDataModel extends DefaultTableDataModel<Identity> {
 	public UserTableDataModel(List<Identity> objects, Locale locale, boolean isAdministrativeUser) {
 		super(objects);
 		setLocale(locale);
+		this.isAdministrativeUser = isAdministrativeUser;
 		userPropertyHandlers = UserManager.getInstance().getUserPropertyHandlersFor(usageIdentifyer, isAdministrativeUser);
 	}
 	
@@ -76,12 +79,14 @@ public class UserTableDataModel extends DefaultTableDataModel<Identity> {
 	 */
 	public void addColumnDescriptors(TableController tableCtr, String actionCommand) {
 		// first column is users login name
-		tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("table.user.login", 0, actionCommand, getLocale()));
+		if(isAdministrativeUser) {
+			tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("table.user.login", 0, actionCommand, getLocale()));
+		}
 		// followed by the users fields
 		for (int i = 0; i < userPropertyHandlers.size(); i++) {
 			UserPropertyHandler userPropertyHandler	= userPropertyHandlers.get(i);
 			boolean visible = UserManager.getInstance().isMandatoryUserProperty(usageIdentifyer , userPropertyHandler);
-			tableCtr.addColumnDescriptor(visible, userPropertyHandler.getColumnDescriptor(i+1, null, getLocale()));						
+			tableCtr.addColumnDescriptor(visible, userPropertyHandler.getColumnDescriptor(i+1, actionCommand, getLocale()));						
 		}
 	}
 
@@ -92,7 +97,7 @@ public class UserTableDataModel extends DefaultTableDataModel<Identity> {
 		Identity identity = getObject(row);
 		User user = identity.getUser();
 		if (col == 0) {
-			return identity.getName();//TODO username		
+			return identity.getName();
 
 		} else if ((col-1) < userPropertyHandlers.size()) {
 			UserPropertyHandler userPropertyHandler = userPropertyHandlers.get(col-1);
@@ -113,7 +118,7 @@ public class UserTableDataModel extends DefaultTableDataModel<Identity> {
 
 	@Override
 	public Object createCopyWithEmptyList() {
-		return new UserTableDataModel(getLocale(), userPropertyHandlers);
+		return new UserTableDataModel(getLocale(), userPropertyHandlers, isAdministrativeUser);
 	}
 
 	/**
diff --git a/src/main/java/org/olat/admin/user/UsermanagerUserSearchController.java b/src/main/java/org/olat/admin/user/UsermanagerUserSearchController.java
index ae2d7e54b3c0e8ea969fb29be1a5b72b04ac2c42..05919f373dd464a674f08d17082fbb591270be70 100644
--- a/src/main/java/org/olat/admin/user/UsermanagerUserSearchController.java
+++ b/src/main/java/org/olat/admin/user/UsermanagerUserSearchController.java
@@ -37,9 +37,11 @@ import org.olat.admin.user.bulkChange.UserBulkChangeManager;
 import org.olat.admin.user.bulkChange.UserBulkChangeStep00;
 import org.olat.basesecurity.BaseSecurity;
 import org.olat.basesecurity.BaseSecurityManager;
+import org.olat.basesecurity.BaseSecurityModule;
 import org.olat.basesecurity.PermissionOnResourceable;
 import org.olat.basesecurity.SecurityGroup;
 import org.olat.basesecurity.events.SingleIdentityChosenEvent;
+import org.olat.core.CoreSpringFactory;
 import org.olat.core.commons.fullWebApp.popup.BaseFullWebappPopupLayoutFactory;
 import org.olat.core.commons.persistence.DBFactory;
 import org.olat.core.commons.persistence.PersistenceHelper;
@@ -79,7 +81,6 @@ import org.olat.core.gui.control.generic.wizard.StepsRunContext;
 import org.olat.core.gui.translator.Translator;
 import org.olat.core.id.Identity;
 import org.olat.core.id.OLATResourceable;
-import org.olat.core.id.Roles;
 import org.olat.core.id.context.ContextEntry;
 import org.olat.core.id.context.StateEntry;
 import org.olat.core.id.context.StateMapped;
@@ -130,7 +131,8 @@ public class UsermanagerUserSearchController extends BasicController implements
 	private Link backFromList;
 	private boolean showEmailButton = true;
 	private StepsMainRunController userBulkChangeStepsController;
-	private boolean isAdministrativeUser = false;
+	private final boolean isAdministrativeUser;
+	private final BaseSecurityModule securityModule;
 
 	/**
 	 * Constructor to trigger the user search workflow using a generic search form
@@ -140,7 +142,10 @@ public class UsermanagerUserSearchController extends BasicController implements
 	 */
 	public UsermanagerUserSearchController(UserRequest ureq, WindowControl wControl) {
 		super(ureq, wControl);
-
+		
+		securityModule = CoreSpringFactory.getImpl(BaseSecurityModule.class);
+		isAdministrativeUser = securityModule.isUserAllowedAdminProps(ureq.getUserSession().getRoles());
+		
 		userSearchVC = createVelocityContainer("usermanagerUsersearch");
 
 		mailVC = createVelocityContainer("usermanagerMail");
@@ -154,7 +159,7 @@ public class UsermanagerUserSearchController extends BasicController implements
 		userListVC.contextPut("emptyList", Boolean.FALSE);
 		userListVC.contextPut("showTitle", Boolean.TRUE);
 
-		searchform = new UsermanagerUserSearchForm(ureq, wControl);
+		searchform = new UsermanagerUserSearchForm(ureq, wControl, isAdministrativeUser);
 		listenTo(searchform);
 		
 		userSearchVC.put("usersearch", searchform.getInitialComponent());
@@ -179,6 +184,9 @@ public class UsermanagerUserSearchController extends BasicController implements
 			PermissionOnResourceable[] searchPermissionOnResources, String[] searchAuthProviders, Date searchCreatedAfter,
 			Date searchCreatedBefore, Integer status, boolean showEmailButton) {
 		super(ureq, wControl);
+		
+		securityModule = CoreSpringFactory.getImpl(BaseSecurityModule.class);
+		isAdministrativeUser = securityModule.isUserAllowedAdminProps(ureq.getUserSession().getRoles());
 
 		mailVC = createVelocityContainer("usermanagerMail");
 
@@ -213,6 +221,9 @@ public class UsermanagerUserSearchController extends BasicController implements
 	public UsermanagerUserSearchController(UserRequest ureq, WindowControl wControl, List<Identity> identitiesList,
 			Integer status, boolean showEmailButton, boolean showTitle) {
 		super(ureq, wControl);
+		
+		securityModule = CoreSpringFactory.getImpl(BaseSecurityModule.class);
+		isAdministrativeUser = securityModule.isUserAllowedAdminProps(ureq.getUserSession().getRoles());
 
 		mailVC = createVelocityContainer("usermanagerMail");
 
@@ -426,13 +437,13 @@ public class UsermanagerUserSearchController extends BasicController implements
 				String actionid = te.getActionId();
 				if (actionid.equals(ExtendedIdentitiesTableControllerFactory.COMMAND_SELECTUSER)) {
 					int rowid = te.getRowId();
-					foundIdentity = tdm.getIdentityAt(rowid);
+					foundIdentity = tdm.getObject(rowid);
 					// Tell parentController that a subject has been found
 					fireEvent(ureq, new SingleIdentityChosenEvent(foundIdentity));
 				} else if (actionid.equals(ExtendedIdentitiesTableControllerFactory.COMMAND_VCARD)) {
-					// get identitiy and open new visiting card controller in new window
+					// get identity and open new visiting card controller in new window
 					int rowid = te.getRowId();
-					final Identity identity = tdm.getIdentityAt(rowid);
+					final Identity identity = tdm.getObject(rowid);
 					ControllerCreator userInfoMainControllerCreator = new ControllerCreator() {
 						public Controller createController(UserRequest lureq, WindowControl lwControl) {
 							return new UserInfoMainController(lureq, lwControl, identity);
@@ -460,9 +471,7 @@ public class UsermanagerUserSearchController extends BasicController implements
 					final UserBulkChangeManager ubcMan = UserBulkChangeManager.getInstance();
 					// valid selection: load in wizard
 					Step start = new UserBulkChangeStep00(ureq, selectedIdentities);
-					Roles roles = ureq.getUserSession().getRoles();
-					isAdministrativeUser = (roles.isAuthor() || roles.isGroupManager() || roles.isUserManager() || roles.isOLATAdmin());
-
+					
 					// callback executed in case wizard is finished.
 					StepRunnerCallback finish = new StepRunnerCallback() {
 						public Step execute(UserRequest ureq1, WindowControl wControl1, StepsRunContext runContext) {
@@ -617,13 +626,15 @@ class UsermanagerUserSearchForm extends FormBasicController {
 	private String[] roleKeys, roleValues;
 	private String[] authKeys, authValues;
 	
-	Map <String,FormItem>items;
+	private Map <String,FormItem>items;
+	private final boolean isAdministrativeUser;
 	/**
 	 * @param binderName
 	 * @param cancelbutton
 	 */
-	public UsermanagerUserSearchForm(UserRequest ureq, WindowControl wControl) {
+	public UsermanagerUserSearchForm(UserRequest ureq, WindowControl wControl, boolean isAdministrativeUser) {
 		super(ureq, wControl);
+		this.isAdministrativeUser = isAdministrativeUser;
 
 		UserManager um = UserManager.getInstance();
 		Translator decoratedTranslator = um.getPropertyHandlerTranslator(this.getTranslator());
@@ -794,10 +805,10 @@ class UsermanagerUserSearchForm extends FormBasicController {
 	}
 	
 	@Override
-	@SuppressWarnings("unused")
 	protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) {
 	
 		login = uifactory.addTextElement("login", "search.form.login", 128, "", formLayout);
+		login.setVisible(isAdministrativeUser);
 		items.put("login", login);
 
 		Translator tr = Util.createPackageTranslator(
@@ -863,18 +874,6 @@ class UsermanagerUserSearchForm extends FormBasicController {
 		userLoginBefore = uifactory.addDateChooser("search.form.userLoginBeforeDate", null, formLayout);
 		userLoginBefore.setValidDateCheck("error.search.form.no.valid.datechooser");
 		
-		// creation date constraints
-		/*
-		addFormElement("space3", new SpacerElement(true, false));
-		addFormElement("title.date", new TitleElement("search.form.title.date"));
-		afterDate = new DateElement("search.form.afterDate", getLocale());
-		addFormElement("afterDate", afterDate);
-		beforeDate = new DateElement("search.form.beforeDate", getLocale());
-		addFormElement("beforeDate", beforeDate);
-
-		addSubmitKey("submit.search", "submit.search");
-		 */
-		
 		uifactory.addSpacerElement("spaceBottom", formLayout, false);
 		
 		// Don't use submit button, form should not be marked as dirty since this is
@@ -890,7 +889,6 @@ class UsermanagerUserSearchForm extends FormBasicController {
 	 *      org.olat.core.gui.components.form.flexible.impl.FormEvent)
 	 */
 	@Override
-	@SuppressWarnings("unused")
 	protected void formInnerEvent(UserRequest ureq, FormItem source, FormEvent event) {
 		if (source == searchButton) {
 			source.getRootForm().submit(ureq);			
diff --git a/src/main/java/org/olat/admin/user/_content/userShortDescription.html b/src/main/java/org/olat/admin/user/_content/userShortDescription.html
index bb84c5950fe2ab5c084cf6c55fd55eac80c49f2d..42bb5530fdd4563bbe0224650e4a67b2a43a8bf4 100644
--- a/src/main/java/org/olat/admin/user/_content/userShortDescription.html
+++ b/src/main/java/org/olat/admin/user/_content/userShortDescription.html
@@ -1,9 +1,10 @@
 <table class="b_table">		
+	#if($username)
 	<tr>
 		<td><b>$usernameLabel</b></td>
 		<td>$username</td>
 	</tr>
-	
+	#end
 	#foreach( $propertyHandler in $userPropertyHandlers )		
 	    #if ($propertyHandler.getUserPropertyAsHTML($user, $locale) && $propertyHandler.getUserPropertyAsHTML($user, $locale) != "")		
 		<tr>
diff --git a/src/main/java/org/olat/admin/user/delete/DirectDeleteController.java b/src/main/java/org/olat/admin/user/delete/DirectDeleteController.java
index 467c308b832f16b5d3442c3e39132c1dd4b82b4b..12f116cba1310d849ceb52c2a1d3906befb03d83 100644
--- a/src/main/java/org/olat/admin/user/delete/DirectDeleteController.java
+++ b/src/main/java/org/olat/admin/user/delete/DirectDeleteController.java
@@ -44,6 +44,7 @@ import org.olat.core.gui.control.generic.modal.DialogBoxController;
 import org.olat.core.gui.control.generic.modal.DialogBoxUIFactory;
 import org.olat.core.id.Identity;
 import org.olat.core.logging.AssertException;
+import org.olat.user.UserManager;
 
 /**
  * Controller for 'Direct User Deletion' tab.
@@ -60,15 +61,19 @@ public class DirectDeleteController extends BasicController {
 	private BulkDeleteController bdc;
 	private CloseableModalController cmc;
 	
+	private final UserManager userManager;
+	
 	public DirectDeleteController(UserRequest ureq, WindowControl wControl) {
 		super(ureq, wControl);
+		
+		userManager = UserManager.getInstance();
+		
 		myContent = createVelocityContainer("directdelete");
 
 		initializeUserSearchController(ureq);
 		initializeUserListForm(ureq);
 		
 		putInitialPanel(myContent);
-		
 	}
 
 	/**
@@ -103,7 +108,8 @@ public class DirectDeleteController extends BasicController {
 					showInfo("info.is.not.ready.to.delete");
 					return;
 				}
-				deleteConfirmController = activateOkCancelDialog(ureq, null, translate("readyToDelete.delete.confirm", buildUserNameList(toDelete) ), deleteConfirmController);
+				String names = buildUserNameList(toDelete);
+				deleteConfirmController = activateOkCancelDialog(ureq, null, translate("readyToDelete.delete.confirm", names), deleteConfirmController);
 				return;
 			} else if (event instanceof SingleIdentityChosenEvent) {
 				// single choose event may come from autocompleter user search
@@ -115,8 +121,8 @@ public class DirectDeleteController extends BasicController {
 				toDelete = new ArrayList<Identity>();
 				toDelete.add(uce.getChosenIdentity());
 				
-				//TODO username
-				deleteConfirmController = activateOkCancelDialog(ureq, null, translate("readyToDelete.delete.confirm", uce.getChosenIdentity().getName()), deleteConfirmController);
+				String fullname = userManager.getUserDisplayName(uce.getChosenIdentity());
+				deleteConfirmController = activateOkCancelDialog(ureq, null, translate("readyToDelete.delete.confirm", fullname), deleteConfirmController);
 				return;
 			} else {
 				throw new AssertException("unknown event ::" + event.getCommand());
@@ -136,8 +142,8 @@ public class DirectDeleteController extends BasicController {
 			toDelete = bdc.getToDelete();
 			cmc.deactivate();
 			
-			deleteConfirmController = activateOkCancelDialog(ureq, null, translate("readyToDelete.delete.confirm", buildUserNameList(toDelete)), deleteConfirmController);
-			
+			String names = buildUserNameList(toDelete);
+			deleteConfirmController = activateOkCancelDialog(ureq, null, translate("readyToDelete.delete.confirm", names), deleteConfirmController);
 		} else if (sourceController == cmc) {
 			if (event == Event.CANCELLED_EVENT) {
 				cmc.deactivate();		
@@ -157,7 +163,7 @@ public class DirectDeleteController extends BasicController {
 	}
 
 	/**
-	 * Build comma seperated list of usernames.
+	 * Build comma separated list of usernames.
 	 * @param toDelete
 	 * @return
 	 */
@@ -165,10 +171,9 @@ public class DirectDeleteController extends BasicController {
 		StringBuilder buf = new StringBuilder();
 		for (Identity identity : toDeleteIdentities) {
 			if (buf.length() > 0) {
-				buf.append(",");
+				buf.append(", ");
 			}
-			//TODO username
-			buf.append(identity.getName());
+			buf.append(userManager.getUserDisplayName(identity));
 		}
 		return buf.toString();
 	}
@@ -186,7 +191,7 @@ public class DirectDeleteController extends BasicController {
 		usc = new DeletableUserSearchController(ureq, getWindowControl());
 		listenTo(usc);
 		myContent.put("usersearch", usc.getInitialComponent());
-		myContent.contextPut("deletedusers", new ArrayList());		
+		myContent.contextPut("deletedusers", new ArrayList<Identity>());		
 	}
 	
 	private void initializeUserListForm(UserRequest ureq) {
diff --git a/src/main/java/org/olat/admin/user/delete/ReadyToDeleteController.java b/src/main/java/org/olat/admin/user/delete/ReadyToDeleteController.java
index f73bd925f08716584df88711c1003116a6c36da4..4a8d08f8d10cfb866163d347bc42d2815343e918 100644
--- a/src/main/java/org/olat/admin/user/delete/ReadyToDeleteController.java
+++ b/src/main/java/org/olat/admin/user/delete/ReadyToDeleteController.java
@@ -31,6 +31,8 @@ import java.util.List;
 
 import org.olat.admin.user.UserSearchController;
 import org.olat.admin.user.delete.service.UserDeletionManager;
+import org.olat.basesecurity.BaseSecurityModule;
+import org.olat.core.CoreSpringFactory;
 import org.olat.core.commons.persistence.DBFactory;
 import org.olat.core.gui.UserRequest;
 import org.olat.core.gui.components.Component;
@@ -48,7 +50,6 @@ import org.olat.core.gui.control.WindowControl;
 import org.olat.core.gui.control.controller.BasicController;
 import org.olat.core.gui.control.generic.modal.DialogBoxController;
 import org.olat.core.gui.control.generic.modal.DialogBoxUIFactory;
-import org.olat.core.gui.translator.PackageTranslator;
 import org.olat.core.gui.translator.Translator;
 import org.olat.core.id.Identity;
 import org.olat.core.id.Roles;
@@ -62,8 +63,6 @@ import org.olat.user.UserManager;
  * @author Christian Guretzki
  */
 public class ReadyToDeleteController extends BasicController {
-	private static final String MY_PACKAGE = Util.getPackageName(ReadyToDeleteController.class);
-	private static final String PACKAGE_USER_SEARCH = Util.getPackageName(UserSearchController.class);
 
 	private static final String ACTION_SINGLESELECT_CHOOSE = "ssc";
 	private static final String ACTION_MULTISELECT_CHOOSE = "msc";
@@ -87,8 +86,8 @@ public class ReadyToDeleteController extends BasicController {
 		
 		super(ureq, wControl);
 		
-		PackageTranslator fallbackTrans = new PackageTranslator(PACKAGE_USER_SEARCH, ureq.getLocale());
-		this.setTranslator( new PackageTranslator( MY_PACKAGE, ureq.getLocale(), fallbackTrans) );
+		Translator fallbackTrans = Util.createPackageTranslator(UserSearchController.class, ureq.getLocale());
+		setTranslator(Util.createPackageTranslator(ReadyToDeleteController.class, ureq.getLocale(), fallbackTrans));
     //	use the PropertyHandlerTranslator	as tableCtr translator
 		propertyHandlerTranslator = UserManager.getInstance().getPropertyHandlerTranslator(getTranslator());
 		
@@ -98,7 +97,8 @@ public class ReadyToDeleteController extends BasicController {
 		myContent.put("panel", readyToDeletePanel);
 
 		Roles roles = ureq.getUserSession().getRoles();
-		isAdministrativeUser = (roles.isAuthor() || roles.isGroupManager() || roles.isUserManager() || roles.isOLATAdmin());		
+		isAdministrativeUser = CoreSpringFactory.getImpl(BaseSecurityModule.class).isUserAllowedAdminProps(roles);
+		//(roles.isAuthor() || roles.isGroupManager() || roles.isUserManager() || roles.isOLATAdmin());		
 		
 		initializeTableController(ureq);
 		initializeContent();
@@ -183,8 +183,8 @@ public class ReadyToDeleteController extends BasicController {
 		tableCtr = new TableController(tableConfig, ureq, getWindowControl(), this.propertyHandlerTranslator);
 		listenTo(tableCtr);
 		
-		List l = UserDeletionManager.getInstance().getIdentitiesInDeletionProcess(UserDeletionManager.getInstance().getDeleteEmailDuration());
-		tdm = new UserDeleteTableModel(l, ureq.getLocale(), isAdministrativeUser);
+		List<Identity> l = UserDeletionManager.getInstance().getIdentitiesInDeletionProcess(UserDeletionManager.getInstance().getDeleteEmailDuration());
+		tdm = new UserDeleteTableModel(l, getLocale(), isAdministrativeUser);
 		tdm.addColumnDescriptors(tableCtr, null,"table.identity.deleteEmail");	
 		tableCtr.addColumnDescriptor(new StaticColumnDescriptor(ACTION_SINGLESELECT_CHOOSE, "table.header.action", translate("action.activate")));				
 		tableCtr.addMultiSelectAction("action.ready.to.delete", ACTION_MULTISELECT_CHOOSE);		
@@ -202,7 +202,7 @@ public class ReadyToDeleteController extends BasicController {
 	}
 
 	protected void updateUserList() {
-		List l = UserDeletionManager.getInstance().getIdentitiesReadyToDelete(UserDeletionManager.getInstance().getDeleteEmailDuration());		
+		List<Identity> l = UserDeletionManager.getInstance().getIdentitiesReadyToDelete(UserDeletionManager.getInstance().getDeleteEmailDuration());		
 		tdm.setObjects(l);	
 		tableCtr.setTableDataModel(tdm);
 	}
diff --git a/src/main/java/org/olat/admin/user/delete/SelectionController.java b/src/main/java/org/olat/admin/user/delete/SelectionController.java
index 90f9d60ddcb2f851a432fad60ac3a744f22910e5..2e436db1448782afe6d4a54d4015bd05d87826b4 100644
--- a/src/main/java/org/olat/admin/user/delete/SelectionController.java
+++ b/src/main/java/org/olat/admin/user/delete/SelectionController.java
@@ -30,6 +30,8 @@ import java.util.List;
 import org.apache.velocity.VelocityContext;
 import org.olat.admin.user.UserSearchController;
 import org.olat.admin.user.delete.service.UserDeletionManager;
+import org.olat.basesecurity.BaseSecurityModule;
+import org.olat.core.CoreSpringFactory;
 import org.olat.core.gui.UserRequest;
 import org.olat.core.gui.components.Component;
 import org.olat.core.gui.components.form.flexible.FormItemContainer;
@@ -51,7 +53,6 @@ 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.closablewrapper.CloseableModalController;
-import org.olat.core.gui.translator.PackageTranslator;
 import org.olat.core.gui.translator.Translator;
 import org.olat.core.id.Identity;
 import org.olat.core.id.Roles;
@@ -67,8 +68,6 @@ import org.olat.user.UserManager;
  * @author Christian Guretzki
  */
 public class SelectionController extends BasicController {
-	private static final String MY_PACKAGE = Util.getPackageName(SelectionController.class);
-	private static final String PACKAGE_USER_SEARCH = Util.getPackageName(UserSearchController.class);
 	
 	private static final String ACTION_SINGLESELECT_CHOOSE = "ssc";
 	private static final String ACTION_MULTISELECT_CHOOSE = "msc";
@@ -84,7 +83,7 @@ public class SelectionController extends BasicController {
 	private VelocityContainer selectionListContent;
 	private Link editParameterLink;
 	private MailNotificationEditController deleteUserMailCtr;
-	private List selectedIdentities;
+	private List<Identity> selectedIdentities;
   private boolean isAdministrativeUser;
   private Translator propertyHandlerTranslator;
   
@@ -98,15 +97,16 @@ public class SelectionController extends BasicController {
 	public SelectionController(UserRequest ureq, WindowControl wControl) {
 		super (ureq, wControl);
 		
-		PackageTranslator fallbackTrans = new PackageTranslator(PACKAGE_USER_SEARCH, ureq.getLocale());
-		this.setTranslator( new PackageTranslator( MY_PACKAGE, ureq.getLocale(), fallbackTrans) );
+		Translator fallbackTrans = Util.createPackageTranslator(UserSearchController.class, getLocale());
+		setTranslator(Util.createPackageTranslator(SelectionController.class, getLocale(), fallbackTrans));
 		//use the PropertyHandlerTranslator	as tableCtr translator
 		propertyHandlerTranslator = UserManager.getInstance().getPropertyHandlerTranslator(getTranslator());
 				
 		myContent = this.createVelocityContainer("panel");
 
 		Roles roles = ureq.getUserSession().getRoles();
-		isAdministrativeUser = (roles.isAuthor() || roles.isGroupManager() || roles.isUserManager() || roles.isOLATAdmin());		
+		isAdministrativeUser = CoreSpringFactory.getImpl(BaseSecurityModule.class).isUserAllowedAdminProps(roles);
+		//(roles.isAuthor() || roles.isGroupManager() || roles.isUserManager() || roles.isOLATAdmin());		
 		
 		userSelectionPanel = new Panel("userSelectionPanel");
 		userSelectionPanel.addListener(this);
@@ -114,7 +114,7 @@ public class SelectionController extends BasicController {
 		initializeContent();
 		myContent.put("panel", userSelectionPanel);
 		
-		this.putInitialPanel(myContent);
+		putInitialPanel(myContent);
 	}
 
 	private void initializeContent() {
@@ -216,7 +216,7 @@ public class SelectionController extends BasicController {
 			
 			cmc.activate();
 		} else {			
-			this.showWarning("nothing.selected.msg");
+			showWarning("nothing.selected.msg");
 		}
 	}
 
@@ -228,7 +228,7 @@ public class SelectionController extends BasicController {
 		tableCtr = new TableController(tableConfig, ureq, getWindowControl(), this.propertyHandlerTranslator);
 		listenTo(tableCtr);
 		
-		List l = UserDeletionManager.getInstance().getDeletableIdentities(UserDeletionManager.getInstance().getLastLoginDuration());		
+		List<Identity> l = UserDeletionManager.getInstance().getDeletableIdentities(UserDeletionManager.getInstance().getLastLoginDuration());		
 		tdm = new UserDeleteTableModel(l, ureq.getLocale(), isAdministrativeUser);				
 		tdm.addColumnDescriptors(tableCtr, null);		
 		tableCtr.addColumnDescriptor(new StaticColumnDescriptor(ACTION_SINGLESELECT_CHOOSE, "table.header.action", translate("action.activate")));
@@ -238,7 +238,7 @@ public class SelectionController extends BasicController {
 	}
 
 	public void updateUserList() {
-		List l = UserDeletionManager.getInstance().getDeletableIdentities(UserDeletionManager.getInstance().getLastLoginDuration());		
+		List<Identity> l = UserDeletionManager.getInstance().getDeletableIdentities(UserDeletionManager.getInstance().getLastLoginDuration());		
 		tdm.setObjects(l);	
 		tableCtr.setTableDataModel(tdm);			
 	}
diff --git a/src/main/java/org/olat/admin/user/delete/StatusController.java b/src/main/java/org/olat/admin/user/delete/StatusController.java
index 4359abefb83cb99df12f5f59aee8699a77d378dd..b46eca345bd81a45428984f9a292abd751f77ec0 100644
--- a/src/main/java/org/olat/admin/user/delete/StatusController.java
+++ b/src/main/java/org/olat/admin/user/delete/StatusController.java
@@ -29,6 +29,8 @@ import java.util.List;
 
 import org.olat.admin.user.UserSearchController;
 import org.olat.admin.user.delete.service.UserDeletionManager;
+import org.olat.basesecurity.BaseSecurityModule;
+import org.olat.core.CoreSpringFactory;
 import org.olat.core.gui.UserRequest;
 import org.olat.core.gui.components.Component;
 import org.olat.core.gui.components.panel.Panel;
@@ -42,7 +44,6 @@ 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.translator.PackageTranslator;
 import org.olat.core.gui.translator.Translator;
 import org.olat.core.id.Identity;
 import org.olat.core.id.Roles;
@@ -55,8 +56,6 @@ import org.olat.user.UserManager;
  * @author Christian Guretzki
  */
 public class StatusController extends BasicController {
-	private static final String MY_PACKAGE = Util.getPackageName(StatusController.class);
-	private static final String PACKAGE_USER_SEARCH = Util.getPackageName(UserSearchController.class);
 	
 	private static final String ACTION_SINGLESELECT_CHOOSE = "ssc";
 	
@@ -76,15 +75,16 @@ public class StatusController extends BasicController {
 	 */
 	public StatusController(UserRequest ureq, WindowControl wControl) {		
 		super(ureq, wControl);
-		PackageTranslator fallbackTrans = new PackageTranslator(PACKAGE_USER_SEARCH, ureq.getLocale());
-		this.setTranslator( new PackageTranslator( MY_PACKAGE, ureq.getLocale(), fallbackTrans) );
+		Translator fallbackTrans = Util.createPackageTranslator(UserSearchController.class, getLocale());
+		setTranslator(Util.createPackageTranslator(StatusController.class, getLocale(), fallbackTrans));
     //	use the PropertyHandlerTranslator	as tableCtr translator
 		propertyHandlerTranslator = UserManager.getInstance().getPropertyHandlerTranslator(getTranslator());
 		
-		myContent = this.createVelocityContainer("deletestatus");
+		myContent = createVelocityContainer("deletestatus");
 		
 		Roles roles = ureq.getUserSession().getRoles();
-		isAdministrativeUser = (roles.isAuthor() || roles.isGroupManager() || roles.isUserManager() || roles.isOLATAdmin());		
+		isAdministrativeUser = CoreSpringFactory.getImpl(BaseSecurityModule.class).isUserAllowedAdminProps(roles);
+			//(roles.isAuthor() || roles.isGroupManager() || roles.isUserManager() || roles.isOLATAdmin());		
 
 		userDeleteStatusPanel = new Panel("userDeleteStatusPanel");
 		userDeleteStatusPanel.addListener(this);
@@ -94,7 +94,7 @@ public class StatusController extends BasicController {
 
 		initializeTableController(ureq);		
 		
-		this.putInitialPanel(myContent);
+		putInitialPanel(myContent);
 	}
 
 	/**
@@ -133,7 +133,7 @@ public class StatusController extends BasicController {
 		tableCtr = new TableController(tableConfig, ureq, getWindowControl(), this.propertyHandlerTranslator);
 		listenTo(tableCtr);
 				
-		List l = UserDeletionManager.getInstance().getIdentitiesInDeletionProcess(UserDeletionManager.getInstance().getDeleteEmailDuration());
+		List<Identity> l = UserDeletionManager.getInstance().getIdentitiesInDeletionProcess(UserDeletionManager.getInstance().getDeleteEmailDuration());
 		tdm = new UserDeleteTableModel(l, ureq.getLocale(), isAdministrativeUser);
 		tdm.addColumnDescriptors(tableCtr, null,"table.identity.deleteEmail");	
 		tableCtr.addColumnDescriptor(new StaticColumnDescriptor(ACTION_SINGLESELECT_CHOOSE, "table.header.action", translate("action.activate")));
@@ -144,7 +144,7 @@ public class StatusController extends BasicController {
 	}
 
 	protected void updateUserList() {
-		List l = UserDeletionManager.getInstance().getIdentitiesInDeletionProcess(UserDeletionManager.getInstance().getDeleteEmailDuration());		
+		List<Identity> l = UserDeletionManager.getInstance().getIdentitiesInDeletionProcess(UserDeletionManager.getInstance().getDeleteEmailDuration());		
 		tdm.setObjects(l); 
 		tableCtr.setTableDataModel(tdm);			
 	}
diff --git a/src/main/java/org/olat/admin/user/delete/UserDeleteTableModel.java b/src/main/java/org/olat/admin/user/delete/UserDeleteTableModel.java
index e498a769b930ba2756a3ada3438aa33c19ddb7c0..4e7cd6f07a377d253387ab10178e21547fdade7a 100644
--- a/src/main/java/org/olat/admin/user/delete/UserDeleteTableModel.java
+++ b/src/main/java/org/olat/admin/user/delete/UserDeleteTableModel.java
@@ -46,9 +46,10 @@ import org.olat.user.propertyhandlers.UserPropertyHandler;
  * 
  * @author Christian Guretzki
  */
-public class UserDeleteTableModel extends DefaultTableDataModel {
+public class UserDeleteTableModel extends DefaultTableDataModel<Identity> {
 
-	private List<UserPropertyHandler> userPropertyHandlers;
+	private final List<UserPropertyHandler> userPropertyHandlers;
+	private final boolean isAdministrativeUser;
 	private static final String usageIdentifyer = UserDeleteTableModel.class.getCanonicalName();
 	
 	/**
@@ -57,9 +58,10 @@ public class UserDeleteTableModel extends DefaultTableDataModel {
 	 * @param locale
 	 * @param isAdministrativeUser
 	 */
-	public UserDeleteTableModel(List objects, Locale locale, boolean isAdministrativeUser) {
+	public UserDeleteTableModel(List<Identity> objects, Locale locale, boolean isAdministrativeUser) {
 		super(objects);
-		setLocale(locale);		
+		setLocale(locale);
+		this.isAdministrativeUser = isAdministrativeUser;
 		userPropertyHandlers = UserManager.getInstance().getUserPropertyHandlersFor(usageIdentifyer, isAdministrativeUser);
 	}
 		
@@ -74,14 +76,16 @@ public class UserDeleteTableModel extends DefaultTableDataModel {
 	 */
 	public void addColumnDescriptors(TableController tableCtr, String actionCommand) {
 		// first column is the username
-		tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("table.user.login", 0, actionCommand, getLocale()));
+		if(isAdministrativeUser) {
+			tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("table.user.login", 301, actionCommand, getLocale()));
+		}
 		// followed by the users fields
 		for (int i = 0; i < userPropertyHandlers.size(); i++) {
 			UserPropertyHandler userPropertyHandler	= userPropertyHandlers.get(i);
 			boolean visible = UserManager.getInstance().isMandatoryUserProperty(usageIdentifyer , userPropertyHandler);
-			tableCtr.addColumnDescriptor(visible, userPropertyHandler.getColumnDescriptor(i+1, null, getLocale()));						
+			tableCtr.addColumnDescriptor(visible, userPropertyHandler.getColumnDescriptor(i, null, getLocale()));						
 		}
-		tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("table.user.lastlogin", getColumnCount()-2, actionCommand, getLocale()));
+		tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("table.user.lastlogin", 302, actionCommand, getLocale()));
 	}
 	
 	/**
@@ -92,7 +96,7 @@ public class UserDeleteTableModel extends DefaultTableDataModel {
 	 */
 	public void addColumnDescriptors(TableController tableCtr, String actionCommand, String deleteEmailKey) {
 		addColumnDescriptors(tableCtr, actionCommand);
-		tableCtr.addColumnDescriptor(new DefaultColumnDescriptor(deleteEmailKey, getColumnCount()-1, actionCommand, getLocale()));
+		tableCtr.addColumnDescriptor(new DefaultColumnDescriptor(deleteEmailKey, 303, actionCommand, getLocale()));
 	}
 
 	/**
@@ -100,18 +104,19 @@ public class UserDeleteTableModel extends DefaultTableDataModel {
 	 * @see org.olat.core.gui.components.table.DefaultTableDataModel#getValueAt(int, int)
 	 */
 	public Object getValueAt(int row, int col) {		
-		Identity identity = (Identity) getObject(row);
+		Identity identity = getObject(row);
 		User user = identity.getUser();
-		if (col == 0) {
-			return identity.getName();//TODO username	
-		} else if (col < userPropertyHandlers.size()+1) {
-			UserPropertyHandler userPropertyHandler = userPropertyHandlers.get(col-1);
+
+		if (col == 301) {
+			return identity.getName();
+		} else if (col < userPropertyHandlers.size()) {
+			UserPropertyHandler userPropertyHandler = userPropertyHandlers.get(col);
 			String value = userPropertyHandler.getUserProperty(user, getLocale());
 			return (value == null ? "n/a" : value);			
-		} else if(col == userPropertyHandlers.size()+1) {
+		} else if(col == 302) {
 			Date lastLogin= identity.getLastLogin();
 			return (lastLogin == null ? "n/a" : lastLogin);			
-		} else if(col == userPropertyHandlers.size()+2) {
+		} else if(col == 303) {
 			LifeCycleEntry lcEvent = LifeCycleManager.createInstanceFor(identity).lookupLifeCycleEntry(UserDeletionManager.SEND_DELETE_EMAIL_ACTION);
 			if (lcEvent == null) {
 				return "n/a";
diff --git a/src/main/java/org/olat/admin/user/delete/service/UserDeletionManager.java b/src/main/java/org/olat/admin/user/delete/service/UserDeletionManager.java
index bc8821b459450ba7f14a761c8469d7cb8f732068..c785f614e444f7e20976b64c350a05f54ea6a976 100644
--- a/src/main/java/org/olat/admin/user/delete/service/UserDeletionManager.java
+++ b/src/main/java/org/olat/admin/user/delete/service/UserDeletionManager.java
@@ -184,7 +184,7 @@ public class UserDeletionManager extends BasicManager {
 	 * @param lastLoginDuration  last-login duration in month
 	 * @return List of Identity objects
 	 */
-	public List getDeletableIdentities(int lastLoginDuration) {
+	public List<Identity> getDeletableIdentities(int lastLoginDuration) {
 		Calendar lastLoginLimit = Calendar.getInstance();
 		lastLoginLimit.add(Calendar.MONTH, - lastLoginDuration);
 		logDebug("lastLoginLimit=" + lastLoginLimit);
@@ -194,7 +194,7 @@ public class UserDeletionManager extends BasicManager {
 			+ " and (ident.lastLogin = null or ident.lastLogin < :lastLogin)";	
 		DBQuery dbq = DBFactory.getInstance().createQuery(queryStr);
 		dbq.setDate("lastLogin", lastLoginLimit.getTime());
-		List identities = dbq.list();
+		List<Identity> identities = dbq.list();
 		// 2. get all 'active' identities in deletion process
 		queryStr = "select ident from org.olat.core.id.Identity as ident"
 			+ " , org.olat.commons.lifecycle.LifeCycleEntry as le"
@@ -202,7 +202,7 @@ public class UserDeletionManager extends BasicManager {
 			+ " and le.persistentTypeName ='" + IdentityImpl.class.getName() + "'" 
 			+ " and le.action ='" + SEND_DELETE_EMAIL_ACTION + "' ";
 		dbq = DBFactory.getInstance().createQuery(queryStr);
-		List identitiesInProcess = dbq.list();
+		List<Identity> identitiesInProcess = dbq.list();
 		// 3. Remove all identities in deletion-process from all inactive-identities
 		identities.removeAll(identitiesInProcess);
 		return identities;		 
@@ -214,7 +214,7 @@ public class UserDeletionManager extends BasicManager {
 	 * @param deleteEmailDuration  Duration of user-deletion-process in days
 	 * @return List of Identity objects
 	 */
-	public List getIdentitiesInDeletionProcess(int deleteEmailDuration) {
+	public List<Identity> getIdentitiesInDeletionProcess(int deleteEmailDuration) {
 		Calendar deleteEmailLimit = Calendar.getInstance();
 		deleteEmailLimit.add(Calendar.DAY_OF_MONTH, - (deleteEmailDuration-1));
 		logDebug("deleteEmailLimit=" + deleteEmailLimit);
@@ -235,7 +235,7 @@ public class UserDeletionManager extends BasicManager {
 	 * @param deleteEmailDuration  Duration of user-deletion-process in days
 	 * @return List of Identity objects
 	 */
-	public List getIdentitiesReadyToDelete(int deleteEmailDuration) {
+	public List<Identity> getIdentitiesReadyToDelete(int deleteEmailDuration) {
 		Calendar deleteEmailLimit = Calendar.getInstance();
 		deleteEmailLimit.add(Calendar.DAY_OF_MONTH, - (deleteEmailDuration - 1));
 		logDebug("deleteEmailLimit=" + deleteEmailLimit);
diff --git a/src/main/java/org/olat/basesecurity/BaseSecurityModule.java b/src/main/java/org/olat/basesecurity/BaseSecurityModule.java
index ec426c3e7ca636ce5cdd6c0c7e7b852d2d536f9d..5a5802efaee7a18266b92733a915d6749a213d05 100644
--- a/src/main/java/org/olat/basesecurity/BaseSecurityModule.java
+++ b/src/main/java/org/olat/basesecurity/BaseSecurityModule.java
@@ -62,13 +62,13 @@ public class BaseSecurityModule extends AbstractOLATModule {
 	private static final String USERSEARCH_ADMINPROPS_USERS = "userSearchAdminPropsForUsers";
 	private static final String USERSEARCH_ADMINPROPS_AUTHORS = "userSearchAdminPropsForAuthors";
 	private static final String USERSEARCH_ADMINPROPS_USERMANAGERS = "userSearchAdminPropsForUsermanagers";
-	private static final String USERSEARCH_ADMINPROPS_GROUPMANAGERS = "userSearchAdminPropsForUsermanagers";
+	private static final String USERSEARCH_ADMINPROPS_GROUPMANAGERS = "userSearchAdminPropsForGroupmanagers";
 	private static final String USERSEARCH_ADMINPROPS_ADMINISTRATORS = "userSearchAdminPropsForAdministrators";
 
 	private static final String USERSEARCHAUTOCOMPLETE_USERS = "userSearchAutocompleteForUsers";
 	private static final String USERSEARCHAUTOCOMPLETE_AUTHORS = "userSearchAutocompleteForAuthors";
 	private static final String USERSEARCHAUTOCOMPLETE_USERMANAGERS = "userSearchAutocompleteForUsermanagers";
-	private static final String USERSEARCHAUTOCOMPLETE_GROUPMANAGERS = "userSearchAutocompleteForUsermanagers";
+	private static final String USERSEARCHAUTOCOMPLETE_GROUPMANAGERS = "userSearchAutocompleteForGroupmanagers";
 	private static final String USERSEARCHAUTOCOMPLETE_ADMINISTRATORS = "userSearchAutocompleteForAdministrators";
 	private static final String USERSEARCH_MAXRESULTS = "userSearchMaxResults";
 	
diff --git a/src/main/java/org/olat/core/commons/editor/htmleditor/HTMLEditorController.java b/src/main/java/org/olat/core/commons/editor/htmleditor/HTMLEditorController.java
index 35f4650694418184ce430cbe41681732cb17bfa0..07707fee3e87b8a288a80d2ec42fc8e2ec42bcae 100644
--- a/src/main/java/org/olat/core/commons/editor/htmleditor/HTMLEditorController.java
+++ b/src/main/java/org/olat/core/commons/editor/htmleditor/HTMLEditorController.java
@@ -53,6 +53,7 @@ import org.olat.core.util.vfs.VFSContainer;
 import org.olat.core.util.vfs.VFSItem;
 import org.olat.core.util.vfs.VFSLeaf;
 import org.olat.core.util.vfs.version.Versionable;
+import org.olat.user.UserManager;
 
 /**
  * Description:<br>
@@ -169,8 +170,9 @@ public class HTMLEditorController extends FormBasicController {
 			VelocityContainer vc = (VelocityContainer) flc.getComponent();
 			if (!lock.isSuccess()) {
 				vc.contextPut("locked", Boolean.TRUE);
-				vc.contextPut("lockOwner", lock.getOwner().getName());//TODO username
-				this.editable = false;
+				String fullname = UserManager.getInstance().getUserDisplayName(lock.getOwner());
+				vc.contextPut("lockOwner", fullname);
+				editable = false;
 				return;
 			} else {
 				vc.contextPut("locked", Boolean.FALSE);				
diff --git a/src/main/java/org/olat/core/commons/modules/bc/meta/MetaInfoFileImpl.java b/src/main/java/org/olat/core/commons/modules/bc/meta/MetaInfoFileImpl.java
index 125983208b4bbd2c35b941bd2f07a613e87db8c7..5f72aba51b4b557bac7c72df3d2272ca31b15a76 100644
--- a/src/main/java/org/olat/core/commons/modules/bc/meta/MetaInfoFileImpl.java
+++ b/src/main/java/org/olat/core/commons/modules/bc/meta/MetaInfoFileImpl.java
@@ -52,14 +52,11 @@ import org.dom4j.Document;
 import org.dom4j.Element;
 import org.olat.basesecurity.BaseSecurityManager;
 import org.olat.core.commons.modules.bc.FolderConfig;
-import org.olat.core.commons.modules.bc.meta.MetaInfo;
 import org.olat.core.commons.services.thumbnail.CannotGenerateThumbnailException;
 import org.olat.core.commons.services.thumbnail.FinalSize;
 import org.olat.core.commons.services.thumbnail.ThumbnailService;
 import org.olat.core.gui.util.CSSHelper;
 import org.olat.core.id.Identity;
-import org.olat.core.id.User;
-import org.olat.core.id.UserConstants;
 import org.olat.core.logging.OLog;
 import org.olat.core.logging.Tracing;
 import org.olat.core.util.FileUtils;
@@ -70,6 +67,7 @@ import org.olat.core.util.vfs.OlatRelPathImpl;
 import org.olat.core.util.vfs.VFSContainer;
 import org.olat.core.util.vfs.VFSLeaf;
 import org.olat.core.util.xml.XMLParser;
+import org.olat.user.UserManager;
 import org.xml.sax.Attributes;
 import org.xml.sax.InputSource;
 import org.xml.sax.SAXParseException;
@@ -621,22 +619,15 @@ public class MetaInfoFileImpl extends DefaultHandler implements MetaInfo {
 		if (authorIdentKey == null) {
 			return "-";
 		} else {
-			Identity identity = BaseSecurityManager.getInstance().loadIdentityByKey(authorIdentKey);
-			if (identity == null) {
-				log.warn("Found no idenitiy with key='" + authorIdentKey + "'");
+			String fullName = UserManager.getInstance().getUserDisplayName(authorIdentKey);
+			if (fullName == null) {
+				log.warn("Found no identity with key='" + authorIdentKey + "'");
 				return "-";
 			}
-			User user = identity.getUser();
-			String formattedName = user.getProperty(UserConstants.FIRSTNAME, null); 
-			formattedName = formattedName + " " + user.getProperty(UserConstants.LASTNAME, null); 
-			//TODO: add link to user profile when checking in 4289/4295 and remove reference to loginname
-			formattedName = formattedName + " (" + identity.getName() + ")";//TODO username
-			return formattedName; 
+			return fullName; 
 		}	
 	}
 	
-
-	
 	/**
 	 * @return comment
 	 */
diff --git a/src/main/java/org/olat/core/commons/modules/bc/version/DeletedFileListController.java b/src/main/java/org/olat/core/commons/modules/bc/version/DeletedFileListController.java
index 69041589b1b90c3ef8aae4aaf388863c4ef12862..c54fc0d6480bc2d2ab09fdd36436c4dae0002c59 100644
--- a/src/main/java/org/olat/core/commons/modules/bc/version/DeletedFileListController.java
+++ b/src/main/java/org/olat/core/commons/modules/bc/version/DeletedFileListController.java
@@ -29,6 +29,7 @@ import java.util.List;
 import java.util.Locale;
 import java.util.Map;
 
+import org.olat.basesecurity.BaseSecurityModule;
 import org.olat.core.CoreSpringFactory;
 import org.olat.core.commons.modules.bc.commands.FolderCommand;
 import org.olat.core.commons.modules.bc.commands.FolderCommandStatus;
@@ -98,7 +99,8 @@ public class DeletedFileListController extends BasicController {
 		deletedFiles = VersionsManager.getInstance().getDeletedFiles(container);
 		userManager = CoreSpringFactory.getImpl(UserManager.class);
 		
-		isAdmin = ureq.getUserSession().getRoles().isOLATAdmin();
+		isAdmin = CoreSpringFactory.getImpl(BaseSecurityModule.class)
+				.isUserAllowedAdminProps(ureq.getUserSession().getRoles());
 
 		TableGuiConfiguration summaryTableConfig = new TableGuiConfiguration();
 		summaryTableConfig.setDownloadOffered(false);
diff --git a/src/main/java/org/olat/core/commons/modules/bc/version/RevisionListController.java b/src/main/java/org/olat/core/commons/modules/bc/version/RevisionListController.java
index 57af17e98a04c3e756da98ba859a1d7a68edb8a4..9fa94027df9d21bd29b648644493dd66517afa69 100644
--- a/src/main/java/org/olat/core/commons/modules/bc/version/RevisionListController.java
+++ b/src/main/java/org/olat/core/commons/modules/bc/version/RevisionListController.java
@@ -32,6 +32,7 @@ import java.util.Locale;
 import java.util.Map;
 
 import org.olat.basesecurity.BaseSecurityManager;
+import org.olat.basesecurity.BaseSecurityModule;
 import org.olat.basesecurity.IdentityShort;
 import org.olat.core.CoreSpringFactory;
 import org.olat.core.commons.modules.bc.commands.FolderCommand;
@@ -99,7 +100,8 @@ public class RevisionListController extends BasicController {
 	public RevisionListController(UserRequest ureq, WindowControl wControl, Versionable versionedFile, String title, String description) {
 		super(ureq, wControl);
 		
-		isAdmin = ureq.getUserSession().getRoles().isOLATAdmin();
+		isAdmin = CoreSpringFactory.getImpl(BaseSecurityModule.class)
+				.isUserAllowedAdminProps(ureq.getUserSession().getRoles());
 		userManager = CoreSpringFactory.getImpl(UserManager.class);
 		
 		//reload the file with all possible precautions
@@ -336,7 +338,7 @@ public class RevisionListController extends BasicController {
 			StringBuilder sb = new StringBuilder();
 			sb.append(userManager.getUserDisplayName(id));
 			if(isAdmin) {
-				sb.append(" (").append(name).append(")");//TODO username
+				sb.append(" (").append(name).append(")");
 			}
 			return sb.toString();
 		}
diff --git a/src/main/java/org/olat/core/commons/modules/bc/version/VersionCommentController.java b/src/main/java/org/olat/core/commons/modules/bc/version/VersionCommentController.java
index 2c8958a61c20acb176617932ec331ac881437a4d..a3687157edd48341bd7f1267ed067a96bb023b0b 100644
--- a/src/main/java/org/olat/core/commons/modules/bc/version/VersionCommentController.java
+++ b/src/main/java/org/olat/core/commons/modules/bc/version/VersionCommentController.java
@@ -61,7 +61,6 @@ public class VersionCommentController extends FormBasicController {
 		initForm(ureq);
 	}
 	
-	@SuppressWarnings("unused") 
 	@Override
 	protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) {
 		if(comment && lock) {
diff --git a/src/main/java/org/olat/core/util/mail/MailHelper.java b/src/main/java/org/olat/core/util/mail/MailHelper.java
index f265da30f50e254991ec0bc3b44daaa3f9ba8b7d..40140429518075ad2cf6f8bf797f02668f1dd0f5 100644
--- a/src/main/java/org/olat/core/util/mail/MailHelper.java
+++ b/src/main/java/org/olat/core/util/mail/MailHelper.java
@@ -197,8 +197,13 @@ public class MailHelper {
 				for (Identity identity : failedIdentites) {
 					User user = identity.getUser();
 					warnings.append("<li>");
-					warnings.append(trans.translate("mailhelper.error.failedusers.user", new String[] { user.getProperty(UserConstants.FIRSTNAME, null), user.getProperty(UserConstants.LASTNAME, null),
-							user.getProperty(UserConstants.EMAIL, null), identity.getName() }));//TODO username
+					String fullname = UserManager.getInstance().getUserDisplayName(identity);
+					warnings.append(trans.translate("mailhelper.error.failedusers.user", new String[] {
+							user.getProperty(UserConstants.FIRSTNAME, null),
+							user.getProperty(UserConstants.LASTNAME, null),
+							user.getProperty(UserConstants.EMAIL, null),
+							fullname
+						}));
 					warnings.append("</li>");
 				}
 				warnings.append("</ul></p>");
diff --git a/src/main/java/org/olat/course/assessment/AssessedIdentitiesTableDataModel.java b/src/main/java/org/olat/course/assessment/AssessedIdentitiesTableDataModel.java
index 107acd347225bc10030cbb4b81d70b1c49bea4b2..7b45463e3107220c9ecea1581038459312fd579f 100644
--- a/src/main/java/org/olat/course/assessment/AssessedIdentitiesTableDataModel.java
+++ b/src/main/java/org/olat/course/assessment/AssessedIdentitiesTableDataModel.java
@@ -54,7 +54,7 @@ import org.olat.user.propertyhandlers.UserPropertyHandler;
  * Initial Date:  Jun 23, 2004
  * @author gnaegi
  */
-public class AssessedIdentitiesTableDataModel extends DefaultTableDataModel {
+public class AssessedIdentitiesTableDataModel extends DefaultTableDataModel<AssessedIdentityWrapper> {
 
 	private int colCount;
 	private AssessableCourseNode courseNode;
@@ -73,7 +73,8 @@ public class AssessedIdentitiesTableDataModel extends DefaultTableDataModel {
 
 	private List<String> colMapping;	
 	private List<String> userPropertyNameList;
-	private List<UserPropertyHandler> userPropertyHandlers;
+	private final boolean isAdministrativeUser;
+	private final List<UserPropertyHandler> userPropertyHandlers;
 	private static final String usageIdentifyer = AssessedIdentitiesTableDataModel.class.getCanonicalName();
 	private Translator translator;
 	
@@ -83,17 +84,18 @@ public class AssessedIdentitiesTableDataModel extends DefaultTableDataModel {
 	 * @param objects List of wrapped identities (AssessedIdentityWrapper)
 	 * @param courseNode the current courseNode
 	 */
-	public AssessedIdentitiesTableDataModel(List objects, AssessableCourseNode courseNode, Locale locale, boolean isAdministrativeUser) {
+	public AssessedIdentitiesTableDataModel(List<AssessedIdentityWrapper> objects, AssessableCourseNode courseNode, Locale locale, boolean isAdministrativeUser) {
 		this(objects, courseNode, locale, isAdministrativeUser, false);
 	}
 	
-		public AssessedIdentitiesTableDataModel(List objects, AssessableCourseNode courseNode, Locale locale, boolean isAdministrativeUser,
+		public AssessedIdentitiesTableDataModel(List<AssessedIdentityWrapper> objects, AssessableCourseNode courseNode, Locale locale, boolean isAdministrativeUser,
 				boolean compatibilityUserProperties) {
 		super(objects);
 		this.courseNode = courseNode;		
 		this.setLocale(locale);
 		this.translator = Util.createPackageTranslator(this.getClass(), locale);
 		
+		this.isAdministrativeUser = isAdministrativeUser;
 		//fxdiff FXOLAT-108: improve results table of tests
 		identifyer = compatibilityUserProperties ? UserTableDataModel.class.getCanonicalName() : usageIdentifyer;
 		userPropertyHandlers = UserManager.getInstance().getUserPropertyHandlersFor(identifyer, isAdministrativeUser);
@@ -141,20 +143,12 @@ public class AssessedIdentitiesTableDataModel extends DefaultTableDataModel {
 		return colCount;
 	}
 
-	/**
-	 * @param row The row number
-	 * @return The wrapped identity for this row
-	 */
-	public AssessedIdentityWrapper getWrappedIdentity(int row) {
-		return (AssessedIdentityWrapper) getObject(row);
-	}
-
 	/**
 	 * @param row The row number
 	 * @return The identity for this row
 	 */
 	public Identity getIdentity(int row) {
-		AssessedIdentityWrapper wrappedIdentity = getWrappedIdentity(row);
+		AssessedIdentityWrapper wrappedIdentity = getObject(row);
 		return wrappedIdentity.getIdentity();
 	}
 
@@ -162,13 +156,13 @@ public class AssessedIdentitiesTableDataModel extends DefaultTableDataModel {
 	 * @see org.olat.core.gui.components.table.TableDataModel#getValueAt(int, int)
 	 */
 	public Object getValueAt(int row, int col) {
-		AssessedIdentityWrapper wrappedIdentity = (AssessedIdentityWrapper) getObject(row);
+		AssessedIdentityWrapper wrappedIdentity = getObject(row);
 		Identity identity = wrappedIdentity.getIdentity();
 
 		// lookup the column name first and 
 		// deliver value based on the column name
 		String colName = colMapping.get(col);
-		if (colName.equals(COL_NAME)) return identity.getName();//TODO username
+		if (colName.equals(COL_NAME)) return identity.getName();
 		else if (userPropertyNameList.contains(colName)) return identity.getUser().getProperty(colName, getLocale());		
 		else if (colName.equals(COL_DETAILS)) return wrappedIdentity.getDetailsListView();
 		else if (colName.equals(COL_ATTEMPTS)) return wrappedIdentity.getNodeAttempts();
@@ -235,13 +229,16 @@ public class AssessedIdentitiesTableDataModel extends DefaultTableDataModel {
 			editCmd = actionCommand; // only selectable if editable
 		}
 		int colCount = 0;
-		userListCtr.addColumnDescriptor(new DefaultColumnDescriptor("table.header.name", colCount++, editCmd, getLocale()));
+		
+		if(isAdministrativeUser) {
+			userListCtr.addColumnDescriptor(new DefaultColumnDescriptor("table.header.name", colCount++, editCmd, getLocale()));
+		}
 		
 		for (int i = 0; i < userPropertyHandlers.size(); i++) {
 			UserPropertyHandler userPropertyHandler	= userPropertyHandlers.get(i);
 			//fxdiff FXOLAT-108: improve results table of tests
 			boolean visible = UserManager.getInstance().isMandatoryUserProperty(identifyer , userPropertyHandler);
-			userListCtr.addColumnDescriptor(visible, userPropertyHandler.getColumnDescriptor(i+1, null, getLocale()));	
+			userListCtr.addColumnDescriptor(visible, userPropertyHandler.getColumnDescriptor(i+1, editCmd, getLocale()));	
 			colCount++;
 		}		
 		if ( (courseNode != null) && isNodeOrGroupFocus) {			
diff --git a/src/main/java/org/olat/course/assessment/AssessmentMainController.java b/src/main/java/org/olat/course/assessment/AssessmentMainController.java
index 0ee9a7861ff149437eb1375eaa0ec496b03da1d9..f5be0532a46b1f94d652e85da5187b4df556c643 100644
--- a/src/main/java/org/olat/course/assessment/AssessmentMainController.java
+++ b/src/main/java/org/olat/course/assessment/AssessmentMainController.java
@@ -37,6 +37,7 @@ import org.apache.commons.lang.StringEscapeUtils;
 import org.olat.admin.user.UserTableDataModel;
 import org.olat.basesecurity.BaseSecurity;
 import org.olat.basesecurity.BaseSecurityManager;
+import org.olat.basesecurity.BaseSecurityModule;
 import org.olat.basesecurity.SecurityGroup;
 import org.olat.core.CoreSpringFactory;
 import org.olat.core.commons.fullWebApp.LayoutMain3ColsController;
@@ -222,7 +223,9 @@ public class AssessmentMainController extends MainLayoutBasicController implemen
 		propertyHandlerTranslator = UserManager.getInstance().getPropertyHandlerTranslator(getTranslator());
 		
 		Roles roles = ureq.getUserSession().getRoles();
-		isAdministrativeUser = (roles.isAuthor() || roles.isGroupManager() || roles.isUserManager() || roles.isOLATAdmin());		
+		BaseSecurityModule securityModule = CoreSpringFactory.getImpl(BaseSecurityModule.class);
+		isAdministrativeUser = securityModule.isUserAllowedAdminProps(roles);
+		//was: (roles.isAuthor() || roles.isGroupManager() || roles.isUserManager() || roles.isOLATAdmin());		
 		
 		main = new Panel("assessmentmain");
 
@@ -491,7 +494,7 @@ public class AssessmentMainController extends MainLayoutBasicController implemen
 					} else {
 						// all other cases where user can be choosen the assessed identity wrapper is used
 						AssessedIdentitiesTableDataModel userListModel = (AssessedIdentitiesTableDataModel) userListCtr.getTableDataModel();
-						this.assessedIdentityWrapper = userListModel.getWrappedIdentity(rowid);
+						this.assessedIdentityWrapper = userListModel.getObject(rowid);
 					}
 					// init edit controller for this identity and this course node 
 					// or use identity assessment overview if no course node is defined
@@ -800,7 +803,7 @@ public class AssessmentMainController extends MainLayoutBasicController implemen
 		}
 		
 		// Add the wrapped identities to the table data model
-		AssessedIdentitiesTableDataModel tdm = new AssessedIdentitiesTableDataModel(wrappedIdentities, courseNode, ureq.getLocale(), isAdministrativeUser, mode == MODE_USERFOCUS);
+		AssessedIdentitiesTableDataModel tdm = new AssessedIdentitiesTableDataModel(wrappedIdentities, courseNode, getLocale(), isAdministrativeUser, mode == MODE_USERFOCUS);
 		tdm.addColumnDescriptors(userListCtr, CMD_CHOOSE_USER, mode == MODE_NODEFOCUS || mode == MODE_GROUPFOCUS || mode == MODE_USERFOCUS);
 		userListCtr.setTableDataModel(tdm);
 
diff --git a/src/main/java/org/olat/course/assessment/EfficiencyStatementManager.java b/src/main/java/org/olat/course/assessment/EfficiencyStatementManager.java
index 662c6bdad2610b8745efd3c8360e10d73d8900ea..5c904b4f2ca788215ad829622d08a45e752f6a11 100644
--- a/src/main/java/org/olat/course/assessment/EfficiencyStatementManager.java
+++ b/src/main/java/org/olat/course/assessment/EfficiencyStatementManager.java
@@ -38,8 +38,6 @@ import org.olat.core.commons.persistence.DBFactory;
 import org.olat.core.commons.persistence.DBQuery;
 import org.olat.core.id.Identity;
 import org.olat.core.id.OLATResourceable;
-import org.olat.core.id.User;
-import org.olat.core.id.UserConstants;
 import org.olat.core.manager.BasicManager;
 import org.olat.core.util.coordinate.CoordinatorManager;
 import org.olat.core.util.coordinate.SyncerExecutor;
@@ -56,6 +54,7 @@ import org.olat.course.run.userview.UserCourseEnvironment;
 import org.olat.repository.RepositoryEntry;
 import org.olat.repository.RepositoryManager;
 import org.olat.user.UserDataDeletable;
+import org.olat.user.UserManager;
 
 import com.thoughtworks.xstream.XStream;
 
@@ -77,6 +76,7 @@ public class EfficiencyStatementManager extends BasicManager implements UserData
 	private static EfficiencyStatementManager INSTANCE;
 
 	private DB dbInstance;
+	private UserManager userManager;
 	private RepositoryManager repositoryManager;
 	private final XStream xstream = XStreamHelper.createXStreamInstance();
 
@@ -111,6 +111,14 @@ public class EfficiencyStatementManager extends BasicManager implements UserData
 	public void setRepositoryManager(RepositoryManager repositoryManager) {
 		this.repositoryManager = repositoryManager;
 	}
+	
+	/**
+	 * [used by Spring]
+	 * @param userManager
+	 */
+	public void setUserManager(UserManager userManager) {
+		this.userManager = userManager;
+	}
 
 	/**
 	 * Updates the users efficiency statement for this course. <p>
@@ -145,8 +153,8 @@ public class EfficiencyStatementManager extends BasicManager implements UserData
 			efficiencyStatement.setAssessmentNodes(assessmentNodes);
 			efficiencyStatement.setCourseTitle(userCourseEnv.getCourseEnvironment().getCourseTitle());
 			efficiencyStatement.setCourseRepoEntryKey(repoEntryKey);
-			User user = identity.getUser();
-			efficiencyStatement.setDisplayableUserInfo(user.getProperty(UserConstants.FIRSTNAME, null) + " " + user.getProperty(UserConstants.LASTNAME, null) + " (" + identity.getName() + ")");//TODO username
+			String userInfos = userManager.getUserDisplayName(identity);
+			efficiencyStatement.setDisplayableUserInfo(userInfos);
 			efficiencyStatement.setLastUpdated(System.currentTimeMillis());
 							
 			UserEfficiencyStatementImpl efficiencyProperty = getUserEfficiencyStatementFull(repoEntryKey, identity);
diff --git a/src/main/java/org/olat/course/assessment/_spring/assessmentContext.xml b/src/main/java/org/olat/course/assessment/_spring/assessmentContext.xml
index e8661cafa44b81cb24dc39d0e3cd5f212e0bf1bc..eefed18b2da447bd484a7b8b2e2ca1b9b51e79b5 100644
--- a/src/main/java/org/olat/course/assessment/_spring/assessmentContext.xml
+++ b/src/main/java/org/olat/course/assessment/_spring/assessmentContext.xml
@@ -16,6 +16,7 @@
 
 	<bean id="org.olat.course.assessment.EfficiencyStatementManager" class="org.olat.course.assessment.EfficiencyStatementManager">
 		<property name="dbInstance" ref="database"/>
+		<property name="userManager" ref="userManager"/>
 		<property name="repositoryManager" ref="repositoryManager"/>
 	</bean>
 
diff --git a/src/main/java/org/olat/course/run/preview/PreviewCoursePropertyManager.java b/src/main/java/org/olat/course/run/preview/PreviewCoursePropertyManager.java
index 4596ae5455ed725d15ca31529c9e5707fd764c0a..fda347cd63edfb0ce2798b0b383d4c776c541f7e 100644
--- a/src/main/java/org/olat/course/run/preview/PreviewCoursePropertyManager.java
+++ b/src/main/java/org/olat/course/run/preview/PreviewCoursePropertyManager.java
@@ -52,7 +52,7 @@ final class PreviewCoursePropertyManager extends BasicManager implements CourseP
 	/**
 	 * Hashmap contains hasmaps
 	 */
-	private Map properties = new HashMap();
+	private Map<String,List<Property>> properties = new HashMap<String,List<Property>>();
 	
 	/**
 	 * Creates a new course proprerty manager that stores properties per instance.
@@ -87,7 +87,7 @@ final class PreviewCoursePropertyManager extends BasicManager implements CourseP
 	 * @see org.olat.course.properties.CoursePropertyManager#deleteProperty(org.olat.properties.Property)
 	 */
 	public void deleteProperty(Property p) {
-		List propertyList = getListOfProperties(p);
+		List<Property> propertyList = getListOfProperties(p);
 		for (int i=0; i < propertyList.size(); i++) {
 			Property propertyElement = (Property)propertyList.get(i);
 			if (propertyElement.getLongValue().equals(p.getLongValue())
@@ -104,7 +104,7 @@ final class PreviewCoursePropertyManager extends BasicManager implements CourseP
 	 * @see org.olat.course.properties.CoursePropertyManager#saveProperty(org.olat.properties.Property)
 	 */
 	public void saveProperty(Property p) {
-		List propertyList = getListOfProperties(p);
+		List<Property> propertyList = getListOfProperties(p);
 		// since this is a save (only done once after creation) we
 		// can safely add it to the list without looking for duplicates
 		propertyList.add(p);
@@ -120,16 +120,16 @@ final class PreviewCoursePropertyManager extends BasicManager implements CourseP
 	/**
 	 * @see org.olat.course.properties.CoursePropertyManager#listCourseNodeProperties(org.olat.course.nodes.CourseNode, org.olat.core.id.Identity, org.olat.group.BusinessGroup, java.lang.String)
 	 */
-	public List listCourseNodeProperties(CourseNode node, Identity identity, BusinessGroup grp, String name) {
+	public List<Property> listCourseNodeProperties(CourseNode node, Identity identity, BusinessGroup grp, String name) {
 		throw new AssertException("Not implemented for preview.");
 	}
 
 	/**
 	 * @see org.olat.course.properties.CoursePropertyManager#findCourseNodeProperties(org.olat.course.nodes.CourseNode, org.olat.core.id.Identity, org.olat.group.BusinessGroup, java.lang.String)
 	 */
-	public List findCourseNodeProperties(CourseNode node, Identity identity, BusinessGroup grp, String name) {
-		List propertiesList = (List)properties.get(buildPropertyHashKey(buildCourseNodePropertyCategory(node), (identity == null ? "" : identity.getName()), grp, name));
-		if (propertiesList == null) propertiesList = new ArrayList();
+	public List<Property> findCourseNodeProperties(CourseNode node, Identity identity, BusinessGroup grp, String name) {
+		List<Property> propertiesList = properties.get(buildPropertyHashKey(buildCourseNodePropertyCategory(node), (identity == null ? 0l : identity.getKey()), grp, name));
+		if (propertiesList == null) propertiesList = new ArrayList<Property>();
 		return propertiesList;
 	}
 
@@ -137,9 +137,9 @@ final class PreviewCoursePropertyManager extends BasicManager implements CourseP
 	 * @see org.olat.course.properties.CoursePropertyManager#findCourseNodeProperty(org.olat.course.nodes.CourseNode, org.olat.core.id.Identity, org.olat.group.BusinessGroup, java.lang.String)
 	 */
 	public Property findCourseNodeProperty(CourseNode node, Identity identity, BusinessGroup grp, String name) {
-		List propertyList = (List)properties.get(buildPropertyHashKey(buildCourseNodePropertyCategory(node), (identity == null ? "" : identity.getName()), grp, name));
+		List<Property> propertyList = properties.get(buildPropertyHashKey(buildCourseNodePropertyCategory(node), (identity == null ? 0l : identity.getKey()), grp, name));
 		if (propertyList == null) return null;
-		return (Property)propertyList.get(0);
+		return propertyList.get(0);
 	}
 
 	@Override
@@ -169,23 +169,23 @@ final class PreviewCoursePropertyManager extends BasicManager implements CourseP
 	 * @param p
 	 * @return list of properties with the same key
 	 */
-	private List getListOfProperties(Property p) {
+	private List<Property> getListOfProperties(Property p) {
 		String propertyKey = buildPropertyHashKey(p);
 		// get the list of properties for this key...
-		List propertyList = (List)properties.get(propertyKey);
+		List<Property> propertyList = properties.get(propertyKey);
 		if (propertyList == null) {
-			propertyList = new ArrayList();
+			propertyList = new ArrayList<Property>();
 			properties.put(propertyKey, propertyList);
 		}
 		return propertyList;
 	}
 
-	private String buildPropertyHashKey(Property p) {//TODO username
-    return buildPropertyHashKey(p.getCategory(), (p.getIdentity() == null) ? "" : p.getIdentity().getName(), p.getGrp(), p.getName());
+	private String buildPropertyHashKey(Property p) {
+    return buildPropertyHashKey(p.getCategory(), (p.getIdentity() == null) ? 0l : p.getIdentity().getKey(), p.getGrp(), p.getName());
 	}
 	
-	private String buildPropertyHashKey(String category, String identityName, BusinessGroup group, String name) {
-    return (category + identityName + (group == null ? "" : group.getKey().toString()) + name);
+	private String buildPropertyHashKey(String category, Long identityKey, BusinessGroup group, String name) {
+    return (category + identityKey + (group == null ? "" : group.getKey().toString()) + name);
 	}
 	
 	private String buildCourseNodePropertyCategory(CourseNode node) {
diff --git a/src/main/java/org/olat/ims/qti/render/ResultsBuilder.java b/src/main/java/org/olat/ims/qti/render/ResultsBuilder.java
index 5414e22d3c3b112ea77ce09f244e9ba9f83635ec..ed0492f5930f659c018b1d5fe427c3bf59e64765 100644
--- a/src/main/java/org/olat/ims/qti/render/ResultsBuilder.java
+++ b/src/main/java/org/olat/ims/qti/render/ResultsBuilder.java
@@ -117,8 +117,7 @@ public class ResultsBuilder {
 		// Add User information
 		Element context = result.addElement("context");
 		User user = identity.getUser();
-		//TODO username
-		String name = user.getProperty(UserConstants.FIRSTNAME, locale) + " " + user.getProperty(UserConstants.LASTNAME, locale) + " (" + identity.getName() + ")";
+		String name = user.getProperty(UserConstants.FIRSTNAME, locale) + " " + user.getProperty(UserConstants.LASTNAME, locale);
 		String instId = user.getProperty(UserConstants.INSTITUTIONALUSERIDENTIFIER, locale);
 		String instName = user.getProperty(UserConstants.INSTITUTIONALNAME, locale);
 
diff --git a/src/main/java/org/olat/ldap/ui/DeletStep00.java b/src/main/java/org/olat/ldap/ui/DeletStep00.java
index ea7659ab08f0caea54e6c07c8e8755792932e560..ac43f31877c103a5bdf4fc6b06a44e2d71832457 100644
--- a/src/main/java/org/olat/ldap/ui/DeletStep00.java
+++ b/src/main/java/org/olat/ldap/ui/DeletStep00.java
@@ -101,8 +101,7 @@ public class DeletStep00 extends BasicStep{
 
 		@Override
 		protected void doDispose() {
-			// TODO Auto-generated method stub
-			
+			//
 		}
 
 		@Override
@@ -116,7 +115,6 @@ public class DeletStep00 extends BasicStep{
 		}
 		
 		@Override
-		@SuppressWarnings("unused")
 		protected void formInnerEvent(UserRequest ureq, FormItem source, FormEvent event) {
 			if (source == selectAllLink) {
 				multiSelectTree.selectAll();
@@ -128,14 +126,6 @@ public class DeletStep00 extends BasicStep{
 			}
 		}
 
-		
-		protected boolean validateFormLogic(@SuppressWarnings("unused")
-				UserRequest ureq){
-					return true;
-				}
-
-
-		@SuppressWarnings("unused")
 		@Override
 		protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) {
 			textContainer = FormLayoutContainer.createCustomFormLayout("index", getTranslator(), this.velocity_root + "/delet_step00.html");
diff --git a/src/main/java/org/olat/modules/fo/FilterForUserController.java b/src/main/java/org/olat/modules/fo/FilterForUserController.java
index a390eba44b0a0c126e47105b2b56057939c34d6e..fb391de1989db2a291e7a8c6f365437a2721a5c1 100644
--- a/src/main/java/org/olat/modules/fo/FilterForUserController.java
+++ b/src/main/java/org/olat/modules/fo/FilterForUserController.java
@@ -480,7 +480,7 @@ public class FilterForUserController extends BasicController {
 			searchValue = searchValue == null ? null : searchValue.toLowerCase();
 			for(UserInfo info:stats) {
 				Identity identity = info.getIdentity();
-				String name = identity.getName();//TODO username
+				String name = identity.getName();
 				
 				if(identity.getName().startsWith(searchValue)) {
 					receiver.addEntry(name, name, info.getLastName() + " " + info.getFirstName(), CSSHelper.CSS_CLASS_USER);
@@ -530,7 +530,7 @@ public class FilterForUserController extends BasicController {
 	/**
 	 * TableDataModel for the overview of all users in the forum
 	 */
-	public class UsersTableModel extends BaseTableDataModelWithoutFilter implements TableDataModel {
+	public class UsersTableModel extends BaseTableDataModelWithoutFilter<UserInfo> implements TableDataModel<UserInfo> {
 		private final List<UserInfo> infos;
 		
 		public UsersTableModel(List<UserInfo> infos) {
@@ -540,7 +540,7 @@ public class FilterForUserController extends BasicController {
 		public UserInfo getUserInfo(String username) {
 			for(UserInfo info:infos) {
 				Identity id = info.getIdentity();
-				if(username.equals(id.getName())) {//TODO username
+				if(username.equals(id.getName())) {
 					return info;
 				}
 			}
diff --git a/src/main/java/org/olat/modules/wiki/MediaFilesTableModel.java b/src/main/java/org/olat/modules/wiki/MediaFilesTableModel.java
index eb86a7a4088bb6cdc12d25ee5c247588f87e6950..123e4402cfe66a8de2f0a014bd8bacc5aeb92edc 100644
--- a/src/main/java/org/olat/modules/wiki/MediaFilesTableModel.java
+++ b/src/main/java/org/olat/modules/wiki/MediaFilesTableModel.java
@@ -27,7 +27,6 @@ package org.olat.modules.wiki;
 import java.util.Date;
 import java.util.List;
 
-import org.olat.basesecurity.BaseSecurityManager;
 import org.olat.core.CoreSpringFactory;
 import org.olat.core.gui.components.table.CustomCssCellRenderer;
 import org.olat.core.gui.components.table.CustomRenderColumnDescriptor;
@@ -86,13 +85,13 @@ public class MediaFilesTableModel extends DefaultTableDataModel<MediaFileElement
 			case 1:
 				long identKey = entry.getCreatedBy();
 				if (identKey == 0) return "---";
-				return userManager.getUserDisplayName(new Long(identKey));//TODO username
+				return userManager.getUserDisplayName(new Long(identKey));
 			case 2:
 				return formatter.formatDateAndTime(new Date(entry.getCreationDate()));
 			case 3:
 				long key = entry.getDeletedBy();
 				if (key == 0) return "---";
-				return userManager.getUserDisplayName(new Long(key));//TODO username
+				return userManager.getUserDisplayName(new Long(key));
 			case 4:
 				long delDate = entry.getDeletionDate();
 				if (delDate == 0) return "---";
diff --git a/src/main/java/org/olat/notifications/PersonalRSSFeed.java b/src/main/java/org/olat/notifications/PersonalRSSFeed.java
index c671e92395dc46b6016cb802b2e15881e7100698..3a57ca7ab6ab8b105795f7fa9cfe0b8d40abf2cd 100644
--- a/src/main/java/org/olat/notifications/PersonalRSSFeed.java
+++ b/src/main/java/org/olat/notifications/PersonalRSSFeed.java
@@ -38,6 +38,7 @@ import org.olat.core.util.notifications.NotificationsManager;
 import org.olat.core.util.notifications.Subscriber;
 import org.olat.core.util.notifications.SubscriptionInfo;
 import org.olat.core.util.notifications.SubscriptionItem;
+import org.olat.user.UserManager;
 
 import com.sun.syndication.feed.synd.SyndContent;
 import com.sun.syndication.feed.synd.SyndContentImpl;
@@ -58,6 +59,8 @@ import com.sun.syndication.feed.synd.SyndImageImpl;
 
 public class PersonalRSSFeed extends SyndFeedImpl {
 
+	private static final long serialVersionUID = -5246221887165246074L;
+
 	/**
 	 * Constructor for a RSS document that contains all the users personal
 	 * notifications
@@ -74,11 +77,11 @@ public class PersonalRSSFeed extends SyndFeedImpl {
 		Locale locale = I18nManager.getInstance().getLocaleOrDefault(user.getPreferences().getLanguage());
 		Translator translator = Util.createPackageTranslator(PersonalRSSFeed.class, locale);
 		NotificationsManager man = NotificationsManager.getInstance();
-		//TODO bookmark List<Bookmark> bookmarks = BookmarkManager.getInstance().findBookmarksByIdentity(identity);
-
-		setTitle(translator.translate("rss.title", new String[] { identity.getName() }));//TODO username
+		String fullName = UserManager.getInstance().getUserDisplayName(identity);
+		
+		setTitle(translator.translate("rss.title", new String[] { fullName }));
 		setLink(RSSUtil.URI_SERVER);
-		setDescription(translator.translate("rss.description", new String[] { identity.getName() }));//TODO username
+		setDescription(translator.translate("rss.description", new String[] { fullName }));
 
 		// create and add an image to the feed
 		SyndImage image = new SyndImageImpl();
@@ -97,21 +100,6 @@ public class PersonalRSSFeed extends SyndFeedImpl {
 		entry.setDescription(description);
 		entries.add(entry);
 
-		//TODO bookmark  bookmark news
-		/*
-		for (Bookmark bookmark : bookmarks) {
-			SyndEntry item = new SyndEntryImpl();
-			item.setTitle(translator.translate("rss.bookmark.title", new String[] { bookmark.getTitle() }));
-			// create jump in link with factory method from manager
-			String itemLink = BookmarkManager.getInstance().createJumpInURL(bookmark);
-			item.setLink(itemLink);
-			SyndContent itemDescription = new SyndContentImpl();
-			itemDescription.setType("text/plain");
-			itemDescription.setValue(bookmark.getDescription());
-			item.setDescription(itemDescription);
-			entries.add(item);
-		}*/
-
 		// notification news
 		// we are only interested in subscribers which listen to a valid publisher
 		List<Subscriber> subs = man.getValidSubscribers(identity);
diff --git a/src/main/java/org/olat/repository/delete/service/RepositoryDeletionManager.java b/src/main/java/org/olat/repository/delete/service/RepositoryDeletionManager.java
index 1ef1b191a93e377becb714914e18fa5b09aa7b42..b1f04b10f7980a81d6ab6ef74f73cf1ebeb5df15 100644
--- a/src/main/java/org/olat/repository/delete/service/RepositoryDeletionManager.java
+++ b/src/main/java/org/olat/repository/delete/service/RepositoryDeletionManager.java
@@ -32,6 +32,8 @@ import java.util.Collections;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Locale;
+import java.util.Map;
 
 import org.olat.basesecurity.BaseSecurityManager;
 import org.olat.basesecurity.SecurityGroup;
@@ -40,7 +42,6 @@ import org.olat.core.commons.persistence.DBFactory;
 import org.olat.core.commons.persistence.DBQuery;
 import org.olat.core.gui.UserRequest;
 import org.olat.core.gui.control.WindowControl;
-import org.olat.core.gui.translator.PackageTranslator;
 import org.olat.core.gui.translator.Translator;
 import org.olat.core.id.Identity;
 import org.olat.core.id.UserConstants;
@@ -60,6 +61,7 @@ import org.olat.repository.handlers.RepositoryHandlerFactory;
 import org.olat.resource.OLATResourceManager;
 import org.olat.resource.references.ReferenceManager;
 import org.olat.user.UserDataDeletable;
+import org.olat.user.UserManager;
 
 
 /**
@@ -81,7 +83,6 @@ public class RepositoryDeletionManager extends BasicManager implements UserDataD
 	private static final int DEFAULT_DELETE_EMAIL_DURATION = 30;
 	
 	private static RepositoryDeletionManager INSTANCE;
-	private static final String PACKAGE = Util.getPackageName(SelectionController.class);
 
 	public static final String SEND_DELETE_EMAIL_ACTION = "sendDeleteEmail";
 	private static final String REPOSITORY_DELETED_ACTION = "respositoryEntryDeleted";
@@ -156,14 +157,14 @@ public class RepositoryDeletionManager extends BasicManager implements UserDataD
 		return getPropertyByName(DELETE_EMAIL_DURATION_PROPERTY_NAME, DEFAULT_DELETE_EMAIL_DURATION);
 	}
 
-	public String sendDeleteEmailTo(List selectedRepositoryEntries, MailTemplate mailTemplate, boolean isTemplateChanged, String key_email_subject, 
+	public String sendDeleteEmailTo(List<RepositoryEntry> selectedRepositoryEntries, MailTemplate mailTemplate, boolean isTemplateChanged, String key_email_subject, 
 			String key_email_body, Identity sender, Translator pT) {
 		StringBuilder buf = new StringBuilder();
 		if (mailTemplate != null) {
-			HashMap identityRepositoryList = collectRepositoryEntriesForIdentities(selectedRepositoryEntries); 
+			Map<Identity, List<RepositoryEntry>> identityRepositoryList = collectRepositoryEntriesForIdentities(selectedRepositoryEntries); 
 			// loop over identity list and send email
-			for (Iterator iterator = identityRepositoryList.keySet().iterator(); iterator.hasNext();) {
-				String result = sendEmailToIdentity((Identity) iterator.next(), identityRepositoryList, mailTemplate, isTemplateChanged, key_email_subject, 
+			for (Iterator<Identity> iterator = identityRepositoryList.keySet().iterator(); iterator.hasNext();) {
+				String result = sendEmailToIdentity(iterator.next(), identityRepositoryList, mailTemplate, isTemplateChanged, key_email_subject, 
 						key_email_body, sender, pT);
 				if (result != null) {
 					buf.append(result).append("\n");
@@ -171,8 +172,8 @@ public class RepositoryDeletionManager extends BasicManager implements UserDataD
 			}
 		} else {
 			// no template => User decides to sending no delete-email, mark only in lifecycle table 'sendEmail'
-			for (Iterator iter = selectedRepositoryEntries.iterator(); iter.hasNext();) {
-				RepositoryEntry repositoryEntry = (RepositoryEntry)iter.next();
+			for (Iterator<RepositoryEntry> iter = selectedRepositoryEntries.iterator(); iter.hasNext();) {
+				RepositoryEntry repositoryEntry = iter.next();
 				logAudit("Repository-Deletion: Move in 'Email sent' section without sending email, repositoryEntry=" + repositoryEntry );
 				markSendEmailEvent(repositoryEntry);
 			}
@@ -186,10 +187,10 @@ public class RepositoryDeletionManager extends BasicManager implements UserDataD
 	 * @param repositoryList
 	 * @return HashMap with Identity as key elements, List of RepositoryEntry as objects
 	 */
-	private HashMap collectRepositoryEntriesForIdentities(List repositoryList) {
-		HashMap identityRepositoryList = new HashMap();
-		for (Iterator iter = repositoryList.iterator(); iter.hasNext();) {
-			RepositoryEntry repositoryEntry = (RepositoryEntry)iter.next();
+	private Map<Identity, List<RepositoryEntry>> collectRepositoryEntriesForIdentities(List<RepositoryEntry> repositoryList) {
+		Map<Identity, List<RepositoryEntry>> identityRepositoryList = new HashMap<Identity, List<RepositoryEntry>>();
+		for (Iterator<RepositoryEntry> iter = repositoryList.iterator(); iter.hasNext();) {
+			RepositoryEntry repositoryEntry = iter.next();
 			
 			// Build owner group, list of identities
 			SecurityGroup ownerGroup = repositoryEntry.getOwnerGroup();
@@ -206,10 +207,10 @@ public class RepositoryDeletionManager extends BasicManager implements UserDataD
 			for (Iterator<Identity> iterator = ownerIdentities.iterator(); iterator.hasNext();) {
 				Identity identity = iterator.next();
 				if (identityRepositoryList.containsKey(identity) ) {
-					List repositoriesOfIdentity = (List)identityRepositoryList.get(identity);
+					List<RepositoryEntry> repositoriesOfIdentity = identityRepositoryList.get(identity);
 					repositoriesOfIdentity.add(repositoryEntry);
 				} else {
-					List repositoriesOfIdentity = new ArrayList();
+					List<RepositoryEntry> repositoriesOfIdentity = new ArrayList<RepositoryEntry>();
 					repositoriesOfIdentity.add(repositoryEntry);
 					identityRepositoryList.put(identity, repositoriesOfIdentity);
 				}
@@ -220,20 +221,21 @@ public class RepositoryDeletionManager extends BasicManager implements UserDataD
 	}
 
 
-	private String sendEmailToIdentity(Identity identity,HashMap identityRepositoryList, MailTemplate template, 
+	private String sendEmailToIdentity(Identity identity, Map<Identity, List<RepositoryEntry>> identityRepositoryList, MailTemplate template, 
 			boolean isTemplateChanged, String keyEmailSubject, String keyEmailBody, Identity sender, Translator pT) {
 		MailerWithTemplate mailer = MailerWithTemplate.getInstance();
 		template.addToContext("responseTo", deletionModule.getEmailResponseTo());
 		if (!isTemplateChanged) {
 			// Email template has NOT changed => take translated version of subject and body text
-		Translator identityTranslator = new PackageTranslator(PACKAGE, I18nManager.getInstance().getLocaleOrDefault(identity.getUser().getPreferences().getLanguage()));
+			Locale locale = I18nManager.getInstance().getLocaleOrDefault(identity.getUser().getPreferences().getLanguage());
+			Translator identityTranslator = Util.createPackageTranslator(SelectionController.class, locale);
 			template.setSubjectTemplate(identityTranslator.translate(keyEmailSubject));
 			template.setBodyTemplate(identityTranslator.translate(keyEmailBody));
 		} 
 		// loop over all repositoriesOfIdentity to build email message
 		StringBuilder buf = new StringBuilder();
-		for (Iterator repoIterator = ((List)identityRepositoryList.get(identity)).iterator(); repoIterator.hasNext();) {
-			RepositoryEntry repositoryEntry = (RepositoryEntry) repoIterator.next();
+		for (Iterator<RepositoryEntry> repoIterator = identityRepositoryList.get(identity).iterator(); repoIterator.hasNext();) {
+			RepositoryEntry repositoryEntry = repoIterator.next();
 			buf.append("\n  ").append( repositoryEntry.getDisplayname() ).append(" / ").append(trimDescription(repositoryEntry.getDescription(), 60));
 		}
 		template.addToContext("repositoryList", buf.toString());
@@ -248,15 +250,15 @@ public class RepositoryDeletionManager extends BasicManager implements UserDataD
 		MailerResult mailerResult = mailer.sendMailAsSeparateMails(null, Collections.singletonList(identity), ccIdentities, template, sender);
 		if (mailerResult.getReturnCode() == MailerResult.OK) {
 			// Email sended ok => set deleteEmailDate
-			for (Iterator repoIterator = ((List)identityRepositoryList.get(identity)).iterator(); repoIterator.hasNext();) {
-				RepositoryEntry repositoryEntry = (RepositoryEntry) repoIterator.next();
+			for (Iterator<RepositoryEntry> repoIterator = identityRepositoryList.get(identity).iterator(); repoIterator.hasNext();) {
+				RepositoryEntry repositoryEntry = repoIterator.next();
 				logAudit("Repository-Deletion: Delete-email for repositoryEntry=" + repositoryEntry + "send to identity=" + identity.getName());
 				markSendEmailEvent(repositoryEntry);
 			}
 			return null; // Send ok => return null
 		} else {
-			//TODO username
-			return pT.translate("email.error.send.failed", new String[] {identity.getUser().getProperty(UserConstants.EMAIL, null), identity.getName()} );
+			String fullname = UserManager.getInstance().getUserDisplayName(identity);
+			return pT.translate("email.error.send.failed", new String[] { identity.getUser().getProperty(UserConstants.EMAIL, null), fullname } );
 		}
 	}
 
@@ -275,7 +277,7 @@ public class RepositoryDeletionManager extends BasicManager implements UserDataD
 	}
 
 
-	public List getDeletableReprositoryEntries(int lastLoginDuration) {
+	public List<RepositoryEntry> getDeletableReprositoryEntries(int lastLoginDuration) {
 		Calendar lastUsageLimit = Calendar.getInstance();
 		lastUsageLimit.add(Calendar.MONTH, - lastLoginDuration);
 		logDebug("lastLoginLimit=" + lastUsageLimit);
@@ -302,12 +304,12 @@ public class RepositoryDeletionManager extends BasicManager implements UserDataD
 	}
 
 
-	private List filterRepositoryWithReferences(List repositoryList) {
+	private List<RepositoryEntry> filterRepositoryWithReferences(List<RepositoryEntry> repositoryList) {
 		logDebug("filterRepositoryWithReferences repositoryList.size=" + repositoryList.size());
-		List filteredList = new ArrayList();
+		List<RepositoryEntry> filteredList = new ArrayList<RepositoryEntry>();
 		int loopCounter = 0;
-		for (Iterator iter = repositoryList.iterator(); iter.hasNext();) {
-			RepositoryEntry repositoryEntry = (RepositoryEntry) iter.next();
+		for (Iterator<RepositoryEntry> iter = repositoryList.iterator(); iter.hasNext();) {
+			RepositoryEntry repositoryEntry = iter.next();
 			logDebug("filterRepositoryWithReferences repositoryEntry=" + repositoryEntry);
 			logDebug("filterRepositoryWithReferences repositoryEntry.getOlatResource()=" + repositoryEntry.getOlatResource());
 			if (OLATResourceManager.getInstance().findResourceable(repositoryEntry.getOlatResource()) != null) {
@@ -333,7 +335,7 @@ public class RepositoryDeletionManager extends BasicManager implements UserDataD
 		return filteredList;
 	}
 
-	public List getReprositoryEntriesInDeletionProcess(int deleteEmailDuration) {
+	public List<RepositoryEntry> getReprositoryEntriesInDeletionProcess(int deleteEmailDuration) {
 		Calendar deleteEmailLimit = Calendar.getInstance();
 		deleteEmailLimit.add(Calendar.DAY_OF_MONTH, - (deleteEmailDuration - 1));
 		logDebug("deleteEmailLimit=" + deleteEmailLimit);
@@ -348,7 +350,7 @@ public class RepositoryDeletionManager extends BasicManager implements UserDataD
 		return filterRepositoryWithReferences(dbq.list());
 	}
 
-	public List getReprositoryEntriesReadyToDelete(int deleteEmailDuration) {
+	public List<RepositoryEntry> getReprositoryEntriesReadyToDelete(int deleteEmailDuration) {
 		Calendar deleteEmailLimit = Calendar.getInstance();
 		deleteEmailLimit.add(Calendar.DAY_OF_MONTH, - (deleteEmailDuration - 1));
 		logDebug("deleteEmailLimit=" + deleteEmailLimit);
@@ -363,9 +365,9 @@ public class RepositoryDeletionManager extends BasicManager implements UserDataD
 		return filterRepositoryWithReferences(dbq.list());
 	}
 
-	public void deleteRepositoryEntries(UserRequest ureq, WindowControl wControl, List repositoryEntryList) {
-		for (Iterator iter = repositoryEntryList.iterator(); iter.hasNext();) {
-			RepositoryEntry repositoryEntry = (RepositoryEntry) iter.next();
+	public void deleteRepositoryEntries(UserRequest ureq, WindowControl wControl, List<RepositoryEntry> repositoryEntryList) {
+		for (Iterator<RepositoryEntry> iter = repositoryEntryList.iterator(); iter.hasNext();) {
+			RepositoryEntry repositoryEntry = iter.next();
 			RepositoryHandler repositoryHandler = RepositoryHandlerFactory.getInstance().getRepositoryHandler(repositoryEntry);
 			File archiveDir = new File(getArchivFilePath());
 			if (!archiveDir.exists()) {
@@ -400,7 +402,7 @@ public class RepositoryDeletionManager extends BasicManager implements UserDataD
 	// Private Methods
 	//////////////////
 	private int getPropertyByName(String name, int defaultValue) {
-		List properties = PropertyManager.getInstance().findProperties(null, null, null, PROPERTY_CATEGORY, name);
+		List<Property> properties = PropertyManager.getInstance().findProperties(null, null, null, PROPERTY_CATEGORY, name);
 		if (properties.size() == 0) {
 			return defaultValue;
 		} else {
@@ -409,7 +411,7 @@ public class RepositoryDeletionManager extends BasicManager implements UserDataD
 	}
 
 	private void setProperty(String propertyName, int value) {
-		List properties = PropertyManager.getInstance().findProperties(null, null, null, PROPERTY_CATEGORY, propertyName);
+		List<Property> properties = PropertyManager.getInstance().findProperties(null, null, null, PROPERTY_CATEGORY, propertyName);
 		Property property = null;
 		if (properties.size() == 0) {
 			property = PropertyManager.getInstance().createPropertyInstance(null, null, null, PROPERTY_CATEGORY, propertyName, null,  new Long(value), null, null);
diff --git a/src/main/java/org/olat/search/service/document/InfoMessageDocument.java b/src/main/java/org/olat/search/service/document/InfoMessageDocument.java
index 8ccde62c8bc1cc3d94e360071486ef951e11b651..32dbc0368328cf71ed56d5a4d69d8189a8b5054b 100644
--- a/src/main/java/org/olat/search/service/document/InfoMessageDocument.java
+++ b/src/main/java/org/olat/search/service/document/InfoMessageDocument.java
@@ -44,7 +44,7 @@ public class InfoMessageDocument extends OlatDocument {
 
 		messageDocument.setTitle(message.getTitle());
 		messageDocument.setContent(message.getMessage());
-		messageDocument.setAuthor(message.getAuthor().getName());//TODO username
+		messageDocument.setAuthor(message.getAuthor().getName());
 		messageDocument.setCreatedDate(message.getCreationDate());
 		messageDocument.setLastChange(message.getCreationDate());
 		messageDocument.setResourceUrl(searchResourceContext.getResourceUrl());