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 de29c0054738a57cf88ec3d562107a05329dc37f..56ea0b5be5dcfd01e4e4c213d9e59d18635fdb19 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>");
+				usernames.append(identity.getName() + "<br>");//TODO username
 			}
 			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 a1d822992720b01485b42c9cb8a5e476d44f4737..4fc94a693acfa9e18ce3d5797e3e652e58892ce5 100644
--- a/src/main/java/de/bps/course/nodes/den/DENManageParticipantsController.java
+++ b/src/main/java/de/bps/course/nodes/den/DENManageParticipantsController.java
@@ -339,7 +339,7 @@ public class DENManageParticipantsController extends BasicController {
 		ContactMessage cmsg = new ContactMessage(ureq.getIdentity());
 		ContactList contactList = null;
 		if(participants.size() == 1) {
-			contactList = new ContactList(participants.get(0).getName());
+			contactList = new ContactList(participants.get(0).getName());//TODO username
 		} else {
 			contactList = new ContactList(translate("participants.message.to"));
 		}
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 ca08e4b90b49bdeb9f4debdd0532829712337bce..7105f47558048bfb2800abb5e4622ccd9d1071bd 100644
--- a/src/main/java/de/bps/course/nodes/den/DENManager.java
+++ b/src/main/java/de/bps/course/nodes/den/DENManager.java
@@ -824,7 +824,7 @@ public class DENManager {
 				identity.getUser().getProperty(UserConstants.FIRSTNAME, ureq.getLocale()),
 				identity.getUser().getProperty(UserConstants.LASTNAME, ureq.getLocale()),
 				identity.getUser().getProperty(UserConstants.EMAIL, ureq.getLocale()),
-					identity.getName(),
+					identity.getName(), //TODO username
 					subjectStr
 				};
 		
diff --git a/src/main/java/org/olat/admin/UserAdminMainController.java b/src/main/java/org/olat/admin/UserAdminMainController.java
index 6c12c884cca152a4badd097738893409e988c5d6..03e31c46b5d47dd3c43f5ee41a8c9692febf4664 100644
--- a/src/main/java/org/olat/admin/UserAdminMainController.java
+++ b/src/main/java/org/olat/admin/UserAdminMainController.java
@@ -513,6 +513,7 @@ 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()});
 			Controller monoCtr = MessageUIFactory.createInfoMessage(ureq, getWindowControl(), null, text);
 			return monoCtr;
diff --git a/src/main/java/org/olat/admin/properties/AdvancedPropertiesController.java b/src/main/java/org/olat/admin/properties/AdvancedPropertiesController.java
index 914980e5428afe980ca44471242ea0b09dc70083..d96fd1c991aaa2c41be6c44b696ef35bacf90b6b 100644
--- a/src/main/java/org/olat/admin/properties/AdvancedPropertiesController.java
+++ b/src/main/java/org/olat/admin/properties/AdvancedPropertiesController.java
@@ -27,7 +27,6 @@ package org.olat.admin.properties;
 
 import java.util.List;
 
-import org.olat.admin.user.UserSearchController;
 import org.olat.core.gui.UserRequest;
 import org.olat.core.gui.components.Component;
 import org.olat.core.gui.components.panel.Panel;
@@ -40,10 +39,9 @@ import org.olat.core.gui.control.Controller;
 import org.olat.core.gui.control.Event;
 import org.olat.core.gui.control.WindowControl;
 import org.olat.core.gui.control.controller.BasicController;
+import org.olat.properties.Property;
 import org.olat.properties.PropertyManager;
 
-import org.olat.core.gui.control.generic.closablewrapper.CloseableModalController;
-
 /**
 *  Description:<br>
 *  is the controller for
@@ -103,7 +101,7 @@ public class AdvancedPropertiesController extends BasicController {
 				String propertyName = searchForm.getPropertyName();
 				if (propertyName != null && propertyName.equals("")) propertyName = null;
 
-				List entries = PropertyManager.getInstance().listProperties(searchForm.getIdentity(), null, resourceTypeName, resTypeId, category, propertyName);				
+				List<Property> entries = PropertyManager.getInstance().listProperties(searchForm.getIdentity(), null, resourceTypeName, resTypeId, category, propertyName);				
 				PropertiesTableDataModel ptdm = new PropertiesTableDataModel(entries);
 
 				TableGuiConfiguration tableConfig = new TableGuiConfiguration();
diff --git a/src/main/java/org/olat/admin/properties/AdvancedPropertySearchForm.java b/src/main/java/org/olat/admin/properties/AdvancedPropertySearchForm.java
index b47bf6af683dad0ecfdd03c210eb253e3fce7c64..a4101b89e5a37806b6051f34eb0f7ca0654d9ab4 100644
--- a/src/main/java/org/olat/admin/properties/AdvancedPropertySearchForm.java
+++ b/src/main/java/org/olat/admin/properties/AdvancedPropertySearchForm.java
@@ -80,14 +80,14 @@ public class AdvancedPropertySearchForm extends FormBasicController {
 		super(ureq, wControl);
 		
 		PropertyManager pm = PropertyManager.getInstance();
-		List resourceTypeNames = pm.getAllResourceTypeNames();
+		List<String> resourceTypeNames = pm.getAllResourceTypeNames();
 		int size = resourceTypeNames.size();
 		theKeys = new String[size+1];
 		theValues = new String[size+1];
 		theKeys[0] = "0";
-		theValues[0] = null;
+		theValues[0] = "";
 		int i = 1;
-		for (Iterator iter = resourceTypeNames.iterator(); iter.hasNext(); i++) {
+		for (Iterator<String> iter = resourceTypeNames.iterator(); iter.hasNext(); i++) {
 			theKeys[i] = Integer.toString(i);
 			theValues[i] = (String)iter.next();
 		}
diff --git a/src/main/java/org/olat/admin/properties/PropertiesTableDataModel.java b/src/main/java/org/olat/admin/properties/PropertiesTableDataModel.java
index 821003776fdf77719eadeabc0d9057590aa2359c..0464b11c1fa0b6f723d7fe94bd3fae73eadf8596 100644
--- a/src/main/java/org/olat/admin/properties/PropertiesTableDataModel.java
+++ b/src/main/java/org/olat/admin/properties/PropertiesTableDataModel.java
@@ -25,6 +25,7 @@
 
 package org.olat.admin.properties;
 
+import java.util.ArrayList;
 import java.util.List;
 
 import org.olat.core.gui.components.table.DefaultTableDataModel;
@@ -37,21 +38,21 @@ import org.olat.properties.Property;
 *
 * @author Alexander Schneider
 */
-public class PropertiesTableDataModel extends DefaultTableDataModel {
+public class PropertiesTableDataModel extends DefaultTableDataModel<Property> {
 
 
 	/**
 	 * Default constructor.
 	 */
 	public PropertiesTableDataModel() {
-		super(null);
+		this(new ArrayList<Property>());
 	}
 
 	/**
 	 * Initialize table model with objects.
 	 * @param objects
 	 */
-	public PropertiesTableDataModel(List objects) {
+	public PropertiesTableDataModel(List<Property> objects) {
 		super(objects);
 	}
 	
@@ -68,11 +69,11 @@ public class PropertiesTableDataModel extends DefaultTableDataModel {
 	 * @see org.olat.core.gui.components.table.TableDataModel#getValueAt(int, int)
 	 */
 	public final Object getValueAt(int row, int col) {
-		Property p = (Property)objects.get(row); 
+		Property p = getObject(row); 
 		switch(col) {
 			case 0:
 				Identity id = p.getIdentity();
-				return ((id != null) ?  (p.getIdentity().getName()): (null));
+				return ((id != null) ?  (p.getIdentity().getName()): (null));//TODO username
 			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 6b6809e9755338d2d0c3a7d08f305f5f313e4136..b7ce7f970beec3030f99cbfeeeaa01bc7445d410 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,7 @@ 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()}));
+						getWindowControl().setInfo(translate("msg.subjectalreadyingroup", new String[]{toAdd.get(0).getName()}));//TODO username
 						return;
 					}
 				} else if (toAdd.size() > 1) {
@@ -384,7 +384,7 @@ public class GroupController extends BasicController {
 					if (!alreadyInGroup.isEmpty()) {
 						StringBuilder names = new StringBuilder();
 						for(Identity ident: alreadyInGroup) {
-							names.append(" ").append(ident.getName());
+							names.append(" ").append(ident.getName());//TODO username
 							toAdd.remove(ident);
 						}
 						getWindowControl().setInfo(translate("msg.subjectsalreadyingroup", names.toString()));
@@ -502,7 +502,7 @@ public class GroupController extends BasicController {
 		if (confirmDelete != null) confirmDelete.dispose();
 		StringBuilder names = new StringBuilder();
 		for (Identity identity : toRemove) {
-			names.append(identity.getName()).append(" ");
+			names.append(identity.getName()).append(" ");//TODO username
 		}
 		confirmDelete = activateYesNoDialog(ureq, null, translate("remove.text", names.toString()), confirmDelete);
 		return;
@@ -561,10 +561,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 />");
+	    infoMessage.append(translate("msg.isingroupanonymous", identity.getName())).append("<br />");//TODO username
 		}
 		for (Identity identity : identitiesAddedEvent.getIdentitiesAlreadyInGroup()) {
-			infoMessage.append(translate("msg.subjectalreadyingroup", identity.getName())).append("<br />");
+			infoMessage.append(translate("msg.subjectalreadyingroup", identity.getName())).append("<br />");//TODO username
 		}
 		// 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 810f9d25f4f93b64112a87d1e9a18edfc11b8638..d015055f6acc705e47361a5498e2601e0c6ae884 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();
+			case 0: return co.getIdentity().getName();//TODO username
 			case 1: return co.getOnlineStatus();
 			case 2: return co.getAddedAt();
 			default: {
diff --git a/src/main/java/org/olat/admin/securitygroup/gui/WaitingGroupController.java b/src/main/java/org/olat/admin/securitygroup/gui/WaitingGroupController.java
index 7124e3b8fe2d14f9e1ec799eaa89ad5e99e2b266..39cecad254dc1064a7f0d20d4ce736fafe9b6855 100644
--- a/src/main/java/org/olat/admin/securitygroup/gui/WaitingGroupController.java
+++ b/src/main/java/org/olat/admin/securitygroup/gui/WaitingGroupController.java
@@ -28,6 +28,7 @@ package org.olat.admin.securitygroup.gui;
 import java.util.List;
 
 import org.olat.basesecurity.SecurityGroup;
+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.Table;
@@ -63,6 +64,8 @@ public class WaitingGroupController extends GroupController {
 	private MailNotificationEditController transferMailCtr;
 	private CloseableModalController cmc;
 	private List<Identity> toTransfer;
+	
+	private final UserManager userManager;
 
 	/**
 	 * @param ureq
@@ -75,6 +78,8 @@ public class WaitingGroupController extends GroupController {
 	public WaitingGroupController(UserRequest ureq, WindowControl wControl, boolean mayModifyMembers, boolean keepAtLeastOne, boolean enableTablePreferences,
 			boolean allowDownload, boolean mandatoryEmail, SecurityGroup waitingListGroup) {
 		super(ureq, wControl, mayModifyMembers, keepAtLeastOne, enableTablePreferences, false, allowDownload, mandatoryEmail, waitingListGroup);
+		
+		userManager = CoreSpringFactory.getImpl(UserManager.class);
 	}
 
 	/**
@@ -115,7 +120,8 @@ public class WaitingGroupController extends GroupController {
 				fireEvent(ureq, identitiesMoveEvent);
 				StringBuilder infoMessage = new StringBuilder();
 				for (Identity identity : identitiesMoveEvent.getNotMovedIdentities()) {
-					infoMessage.append(translate("msg.alreadyinwaiitinggroup", identity.getName())).append("<br />");
+					String fullName = userManager.getUserDisplayName(identity);
+					infoMessage.append(translate("msg.alreadyinwaiitinggroup", fullName)).append("<br />");
 				}
 				// report any errors on screen
 				if (infoMessage.length() > 0) getWindowControl().setInfo(infoMessage.toString());
diff --git a/src/main/java/org/olat/admin/sysinfo/LockTableModel.java b/src/main/java/org/olat/admin/sysinfo/LockTableModel.java
index 751c49c0dc9f482813eab2452c0eb46eac60c696..975156f4aa6abe597f959fb3cbb3e7b446ed773a 100644
--- a/src/main/java/org/olat/admin/sysinfo/LockTableModel.java
+++ b/src/main/java/org/olat/admin/sysinfo/LockTableModel.java
@@ -60,7 +60,7 @@ public class LockTableModel extends DefaultTableDataModel<LockEntry> {
 	public Object getValueAt(int row, int col) {
 		LockEntry lock = getObject(row); 
 		switch (col) {
-			case 0: return lock.getKey();
+			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()));
diff --git a/src/main/java/org/olat/admin/sysinfo/UserSessionController.java b/src/main/java/org/olat/admin/sysinfo/UserSessionController.java
index a2245066789ef2f3ba4372a055d37cacef63a718..5bde6d3d0234395ecd814e63ee4fe6faf918bab2 100644
--- a/src/main/java/org/olat/admin/sysinfo/UserSessionController.java
+++ b/src/main/java/org/olat/admin/sysinfo/UserSessionController.java
@@ -149,7 +149,7 @@ public class UserSessionController extends BasicController implements StackedCon
 					listenTo(detailsCtrl);
 					
 					String username = usess.getIdentity() == null ? "-"
-							: UserManager.getInstance().getUserDisplayName(usess.getIdentity().getUser());
+							: UserManager.getInstance().getUserDisplayName(usess.getIdentity());
 					stackController.pushController(username, detailsCtrl);
 				}
 			}
diff --git a/src/main/java/org/olat/admin/user/ExtendedIdentitiesTableDataModel.java b/src/main/java/org/olat/admin/user/ExtendedIdentitiesTableDataModel.java
index 6f65fff0e9422ea1da647bd3a5acd81fde834ab3..48687de2f51fb8b9adb9c0cdf9b9f1f7405c4c50 100644
--- a/src/main/java/org/olat/admin/user/ExtendedIdentitiesTableDataModel.java
+++ b/src/main/java/org/olat/admin/user/ExtendedIdentitiesTableDataModel.java
@@ -117,7 +117,7 @@ public class ExtendedIdentitiesTableDataModel extends DefaultTableDataModel {
 		Identity identity = getIdentityAt(row);
 		User user = identity.getUser();
 		if (col == 0) {
-			return identity.getName();
+			return identity.getName();//TODO username
 
 		} else if (col > 0 && col < userPropertyHandlers.size() + 1) {
 			// get user property for this column
diff --git a/src/main/java/org/olat/admin/user/UserAdminController.java b/src/main/java/org/olat/admin/user/UserAdminController.java
index 5761316fc2042e518661da267be2592bd50623a4..a648e3ef4ec56861158c1edb80e79aa5221aacae 100644
--- a/src/main/java/org/olat/admin/user/UserAdminController.java
+++ b/src/main/java/org/olat/admin/user/UserAdminController.java
@@ -340,7 +340,7 @@ public class UserAdminController extends BasicController implements Activateable
 	 */
 	private void exposeUserDataToVC(UserRequest ureq, Identity identity) {		
 		Locale loc = ureq.getLocale();
-		myContent.contextPut("foundUserName", identity.getName());
+		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));
diff --git a/src/main/java/org/olat/admin/user/UserAuthenticationsEditorController.java b/src/main/java/org/olat/admin/user/UserAuthenticationsEditorController.java
index 5068a95cbe49b0febd8aee32c22c81002cc2c42c..d28f3ba48e066c78f5ecb2f55f1ec9d7113c0f31 100644
--- a/src/main/java/org/olat/admin/user/UserAuthenticationsEditorController.java
+++ b/src/main/java/org/olat/admin/user/UserAuthenticationsEditorController.java
@@ -118,6 +118,7 @@ public class UserAuthenticationsEditorController extends BasicController{
 				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);
 					confirmationDialog.setUserObject(auth);
 					return;
diff --git a/src/main/java/org/olat/admin/user/UserSearchListProvider.java b/src/main/java/org/olat/admin/user/UserSearchListProvider.java
index 61311e2f212c862952ad341bd39de1416ec78908..8f055ddc2074e5a26b63fe4ae6522d51256ff564 100644
--- a/src/main/java/org/olat/admin/user/UserSearchListProvider.java
+++ b/src/main/java/org/olat/admin/user/UserSearchListProvider.java
@@ -30,7 +30,6 @@ import org.olat.core.gui.control.generic.ajax.autocompletion.ListProvider;
 import org.olat.core.gui.control.generic.ajax.autocompletion.ListReceiver;
 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.user.UserManager;
 
@@ -64,10 +63,9 @@ public class UserSearchListProvider implements ListProvider {
 		for (Iterator<Identity> it_res = res.iterator(); (hasMore=it_res.hasNext()) && maxEntries > 0;) {
 			maxEntries--;
 			Identity ident = it_res.next();
-			User u = ident.getUser();
 			String key = ident.getKey().toString();
 			String displayKey = ident.getName();
-			String displayText = userManager.getUserDisplayName(u);
+			String displayText = userManager.getUserDisplayName(ident);
 			receiver.addEntry(key, displayKey, displayText, CSSHelper.CSS_CLASS_USER);
 		}					
 		if(hasMore){
diff --git a/src/main/java/org/olat/admin/user/UserTableDataModel.java b/src/main/java/org/olat/admin/user/UserTableDataModel.java
index a7ef6ff3b71042251b92ac0a6a87a9b6ee4ecdd8..706b3da4ad3f80d479c90765d1ba50ff1c548ba7 100644
--- a/src/main/java/org/olat/admin/user/UserTableDataModel.java
+++ b/src/main/java/org/olat/admin/user/UserTableDataModel.java
@@ -92,7 +92,7 @@ public class UserTableDataModel extends DefaultTableDataModel<Identity> {
 		Identity identity = getObject(row);
 		User user = identity.getUser();
 		if (col == 0) {
-			return identity.getName();			
+			return identity.getName();//TODO username		
 
 		} else if ((col-1) < userPropertyHandlers.size()) {
 			UserPropertyHandler userPropertyHandler = userPropertyHandlers.get(col-1);
diff --git a/src/main/java/org/olat/admin/user/bulkChange/UserBulkChangeStep02.java b/src/main/java/org/olat/admin/user/bulkChange/UserBulkChangeStep02.java
index a93b7918f53a05e9c5f86d82f80becbe0abaf914..671463cf3d4adf919264f9dd8c5b28bf5c2acafd 100644
--- a/src/main/java/org/olat/admin/user/bulkChange/UserBulkChangeStep02.java
+++ b/src/main/java/org/olat/admin/user/bulkChange/UserBulkChangeStep02.java
@@ -186,7 +186,7 @@ class UserBulkChangeStep02 extends BasicStep {
 				List<String> userDataArray = new ArrayList<String>();
 
 				// add column for login
-				userDataArray.add(identity.getName());
+				userDataArray.add(identity.getName());//TODO username
 				// add columns for password
 				if (attributeChangeMap.containsKey(UserBulkChangeManager.PWD_IDENTIFYER)) {
 					userDataArray.add(attributeChangeMap.get(UserBulkChangeManager.PWD_IDENTIFYER));
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 11dac6a9e1c04d09aed88f5e861a4a8d957e88c8..467c308b832f16b5d3442c3e39132c1dd4b82b4b 100644
--- a/src/main/java/org/olat/admin/user/delete/DirectDeleteController.java
+++ b/src/main/java/org/olat/admin/user/delete/DirectDeleteController.java
@@ -115,6 +115,7 @@ 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);
 				return;
 			} else {
@@ -166,6 +167,7 @@ public class DirectDeleteController extends BasicController {
 			if (buf.length() > 0) {
 				buf.append(",");
 			}
+			//TODO username
 			buf.append(identity.getName());
 		}
 		return buf.toString();
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 6609b18a1313b441e5f38ff0fec6d0fb3d455af1..e498a769b930ba2756a3ada3438aa33c19ddb7c0 100644
--- a/src/main/java/org/olat/admin/user/delete/UserDeleteTableModel.java
+++ b/src/main/java/org/olat/admin/user/delete/UserDeleteTableModel.java
@@ -103,7 +103,7 @@ public class UserDeleteTableModel extends DefaultTableDataModel {
 		Identity identity = (Identity) getObject(row);
 		User user = identity.getUser();
 		if (col == 0) {
-			return identity.getName();		
+			return identity.getName();//TODO username	
 		} else if (col < userPropertyHandlers.size()+1) {
 			UserPropertyHandler userPropertyHandler = userPropertyHandlers.get(col-1);
 			String value = userPropertyHandler.getUserProperty(user, getLocale());
diff --git a/src/main/java/org/olat/admin/user/groups/GroupLeaveDialogBoxController.java b/src/main/java/org/olat/admin/user/groups/GroupLeaveDialogBoxController.java
index a1f0063eaffb0ccb7295025c576792f4bc134fd2..e2a82b9756991e3458943dcde6a1e47b7687b355 100644
--- a/src/main/java/org/olat/admin/user/groups/GroupLeaveDialogBoxController.java
+++ b/src/main/java/org/olat/admin/user/groups/GroupLeaveDialogBoxController.java
@@ -69,7 +69,7 @@ public class GroupLeaveDialogBoxController extends FormBasicController {
 			if(groupToLeaveNames.length() > 0) groupToLeaveNames.append(", ");
 			groupToLeaveNames.append(group.getName());
 		}
-		String identityName = UserManager.getInstance().getUserDisplayName(leavingIdentity.getUser());
+		String identityName = UserManager.getInstance().getUserDisplayName(leavingIdentity);
 		String leaveText = translate("unsubscribe.text", new String[]{identityName, groupToLeaveNames.toString()});
 		uifactory.addStaticTextElement("leaving.desc", null, leaveText, formLayout);
 		String[] values = new String[]{
diff --git a/src/main/java/org/olat/admin/user/imp/Model.java b/src/main/java/org/olat/admin/user/imp/Model.java
index 4d0a692e179b106fc41b2a9d4eb94926ec6484b5..925016a05b5a888c43e6d8dff6e1829def187240 100644
--- a/src/main/java/org/olat/admin/user/imp/Model.java
+++ b/src/main/java/org/olat/admin/user/imp/Model.java
@@ -70,7 +70,7 @@ public class Model extends DefaultTableDataModel<Object> {
 		if (col == 0) { // existing
 			return (userExists ? Boolean.FALSE : Boolean.TRUE);
 		}
-		
+		//TODO username
 		if (col == 1) { return (userExists ? ident.getName() : userArray.get(col)); }
 
 		if (col == 2) {// pwd
diff --git a/src/main/java/org/olat/catalog/restapi/CatalogWebService.java b/src/main/java/org/olat/catalog/restapi/CatalogWebService.java
index dba650b57e520358a97956179710c8e3efb0bf1c..ba37da08211cee707ae7ae160f7e65da21760277 100644
--- a/src/main/java/org/olat/catalog/restapi/CatalogWebService.java
+++ b/src/main/java/org/olat/catalog/restapi/CatalogWebService.java
@@ -56,6 +56,7 @@ import org.olat.basesecurity.SecurityGroup;
 import org.olat.catalog.CatalogEntry;
 import org.olat.catalog.CatalogManager;
 import org.olat.catalog.ui.CatalogController;
+import org.olat.core.CoreSpringFactory;
 import org.olat.core.commons.persistence.DBFactory;
 import org.olat.core.gui.UserRequest;
 import org.olat.core.gui.translator.Translator;
@@ -72,6 +73,7 @@ import org.olat.repository.RepositoryEntry;
 import org.olat.repository.RepositoryManager;
 import org.olat.restapi.support.MediaTypeVariants;
 import org.olat.restapi.support.vo.ErrorVO;
+import org.olat.user.UserManager;
 import org.olat.user.restapi.UserVO;
 import org.olat.user.restapi.UserVOFactory;
 
@@ -758,7 +760,9 @@ public class CatalogWebService {
 		}
 		
 		Translator translator = Util.createPackageTranslator(CatalogController.class, locale);
-		String translation = translator.translate("catalog.locked.by", new String[]{lock.getOwner().getName()});
+
+		String ownerName = CoreSpringFactory.getImpl(UserManager.class).getUserDisplayName(lock.getOwner());
+		String translation = translator.translate("catalog.locked.by", new String[]{ ownerName });
 		ErrorVO vo = new ErrorVO("org.olat.catalog.ui","catalog.locked.by",translation);
 		ErrorVO[] voes = new ErrorVO[]{vo};
 		return Response.ok(voes).status(Status.UNAUTHORIZED).build();
diff --git a/src/main/java/org/olat/catalog/ui/CatalogController.java b/src/main/java/org/olat/catalog/ui/CatalogController.java
index fe1efd418de32ce544c366f9ab61e501793688d5..48627d2d711f948b5b799531ce9bdf0055ea8762 100644
--- a/src/main/java/org/olat/catalog/ui/CatalogController.java
+++ b/src/main/java/org/olat/catalog/ui/CatalogController.java
@@ -94,6 +94,7 @@ import org.olat.resource.accesscontrol.ACService;
 import org.olat.resource.accesscontrol.model.OLATResourceAccess;
 import org.olat.resource.accesscontrol.model.PriceMethodBundle;
 import org.olat.resource.accesscontrol.ui.PriceFormat;
+import org.olat.user.UserManager;
 
 /**
  * <pre>
@@ -229,6 +230,7 @@ public class CatalogController extends BasicController implements Activateable2
 	public static final String LOCK_TOKEN = "catalogeditlock";
 	
 	private final MarkManager markManager;
+	private final UserManager userManager;
 	
 	/**
 	 * Init with catalog root
@@ -245,6 +247,7 @@ public class CatalogController extends BasicController implements Activateable2
 		acService = CoreSpringFactory.getImpl(ACService.class);
 		markManager = CoreSpringFactory.getImpl(MarkManager.class);
 		repositoryManager = CoreSpringFactory.getImpl(RepositoryManager.class);
+		userManager = CoreSpringFactory.getImpl(UserManager.class);
 
 		List<CatalogEntry> rootNodes = cm.getRootCatalogEntries();
 		CatalogEntry rootce;
@@ -422,7 +425,8 @@ public class CatalogController extends BasicController implements Activateable2
 			if (event.getCommand().equals(ACTION_ADD_CTLGCATEGORY)) {
 				catModificationLock = CoordinatorManager.getInstance().getCoordinator().getLocker().acquireLock(OresHelper.createOLATResourceableType(CatalogController.class), ureq.getIdentity(), LOCK_TOKEN);
 				if ( ! catModificationLock.isSuccess()) {
-					showError("catalog.locked.by", catModificationLock.getOwner().getName());
+					String ownerName = userManager.getUserDisplayName(catModificationLock.getOwner());
+					showError("catalog.locked.by", ownerName);
 					return;
 				}
 				removeAsListenerAndDispose(addEntryForm);
@@ -464,7 +468,8 @@ public class CatalogController extends BasicController implements Activateable2
 			else if (event.getCommand().equals(ACTION_EDIT_CTLGCATEGORY)) {
 				catModificationLock = CoordinatorManager.getInstance().getCoordinator().getLocker().acquireLock(OresHelper.createOLATResourceableType(CatalogController.class), ureq.getIdentity(), LOCK_TOKEN);
 				if ( ! catModificationLock.isSuccess()) {
-					showError("catalog.locked.by", catModificationLock.getOwner().getName());
+					String ownerName = userManager.getUserDisplayName(catModificationLock.getOwner());
+					showError("catalog.locked.by", ownerName);
 					return;
 				}
 				removeAsListenerAndDispose(editEntryForm);
@@ -513,7 +518,8 @@ public class CatalogController extends BasicController implements Activateable2
 			else if (event.getCommand().equals(ACTION_DELETE_CTLGCATEGORY)) {
 				catModificationLock = CoordinatorManager.getInstance().getCoordinator().getLocker().acquireLock(OresHelper.createOLATResourceableType(CatalogController.class), ureq.getIdentity(), LOCK_TOKEN);
 				if ( ! catModificationLock.isSuccess()) {
-					showError("catalog.locked.by", catModificationLock.getOwner().getName());
+					String ownerName = userManager.getUserDisplayName(catModificationLock.getOwner());
+					showError("catalog.locked.by", ownerName);
 					return;
 				}
 				String[] trnslP = { currentCatalogEntry.getName() };
@@ -592,7 +598,8 @@ public class CatalogController extends BasicController implements Activateable2
 				//
 				catModificationLock = CoordinatorManager.getInstance().getCoordinator().getLocker().acquireLock(OresHelper.createOLATResourceableType(CatalogController.class), ureq.getIdentity(), LOCK_TOKEN);
 				if (!catModificationLock.isSuccess()) {
-					showError("catalog.locked.by", catModificationLock.getOwner().getName());
+					String ownerName = userManager.getUserDisplayName(catModificationLock.getOwner());
+					showError("catalog.locked.by", ownerName);
 					return;
 				}
 				
diff --git a/src/main/java/org/olat/catalog/ui/CatalogNodeController.java b/src/main/java/org/olat/catalog/ui/CatalogNodeController.java
index f73c00db4e80fdb78cacabb0e0345b0f6e57e5e9..c3fc4f149950c4140c213fc38e51d70ac57ba1e8 100644
--- a/src/main/java/org/olat/catalog/ui/CatalogNodeController.java
+++ b/src/main/java/org/olat/catalog/ui/CatalogNodeController.java
@@ -73,6 +73,7 @@ import org.olat.repository.RepositoryManager;
 import org.olat.repository.RepositoryTableModel;
 import org.olat.repository.SearchRepositoryEntryParameters;
 import org.olat.repository.controllers.RepositorySearchController;
+import org.olat.user.UserManager;
 
 /**
  * 
@@ -107,6 +108,7 @@ public class CatalogNodeController extends BasicController implements Activateab
 	private final CatalogManager cm;
 	private final BaseSecurity securityManager;
 	private final RepositoryManager repositoryManager;
+	private final UserManager userManager;
 	
 	private boolean localTreeAdmin; 
 	
@@ -119,6 +121,7 @@ public class CatalogNodeController extends BasicController implements Activateab
 		cm = CatalogManager.getInstance();
 		securityManager = CoreSpringFactory.getImpl(BaseSecurity.class);
 		repositoryManager = CoreSpringFactory.getImpl(RepositoryManager.class);
+		userManager = CoreSpringFactory.getImpl(UserManager.class);
 
 		this.catalogEntry = catalogEntry;
 		
@@ -302,7 +305,8 @@ public class CatalogNodeController extends BasicController implements Activateab
 	private boolean acquireLock() {
 		catModificationLock = CoordinatorManager.getInstance().getCoordinator().getLocker().acquireLock(OresHelper.createOLATResourceableType(CatalogController.class), getIdentity(), LOCK_TOKEN);
 		if (!catModificationLock.isSuccess()) {
-			showError("catalog.locked.by", catModificationLock.getOwner().getName());
+			String ownerName = userManager.getUserDisplayName(catModificationLock.getOwner());
+			showError("catalog.locked.by", ownerName);
 			return false;
 		}
 		return true;
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 399ad60c6233da7ff6068d1e816bf8aea2176f83..35f4650694418184ce430cbe41681732cb17bfa0 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
@@ -169,7 +169,7 @@ public class HTMLEditorController extends FormBasicController {
 			VelocityContainer vc = (VelocityContainer) flc.getComponent();
 			if (!lock.isSuccess()) {
 				vc.contextPut("locked", Boolean.TRUE);
-				vc.contextPut("lockOwner", lock.getOwner().getName());
+				vc.contextPut("lockOwner", lock.getOwner().getName());//TODO username
 				this.editable = false;
 				return;
 			} else {
diff --git a/src/main/java/org/olat/core/commons/fullWebApp/DefaultFooterController.java b/src/main/java/org/olat/core/commons/fullWebApp/DefaultFooterController.java
index 39fba925bc2bd3eabab68b2b44724200e1ce9732..6a0a9ac204ec96bf3bdf1c039af16bac935d23cb 100644
--- a/src/main/java/org/olat/core/commons/fullWebApp/DefaultFooterController.java
+++ b/src/main/java/org/olat/core/commons/fullWebApp/DefaultFooterController.java
@@ -29,6 +29,7 @@ import org.olat.core.gui.control.WindowControl;
 import org.olat.core.gui.control.controller.BasicController;
 import org.olat.core.helpers.Settings;
 import org.olat.core.util.session.UserSessionManager;
+import org.olat.user.UserManager;
 
 /**
  * <h3>Description:</h3>
@@ -72,7 +73,8 @@ public class DefaultFooterController extends BasicController {
 		// Push information about user
 		if (ureq.getUserSession().isAuthenticated()) {
 			footerVC.contextPut("loggedIn", Boolean.TRUE);
-			footerVC.contextPut("username", ureq.getIdentity().getName());
+			String fullName = CoreSpringFactory.getImpl(UserManager.class).getUserDisplayName(getIdentity());
+			footerVC.contextPut("username", fullName);
 		} else {
 			footerVC.contextPut("loggedIn", Boolean.FALSE);
 		}
diff --git a/src/main/java/org/olat/core/commons/modules/bc/FileCopyController.java b/src/main/java/org/olat/core/commons/modules/bc/FileCopyController.java
index 7c9f2a7f16482b21c464b535b5675e8eed722628..5c212fbbc14ef1e8a513f984c66d7b9dc7cc3736 100644
--- a/src/main/java/org/olat/core/commons/modules/bc/FileCopyController.java
+++ b/src/main/java/org/olat/core/commons/modules/bc/FileCopyController.java
@@ -307,7 +307,7 @@ public class FileCopyController extends LinkChooserController {
 			if (metaDataCtr != null) {
 				meta = metaDataCtr.getMetaInfo(meta);
 			}
-			meta.setAuthor(ureq.getIdentity().getName());
+			meta.setAuthor(ureq.getIdentity());
 			meta.clearThumbnails();//if overwrite an older file
 			meta.write();
 		}
diff --git a/src/main/java/org/olat/core/commons/modules/bc/FileUploadController.java b/src/main/java/org/olat/core/commons/modules/bc/FileUploadController.java
index d823f45af8968d655726e97483cbc3fedd565bd8..306894e5b55f51f1b3342ebb2ae6a47b111a7fdf 100644
--- a/src/main/java/org/olat/core/commons/modules/bc/FileUploadController.java
+++ b/src/main/java/org/olat/core/commons/modules/bc/FileUploadController.java
@@ -691,7 +691,7 @@ public class FileUploadController extends FormBasicController {
 			if (metaDataCtr != null) {
 				meta = metaDataCtr.getMetaInfo(meta);
 			}
-			meta.setAuthor(ureq.getIdentity().getName());
+			meta.setAuthor(ureq.getIdentity());
 			meta.clearThumbnails();//if overwrite an older file
 			meta.write();
 		}
diff --git a/src/main/java/org/olat/core/commons/modules/bc/commands/CmdCreateFile.java b/src/main/java/org/olat/core/commons/modules/bc/commands/CmdCreateFile.java
index 712e8d6b2c6a96a3f9e7477a91a5374f98f351e8..c6442627437b255eb58d8a46a963d5650715ec4c 100644
--- a/src/main/java/org/olat/core/commons/modules/bc/commands/CmdCreateFile.java
+++ b/src/main/java/org/olat/core/commons/modules/bc/commands/CmdCreateFile.java
@@ -217,7 +217,7 @@ public class CmdCreateFile extends BasicController implements FolderCommand {
 			if (item instanceof OlatRelPathImpl) {
 				// update meta data
 				MetaInfo meta = MetaInfoFactory.createMetaInfoFor((OlatRelPathImpl)item);
-				meta.setAuthor(ureq.getIdentity().getName());
+				meta.setAuthor(ureq.getIdentity());
 				meta.write();
 			}	
 			fileName = getItemName();			
diff --git a/src/main/java/org/olat/core/commons/modules/bc/commands/CmdCreateFolder.java b/src/main/java/org/olat/core/commons/modules/bc/commands/CmdCreateFolder.java
index 78f3983711aff74e3da2c9107a91c7d904a53f7e..b3b27e6bc1ea92c325b2fd5b9482de566032bd3c 100644
--- a/src/main/java/org/olat/core/commons/modules/bc/commands/CmdCreateFolder.java
+++ b/src/main/java/org/olat/core/commons/modules/bc/commands/CmdCreateFolder.java
@@ -159,7 +159,7 @@ private static Map<String,String> i18nkeyMap;
 			if (item instanceof OlatRelPathImpl) {
 				// update meta data
 				MetaInfo meta = MetaInfoFactory.createMetaInfoFor((OlatRelPathImpl)item);
-				meta.setAuthor(ureq.getIdentity().getName());
+				meta.setAuthor(ureq.getIdentity());
 				meta.write();
 			}		
 			fireEvent(ureq, Event.DONE_EVENT);							
diff --git a/src/main/java/org/olat/core/commons/modules/bc/commands/CmdEditMeta.java b/src/main/java/org/olat/core/commons/modules/bc/commands/CmdEditMeta.java
index 5ceac221e849107933d40314ecf37e3e9a621aa8..e4c8eacb72bd195783d4e6ce99dda651645a6884 100644
--- a/src/main/java/org/olat/core/commons/modules/bc/commands/CmdEditMeta.java
+++ b/src/main/java/org/olat/core/commons/modules/bc/commands/CmdEditMeta.java
@@ -38,7 +38,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.translator.Translator;
-import org.olat.core.util.FileUtils;
 import org.olat.core.util.StringHelper;
 import org.olat.core.util.vfs.VFSConstants;
 import org.olat.core.util.vfs.VFSContainer;
diff --git a/src/main/java/org/olat/core/commons/modules/bc/commands/CmdUnzip.java b/src/main/java/org/olat/core/commons/modules/bc/commands/CmdUnzip.java
index bb300f9bbda4f522377ce5eb33bf696159f45f27..2be72b0870d7af4b31744de534e7f5a7fd35f8a7 100644
--- a/src/main/java/org/olat/core/commons/modules/bc/commands/CmdUnzip.java
+++ b/src/main/java/org/olat/core/commons/modules/bc/commands/CmdUnzip.java
@@ -177,7 +177,7 @@ public class CmdUnzip extends BasicController implements FolderCommand {
 		} else if (zipContainer instanceof MetaTagged) {
 			MetaInfo info = ((MetaTagged)zipContainer).getMetaInfo();
 			if(info != null && ureq.getIdentity() != null) {
-				info.setAuthor(ureq.getIdentity().getName());
+				info.setAuthor(ureq.getIdentity());
 				info.write();
 			}
 		}
diff --git a/src/main/java/org/olat/core/commons/modules/bc/commands/CmdZip.java b/src/main/java/org/olat/core/commons/modules/bc/commands/CmdZip.java
index 42b9ded5e21fd1c4c0887d0d4d3101bfc790c988..279bb3d7a7eead37c33c8a443b3d1b714ed473ca 100644
--- a/src/main/java/org/olat/core/commons/modules/bc/commands/CmdZip.java
+++ b/src/main/java/org/olat/core/commons/modules/bc/commands/CmdZip.java
@@ -113,7 +113,7 @@ public class CmdZip extends BasicController implements FolderCommand {
 	/**
 	 * @see org.olat.core.gui.control.DefaultController#event(org.olat.core.gui.UserRequest, org.olat.core.gui.components.Component, org.olat.core.gui.control.Event)
 	 */
-	@SuppressWarnings("unused")
+	@Override
 	public void event(UserRequest ureq, Component source, Event event) {
 		//empty
 	}
@@ -199,7 +199,7 @@ public class CmdZip extends BasicController implements FolderCommand {
 				if(zipFile instanceof MetaTagged) {
 					MetaInfo info = ((MetaTagged)zipFile).getMetaInfo();
 					if(info != null) {
-						info.setAuthor(ureq.getIdentity().getName());
+						info.setAuthor(ureq.getIdentity());
 						info.write();
 					}
 				}
diff --git a/src/main/java/org/olat/core/commons/modules/bc/components/ListRenderer.java b/src/main/java/org/olat/core/commons/modules/bc/components/ListRenderer.java
index 755baa7a989f0140e756068ebf89e2afeecc4788..89c6721096aa0faa110a0a1160fac6c60b248d45 100644
--- a/src/main/java/org/olat/core/commons/modules/bc/components/ListRenderer.java
+++ b/src/main/java/org/olat/core/commons/modules/bc/components/ListRenderer.java
@@ -55,6 +55,7 @@ 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.core.util.vfs.version.Versions;
+import org.olat.user.UserManager;
 
 /**
  * Initial Date:  Feb 12, 2004
@@ -304,6 +305,9 @@ public class ListRenderer {
 
 			String author = metaInfo.getAuthor();
 			if (StringHelper.containsNonWhitespace(author)) {
+				if(!"-".equals(author)) {
+					author = UserManager.getInstance().getUserDisplayName(author);
+				}
 				sb.append("<p>").append(Formatter.escapeDoubleQuotes(translator.translate("mf.author")));
 				sb.append(": ").append(Formatter.escapeDoubleQuotes(author)).append("</p>");			
 			}
diff --git a/src/main/java/org/olat/core/commons/modules/bc/meta/MetaInfo.java b/src/main/java/org/olat/core/commons/modules/bc/meta/MetaInfo.java
index e78daf4c1126eada4a08b0acef3504ac67a16228..3ecd61b8411431a8027d4097443dd21889c9854e 100644
--- a/src/main/java/org/olat/core/commons/modules/bc/meta/MetaInfo.java
+++ b/src/main/java/org/olat/core/commons/modules/bc/meta/MetaInfo.java
@@ -203,7 +203,10 @@ public interface MetaInfo {
 	/**
 	 * @param string
 	 */
+	@Deprecated
 	public void setAuthor(String username);
+	
+	public void setAuthor(Identity identy);
 
 	/**
 	 * @param string
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 48985c48ad40cc21542d8736934e8dccaebdd9b6..125983208b4bbd2c35b941bd2f07a613e87db8c7 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
@@ -587,7 +587,7 @@ public class MetaInfoFileImpl extends DefaultHandler implements MetaInfo {
 					log.warn("Found no idenitiy with key='" + authorIdentKey + "'");
 					return "-";
 				}
-				return identity.getName(); 
+				return identity.getName();
 			} catch (Exception e) {
 				return "-";
 			}
@@ -630,7 +630,7 @@ public class MetaInfoFileImpl extends DefaultHandler implements MetaInfo {
 			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() + ")";
+			formattedName = formattedName + " (" + identity.getName() + ")";//TODO username
 			return formattedName; 
 		}	
 	}
@@ -678,6 +678,16 @@ public class MetaInfoFileImpl extends DefaultHandler implements MetaInfo {
 		authorIdentKey = identity.getKey(); 
 	}
 
+	@Override
+	public void setAuthor(Identity identity) {
+		if (identity == null) {
+			log.warn("Found no idenity");
+			authorIdentKey = null;
+			return;
+		}
+		authorIdentKey = identity.getKey(); 
+	}
+
 	/**
 	 * @param string
 	 */
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 ae64337a40513b6542c226e9b126b856f62700b2..69041589b1b90c3ef8aae4aaf388863c4ef12862 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
@@ -24,14 +24,12 @@ import java.util.ArrayList;
 import java.util.BitSet;
 import java.util.Calendar;
 import java.util.Collection;
-import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Locale;
 import java.util.Map;
 
-import org.olat.basesecurity.BaseSecurityManager;
-import org.olat.basesecurity.IdentityShort;
+import org.olat.core.CoreSpringFactory;
 import org.olat.core.commons.modules.bc.commands.FolderCommand;
 import org.olat.core.commons.modules.bc.commands.FolderCommandStatus;
 import org.olat.core.gui.UserRequest;
@@ -60,6 +58,7 @@ import org.olat.core.util.vfs.callbacks.VFSSecurityCallback;
 import org.olat.core.util.vfs.version.VFSRevision;
 import org.olat.core.util.vfs.version.Versions;
 import org.olat.core.util.vfs.version.VersionsManager;
+import org.olat.user.UserManager;
 
 /**
  * 
@@ -91,11 +90,13 @@ public class DeletedFileListController extends BasicController {
 	private DialogBoxController dialogCtr;
 
 	private boolean isAdmin;
+	private UserManager userManager;
 	
 	public DeletedFileListController(UserRequest ureq, WindowControl wControl, VFSContainer container) {
 		super(ureq, wControl);
 		this.container = container;
 		deletedFiles = VersionsManager.getInstance().getDeletedFiles(container);
+		userManager = CoreSpringFactory.getImpl(UserManager.class);
 		
 		isAdmin = ureq.getUserSession().getRoles().isOLATAdmin();
 
@@ -135,21 +136,17 @@ public class DeletedFileListController extends BasicController {
 	private void loadModel(UserRequest ureq) {
 		Collection<String> names = new HashSet<String>();
 		for(Versions deletedFile:deletedFiles) {
-			if(deletedFile.getCreator() != null) {
+			if(deletedFile.getCreator() != null && !"-".equals(deletedFile.getCreator())) {
 				names.add(deletedFile.getCreator());
 			}
 			VFSRevision lastRevision = getLastRevision(deletedFile);
-			if(lastRevision != null && lastRevision.getAuthor() != null) {
+			if(lastRevision != null && lastRevision.getAuthor() != null && !"-".equals(lastRevision.getAuthor())) {
 				names.add(lastRevision.getAuthor());
 			}
 		}
 		
-		Map<String, IdentityShort> mappedIdentities = new HashMap<String, IdentityShort>();
-		for(IdentityShort identity :BaseSecurityManager.getInstance().findShortIdentitiesByName(names)) {
-			mappedIdentities.put(identity.getName(), identity);
-		}
-
-		DeletedFileListDataModel model = new DeletedFileListDataModel(deletedFiles, mappedIdentities, ureq.getLocale());
+		Map<String, String> mappedFullnames = userManager.getUserDisplayNamesByUserName(names);
+		DeletedFileListDataModel model = new DeletedFileListDataModel(deletedFiles, mappedFullnames, ureq.getLocale());
 		deletedFilesListTableCtr.setTableDataModel(model);
 	}
 
@@ -217,6 +214,7 @@ public class DeletedFileListController extends BasicController {
 			}
 		} else if (source == dialogCtr) {
 			if (DialogBoxUIFactory.isYesEvent(event)) {	
+				@SuppressWarnings("unchecked")
 				List<Versions> versionsToDelete =  (List<Versions>)dialogCtr.getUserObject();
 				VersionsManager.getInstance().deleteVersions(versionsToDelete);
 				status = FolderCommandStatus.STATUS_SUCCESS;
@@ -271,15 +269,15 @@ public class DeletedFileListController extends BasicController {
 		return lastRevision;
 	}
 
-	public class DeletedFileListDataModel extends BaseTableDataModelWithoutFilter implements TableDataModel {
+	public class DeletedFileListDataModel extends BaseTableDataModelWithoutFilter<Versions> implements TableDataModel<Versions> {
 		private final DateFormat format;
 		private final List<Versions> versionList;
 		private final Calendar cal = Calendar.getInstance();
-		private final Map<String, IdentityShort> mappedIdentities;
+		private final Map<String, String> mappedFullnames;
 
-		public DeletedFileListDataModel(List<Versions> versionList, Map<String, IdentityShort> mappedIdentities, Locale locale) {
+		public DeletedFileListDataModel(List<Versions> versionList, Map<String, String> mappedFullnames, Locale locale) {
 			this.versionList = versionList;
-			this.mappedIdentities = mappedIdentities;
+			this.mappedFullnames = mappedFullnames;
 			format = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT, locale);
 		}
 
@@ -319,16 +317,13 @@ public class DeletedFileListController extends BasicController {
 			if(!StringHelper.containsNonWhitespace(name)) {
 				return null;
 			}
-			IdentityShort id = mappedIdentities.get(name);
-			if(id == null) {
+			String fullName = mappedFullnames.get(name);
+			if(fullName == null) {
 				return null;
 			}
 			
 			StringBuilder sb = new StringBuilder();
-			sb.append(id.getFirstName())
-			  .append(" ")
-			  .append(id.getLastName());
-			
+			sb.append(fullName);
 			if(isAdmin) {
 				sb.append(" (").append(name).append(")");
 			}
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 ff5953609e9b83c7a383033b1cf5b388feea9210..57af17e98a04c3e756da98ba859a1d7a68edb8a4 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
@@ -33,6 +33,7 @@ import java.util.Map;
 
 import org.olat.basesecurity.BaseSecurityManager;
 import org.olat.basesecurity.IdentityShort;
+import org.olat.core.CoreSpringFactory;
 import org.olat.core.commons.modules.bc.commands.FolderCommand;
 import org.olat.core.commons.modules.bc.commands.FolderCommandStatus;
 import org.olat.core.gui.UserRequest;
@@ -60,6 +61,7 @@ import org.olat.core.util.vfs.VFSRevisionMediaResource;
 import org.olat.core.util.vfs.version.VFSRevision;
 import org.olat.core.util.vfs.version.Versionable;
 import org.olat.core.util.vfs.version.Versions;
+import org.olat.user.UserManager;
 
 /**
  * 
@@ -88,6 +90,7 @@ public class RevisionListController extends BasicController {
 	private DialogBoxController confirmDeleteBoxCtr;
 	private final VelocityContainer mainVC;
 	private final boolean isAdmin;
+	private final UserManager userManager;
 
 	public RevisionListController(UserRequest ureq, WindowControl wControl, Versionable versionedFile) {
 		this(ureq, wControl, versionedFile, null, null);
@@ -97,6 +100,7 @@ public class RevisionListController extends BasicController {
 		super(ureq, wControl);
 		
 		isAdmin = ureq.getUserSession().getRoles().isOLATAdmin();
+		userManager = CoreSpringFactory.getImpl(UserManager.class);
 		
 		//reload the file with all possible precautions
 		VFSLeaf versionedLeaf = null;
@@ -251,6 +255,7 @@ public class RevisionListController extends BasicController {
 			}
 		} else if (source == confirmDeleteBoxCtr) {
 			if (DialogBoxUIFactory.isYesEvent(event)) {
+				@SuppressWarnings("unchecked")
 				List<VFSRevision> selectedVersions = (List<VFSRevision>) confirmDeleteBoxCtr.getUserObject();
 				versionedFile.getVersions().delete(ureq.getIdentity(), selectedVersions);
 				status = FolderCommandStatus.STATUS_SUCCESS;
@@ -275,7 +280,7 @@ public class RevisionListController extends BasicController {
 		return results;
 	}
 
-	public class RevisionListDataModel extends BaseTableDataModelWithoutFilter implements TableDataModel {
+	public class RevisionListDataModel extends BaseTableDataModelWithoutFilter<VFSRevision> implements TableDataModel<VFSRevision> {
 		private final DateFormat format;
 		private final List<VFSRevision> versionList;
 		private final Calendar cal = Calendar.getInstance();
@@ -329,12 +334,9 @@ public class RevisionListController extends BasicController {
 			}
 			
 			StringBuilder sb = new StringBuilder();
-			sb.append(id.getFirstName())
-			  .append(" ")
-			  .append(id.getLastName());
-			
+			sb.append(userManager.getUserDisplayName(id));
 			if(isAdmin) {
-				sb.append(" (").append(name).append(")");
+				sb.append(" (").append(name).append(")");//TODO username
 			}
 			return sb.toString();
 		}
diff --git a/src/main/java/org/olat/core/commons/modules/glossary/Author.java b/src/main/java/org/olat/core/commons/modules/glossary/Author.java
index 7f283cda722eb436d80dbb78d638ae7eab985bc2..17051bf3a12d58511c67b58722ce235a694d2e89 100644
--- a/src/main/java/org/olat/core/commons/modules/glossary/Author.java
+++ b/src/main/java/org/olat/core/commons/modules/glossary/Author.java
@@ -46,7 +46,7 @@ public class Author {
 	public Author(Identity identity) {
 		firstname = identity.getUser().getProperty(UserConstants.FIRSTNAME, null);
 		surname = identity.getUser().getProperty(UserConstants.LASTNAME, null);
-		link = "[Identity:" + identity.getKey() + "][Username:" + identity.getName() + "]";
+		link = "[Identity:" + identity.getKey() + "][Username:" + identity.getName() + "]";//TODO username
 	}
 	
 	public Long extractKey() {
diff --git a/src/main/java/org/olat/core/commons/modules/glossary/GlossaryMainController.java b/src/main/java/org/olat/core/commons/modules/glossary/GlossaryMainController.java
index 65033add568ab39e5f751719edb9866aa7b5aa9f..dfbf191ffef043de753e0cc0fab29cdb9b82e513 100644
--- a/src/main/java/org/olat/core/commons/modules/glossary/GlossaryMainController.java
+++ b/src/main/java/org/olat/core/commons/modules/glossary/GlossaryMainController.java
@@ -28,9 +28,9 @@ import java.util.List;
 import java.util.Properties;
 import java.util.Set;
 
+import org.olat.core.CoreSpringFactory;
 import org.olat.core.gui.UserRequest;
 import org.olat.core.gui.components.Component;
-import org.olat.core.gui.components.htmlheader.jscss.JSAndCSSComponent;
 import org.olat.core.gui.components.link.Link;
 import org.olat.core.gui.components.link.LinkFactory;
 import org.olat.core.gui.components.velocity.VelocityContainer;
@@ -56,6 +56,7 @@ import org.olat.core.util.StringHelper;
 import org.olat.core.util.coordinate.CoordinatorManager;
 import org.olat.core.util.coordinate.LockResult;
 import org.olat.core.util.vfs.VFSContainer;
+import org.olat.user.UserManager;
 
 /**
  * Description:<br>
@@ -336,7 +337,8 @@ public class GlossaryMainController extends BasicController implements Activatea
 			// try to get lock for this glossary
 			lockEntry = CoordinatorManager.getInstance().getCoordinator().getLocker().acquireLock(resourceable, ureq.getIdentity(), "GlossaryEdit");
 			if (!lockEntry.isSuccess()) {
-				showInfo("glossary.locked", lockEntry.getOwner().getName());
+				String fullName = CoreSpringFactory.getImpl(UserManager.class).getUserDisplayName(lockEntry.getOwner());
+				showInfo("glossary.locked", fullName);
 				glistVC.contextPut("editModeEnabled", Boolean.FALSE);
 			}
 		}
diff --git a/src/main/java/org/olat/core/commons/services/webdav/manager/VFSDirContext.java b/src/main/java/org/olat/core/commons/services/webdav/manager/VFSDirContext.java
index 29cb9abb76a826b11407f15a6f591e246db67c6d..c8395b0143eb89a7c34df25a06eed93e7b824dcc 100644
--- a/src/main/java/org/olat/core/commons/services/webdav/manager/VFSDirContext.java
+++ b/src/main/java/org/olat/core/commons/services/webdav/manager/VFSDirContext.java
@@ -589,7 +589,7 @@ public class VFSDirContext extends BaseDirContext {
 		if(childLeaf instanceof MetaTagged) {
 			MetaInfo infos = ((MetaTagged)childLeaf).getMetaInfo();
 			if(infos != null && infos.getAuthorIdentity() == null) {
-				infos.setAuthor(userSession.getIdentity().getName());
+				infos.setAuthor(userSession.getIdentity());
 				infos.clearThumbnails();
 				infos.write();
 			}
@@ -649,7 +649,7 @@ public class VFSDirContext extends BaseDirContext {
 		if(file instanceof MetaTagged) {
 			MetaInfo infos = ((MetaTagged)file).getMetaInfo();
 			if(infos != null && infos.getAuthorIdentity() == null) {
-				infos.setAuthor(userSession.getIdentity().getName());
+				infos.setAuthor(userSession.getIdentity());
 				infos.clearThumbnails();
 				infos.write();
 			}
diff --git a/src/main/java/org/olat/core/gui/components/table/ColumnDescriptor.java b/src/main/java/org/olat/core/gui/components/table/ColumnDescriptor.java
index d8c2d5149148583e9928274a8c1d5931f7f2451f..ac122d51a25d6e0b30d5208b63c1dc2072df3ffc 100644
--- a/src/main/java/org/olat/core/gui/components/table/ColumnDescriptor.java
+++ b/src/main/java/org/olat/core/gui/components/table/ColumnDescriptor.java
@@ -142,10 +142,5 @@ public interface ColumnDescriptor {
 	void setHrefGenerator(HrefGenerator h);
 
 	HrefGenerator getHrefGenerator();
-	/**
-	 * String represenation of the value at specified row
-	 * @param rowid
-	 * @return
-	 */
-	String toString(int rowid);
+
 }
\ No newline at end of file
diff --git a/src/main/java/org/olat/core/gui/components/table/DefaultColumnDescriptor.java b/src/main/java/org/olat/core/gui/components/table/DefaultColumnDescriptor.java
index 94c52b6eab73c255665ec5983281c7c689d848f2..69067ca9500751645bc1bea640205b809d4d25d0 100644
--- a/src/main/java/org/olat/core/gui/components/table/DefaultColumnDescriptor.java
+++ b/src/main/java/org/olat/core/gui/components/table/DefaultColumnDescriptor.java
@@ -325,14 +325,4 @@ public class DefaultColumnDescriptor implements ColumnDescriptor {
 		this.hrefGenerator = hrefGenerator;
 	}
 
-	public String toString(final int rowid) {
-		Object obj = getModelData(rowid);
-		if(obj instanceof Date){
-			return "[date]";
-		}
-		StringOutput sb = new StringOutput();
-		renderValue(sb,rowid,null);
-		return sb.toString();
-	}
-
 }
diff --git a/src/main/java/org/olat/core/gui/control/generic/modal/DialogBoxUIFactory.java b/src/main/java/org/olat/core/gui/control/generic/modal/DialogBoxUIFactory.java
index ed046818e6c92b1a3025557e175079bfca2b53b5..021a55bf184d5445cc2bf09e8ee921f4405b58ce 100644
--- a/src/main/java/org/olat/core/gui/control/generic/modal/DialogBoxUIFactory.java
+++ b/src/main/java/org/olat/core/gui/control/generic/modal/DialogBoxUIFactory.java
@@ -28,6 +28,7 @@ import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 
+import org.olat.core.CoreSpringFactory;
 import org.olat.core.gui.UserRequest;
 import org.olat.core.gui.control.Event;
 import org.olat.core.gui.control.WindowControl;
@@ -36,6 +37,7 @@ import org.olat.core.logging.AssertException;
 import org.olat.core.util.Formatter;
 import org.olat.core.util.Util;
 import org.olat.core.util.coordinate.LockResult;
+import org.olat.user.UserManager;
 
 /**
  * <h3>Description:</h3>
@@ -116,7 +118,8 @@ public class DialogBoxUIFactory {
 		if(lockEntry.isSuccess()){
 			throw new AssertException("do not create a 'is locked message' if lock was succesfull! concerns lock:"+lockEntry.getOwner());
 		}
-		String[] i18nParams = new String[] { lockEntry.getOwner().getName(),
+		String fullName = CoreSpringFactory.getImpl(UserManager.class).getUserDisplayName(lockEntry.getOwner());
+		String[] i18nParams = new String[] { fullName,
 				Formatter.getInstance(ureq.getLocale()).formatTime(new Date(lockEntry.getLockAquiredTime())) };
 		String lockMsg = translator.translate(i18nLockMsgKey, i18nParams);
 		
diff --git a/src/main/java/org/olat/core/id/Identity.java b/src/main/java/org/olat/core/id/Identity.java
index 6dc0a49a94755cb743813c303e8bffa9826cdab0..5066d9b4ec338202bf75cd2f48a504e0b71cf880 100644
--- a/src/main/java/org/olat/core/id/Identity.java
+++ b/src/main/java/org/olat/core/id/Identity.java
@@ -52,13 +52,13 @@ public interface Identity extends CreateInfo, Persistable {
     /**
      * @return The username, (login name, nickname..)
      */
-    public abstract String getName();
+   public String getName();
 
     /**
 	 * @return The user object associated with this identity. The user
 	 * encapsulates the user data (profile and preferences)
 	 */
-	public abstract User getUser();
+	public User getUser();
 	
 	/**
 	 * @return Last date when the user logged in.
diff --git a/src/main/java/org/olat/core/util/ZipUtil.java b/src/main/java/org/olat/core/util/ZipUtil.java
index dd8bb5397d0c31ea58de0b9c6f15675a3a80822c..2a4cbed46875d852d32ccabb083b108607cbeaf6 100644
--- a/src/main/java/org/olat/core/util/ZipUtil.java
+++ b/src/main/java/org/olat/core/util/ZipUtil.java
@@ -227,7 +227,7 @@ public class ZipUtil {
 							if(newEntry instanceof MetaTagged) {
 								MetaInfo info = ((MetaTagged)newEntry).getMetaInfo();
 								if(info != null) {
-									info.setAuthor(identity.getName());
+									info.setAuthor(identity);
 									info.write();
 								}
 							}
@@ -242,7 +242,7 @@ public class ZipUtil {
 							if(newEntry instanceof MetaTagged) {
 								MetaInfo info = ((MetaTagged)newEntry).getMetaInfo();
 								if(info != null && identity != null) {
-									info.setAuthor(identity.getName());
+									info.setAuthor(identity);
 									info.write();
 								}
 							}
@@ -335,7 +335,7 @@ public class ZipUtil {
 							if(newEntry instanceof MetaTagged) {
 								MetaInfo info = ((MetaTagged)newEntry).getMetaInfo();
 								if(info != null) {
-									info.setAuthor(identity.getName());
+									info.setAuthor(identity);
 									info.write();
 								}
 							}
@@ -350,7 +350,7 @@ public class ZipUtil {
 							if(newEntry instanceof MetaTagged) {
 								MetaInfo info = ((MetaTagged)newEntry).getMetaInfo();
 								if(info != null && identity != null) {
-									info.setAuthor(identity.getName());
+									info.setAuthor(identity);
 									info.write();
 								}
 							}
@@ -530,7 +530,7 @@ public class ZipUtil {
 				if (identity != null && vfsSubpath instanceof MetaTagged) {
 					MetaInfo info = ((MetaTagged)vfsSubpath).getMetaInfo();
 					if(info != null) {
-						info.setAuthor(identity.getName());
+						info.setAuthor(identity);
 						info.write();
 					}
 				}
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 b5a31bd154dfae6fb0f471c2b77397236b347b45..f265da30f50e254991ec0bc3b44daaa3f9ba8b7d 100644
--- a/src/main/java/org/olat/core/util/mail/MailHelper.java
+++ b/src/main/java/org/olat/core/util/mail/MailHelper.java
@@ -198,7 +198,7 @@ public class MailHelper {
 					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() }));
+							user.getProperty(UserConstants.EMAIL, null), identity.getName() }));//TODO username
 					warnings.append("</li>");
 				}
 				warnings.append("</ul></p>");
diff --git a/src/main/java/org/olat/core/util/mail/ui/SendDocumentsByEMailController.java b/src/main/java/org/olat/core/util/mail/ui/SendDocumentsByEMailController.java
index 3b10e860b39b2494e5e055e3f65f5697822aea30..0ca1eb4385c3cb9f3c733e6a3eb70dcad7e54291 100644
--- a/src/main/java/org/olat/core/util/mail/ui/SendDocumentsByEMailController.java
+++ b/src/main/java/org/olat/core/util/mail/ui/SendDocumentsByEMailController.java
@@ -488,7 +488,7 @@ public class SendDocumentsByEMailController extends FormBasicController implemen
 
 		protected String formatIdentity(Identity ident) {
 			User u = ident.getUser();
-			String login = ident.getName();
+			String login = ident.getName();//TODO username
 			String first = u.getProperty(UserConstants.FIRSTNAME, null);
 			String last = u.getProperty(UserConstants.LASTNAME, null);
 			String mail = u.getProperty(UserConstants.EMAIL, null);
@@ -509,7 +509,7 @@ public class SendDocumentsByEMailController extends FormBasicController implemen
 				boolean hasMore = false;
 				for (Identity ident : res) {
 					maxEntries--;
-					String login = ident.getName();
+					String login = ident.getName();//TODO username
 					resMap.put(formatIdentity(ident), login);
 					if (maxEntries <= 0) {
 						hasMore = true;
diff --git a/src/main/java/org/olat/course/CourseFactory.java b/src/main/java/org/olat/course/CourseFactory.java
index 2aebb83a5ca6303cee6e4d826b9062fdc6d76b1a..5688a416524d02f52d7b257206ae413c817d8cf1 100644
--- a/src/main/java/org/olat/course/CourseFactory.java
+++ b/src/main/java/org/olat/course/CourseFactory.java
@@ -130,6 +130,7 @@ import org.olat.resource.OLATResourceManager;
 import org.olat.resource.references.ReferenceImpl;
 import org.olat.resource.references.ReferenceManager;
 import org.olat.testutils.codepoints.server.Codepoint;
+import org.olat.user.UserManager;
 import org.olat.util.logging.activity.LoggingResourceable;
 
 
@@ -214,7 +215,8 @@ public class CourseFactory extends BasicManager {
 			// already locked by another person
 
 			Translator translator = Util.createPackageTranslator(RunMainController.class, ureq.getLocale());
-			wControl.setWarning(translator.translate("error.editoralreadylocked", new String[] { emc.getLockEntry().getOwner().getName() }));
+			String lockerName = CoreSpringFactory.getImpl(UserManager.class).getUserDisplayName(emc.getLockEntry().getOwner());
+			wControl.setWarning(translator.translate("error.editoralreadylocked", new String[] { lockerName }));
 			return null;
 		}
 		//set the logger if editor is started
diff --git a/src/main/java/org/olat/course/archiver/ScoreAccountingHelper.java b/src/main/java/org/olat/course/archiver/ScoreAccountingHelper.java
index 380330477ff36849f6dfeeaf6dd6baeb8da0dcd1..d86580a0a5bd7ed9b4bd3b2dad4d8d8343d5f97d 100644
--- a/src/main/java/org/olat/course/archiver/ScoreAccountingHelper.java
+++ b/src/main/java/org/olat/course/archiver/ScoreAccountingHelper.java
@@ -136,7 +136,7 @@ public class ScoreAccountingHelper {
 		Formatter formatter = Formatter.getInstance(locale);
 
 		for (Identity identity:identities) {
-			String uname = identity.getName();
+			String uname = identity.getName();//TODO username
 
 			tableContent.append(rowNumber);
 			tableContent.append("\t");
diff --git a/src/main/java/org/olat/course/assessment/AssessedIdentitiesTableDataModel.java b/src/main/java/org/olat/course/assessment/AssessedIdentitiesTableDataModel.java
index 7bf5902d63eaf405c193392edf28c7335ab98957..107acd347225bc10030cbb4b81d70b1c49bea4b2 100644
--- a/src/main/java/org/olat/course/assessment/AssessedIdentitiesTableDataModel.java
+++ b/src/main/java/org/olat/course/assessment/AssessedIdentitiesTableDataModel.java
@@ -168,7 +168,7 @@ public class AssessedIdentitiesTableDataModel extends DefaultTableDataModel {
 		// 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();
+		if (colName.equals(COL_NAME)) return identity.getName();//TODO username
 		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();
diff --git a/src/main/java/org/olat/course/assessment/EfficiencyStatementManager.java b/src/main/java/org/olat/course/assessment/EfficiencyStatementManager.java
index b0e727779d7e1ccbb043b4daf10b73bbe943197c..662c6bdad2610b8745efd3c8360e10d73d8900ea 100644
--- a/src/main/java/org/olat/course/assessment/EfficiencyStatementManager.java
+++ b/src/main/java/org/olat/course/assessment/EfficiencyStatementManager.java
@@ -146,7 +146,7 @@ public class EfficiencyStatementManager extends BasicManager implements UserData
 			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() + ")");
+			efficiencyStatement.setDisplayableUserInfo(user.getProperty(UserConstants.FIRSTNAME, null) + " " + user.getProperty(UserConstants.LASTNAME, null) + " (" + identity.getName() + ")");//TODO username
 			efficiencyStatement.setLastUpdated(System.currentTimeMillis());
 							
 			UserEfficiencyStatementImpl efficiencyProperty = getUserEfficiencyStatementFull(repoEntryKey, identity);
diff --git a/src/main/java/org/olat/course/member/MemberInfoController.java b/src/main/java/org/olat/course/member/MemberInfoController.java
deleted file mode 100644
index 4b8c05cabfb58b7e4ca869e2febd53866fae2df4..0000000000000000000000000000000000000000
--- a/src/main/java/org/olat/course/member/MemberInfoController.java
+++ /dev/null
@@ -1,169 +0,0 @@
-/**
- * <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.course.member;
-
-import java.util.Date;
-import java.util.List;
-
-import org.olat.NewControllerFactory;
-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.FormLink;
-import org.olat.core.gui.components.form.flexible.elements.StaticTextElement;
-import org.olat.core.gui.components.form.flexible.impl.Form;
-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.components.form.flexible.impl.FormLayoutContainer;
-import org.olat.core.gui.control.Controller;
-import org.olat.core.gui.control.WindowControl;
-import org.olat.core.id.Identity;
-import org.olat.core.util.Formatter;
-import org.olat.core.util.Util;
-import org.olat.course.assessment.UserCourseInformations;
-import org.olat.course.assessment.manager.UserCourseInformationsManager;
-import org.olat.repository.RepositoryEntry;
-import org.olat.user.DisplayPortraitController;
-import org.olat.user.UserManager;
-import org.olat.user.propertyhandlers.UserPropertyHandler;
-
-/**
- * 
- * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com
- */
-public class MemberInfoController extends FormBasicController {
-	
-	private FormLink homeLink, contactLink, assessmentLink;
-	private StaticTextElement membershipCreationEl;
-
-	private final Identity identity;
-	private final Long repoEntryKey;
-	private final UserCourseInformations courseInfos;
-	
-	private final UserManager userManager;
-	private final UserCourseInformationsManager efficiencyStatementManager;
-	
-	public MemberInfoController(UserRequest ureq, WindowControl wControl, Identity identity,
-			RepositoryEntry repoEntry, Form rootForm) {
-		super(ureq, wControl, LAYOUT_CUSTOM, "info_member", rootForm);
-		setTranslator(Util.createPackageTranslator(UserPropertyHandler.class, ureq.getLocale(), getTranslator()));
-		
-		userManager = CoreSpringFactory.getImpl(UserManager.class);
-		efficiencyStatementManager = CoreSpringFactory.getImpl(UserCourseInformationsManager.class);
-	
-		this.identity = identity;
-		repoEntryKey = repoEntry.getKey();
-		
-		courseInfos = efficiencyStatementManager.getUserCourseInformations(repoEntry.getOlatResource().getResourceableId(), identity);
-		
-		initForm(ureq);
-	}
-	
-	@Override
-	protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) {
-		if(formLayout instanceof FormLayoutContainer) {
-			FormLayoutContainer layoutCont = (FormLayoutContainer)formLayout;
-		
-			Controller dpc = new DisplayPortraitController(ureq, getWindowControl(), identity, true, false);
-			listenTo(dpc); // auto dispose
-			layoutCont.put("image", dpc.getInitialComponent());
-			layoutCont.contextPut("fullname", userManager.getUserDisplayName(identity.getUser()));
-		}
-		
-		//user properties
-		FormLayoutContainer userPropertiesContainer = FormLayoutContainer.createDefaultFormLayout("userProperties", getTranslator());
-		formLayout.add("userProperties", userPropertiesContainer);
-		
-		List<UserPropertyHandler> userPropertyHandlers = userManager.getUserPropertyHandlersFor(getClass().getCanonicalName(), false);
-		for (UserPropertyHandler userPropertyHandler : userPropertyHandlers) {
-			if (userPropertyHandler == null) continue;
-
-			String propName = userPropertyHandler.getName();
-			String value = userPropertyHandler.getUserProperty(identity.getUser(), getLocale());
-			String key = userPropertyHandler.i18nFormElementLabelKey();
-			if(value == null) {
-				value = "";
-			}
-			uifactory.addStaticTextElement("up_" + propName, key, value, userPropertiesContainer);
-		}
-
-		//course informations
-		FormLayoutContainer courseInfosContainer = FormLayoutContainer.createDefaultFormLayout("courseInfos", getTranslator());
-		formLayout.add("courseInfos", courseInfosContainer);
-		
-		Formatter formatter = Formatter.getInstance(getLocale());
-		
-		String lastVisit = "";
-		String numOfVisits = "0";
-		if(courseInfos != null) {
-			if(courseInfos.getRecentLaunch() != null) {
-				lastVisit = formatter.formatDate(courseInfos.getRecentLaunch());
-			}
-			if(courseInfos.getVisit() >= 0) {
-				numOfVisits = Integer.toString(courseInfos.getVisit());
-			}	
-		}
-		membershipCreationEl = uifactory.addStaticTextElement("firstTime", "course.membership.creation", "", courseInfosContainer);
-		uifactory.addStaticTextElement("lastTime", "course.lastTime", lastVisit, courseInfosContainer);
-		uifactory.addStaticTextElement("numOfVisits", "course.numOfVisits", numOfVisits, courseInfosContainer);
-		
-		//links
-		homeLink = uifactory.addFormLink("home", formLayout, "b_link_left_icon b_link_to_home");
-		formLayout.add("home", homeLink);
-		contactLink = uifactory.addFormLink("contact",	formLayout, "b_link_left_icon b_link_mail");
-		formLayout.add("contact", contactLink);
-		assessmentLink = uifactory.addFormLink("assessment",	formLayout, "b_link_left_icon b_link_assessment");
-		formLayout.add("assessment", assessmentLink);
-	}
-	
-	public void setMembershipCreation(Date date) {
-		if(date != null) {
-			Formatter formatter = Formatter.getInstance(getLocale());
-			membershipCreationEl.setValue(formatter.formatDate(date));
-		}
-	}
-	
-	@Override
-	protected void doDispose() {
-		//
-	}
-
-	@Override
-	protected void formInnerEvent(UserRequest ureq, FormItem source, FormEvent event) {
-		if(source == homeLink) {
-			String businessPath = "[Identity:" + identity.getKey() + "]";
-			NewControllerFactory.getInstance().launch(businessPath, ureq, getWindowControl());
-		} else if (source == contactLink) {
-			String businessPath = "[Identity:" + identity.getKey() + "][Contact:0]";
-			NewControllerFactory.getInstance().launch(businessPath, ureq, getWindowControl());
-		} else if (source == assessmentLink) {
-			String businessPath =  "[RepositoryEntry:" + repoEntryKey + "][assessmentTool:0][Identity:" + identity.getKey() + "]";
-			NewControllerFactory.getInstance().launch(businessPath, ureq, getWindowControl());	
-		} else {
-			super.formInnerEvent(ureq, source, event);
-		}
-	}
-	
-	@Override
-	protected void formOK(UserRequest ureq) {
-		//
-	}
-}
\ No newline at end of file
diff --git a/src/main/java/org/olat/course/nodes/members/MembersCourseNodeRunController.java b/src/main/java/org/olat/course/nodes/members/MembersCourseNodeRunController.java
index e25efb9d61b0a3783baca6adbc0d8e415ac9fb6e..f45fd8e72753b8776bbb8699b19ff6ffe7752565 100644
--- a/src/main/java/org/olat/course/nodes/members/MembersCourseNodeRunController.java
+++ b/src/main/java/org/olat/course/nodes/members/MembersCourseNodeRunController.java
@@ -385,7 +385,7 @@ public class MembersCourseNodeRunController extends FormBasicController {
 		}
 
 		public String getFullName() {
-			return UserManagerImpl.getInstance().getUserDisplayName(identity.getUser());
+			return UserManagerImpl.getInstance().getUserDisplayName(identity);
 		}
 
 		public Long getKey() {
diff --git a/src/main/java/org/olat/course/nodes/ta/DropboxController.java b/src/main/java/org/olat/course/nodes/ta/DropboxController.java
index d95590540a0b6ef74a54da9b6dd63ff1547a533f..1e68317bd93f49515df36c9a8f236f3b0f89ce8f 100644
--- a/src/main/java/org/olat/course/nodes/ta/DropboxController.java
+++ b/src/main/java/org/olat/course/nodes/ta/DropboxController.java
@@ -258,7 +258,7 @@ public class DropboxController extends BasicController {
 				if(fOut instanceof MetaTagged) {
 					MetaInfo info = ((MetaTagged)fOut).getMetaInfo();
 					if(info != null) {
-						info.setAuthor(ureq.getIdentity().getName());
+						info.setAuthor(ureq.getIdentity());
 						info.write();
 					}
 				}
diff --git a/src/main/java/org/olat/course/nodes/ta/TACourseNodeEditController.java b/src/main/java/org/olat/course/nodes/ta/TACourseNodeEditController.java
index f25a2095f8e16d40433a44329159defe68d4153f..cf233f22dca5d72adc101e1b187e7bda5a38c5f2 100644
--- a/src/main/java/org/olat/course/nodes/ta/TACourseNodeEditController.java
+++ b/src/main/java/org/olat/course/nodes/ta/TACourseNodeEditController.java
@@ -510,7 +510,7 @@ public class TACourseNodeEditController extends ActivateableTabbableDefaultContr
 				
 		Context c = new VelocityContext();
 		Identity identity = ureq.getIdentity();
-		c.put("login", identity.getName());
+		c.put("login", identity.getName());//TODO username
 		c.put("first", identity.getUser().getProperty(UserConstants.FIRSTNAME, getLocale()));
 		c.put("last", identity.getUser().getProperty(UserConstants.LASTNAME, getLocale()));
 		c.put("email", identity.getUser().getProperty(UserConstants.EMAIL, getLocale()));
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 146128bae4095a8cfea5da3182c2a01e6fba8a6d..4596ae5455ed725d15ca31529c9e5707fd764c0a 100644
--- a/src/main/java/org/olat/course/run/preview/PreviewCoursePropertyManager.java
+++ b/src/main/java/org/olat/course/run/preview/PreviewCoursePropertyManager.java
@@ -180,7 +180,7 @@ final class PreviewCoursePropertyManager extends BasicManager implements CourseP
 		return propertyList;
 	}
 
-	private String buildPropertyHashKey(Property p) {
+	private String buildPropertyHashKey(Property p) {//TODO username
     return buildPropertyHashKey(p.getCategory(), (p.getIdentity() == null) ? "" : p.getIdentity().getName(), p.getGrp(), p.getName());
 	}
 	
diff --git a/src/main/java/org/olat/group/manager/BusinessGroupArchiver.java b/src/main/java/org/olat/group/manager/BusinessGroupArchiver.java
index ab8d38b6ca9dfbd8bc4af1c829154fab9defd1c9..b6a3800edf40a886d706cc5d7cb6fd8be9fd44f1 100644
--- a/src/main/java/org/olat/group/manager/BusinessGroupArchiver.java
+++ b/src/main/java/org/olat/group/manager/BusinessGroupArchiver.java
@@ -737,7 +737,7 @@ public class BusinessGroupArchiver {
 	 */
 	private void appendMember(StringBuffer buf, Member member, List<String> columnList, List<OrganisationalEntity> groupList, String role) {
 		if(columnList.contains("username")) {
-		  buf.append(member.getIdentity().getName());	
+		  buf.append(member.getIdentity().getName());	//TODO username
 		  buf.append(DELIMITER);
 		}		
 
diff --git a/src/main/java/org/olat/group/ui/main/MemberChangeConfirmationController.java b/src/main/java/org/olat/group/ui/main/MemberChangeConfirmationController.java
index 931c129b06056c350c1e434bb9524a627be98dd5..5c6a69e8e79c7e30f0d392fbd8fbacef4c5b3205 100644
--- a/src/main/java/org/olat/group/ui/main/MemberChangeConfirmationController.java
+++ b/src/main/java/org/olat/group/ui/main/MemberChangeConfirmationController.java
@@ -68,7 +68,7 @@ public class MemberChangeConfirmationController extends FormBasicController {
 			StringBuilder sb = new StringBuilder(identities.size() * 25);
 			for(Identity id:identities) {
 				if(sb.length() > 0) sb.append(" / ");
-				sb.append(userManager.getUserDisplayName(id.getUser()));
+				sb.append(userManager.getUserDisplayName(id));
 			}
 			((FormLayoutContainer)formLayout).contextPut("identities", sb.toString());
 		}
diff --git a/src/main/java/org/olat/group/ui/main/MemberInfoController.java b/src/main/java/org/olat/group/ui/main/MemberInfoController.java
index 93dd982b6d807f28e74d4893c2ec11ea4f66a633..99137702ba8aadd5edfe63a32286984e7b6d6d6d 100644
--- a/src/main/java/org/olat/group/ui/main/MemberInfoController.java
+++ b/src/main/java/org/olat/group/ui/main/MemberInfoController.java
@@ -85,7 +85,7 @@ public class MemberInfoController extends FormBasicController {
 			Controller dpc = new DisplayPortraitController(ureq, getWindowControl(), identity, true, false);
 			listenTo(dpc); // auto dispose
 			layoutCont.put("image", dpc.getInitialComponent());
-			layoutCont.contextPut("fullname", userManager.getUserDisplayName(identity.getUser()));
+			layoutCont.contextPut("fullname", userManager.getUserDisplayName(identity));
 		}
 		
 		//user properties
diff --git a/src/main/java/org/olat/group/ui/main/MemberLeaveConfirmationController.java b/src/main/java/org/olat/group/ui/main/MemberLeaveConfirmationController.java
index 1fa0d180a9a400afc19aae47538c20e42c6b54fb..5c744495250e383d5db252d8126887c3380cbf9c 100644
--- a/src/main/java/org/olat/group/ui/main/MemberLeaveConfirmationController.java
+++ b/src/main/java/org/olat/group/ui/main/MemberLeaveConfirmationController.java
@@ -68,7 +68,7 @@ public class MemberLeaveConfirmationController extends FormBasicController {
 			StringBuilder sb = new StringBuilder(identities.size() * 25);
 			for(Identity id:identities) {
 				if(sb.length() > 0) sb.append(" / ");
-				sb.append(userManager.getUserDisplayName(id.getUser()));
+				sb.append(userManager.getUserDisplayName(id));
 			}
 			((FormLayoutContainer)formLayout).contextPut("identities", sb.toString());
 		}
diff --git a/src/main/java/org/olat/gui/control/OlatFooterController.java b/src/main/java/org/olat/gui/control/OlatFooterController.java
index 226bf700856a1517aa1ddc12e410554c43998d2d..e5bda4dc1857f4c8d4f1d053b242e532cb53ebc3 100644
--- a/src/main/java/org/olat/gui/control/OlatFooterController.java
+++ b/src/main/java/org/olat/gui/control/OlatFooterController.java
@@ -41,6 +41,7 @@ import org.olat.core.util.Util;
 import org.olat.core.util.WebappHelper;
 import org.olat.social.SocialModule;
 import org.olat.social.shareLink.ShareLinkController;
+import org.olat.user.UserManager;
 
 /**
  * Overrides the default footer of the webapplication framework showing the 
@@ -89,7 +90,8 @@ public class OlatFooterController extends BasicController {
 			if(isInvitee) {
 				olatFootervc.contextPut("username", translate("invitee"));
 			} else {
-				olatFootervc.contextPut("username", ureq.getIdentity().getName());
+				String fullName = CoreSpringFactory.getImpl(UserManager.class).getUserDisplayName(ureq.getIdentity());
+				olatFootervc.contextPut("username", fullName);
 			}
 		} else {
 			olatFootervc.contextPut("loggedIn", Boolean.FALSE);
diff --git a/src/main/java/org/olat/gui/demo/HelloWorldController.java b/src/main/java/org/olat/gui/demo/HelloWorldController.java
index 365b42577b1da885ac28b69b4e6c6beecf413ca2..1e8b20d25c9e740481415301b4c4416d5349aad8 100644
--- a/src/main/java/org/olat/gui/demo/HelloWorldController.java
+++ b/src/main/java/org/olat/gui/demo/HelloWorldController.java
@@ -25,6 +25,7 @@
 
 package org.olat.gui.demo;
 
+import org.olat.core.CoreSpringFactory;
 import org.olat.core.gui.UserRequest;
 import org.olat.core.gui.components.Component;
 import org.olat.core.gui.components.link.Link;
@@ -36,6 +37,7 @@ 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.dev.controller.SourceViewController;
+import org.olat.user.UserManager;
 
 /**
  * 
@@ -56,9 +58,14 @@ public class HelloWorldController extends BasicController {
 	private Panel panel = new Panel("panel");
 	private Link link;
 	private Link button;
+	
+	private final UserManager userManager;
 
 	public HelloWorldController(UserRequest ureq, WindowControl wControl) {
 		super(ureq, wControl);
+		
+		userManager = CoreSpringFactory.getImpl(UserManager.class);
+		
 		// we pass a variable to the velocity container
 		// which can be accessed in our helloworld.html file
 		myContent.contextPut("myContentVariable", myString);
@@ -99,7 +106,8 @@ public class HelloWorldController extends BasicController {
 			logInfo("Someone asked us to say hello... so we do.", null);
 			// we say hello to the and display the userName which is part of the
 			// user identity and stored in the user session
-			getWindowControl().setInfo("Hi, your name is " + ureq.getIdentity().getName());
+			String fullName = userManager.getUserDisplayName(getIdentity());
+			getWindowControl().setInfo("Hi, your name is " + fullName);
 		} else if (source == button) {
 			// someone pressed the button
 			panel.setContent(newsVc);
diff --git a/src/main/java/org/olat/home/UserSearchAndInfoController.java b/src/main/java/org/olat/home/UserSearchAndInfoController.java
index 051a74f441581abc57028867ac2d3af425dd35b1..83bc1db91908c11b50128aa6694c42be9e4bafaf 100644
--- a/src/main/java/org/olat/home/UserSearchAndInfoController.java
+++ b/src/main/java/org/olat/home/UserSearchAndInfoController.java
@@ -79,7 +79,7 @@ public class UserSearchAndInfoController extends BasicController {
 					DTab dt = dts.getDTab(ores);
 					if (dt == null) {
 						// does not yet exist -> create and add
-						String name = UserManager.getInstance().getUserDisplayName(chosenIdentity.getUser());
+						String name = UserManager.getInstance().getUserDisplayName(chosenIdentity);
 						dt = dts.createDTab(ores, null, name);
 						if (dt == null) return;
 						UserInfoMainController uimc = new UserInfoMainController(ureq, dt.getWindowControl(), chosenIdentity);
diff --git a/src/main/java/org/olat/ims/qti/QTIResultDetailsController.java b/src/main/java/org/olat/ims/qti/QTIResultDetailsController.java
index ec36cd7c8ff01cfcf30b9c62daf19fb90ca17440..bd62323fa823a0be72517d9ac8b779476c54f8d3 100644
--- a/src/main/java/org/olat/ims/qti/QTIResultDetailsController.java
+++ b/src/main/java/org/olat/ims/qti/QTIResultDetailsController.java
@@ -176,7 +176,7 @@ public class QTIResultDetailsController extends BasicController {
 			} else if(tEvent.getActionId().equals("ret")) {
 				updateTableModel();
 				if(tableModel.isTestRunning()) {
-					String fullname = UserManager.getInstance().getUserDisplayName(assessedIdentity.getUser());
+					String fullname = UserManager.getInstance().getUserDisplayName(assessedIdentity);
 					String title = translate("retrievetest.confirm.title");
 					String text = translate("retrievetest.confirm.text", new String[]{fullname});
 					retrieveConfirmationCtr = activateYesNoDialog(ureq, title, text, retrieveConfirmationCtr);
diff --git a/src/main/java/org/olat/ims/qti/editor/QTIEditorMainController.java b/src/main/java/org/olat/ims/qti/editor/QTIEditorMainController.java
index 9363aba39853be7e6bab69f7c76804e35616cf05..015eea3fa469f3b9bd972f499c095234063543c1 100644
--- a/src/main/java/org/olat/ims/qti/editor/QTIEditorMainController.java
+++ b/src/main/java/org/olat/ims/qti/editor/QTIEditorMainController.java
@@ -109,13 +109,13 @@ import org.olat.modules.co.ContactFormController;
 import org.olat.modules.iq.IQDisplayController;
 import org.olat.modules.iq.IQManager;
 import org.olat.modules.iq.IQPreviewSecurityCallback;
-import org.olat.modules.qpool.QPoolService;
 import org.olat.modules.qpool.QuestionItemView;
 import org.olat.modules.qpool.ui.SelectItemController;
 import org.olat.modules.qpool.ui.events.QItemViewEvent;
 import org.olat.repository.RepositoryEntry;
 import org.olat.repository.RepositoryManager;
 import org.olat.resource.references.ReferenceImpl;
+import org.olat.user.UserManager;
 
 /**
  * Description: <br>
@@ -231,12 +231,14 @@ public class QTIEditorMainController extends MainLayoutBasicController implement
 	private Link notEditableButton; 
 	private Set<String> deletableMediaFiles;
 
+	private final UserManager userManager;
 	private final QTIQPoolServiceProvider qtiQpoolServiceProvider;
 	
 	public QTIEditorMainController(List<ReferenceImpl> referencees, UserRequest ureq, WindowControl wControl, FileResource fileResource) {
 		super(ureq, wControl);
 		
 		qtiQpoolServiceProvider = (QTIQPoolServiceProvider)CoreSpringFactory.getBean("qtiPoolServiceProvider");
+		userManager = CoreSpringFactory.getImpl(UserManager.class);
 
 		for(Iterator<ReferenceImpl> iter = referencees.iterator(); iter.hasNext(); ) {
 			ReferenceImpl ref = iter.next();
@@ -272,7 +274,8 @@ public class QTIEditorMainController extends MainLayoutBasicController implement
 			//
 			init(ureq); // initialize the gui
 		} else {
-			wControl.setWarning( getTranslator().translate("error.lock", new String[] { lockEntry.getOwner().getName(),
+			String fullName = userManager.getUserDisplayName(lockEntry.getOwner());
+			wControl.setWarning( getTranslator().translate("error.lock", new String[] { fullName,
 				Formatter.formatDatetime(new Date(lockEntry.getLockAquiredTime())) }) );
 		}
 	}
@@ -532,7 +535,7 @@ public class QTIEditorMainController extends MainLayoutBasicController implement
 					String userN = ureq.getIdentity().getName();
 					String lastN = ureq.getIdentity().getUser().getProperty(UserConstants.LASTNAME, ureq.getLocale());
 					String firstN = ureq.getIdentity().getUser().getProperty(UserConstants.FIRSTNAME, ureq.getLocale());
-					String changeMsg = "Changed by: " + firstN + " " + lastN + " [" + userN + "]\n";
+					String changeMsg = "Changed by: " + firstN + " " + lastN + " [" + userN + "]\n";//TODO username
 					changeMsg += createChangeMessage();
 					changeEmail.setBodyText(changeMsg);
 					chngMsgFormVC.contextPut("chngMsg", changeEmail.getBodyText());
diff --git a/src/main/java/org/olat/ims/qti/export/QTIExportFormatterCSVType1.java b/src/main/java/org/olat/ims/qti/export/QTIExportFormatterCSVType1.java
index ff9eae42d5a3b081858217046b8a41336989dd44..65cc8600d26a1a2945cb61d9d7559e7ff79e8fda 100644
--- a/src/main/java/org/olat/ims/qti/export/QTIExportFormatterCSVType1.java
+++ b/src/main/java/org/olat/ims/qti/export/QTIExportFormatterCSVType1.java
@@ -185,7 +185,7 @@ public class QTIExportFormatterCSVType1 extends QTIExportFormatter {
 		
 		String firstName = set.getFirstName();
 		String lastName = set.getLastName();
-		String login = set.getLogin();
+		String login = set.getLogin();//TODO username
 		String instUsrIdent = set.getInstitutionalUserIdentifier();
 		if (instUsrIdent == null) {
 			instUsrIdent = translator.translate("column.field.notavailable");
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 96b847276a7acf105d61565959086b32e667c643..5414e22d3c3b112ea77ce09f244e9ba9f83635ec 100644
--- a/src/main/java/org/olat/ims/qti/render/ResultsBuilder.java
+++ b/src/main/java/org/olat/ims/qti/render/ResultsBuilder.java
@@ -117,6 +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 instId = user.getProperty(UserConstants.INSTITUTIONALUSERIDENTIFIER, locale);
 		String instName = user.getProperty(UserConstants.INSTITUTIONALNAME, locale);
diff --git a/src/main/java/org/olat/instantMessaging/manager/InstantMessagingServiceImpl.java b/src/main/java/org/olat/instantMessaging/manager/InstantMessagingServiceImpl.java
index 1bbf5a6446bdc70a4290c1b23655a672bb505255..e03b442cdbfc59c1f0b81bdc4ae967ffd2dc5c4f 100644
--- a/src/main/java/org/olat/instantMessaging/manager/InstantMessagingServiceImpl.java
+++ b/src/main/java/org/olat/instantMessaging/manager/InstantMessagingServiceImpl.java
@@ -171,7 +171,7 @@ public class InstantMessagingServiceImpl extends BasicManager implements Instant
 	
 	@Override
 	public InstantMessage sendPrivateMessage(Identity from, Long toIdentityKey, String body, OLATResourceable chatResource) {
-		String name = userManager.getUserDisplayName(from.getUser());
+		String name = userManager.getUserDisplayName(from);
 		InstantMessage message = imDao.createMessage(from, name, false, body, chatResource);
 		imDao.createNotification(from.getKey(), toIdentityKey, chatResource);
 		dbInstance.commit();//commit before sending event
@@ -203,7 +203,7 @@ public class InstantMessagingServiceImpl extends BasicManager implements Instant
 		if(StringHelper.containsNonWhitespace(nickName)) {
 			event.setName(nickName);
 		}
-		String fullName = userManager.getUserDisplayName(me.getUser());
+		String fullName = userManager.getUserDisplayName(me);
 		rosterDao.updateRosterEntry(chatResource, me, fullName, nickName, anonym, vip);
 		dbInstance.commit();//commit before sending event
 		
@@ -281,7 +281,7 @@ public class InstantMessagingServiceImpl extends BasicManager implements Instant
 			addBuddyToGroupList(participant, me, groupMap, groups, identityKeyToStatus, false, offlineUsers);
 		}
 		
-		Map<Long,String> nameMap = userManager.getUserDisplayNames(identityKeyToStatus.keySet());
+		Map<Long,String> nameMap = userManager.getUserDisplayNamesByKey(identityKeyToStatus.keySet());
 		for(BuddyGroup group:groups) {
 			for(Buddy buddy:group.getBuddy()) {
 				buddy.setName(nameMap.get(buddy.getIdentityKey()));	
@@ -378,7 +378,7 @@ public class InstantMessagingServiceImpl extends BasicManager implements Instant
 	@Override
 	public void listenChat(Identity identity, OLATResourceable chatResource,
 			boolean anonym, boolean vip, GenericEventListener listener) {
-		String fullName = userManager.getUserDisplayName(identity.getUser());
+		String fullName = userManager.getUserDisplayName(identity);
 		rosterDao.updateRosterEntry(chatResource, identity, fullName, null, anonym, vip);
 		dbInstance.commit();
 		coordinator.getCoordinator().getEventBus().registerFor(listener, identity, chatResource);
diff --git a/src/main/java/org/olat/instantMessaging/ui/ChatController.java b/src/main/java/org/olat/instantMessaging/ui/ChatController.java
index 143c587a84bf3b6514a284c114eb491d37e932e6..7dc51f1e0eb9ea903b8c2a5e3872b49340962ea2 100644
--- a/src/main/java/org/olat/instantMessaging/ui/ChatController.java
+++ b/src/main/java/org/olat/instantMessaging/ui/ChatController.java
@@ -279,7 +279,7 @@ public class ChatController extends BasicController implements GenericEventListe
 			fromName = rosterCtrl.getNickName();
 		} else {
 			anonym = false;
-			fromName = userManager.getUserDisplayName(getIdentity().getUser());
+			fromName = userManager.getUserDisplayName(getIdentity());
 		}
 		InstantMessage message;
 		if(privateReceiverKey == null) {
diff --git a/src/main/java/org/olat/instantMessaging/ui/RosterForm.java b/src/main/java/org/olat/instantMessaging/ui/RosterForm.java
index cadf942bd54391dcd57e92a07f29cc78cd385520..43597bc6b49c5403e87fd550ba7f5ecd949bdc29 100644
--- a/src/main/java/org/olat/instantMessaging/ui/RosterForm.java
+++ b/src/main/java/org/olat/instantMessaging/ui/RosterForm.java
@@ -56,7 +56,7 @@ public class RosterForm extends FormBasicController {
 		this.defaultAnonym = defaultAnonym;
 		this.offerAnonymMode = offerAnonymMode;
 		this.buddyList = buddyList;
-		fullName = CoreSpringFactory.getImpl(UserManager.class).getUserDisplayName(getIdentity().getUser());
+		fullName = CoreSpringFactory.getImpl(UserManager.class).getUserDisplayName(getIdentity());
 
 		initForm(ureq);
 	}
diff --git a/src/main/java/org/olat/ldap/ui/IdentitySelectionTreeModel.java b/src/main/java/org/olat/ldap/ui/IdentitySelectionTreeModel.java
index 7848ee4b3921e13059d5bddea4c329f95467b0be..fb16c6db8c3ed612c93dd0bb7417c8cb2cb46331 100644
--- a/src/main/java/org/olat/ldap/ui/IdentitySelectionTreeModel.java
+++ b/src/main/java/org/olat/ldap/ui/IdentitySelectionTreeModel.java
@@ -66,7 +66,7 @@ public class IdentitySelectionTreeModel  extends GenericTreeModel implements INo
 		for (Identity identity : identities) {
 			// collect user name information
 			StringBuffer sb = new StringBuffer();
-			sb.append(identity.getName()).append(": ");
+			sb.append(identity.getName()).append(": ");//TODO username
 			boolean first = true;
 			// collect user properties information
 			for (UserPropertyHandler userProperty : properHandlerList) {
diff --git a/src/main/java/org/olat/modules/co/ContactForm.java b/src/main/java/org/olat/modules/co/ContactForm.java
index 30cfed36344e766cc1a2db2b17a01926999c8b12..51ace2414d8bbaab3486d5e98c7a38c0247985a8 100644
--- a/src/main/java/org/olat/modules/co/ContactForm.java
+++ b/src/main/java/org/olat/modules/co/ContactForm.java
@@ -52,9 +52,11 @@ import org.olat.core.gui.control.WindowControl;
 import org.olat.core.gui.util.CSSHelper;
 import org.olat.core.id.Identity;
 import org.olat.core.util.FileUtils;
+import org.olat.core.util.StringHelper;
 import org.olat.core.util.Util;
 import org.olat.core.util.mail.ContactList;
 import org.olat.core.util.mail.MailModule;
+import org.olat.user.UserManager;
 
 /**
  * highly configurable contact form. Depending on each field value the
@@ -107,8 +109,9 @@ public class ContactForm extends FormBasicController {
 	private Map<String,String> attachmentCss = new HashMap<String,String>();
 	private Map<String,String> attachmentNames = new HashMap<String,String>();
 	private Map<String,ContactList> contactLists = new Hashtable<String,ContactList>();
-
 	
+	private final UserManager userManager;
+
 	public ContactForm(UserRequest ureq, WindowControl wControl, Identity emailFrom, boolean readOnly, boolean isCancellable, boolean hasRecipientsEditable) {
 		super(ureq, wControl);
 		this.emailFrom = emailFrom;
@@ -116,6 +119,7 @@ public class ContactForm extends FormBasicController {
 		this.recipientsAreEditable = hasRecipientsEditable;
 		this.hasMsgCancel = isCancellable;
 		this.contactAttachmentMaxSizeInMb = CoreSpringFactory.getImpl(MailModule.class).getMaxSizeForAttachement();
+		userManager = CoreSpringFactory.getImpl(UserManager.class);
 		initForm(ureq);
 	}
 	
@@ -127,6 +131,7 @@ public class ContactForm extends FormBasicController {
 		this.hasMsgCancel = isCancellable;
 		this.hasMsgSave = isSaveable;
 		this.contactAttachmentMaxSizeInMb = CoreSpringFactory.getImpl(MailModule.class).getMaxSizeForAttachement();
+		userManager = CoreSpringFactory.getImpl(UserManager.class);
 		initForm(ureq);
 	}
 		
@@ -366,9 +371,11 @@ public class ContactForm extends FormBasicController {
 	@Override
 	protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) {
 		setFormTitle("header.newcntctmsg");
-		
-		tfrom = uifactory.addTextElement("ttfrom", NLS_CONTACT_FROM, 255, "", formLayout);
-		tfrom.setValue(emailFrom.getName());
+		String fullName = userManager.getUserDisplayName(emailFrom);
+		if(StringHelper.containsNonWhitespace(fullName)) {
+			fullName = "<" + fullName + ">";
+		}
+		tfrom = uifactory.addTextElement("ttfrom", NLS_CONTACT_FROM, 255, fullName, formLayout);
 		tfrom.setEnabled(false);
 		
 		tto = uifactory.addTextElement("tto", NLS_CONTACT_TO, 255, "", formLayout);
diff --git a/src/main/java/org/olat/modules/fo/FilterForUserController.java b/src/main/java/org/olat/modules/fo/FilterForUserController.java
index 597ca831485a8fcc18bedffa7dc712e61372ae01..a390eba44b0a0c126e47105b2b56057939c34d6e 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();
+				String name = identity.getName();//TODO username
 				
 				if(identity.getName().startsWith(searchValue)) {
 					receiver.addEntry(name, name, info.getLastName() + " " + info.getFirstName(), CSSHelper.CSS_CLASS_USER);
@@ -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())) {
+				if(username.equals(id.getName())) {//TODO username
 					return info;
 				}
 			}
diff --git a/src/main/java/org/olat/modules/fo/ForumController.java b/src/main/java/org/olat/modules/fo/ForumController.java
index 516f743b979456df1b10539468fe99df710e42c0..d72ef0a18d70707c27d3aba672d500224cd6241b 100644
--- a/src/main/java/org/olat/modules/fo/ForumController.java
+++ b/src/main/java/org/olat/modules/fo/ForumController.java
@@ -103,6 +103,7 @@ import org.olat.portfolio.EPUIFactory;
 import org.olat.search.SearchServiceUIFactory;
 import org.olat.search.SearchServiceUIFactory.DisplayOption;
 import org.olat.user.DisplayPortraitController;
+import org.olat.user.UserManager;
 import org.olat.util.logging.activity.LoggingResourceable;
 
 /**
@@ -192,7 +193,7 @@ public class ForumController extends BasicController implements GenericEventList
 	
 	private final OLATResourceable forumOres;
 	private final BaseSecurityModule securityModule;
-
+	private final UserManager userManager;
 
 	/**
 	 * @param forum
@@ -207,6 +208,8 @@ public class ForumController extends BasicController implements GenericEventList
 		securityModule = CoreSpringFactory.getImpl(BaseSecurityModule.class);
 		addLoggingResourceable(LoggingResourceable.wrap(forum));
 		
+		userManager = CoreSpringFactory.getImpl(UserManager.class);
+		
 		forumOres = OresHelper.createOLATResourceableInstance(Forum.class,forum.getKey());
 		f = Formatter.getInstance(ureq.getLocale());
 		fm = ForumManager.getInstance();
@@ -851,9 +854,7 @@ public class ForumController extends BasicController implements GenericEventList
 								if (m.getCreator().getStatus().equals(Identity.STATUS_DELETED)) {
 									return m.getCreator().getName();
 								} else {
-									String last = m.getCreator().getUser().getProperty(UserConstants.LASTNAME, getLocale());
-									String first = m.getCreator().getUser().getProperty(UserConstants.FIRSTNAME, getLocale());
-									return last + " " + first;
+									return userManager.getUserDisplayName(m.getCreator()); 
 								}
 							case 2 :
 								Date mod = m.getLastModified();
diff --git a/src/main/java/org/olat/modules/fo/ForumManager.java b/src/main/java/org/olat/modules/fo/ForumManager.java
index bba41f7f071ce7c11dd3ba36f8d62eb68a087376..b2cab63af4831addc46fdd561667843e6f3be7c4 100644
--- a/src/main/java/org/olat/modules/fo/ForumManager.java
+++ b/src/main/java/org/olat/modules/fo/ForumManager.java
@@ -34,6 +34,8 @@ import java.util.List;
 import java.util.Locale;
 import java.util.Set;
 
+import javax.persistence.TemporalType;
+
 import org.hibernate.type.StandardBasicTypes;
 import org.hibernate.type.Type;
 import org.olat.core.CoreSpringFactory;
@@ -284,11 +286,11 @@ public class ForumManager extends BasicManager {
 		     .append(" inner join fetch msg.creator as creator")
 		     .append(" where msg.forum.key =:forumKey and msg.lastModified>:latestRead order by msg.lastModified desc");
 
-		DBQuery dbquery = DBFactory.getInstance().createQuery(query.toString());
-		dbquery.setLong("forumKey", forumKey.longValue());
-		dbquery.setTimestamp("latestRead", latestRead);
-		dbquery.setCacheable(true);
-		return dbquery.list();
+		return DBFactory.getInstance().getCurrentEntityManager()
+				.createQuery(query.toString(), Message.class)
+				.setParameter("forumKey", forumKey.longValue())
+				.setParameter("latestRead", latestRead, TemporalType.TIMESTAMP)
+				.getResultList();
 	}
 
 	/**
diff --git a/src/main/java/org/olat/modules/fo/ThreadColumnDescriptor.java b/src/main/java/org/olat/modules/fo/ThreadColumnDescriptor.java
index c15bb9d217c753f255075d001ef48106f1b74cdf..4270e683948433c6c5133d09875dc179f68def4a 100644
--- a/src/main/java/org/olat/modules/fo/ThreadColumnDescriptor.java
+++ b/src/main/java/org/olat/modules/fo/ThreadColumnDescriptor.java
@@ -52,7 +52,7 @@ public class ThreadColumnDescriptor extends DefaultColumnDescriptor {
 	private static final int MAXINDENTS = 20;
 	private static final String[] INDENTS;
 
-	private List messages;
+	private List<Message> messages;
 	private TreeWalker tw;
 	private boolean toIndent;
 
@@ -165,7 +165,7 @@ public class ThreadColumnDescriptor extends DefaultColumnDescriptor {
 																															// need the
 																															// traversal order
 																															// after sorting
-			Iterator mit = messages.iterator();
+			Iterator<Message> mit = messages.iterator();
 			while (mit.hasNext()) {
 				Message m = (Message) mit.next();
 				tw.addRelationship(m, m.getParent());
@@ -224,12 +224,5 @@ public class ThreadColumnDescriptor extends DefaultColumnDescriptor {
 	public void otherColumnDescriptorSorted() {
 		toIndent = false;
 	}
-
-
-	public String toString(int rowid) {
-		String retVal = super.toString(rowid);
-		Message m = (Message)messages.get(getTable().getSortedRow(rowid));
-		return retVal+m.getTitle()+m.getCreator().getName();
-	}
 }
 
diff --git a/src/main/java/org/olat/modules/iq/IQManager.java b/src/main/java/org/olat/modules/iq/IQManager.java
index 5dc8d17baed657c392e0d7940e358b3495346721..785902f61f66d7df7fd44c1f94aebe357e08eb5d 100644
--- a/src/main/java/org/olat/modules/iq/IQManager.java
+++ b/src/main/java/org/olat/modules/iq/IQManager.java
@@ -87,6 +87,7 @@ import org.olat.modules.ModuleConfiguration;
 import org.olat.repository.RepositoryEntry;
 import org.olat.repository.RepositoryManager;
 import org.olat.user.UserDataDeletable;
+import org.olat.user.UserManager;
 import org.olat.util.logging.activity.LoggingResourceable;
 
 /**
@@ -97,6 +98,8 @@ public class IQManager extends BasicManager implements UserDataDeletable {
 
 	private static IQManager INSTANCE;
 	
+	private UserManager userManager;
+	
 	/**
 	 *  [spring]
 	 */
@@ -111,8 +114,14 @@ public class IQManager extends BasicManager implements UserDataDeletable {
 		return INSTANCE; 
 	}
 	
-	
-	//--- methods for controller creation
+	/**
+	 * [user by Spring]
+	 * @param userManager
+	 */
+	public void setUserManager(UserManager userManager) {
+		this.userManager = userManager;
+	}
+
 	/**
 	 * IMS QTI Display Controller from within course -> moduleConfiguration
 	 * 
@@ -131,8 +140,9 @@ public class IQManager extends BasicManager implements UserDataDeletable {
 			Translator translator = Util.createPackageTranslator(this.getClass(), ureq.getLocale());
       //so this resource is locked, let's find out who locked it
 			LockResult lockResult = CoordinatorManager.getInstance().getCoordinator().getLocker().acquireLock(re.getOlatResource(), ureq.getIdentity(), null);
+			String fullName = userManager.getUserDisplayName(lockResult.getOwner());
 			return MessageUIFactory.createInfoMessage(ureq, wControl, translator.translate("status.currently.locked.title"), 
-					translator.translate("status.currently.locked", new String[] {lockResult.getOwner().getName()}));
+					translator.translate("status.currently.locked", new String[] { fullName }));
 		}else{
 			ThreadLocalUserActivityLogger.addLoggingResourceInfo(LoggingResourceable.wrap(re, OlatResourceableType.iq));
 			return new IQDisplayController(moduleConfiguration, secCallback, ureq, wControl, callingResId, callingResDetail, delegate);
diff --git a/src/main/java/org/olat/modules/iq/_spring/iqContext.xml b/src/main/java/org/olat/modules/iq/_spring/iqContext.xml
index f9a6bf8a842dcf62cf367dda150d69c9b41cf160..d8b00d9e474c1ee0b18a8b98e0393402d227c3f5 100644
--- a/src/main/java/org/olat/modules/iq/_spring/iqContext.xml
+++ b/src/main/java/org/olat/modules/iq/_spring/iqContext.xml
@@ -6,5 +6,7 @@
   http://www.springframework.org/schema/beans/spring-beans.xsd">
   
 
-	<bean id="iQManager" class="org.olat.modules.iq.IQManager"/>
+	<bean id="iQManager" class="org.olat.modules.iq.IQManager">
+		<property name="userManager" ref="userManager" />
+	</bean>
 </beans>
\ No newline at end of file
diff --git a/src/main/java/org/olat/modules/qpool/ui/metadata/RightsMetadataController.java b/src/main/java/org/olat/modules/qpool/ui/metadata/RightsMetadataController.java
index ce54de2d5653e13e34d06f61efcd4915e01ac9dd..fd37b4755aba70a5f29a8206328838fea61a426f 100644
--- a/src/main/java/org/olat/modules/qpool/ui/metadata/RightsMetadataController.java
+++ b/src/main/java/org/olat/modules/qpool/ui/metadata/RightsMetadataController.java
@@ -120,7 +120,7 @@ public class RightsMetadataController extends FormBasicController  {
 		List<String> authorLinks = new ArrayList<String>(authors.size());
 		int pos = 0;
 		for(Identity author:authors) {
-			String name = userManager.getUserDisplayName(author.getUser());
+			String name = userManager.getUserDisplayName(author);
 			FormLink link = uifactory.addFormLink("author_" + pos++, name, null, authorCont, Link.NONTRANSLATED);
 			link.setUserObject(author);
 			authorLinks.add(link.getComponent().getComponentName());
diff --git a/src/main/java/org/olat/modules/qpool/ui/metadata/RightsMetadataEditController.java b/src/main/java/org/olat/modules/qpool/ui/metadata/RightsMetadataEditController.java
index 686023cb5a196f8bd9819fb6b6ee01c7ba1b8cea..8d0244bfb38f31a5e0d633bb14a315c8e59554ec 100644
--- a/src/main/java/org/olat/modules/qpool/ui/metadata/RightsMetadataEditController.java
+++ b/src/main/java/org/olat/modules/qpool/ui/metadata/RightsMetadataEditController.java
@@ -138,7 +138,7 @@ public class RightsMetadataEditController extends FormBasicController {
 		List<String> authorLinks = new ArrayList<String>(authors.size());
 		int pos = 0;
 		for(Identity author:authors) {
-			String name = userManager.getUserDisplayName(author.getUser());
+			String name = userManager.getUserDisplayName(author);
 			FormLink link = uifactory.addFormLink("author_" + pos++, name, null, authorCont, Link.NONTRANSLATED);
 			link.setUserObject(author);
 			authorLinks.add(link.getComponent().getComponentName());
diff --git a/src/main/java/org/olat/modules/qpool/ui/metadata/SharingController.java b/src/main/java/org/olat/modules/qpool/ui/metadata/SharingController.java
index 5948082992cf93ad040e13516269ccbcf294aa87..494938d3a6762d930b4c5bc3a7b0ab8fee8aa9f1 100644
--- a/src/main/java/org/olat/modules/qpool/ui/metadata/SharingController.java
+++ b/src/main/java/org/olat/modules/qpool/ui/metadata/SharingController.java
@@ -169,7 +169,7 @@ public class SharingController extends FormBasicController {
 		public Object getValueAt(int row, int col) {
 			Identity id = getObject(row);
 			if(col == 0) {
-				return UserManager.getInstance().getUserDisplayName(id.getUser());
+				return UserManager.getInstance().getUserDisplayName(id);
 			}
 			return null;
 		}
diff --git a/src/main/java/org/olat/modules/scorm/ScormAPIMapper.java b/src/main/java/org/olat/modules/scorm/ScormAPIMapper.java
index e016fe7e75bed932e5b34f36e618177d21274b43..29d5de14f99dddc46845bb3e1a9788204547d5e4 100644
--- a/src/main/java/org/olat/modules/scorm/ScormAPIMapper.java
+++ b/src/main/java/org/olat/modules/scorm/ScormAPIMapper.java
@@ -132,7 +132,7 @@ public class ScormAPIMapper implements Mapper, ScormAPICallback, Serializable {
 		if(scormAdapter == null) {
 			try {
 				scormAdapter = new OLATApiAdapter();
-				String fullname = UserManager.getInstance().getUserDisplayName(identity.getUser());
+				String fullname = UserManager.getInstance().getUserDisplayName(identity);
 				scormAdapter.init(cpRoot, resourceId, courseIdNodeId, FolderConfig.getCanonicalRoot(), identity.getName(), fullname, lesson_mode, credit_mode, hashCode());
 				scormAdapter.addAPIListener(this);
 			} catch (IOException e) {
diff --git a/src/main/java/org/olat/modules/scorm/ScormAPIandDisplayController.java b/src/main/java/org/olat/modules/scorm/ScormAPIandDisplayController.java
index ad6adb8a724b5324c753009ff0f084868d7acd54..78aa463444b487b8ef19ed1b948f2027921bc8f5 100644
--- a/src/main/java/org/olat/modules/scorm/ScormAPIandDisplayController.java
+++ b/src/main/java/org/olat/modules/scorm/ScormAPIandDisplayController.java
@@ -129,7 +129,7 @@ public class ScormAPIandDisplayController extends MainLayoutBasicController impl
 		try {
 			scormAdapter = new OLATApiAdapter();	
 			scormAdapter.addAPIListener(apiCallback);
-			String fullname = UserManager.getInstance().getUserDisplayName(getIdentity().getUser());
+			String fullname = UserManager.getInstance().getUserDisplayName(getIdentity());
 			String scormResourceIdStr = scormResourceId == null ? null : scormResourceId.toString();
 			scormAdapter.init(cpRoot, scormResourceIdStr, courseIdNodeId, FolderConfig.getCanonicalRoot(), username, fullname, lesson_mode, credit_mode, hashCode());
 		} catch (IOException e) {
diff --git a/src/main/java/org/olat/modules/tu/TunnelComponent.java b/src/main/java/org/olat/modules/tu/TunnelComponent.java
index 6d239554aabeb56ad59e0b35dffec6d7c3436dce..ddfa5f82bd5d14c3e51406f3c6d0835418dec353 100644
--- a/src/main/java/org/olat/modules/tu/TunnelComponent.java
+++ b/src/main/java/org/olat/modules/tu/TunnelComponent.java
@@ -175,7 +175,7 @@ public class TunnelComponent extends Component implements AsyncMediaResponsible
 	 * @param userRequest
 	 */
 	private void fillTURequestWithUserInfo(TURequest tuRequest, UserRequest userRequest){
-		String userName = userRequest.getIdentity().getName();
+		String userName = userRequest.getIdentity().getName();//TODO username
 		User u = userRequest.getIdentity().getUser();
 		String lastName = u.getProperty(UserConstants.LASTNAME, loc);
 		String firstName = u.getProperty(UserConstants.FIRSTNAME, loc);
diff --git a/src/main/java/org/olat/modules/webFeed/models/Item.java b/src/main/java/org/olat/modules/webFeed/models/Item.java
index 674d3e87914168bb0e34e1de3eca363d30532c0b..5d0e9c737fa1fcb2f0e7b3602d91dead0e055efa 100644
--- a/src/main/java/org/olat/modules/webFeed/models/Item.java
+++ b/src/main/java/org/olat/modules/webFeed/models/Item.java
@@ -23,12 +23,14 @@ import java.io.Serializable;
 import java.util.Date;
 
 import org.olat.basesecurity.BaseSecurityManager;
+import org.olat.core.CoreSpringFactory;
 import org.olat.core.commons.controllers.navigation.Dated;
 import org.olat.core.gui.components.form.flexible.elements.FileElement;
 import org.olat.core.id.Identity;
 import org.olat.core.id.User;
 import org.olat.core.id.UserConstants;
 import org.olat.core.util.StringHelper;
+import org.olat.user.UserManager;
 
 /**
  * This is the feed item class. A feed has many items. Implements Serializable
@@ -40,6 +42,8 @@ import org.olat.core.util.StringHelper;
  * @authorKey Gregor Wassmann
  */
 public class Item implements Serializable, Dated {
+
+	private static final long serialVersionUID = 8856863396847065934L;
 	private String title;
 	private String description, content;
 	// The authorKey corresponds to the olat identity key of the user that created
@@ -175,7 +179,7 @@ public class Item implements Serializable, Dated {
 				if (user == null) {
 					modifierName = modifier = identity.getName();					
 				} else {
-					modifierName = modifier = user.getProperty(UserConstants.FIRSTNAME, null) + " " + user.getProperty(UserConstants.LASTNAME, null);
+					modifierName = modifier = CoreSpringFactory.getImpl(UserManager.class).getUserDisplayName(identity);
 				}
 			}
 		}
diff --git a/src/main/java/org/olat/modules/webFeed/ui/FeedMainController.java b/src/main/java/org/olat/modules/webFeed/ui/FeedMainController.java
index f83d9c6998478c52c37c53f16afb05dd0dd96a19..223cdda9771c49712d120b71b50261a9e5e5fcd6 100644
--- a/src/main/java/org/olat/modules/webFeed/ui/FeedMainController.java
+++ b/src/main/java/org/olat/modules/webFeed/ui/FeedMainController.java
@@ -21,6 +21,7 @@ package org.olat.modules.webFeed.ui;
 
 import java.util.List;
 
+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.elements.FileElement;
@@ -47,6 +48,7 @@ import org.olat.modules.webFeed.FeedViewHelper;
 import org.olat.modules.webFeed.managers.FeedManager;
 import org.olat.modules.webFeed.models.Feed;
 import org.olat.modules.webFeed.models.Item;
+import org.olat.user.UserManager;
 import org.olat.util.logging.activity.LoggingResourceable;
 
 /**
@@ -75,6 +77,8 @@ public class FeedMainController extends BasicController implements Activateable2
 	// needed for comparison
 	private String oldFeedUrl;
 	
+	private final UserManager userManager;
+	
 	/**
 	 * Constructor for learning resource (not course nodes)
 	 * 
@@ -103,6 +107,7 @@ public class FeedMainController extends BasicController implements Activateable2
 		super(ureq, wControl);
 		this.uiFactory = uiFactory;
 		this.callback = callback;
+		userManager = CoreSpringFactory.getImpl(UserManager.class);
 		setTranslator(uiFactory.getTranslator());
 		feed = feedManager.getFeed(ores);
 		helper = new FeedViewHelper(feed, getIdentity(), uiFactory.getTranslator(), courseId, nodeId, callback);
@@ -182,7 +187,8 @@ public class FeedMainController extends BasicController implements Activateable2
 				feedFormCtr = new FeedFormController(ureq, getWindowControl(), feed, uiFactory);
 				activateModalDialog(feedFormCtr);
 			} else {
-				showInfo("feed.is.being.edited.by", lock.getOwner().getName());
+				String fullName = userManager.getUserDisplayName(lock.getOwner());
+				showInfo("feed.is.being.edited.by", fullName);
 			}
 		}
 	}
diff --git a/src/main/java/org/olat/modules/webFeed/ui/ItemsController.java b/src/main/java/org/olat/modules/webFeed/ui/ItemsController.java
index d4cff5b914175b014397b929e16b3ca3bf8ebad5..b10c47992c6a2e754d578f5d27654b57389e4290 100644
--- a/src/main/java/org/olat/modules/webFeed/ui/ItemsController.java
+++ b/src/main/java/org/olat/modules/webFeed/ui/ItemsController.java
@@ -72,6 +72,7 @@ import org.olat.portfolio.EPUIFactory;
 import org.olat.user.HomePageConfigManager;
 import org.olat.user.HomePageConfigManagerImpl;
 import org.olat.user.UserInfoMainController;
+import org.olat.user.UserManager;
 import org.olat.util.logging.activity.LoggingResourceable;
 
 /**
@@ -110,6 +111,8 @@ public class ItemsController extends BasicController implements Activateable2 {
 	private FeedItemDisplayConfig displayConfig;
 	public static Event HANDLE_NEW_EXTERNAL_FEED_DIALOG_EVENT = new Event("cmd.handle.new.external.feed.dialog");
 	public static Event FEED_INFO_IS_DIRTY_EVENT = new Event("cmd.feed.info.is.dirty");
+	
+	private final UserManager userManager;
 
 	/**
 	 * default constructor, with full FeedItemDisplayConfig
@@ -140,6 +143,8 @@ public class ItemsController extends BasicController implements Activateable2 {
 	public ItemsController(final UserRequest ureq, final WindowControl wControl, final Feed feed, final FeedViewHelper helper, final FeedUIFactory uiFactory,
 			final FeedSecurityCallback callback, final VelocityContainer vcRightColumn, FeedItemDisplayConfig displayConfig) {
 		super(ureq, wControl);
+		
+		userManager = CoreSpringFactory.getImpl(UserManager.class);
 		if (displayConfig == null) {
 			displayConfig = new FeedItemDisplayConfig(true, true, true);
 		}
@@ -409,7 +414,8 @@ public class ItemsController extends BasicController implements Activateable2 {
 					itemFormCtr = uiFactory.createItemFormController(ureq, getWindowControl(), currentItem, feed);
 					activateModalDialog(itemFormCtr);
 				} else {
-					showInfo("feed.item.is.being.edited.by", lock.getOwner().getName());
+					String fullName = userManager.getUserDisplayName(lock.getOwner());
+					showInfo("feed.item.is.being.edited.by", fullName);
 				}				
 			} else {
 				showInfo("feed.item.is.being.edited.by", "unknown");
@@ -586,7 +592,8 @@ public class ItemsController extends BasicController implements Activateable2 {
 				ThreadLocalUserActivityLogger.log(FeedLoggingAction.FEED_ITEM_DELETE, getClass(), LoggingResourceable.wrap(item));
 
 			} else {
-				showInfo("feed.item.is.being.edited.by", lock.getOwner().getName());
+				String fullName = userManager.getUserDisplayName(lock.getOwner());
+				showInfo("feed.item.is.being.edited.by", fullName);
 			}
 
 		} else if (source == itemFormCtr) {
diff --git a/src/main/java/org/olat/modules/wiki/MediaFilesTableModel.java b/src/main/java/org/olat/modules/wiki/MediaFilesTableModel.java
index f2590a5806f87836889bd7d72822c2f2554e8e60..eb86a7a4088bb6cdc12d25ee5c247588f87e6950 100644
--- a/src/main/java/org/olat/modules/wiki/MediaFilesTableModel.java
+++ b/src/main/java/org/olat/modules/wiki/MediaFilesTableModel.java
@@ -28,6 +28,7 @@ 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;
 import org.olat.core.gui.components.table.DefaultColumnDescriptor;
@@ -35,6 +36,7 @@ import org.olat.core.gui.components.table.DefaultTableDataModel;
 import org.olat.core.gui.components.table.TableController;
 import org.olat.core.gui.translator.Translator;
 import org.olat.core.util.Formatter;
+import org.olat.user.UserManager;
 
 /**
  * Description:<br>
@@ -44,13 +46,15 @@ import org.olat.core.util.Formatter;
  * 
  * @author guido
  */
-public class MediaFilesTableModel extends DefaultTableDataModel {
+public class MediaFilesTableModel extends DefaultTableDataModel<MediaFileElement> {
 	private static final int COLUMN_COUNT = 5;
 	private Formatter formatter;
+	private UserManager userManager;
 
-	public MediaFilesTableModel(List objects, Translator trans) {
+	public MediaFilesTableModel(List<MediaFileElement> objects, Translator trans) {
 		super(objects);
 		setLocale(trans.getLocale());
+		userManager = CoreSpringFactory.getImpl(UserManager.class);
 		formatter = Formatter.getInstance(trans.getLocale());
 	}
 
@@ -82,13 +86,13 @@ public class MediaFilesTableModel extends DefaultTableDataModel {
 			case 1:
 				long identKey = entry.getCreatedBy();
 				if (identKey == 0) return "---";
-				return BaseSecurityManager.getInstance().loadIdentityByKey(identKey).getName();
+				return userManager.getUserDisplayName(new Long(identKey));//TODO username
 			case 2:
 				return formatter.formatDateAndTime(new Date(entry.getCreationDate()));
 			case 3:
 				long key = entry.getDeletedBy();
 				if (key == 0) return "---";
-				return BaseSecurityManager.getInstance().loadIdentityByKey(key).getName();
+				return userManager.getUserDisplayName(new Long(key));//TODO username
 			case 4:
 				long delDate = entry.getDeletionDate();
 				if (delDate == 0) return "---";
diff --git a/src/main/java/org/olat/modules/wiki/versioning/HistoryTableDateModel.java b/src/main/java/org/olat/modules/wiki/versioning/HistoryTableDateModel.java
index 1644fb8dd4743758fa9a6bb48dc7691f7846ea5f..ee92de4b59c5ccb0324e1f973a5404a47925e5cd 100644
--- a/src/main/java/org/olat/modules/wiki/versioning/HistoryTableDateModel.java
+++ b/src/main/java/org/olat/modules/wiki/versioning/HistoryTableDateModel.java
@@ -29,7 +29,7 @@ import java.util.Date;
 import java.util.List;
 import java.util.Locale;
 
-import org.olat.basesecurity.BaseSecurityManager;
+import org.olat.core.CoreSpringFactory;
 import org.olat.core.gui.components.table.DefaultColumnDescriptor;
 import org.olat.core.gui.components.table.DefaultTableDataModel;
 import org.olat.core.gui.components.table.TableController;
@@ -37,6 +37,7 @@ import org.olat.core.gui.components.table.TableDataModel;
 import org.olat.core.gui.translator.Translator;
 import org.olat.modules.wiki.WikiMainController;
 import org.olat.modules.wiki.WikiPage;
+import org.olat.user.UserManager;
 
 /**
  * Description:<br>
@@ -46,13 +47,15 @@ import org.olat.modules.wiki.WikiPage;
  * 
  * @author guido
  */
-public class HistoryTableDateModel extends DefaultTableDataModel implements TableDataModel {
+public class HistoryTableDateModel extends DefaultTableDataModel<WikiPage> implements TableDataModel<WikiPage> {
 
-	private Translator trans;
+	private final Translator trans;
+	private final UserManager userManager;
 
-	public HistoryTableDateModel(List entries, Translator trans) {
+	public HistoryTableDateModel(List<WikiPage> entries, Translator trans) {
 		super(entries);
 		this.trans = trans;
+		userManager = CoreSpringFactory.getImpl(UserManager.class);
 	}
 
 	private static final int COLUMN_COUNT = 3;
@@ -68,7 +71,7 @@ public class HistoryTableDateModel extends DefaultTableDataModel implements Tabl
 	 * @see org.olat.core.gui.components.table.TableDataModel#getValueAt(int, int)
 	 */
 	public Object getValueAt(int row, int col) {
-		WikiPage page = (WikiPage) objects.get(row);
+		WikiPage page = getObject(row);
 		switch (col) {
 			case 0:
 				return String.valueOf(page.getVersion());
@@ -78,8 +81,7 @@ public class HistoryTableDateModel extends DefaultTableDataModel implements Tabl
 				return String.valueOf(page.getViewCount());
 			case 3:
 				long key = page.getModifyAuthor();
-				return key != 0 ? BaseSecurityManager.getInstance().loadIdentityByKey(Long.valueOf(page.getModifyAuthor())).getName() :"n/a";
-				//TODO:gs:a loadIdenitiesByKeys(List keys) would be much more performant as each lookup get one database lookup
+				return userManager.getUserDisplayName(new Long(key));
 			case 4:
 				int v = page.getVersion();
 				if(v == 0) return new String("");
diff --git a/src/main/java/org/olat/note/NoteController.java b/src/main/java/org/olat/note/NoteController.java
index 590c3d66d0381df9de52b59060e2adeb061e6dc8..98916c2363aca4692d6ba2d25f95a790c0c73918 100644
--- a/src/main/java/org/olat/note/NoteController.java
+++ b/src/main/java/org/olat/note/NoteController.java
@@ -137,7 +137,7 @@ public class NoteController extends FormBasicController implements GenericEventL
 			nm.saveNote(n);
 			Long newKey = n.getKey();
 			OLATResourceable ores = OresHelper.createOLATResourceableInstance(Note.class, newKey);
-			sec.fireEventToListenersOf(new NoteEvent(getIdentity().getName()), ores);
+			sec.fireEventToListenersOf(new NoteEvent(getIdentity().getKey()), ores);
 		} else {
 			nm.updateNote(n);
 		}
diff --git a/src/main/java/org/olat/note/NoteEvent.java b/src/main/java/org/olat/note/NoteEvent.java
index b85c4b918006ec7123ca57be95ed8d0dc9dae825..a72286368279590edea8310128c9fb395ed1ea2b 100644
--- a/src/main/java/org/olat/note/NoteEvent.java
+++ b/src/main/java/org/olat/note/NoteEvent.java
@@ -37,16 +37,19 @@ import org.olat.core.util.event.MultiUserEvent;
  */
 public class NoteEvent extends MultiUserEvent {
 
-	private final String username;
+	private static final long serialVersionUID = -9028075258477862700L;
+	private final Long identityKey;
+	
 	/**
 	 * @param username
 	 */
-	public NoteEvent(String username) {
+	public NoteEvent(Long identityKey) {
 		super("note_event");
-		this.username = username;
+		this.identityKey = identityKey;
 	}
-
-	public String getUsername() {
-		return username;
+	public Long getIdentityKey() {
+		return identityKey;
 	}
+
+
 }
diff --git a/src/main/java/org/olat/note/NoteManager.java b/src/main/java/org/olat/note/NoteManager.java
index 1f7e565d7c56f4a1598c6091150b9647b18d7ac5..52b568a37d7ffa912885a40c2553f145713b21fb 100644
--- a/src/main/java/org/olat/note/NoteManager.java
+++ b/src/main/java/org/olat/note/NoteManager.java
@@ -177,7 +177,7 @@ public class NoteManager extends BasicManager implements UserDataDeletable {
 	 */
 	private void fireBookmarkEvent(Identity identity) {
 		//event this identity
-		NoteEvent noteEvent = new NoteEvent(identity.getName());
+		NoteEvent noteEvent = new NoteEvent(identity.getKey());
 		OLATResourceable eventBusOres = OresHelper.createOLATResourceableInstance(Identity.class, identity.getKey());							
 		//TODO: LD: use SingleUserEventCenter
 		CoordinatorManager.getInstance().getCoordinator().getEventBus().fireEventToListenersOf(noteEvent, eventBusOres);		
diff --git a/src/main/java/org/olat/note/NotesPortletRunController.java b/src/main/java/org/olat/note/NotesPortletRunController.java
index 751d34c1bb6555f060d2c037c71604e3f8143984..ffb7fe115f78411120daf18e1bf80bfb8af815bd 100644
--- a/src/main/java/org/olat/note/NotesPortletRunController.java
+++ b/src/main/java/org/olat/note/NotesPortletRunController.java
@@ -188,7 +188,7 @@ public class NotesPortletRunController extends AbstractPortletRunController<Note
 	 */
 	public void event(Event event) {		
 		if(event instanceof NoteEvent) {			
-			if(((NoteEvent)event).getUsername().equals(getIdentity().getName())) {
+			if(((NoteEvent)event).getIdentityKey().equals(getIdentity().getKey())) {
 			  reloadModel(sortingCriteria);						  
 			}
 		}		
diff --git a/src/main/java/org/olat/notifications/PersonalRSSFeed.java b/src/main/java/org/olat/notifications/PersonalRSSFeed.java
index 5000b50569006adea99f849f9c4b0a780328e4e2..c671e92395dc46b6016cb802b2e15881e7100698 100644
--- a/src/main/java/org/olat/notifications/PersonalRSSFeed.java
+++ b/src/main/java/org/olat/notifications/PersonalRSSFeed.java
@@ -76,9 +76,9 @@ public class PersonalRSSFeed extends SyndFeedImpl {
 		NotificationsManager man = NotificationsManager.getInstance();
 		//TODO bookmark List<Bookmark> bookmarks = BookmarkManager.getInstance().findBookmarksByIdentity(identity);
 
-		setTitle(translator.translate("rss.title", new String[] { identity.getName() }));
+		setTitle(translator.translate("rss.title", new String[] { identity.getName() }));//TODO username
 		setLink(RSSUtil.URI_SERVER);
-		setDescription(translator.translate("rss.description", new String[] { identity.getName() }));
+		setDescription(translator.translate("rss.description", new String[] { identity.getName() }));//TODO username
 
 		// create and add an image to the feed
 		SyndImage image = new SyndImageImpl();
diff --git a/src/main/java/org/olat/portfolio/manager/EPFrontendManager.java b/src/main/java/org/olat/portfolio/manager/EPFrontendManager.java
index c60aee2ed800deda4fb66806b9800d5a1e63bb99..7e04b6b23918a2a901113e63d545d8a42ed0653b 100755
--- a/src/main/java/org/olat/portfolio/manager/EPFrontendManager.java
+++ b/src/main/java/org/olat/portfolio/manager/EPFrontendManager.java
@@ -1255,7 +1255,7 @@ public class EPFrontendManager extends BasicManager {
 		List<Identity> ownerIdents = securityManager.getIdentitiesOfSecurityGroup(map.getOwnerGroup(), 0, 1);
 		if(ownerIdents.size() > 0){
 			Identity id = ownerIdents.get(0);
-			return userManager.getUserDisplayName(id.getUser());
+			return userManager.getUserDisplayName(id);
 		}
 		return "n/a";
 	}
diff --git a/src/main/java/org/olat/portfolio/ui/artefacts/view/ArtefactTableDataModel.java b/src/main/java/org/olat/portfolio/ui/artefacts/view/ArtefactTableDataModel.java
index 4d4cf1c79d96e25fd694816b98a4100f0435e9bd..4d8aa236a045859675bc59f5e19c4c962b822870 100644
--- a/src/main/java/org/olat/portfolio/ui/artefacts/view/ArtefactTableDataModel.java
+++ b/src/main/java/org/olat/portfolio/ui/artefacts/view/ArtefactTableDataModel.java
@@ -26,6 +26,7 @@ import org.olat.core.gui.components.table.DefaultTableDataModel;
 import org.olat.core.util.StringHelper;
 import org.olat.portfolio.manager.EPFrontendManager;
 import org.olat.portfolio.model.artefacts.AbstractArtefact;
+import org.olat.user.UserManager;
 
 /**
  * Description:<br>
@@ -36,12 +37,14 @@ import org.olat.portfolio.model.artefacts.AbstractArtefact;
  * 
  * @author Roman Haag, roman.haag@frentix.com, http://www.frentix.com
  */
-public class ArtefactTableDataModel extends DefaultTableDataModel {
+public class ArtefactTableDataModel extends DefaultTableDataModel<AbstractArtefact> {
 
-	private EPFrontendManager ePFMgr;
+	private final UserManager userManager;
+	private final EPFrontendManager ePFMgr;
 
 	public ArtefactTableDataModel(List<AbstractArtefact> artefacts) {
 		super(artefacts);
+		userManager = CoreSpringFactory.getImpl(UserManager.class);
 		ePFMgr = (EPFrontendManager) CoreSpringFactory.getBean("epFrontendManager");
 	}
 
@@ -68,7 +71,7 @@ public class ArtefactTableDataModel extends DefaultTableDataModel {
 			case 2:
 				return artefact.getCreationDate();
 			case 3:
-				return artefact.getAuthor().getName();
+				return userManager.getUserDisplayName(artefact.getAuthor());
 			case 4: 
 				List<String> artTags = ePFMgr.getArtefactTags(artefact);
 				return StringHelper.formatAsCSVString(artTags);
diff --git a/src/main/java/org/olat/portfolio/ui/artefacts/view/EPMultipleArtefactsAsTableController.java b/src/main/java/org/olat/portfolio/ui/artefacts/view/EPMultipleArtefactsAsTableController.java
index 51ab1d3460f2878befe2c76d8057c3b7f3eb4e18..6a96b3fa180451f464f3dd9be7bbb38860f97f86 100644
--- a/src/main/java/org/olat/portfolio/ui/artefacts/view/EPMultipleArtefactsAsTableController.java
+++ b/src/main/java/org/olat/portfolio/ui/artefacts/view/EPMultipleArtefactsAsTableController.java
@@ -209,7 +209,6 @@ public class EPMultipleArtefactsAsTableController extends BasicController implem
 	/**
 	 * @see org.olat.core.gui.control.DefaultController#event(org.olat.core.gui.UserRequest, org.olat.core.gui.components.Component, org.olat.core.gui.control.Event)
 	 */
-	@SuppressWarnings("unused")
 	@Override
 	protected void event(UserRequest ureq, Component source, Event event) {
 		//
diff --git a/src/main/java/org/olat/portfolio/ui/structel/EPShareListController.java b/src/main/java/org/olat/portfolio/ui/structel/EPShareListController.java
index 1da5bb1dbc7fdb424f97d5aa36a5a8549474457e..6db4fa486e8e457b5655e146db69aa73a4b2c8b8 100644
--- a/src/main/java/org/olat/portfolio/ui/structel/EPShareListController.java
+++ b/src/main/java/org/olat/portfolio/ui/structel/EPShareListController.java
@@ -593,7 +593,7 @@ public class EPShareListController extends FormBasicController {
 	
 	protected String formatIdentity(Identity ident) {
 		User u = ident.getUser();
-		String login = ident.getName();
+		String login = ident.getName();//TODO username
 		String first = u.getProperty(UserConstants.FIRSTNAME, null);
 		String last = u.getProperty(UserConstants.LASTNAME, null);
 		return login + ": " + last + " " + first;
@@ -613,7 +613,7 @@ public class EPShareListController extends FormBasicController {
 				boolean hasMore = false;
 				for (Identity ident:res) {
 					maxEntries--;
-					String login = ident.getName();
+					String login = ident.getName();//TODO username
 					resMap.put(formatIdentity(ident), login);
 					if(maxEntries <= 0) {
 						hasMore = true;
@@ -767,7 +767,7 @@ public class EPShareListController extends FormBasicController {
 			
 			Map<String,String> values = new HashMap<String,String>();
 			for(Identity identity:mapPolicy.getIdentities()) {
-				String login = identity.getName();
+				String login = identity.getName();//TODO username
 				values.put(formatIdentity(identity), login);
 			}
 			return values;
diff --git a/src/main/java/org/olat/registration/PwChangeController.java b/src/main/java/org/olat/registration/PwChangeController.java
index 0dc96daf286ee7df8357715f2e10c5733e268a98..761f0589b986603af56a5417bb782efd1defa51c 100644
--- a/src/main/java/org/olat/registration/PwChangeController.java
+++ b/src/main/java/org/olat/registration/PwChangeController.java
@@ -226,7 +226,7 @@ public class PwChangeController extends BasicController {
 					TemporaryKey tk = rm.loadTemporaryKeyByEmail(emailAdress);
 					if (tk == null) tk = rm.createTemporaryKeyByEmail(emailAdress, ip, RegistrationManager.PW_CHANGE);
 					myContent.contextPut("pwKey", tk.getRegistrationKey());
-					body = userTrans.translate("pwchange.intro", new String[] { identity.getName() })
+					body = userTrans.translate("pwchange.intro", new String[] { identity.getName() })//TODO username
 							+ userTrans.translate("pwchange.body", new String[] { serverpath, tk.getRegistrationKey(),
 									I18nManager.getInstance().getLocaleKey(ureq.getLocale()) }) + SEPARATOR
 							+ userTrans.translate("reg.wherefrom", new String[] { serverpath, today, ip });
diff --git a/src/main/java/org/olat/repository/RepositoryMailing.java b/src/main/java/org/olat/repository/RepositoryMailing.java
index 1a5f6894899ea07536bb2087b43d69e8bce60a7d..d273166f52bb486b518b4daf9ead65e71d8ca72d 100644
--- a/src/main/java/org/olat/repository/RepositoryMailing.java
+++ b/src/main/java/org/olat/repository/RepositoryMailing.java
@@ -168,7 +168,7 @@ public class RepositoryMailing {
 				User user = identity.getUser();
 				context.put("firstname", user.getProperty(UserConstants.FIRSTNAME, null));
 				context.put("lastname", user.getProperty(UserConstants.LASTNAME, null));
-				context.put("login", identity.getName());
+				context.put("login", identity.getName());//TODO username
 				// Put variables from greater context
 				context.put("coursename", reName);
 				context.put("coursedescription", redescription);
diff --git a/src/main/java/org/olat/repository/RepositoryTableModel.java b/src/main/java/org/olat/repository/RepositoryTableModel.java
index 039a0fb231ac564812f14bdd315d496c3ef58bf8..d1b8d260be23e14d4a0cfc120c903d9dfb14c6ab 100644
--- a/src/main/java/org/olat/repository/RepositoryTableModel.java
+++ b/src/main/java/org/olat/repository/RepositoryTableModel.java
@@ -34,8 +34,6 @@ import java.util.Locale;
 import java.util.Map;
 import java.util.Set;
 
-import org.olat.basesecurity.BaseSecurity;
-import org.olat.basesecurity.IdentityShort;
 import org.olat.core.CoreSpringFactory;
 import org.olat.core.gui.components.table.ColumnDescriptor;
 import org.olat.core.gui.components.table.CustomCellRenderer;
@@ -46,10 +44,8 @@ import org.olat.core.gui.components.table.StaticColumnDescriptor;
 import org.olat.core.gui.components.table.TableController;
 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.StringHelper;
 import org.olat.login.LoginModule;
-import org.olat.properties.Property;
 import org.olat.resource.accesscontrol.ACService;
 import org.olat.resource.accesscontrol.model.OLATResourceAccess;
 import org.olat.user.UserManager;
@@ -82,7 +78,6 @@ public class RepositoryTableModel extends DefaultTableDataModel<RepositoryEntry>
 	private final Translator translator; // package-local to avoid synthetic accessor method.
 	private final ACService acService;
 	private final UserManager userManager;
-	private final BaseSecurity securityManager;
 	
 	private final Map<Long,OLATResourceAccess> repoEntriesWithOffer = new HashMap<Long,OLATResourceAccess>();;
 	private final Map<String,String> fullNames = new HashMap<String, String>();
@@ -97,7 +92,6 @@ public class RepositoryTableModel extends DefaultTableDataModel<RepositoryEntry>
 
 		acService = CoreSpringFactory.getImpl(ACService.class);
 		userManager = CoreSpringFactory.getImpl(UserManager.class);
-		securityManager = CoreSpringFactory.getImpl(BaseSecurity.class);
 	}
 
 	/**
@@ -254,10 +248,8 @@ public class RepositoryTableModel extends DefaultTableDataModel<RepositoryEntry>
 		}
 		
 		if(!newNames.isEmpty()) {
-			for(IdentityShort identity: securityManager.findShortIdentitiesByName(newNames)) {
-				String fullname = userManager.getUserDisplayName(identity);
-				fullNames.put(identity.getName(), fullname);
-			}
+			Map<String,String> newFullnames = userManager.getUserDisplayNamesByUserName(newNames);
+			fullNames.putAll(newFullnames);
 		}
 	}
 	
diff --git a/src/main/java/org/olat/repository/controllers/RepositoryDetailsController.java b/src/main/java/org/olat/repository/controllers/RepositoryDetailsController.java
index f48f45c10efb8026826f8b5d1c1248fb6df22c85..d4f03e6c2f49799dd49f09437e809746f9e090af 100644
--- a/src/main/java/org/olat/repository/controllers/RepositoryDetailsController.java
+++ b/src/main/java/org/olat/repository/controllers/RepositoryDetailsController.java
@@ -750,10 +750,12 @@ public class RepositoryDetailsController extends BasicController implements Gene
 			    fireEvent(ureq, Event.FAILED_EVENT);			
 		    }
 		  } else if(lockResult!=null && lockResult.isSuccess() && isAlreadyLocked) {
-		  	showInfo("warning.course.alreadylocked.bySameUser", lockResult.getOwner().getName());
+		  	String fullName = userManager.getUserDisplayName(lockResult.getOwner());
+		  	showInfo("warning.course.alreadylocked.bySameUser", fullName);
 		  	lockResult = null; //invalid lock, it was already locked
 		  } else {
-		  	showInfo("warning.course.alreadylocked", lockResult.getOwner().getName());
+		  	String fullName = userManager.getUserDisplayName(lockResult.getOwner());
+		  	showInfo("warning.course.alreadylocked", fullName);
 		  }
 		}
 		finally {	
@@ -787,8 +789,9 @@ public class RepositoryDetailsController extends BasicController implements Gene
 		} else if (lockResult!=null && lockResult.isSuccess() && isAlreadyLocked) {
 			showWarning("warning.course.alreadylocked.bySameUser");
 			lockResult = null;
-		}	else {			  
-		  showWarning("warning.course.alreadylocked", lockResult.getOwner().getName());
+		}	else {	
+			String fullName = userManager.getUserDisplayName(lockResult.getOwner());
+		  showWarning("warning.course.alreadylocked", fullName);
 	  }
 	}
 	
diff --git a/src/main/java/org/olat/repository/controllers/RepositoryEditDescriptionController.java b/src/main/java/org/olat/repository/controllers/RepositoryEditDescriptionController.java
index a7e2ee1887b4a788139afe6913bff7d3eec7203f..31b468420c14acd4733a4452ce6f4be19ff01789 100644
--- a/src/main/java/org/olat/repository/controllers/RepositoryEditDescriptionController.java
+++ b/src/main/java/org/olat/repository/controllers/RepositoryEditDescriptionController.java
@@ -31,7 +31,6 @@ import java.util.Set;
 import java.util.UUID;
 
 import org.olat.ControllerFactory;
-import org.olat.basesecurity.BaseSecurity;
 import org.olat.core.CoreSpringFactory;
 import org.olat.core.gui.UserRequest;
 import org.olat.core.gui.components.form.flexible.FormItem;
@@ -49,7 +48,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.media.NamedFileMediaResource;
-import org.olat.core.id.Identity;
 import org.olat.core.util.StringHelper;
 import org.olat.core.util.WebappHelper;
 import org.olat.core.util.vfs.LocalFolderImpl;
@@ -83,7 +81,6 @@ public class RepositoryEditDescriptionController extends FormBasicController {
 	private FormLink deleteImage;
 
 	private final UserManager userManager;
-	private final BaseSecurity securityManager;
 	private final RepositoryManager repositoryManager;
 
 	/**
@@ -97,7 +94,6 @@ public class RepositoryEditDescriptionController extends FormBasicController {
 		super(ureq, wControl, "bgrep");
 		setBasePackage(RepositoryManager.class);
 		userManager = CoreSpringFactory.getImpl(UserManager.class);
-		securityManager = CoreSpringFactory.getImpl(BaseSecurity.class);
 		repositoryManager = CoreSpringFactory.getImpl(RepositoryManager.class);
 		this.isSubWorkflow = isSubWorkflow;
 		this.repositoryEntry = entry;
@@ -118,10 +114,9 @@ public class RepositoryEditDescriptionController extends FormBasicController {
 		String id = repositoryEntry.getResourceableId() == null ? "-" : repositoryEntry.getResourceableId().toString();
 		uifactory.addStaticTextElement("cif.id", id, descCont);
 
-		String initalAuthor = repositoryEntry.getInitialAuthor() == null ? "-" : repositoryEntry.getInitialAuthor().toString();
-		Identity authorId = securityManager.findIdentityByName(initalAuthor);
-		if(authorId != null) {
-			initalAuthor = userManager.getUserDisplayName(authorId.getUser());
+		String initalAuthor = repositoryEntry.getInitialAuthor() == null ? "-" : repositoryEntry.getInitialAuthor();
+		if(repositoryEntry.getInitialAuthor() != null) {
+			initalAuthor = userManager.getUserDisplayName(initalAuthor);
 		}
 		uifactory.addStaticTextElement("cif.initialAuthor", initalAuthor, descCont);
 		// Add resource type
diff --git a/src/main/java/org/olat/repository/controllers/RepositoryEditPropertiesController.java b/src/main/java/org/olat/repository/controllers/RepositoryEditPropertiesController.java
index 185859e6c5389e8f5388b63894cee96c2d6aaf5b..6760f8d193d97d6c2c70ed479fc1cfb324a841a3 100644
--- a/src/main/java/org/olat/repository/controllers/RepositoryEditPropertiesController.java
+++ b/src/main/java/org/olat/repository/controllers/RepositoryEditPropertiesController.java
@@ -95,6 +95,7 @@ import org.olat.repository.RepositoryManager;
 import org.olat.resource.accesscontrol.ui.AccessConfigurationController;
 import org.olat.resource.references.ReferenceImpl;
 import org.olat.resource.references.ReferenceManager;
+import org.olat.user.UserManager;
 import org.olat.util.logging.activity.LoggingResourceable;
 
 /**
@@ -192,11 +193,12 @@ public class RepositoryEditPropertiesController extends BasicController implemen
 			 //try to acquire edit lock for this course and show dialog box on failure..
 			courseLockEntry = CoordinatorManager.getInstance().getCoordinator().getLocker().acquireLock(repositoryEntry.getOlatResource(), ureq.getIdentity(), CourseFactory.COURSE_EDITOR_LOCK);
 			if (!courseLockEntry.isSuccess()){				
-				this.showWarning("error.course.alreadylocked", courseLockEntry.getOwner().getName());
+				String fullName = CoreSpringFactory.getImpl(UserManager.class).getUserDisplayName(courseLockEntry.getOwner());
+				showWarning("error.course.alreadylocked", fullName);
 				//beware: the controller is not properly initialized - the initial component is null
 				return;
 			} else if(courseLockEntry.isSuccess() && isAlreadyLocked) {
-				this.showWarning("warning.course.alreadylocked.bySameUser");
+				showWarning("warning.course.alreadylocked.bySameUser");
 				//beware: the controller is not properly initialized - the initial component is null
 				courseLockEntry = null; //invalid lock
 				return;
diff --git a/src/main/java/org/olat/repository/delete/TabbedPaneController.java b/src/main/java/org/olat/repository/delete/TabbedPaneController.java
index 6f071a1eb366f900ad046c633ec9d371134db24e..d3a7e81f3eeaebb50f3b722b9e5f481de7b0651e 100644
--- a/src/main/java/org/olat/repository/delete/TabbedPaneController.java
+++ b/src/main/java/org/olat/repository/delete/TabbedPaneController.java
@@ -25,6 +25,7 @@
 
 package org.olat.repository.delete;
 
+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,6 +43,7 @@ import org.olat.core.util.WebappHelper;
 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;
 
 /** 
  * Learning-resource deletion tabbed pane controller.
@@ -77,7 +79,8 @@ public class TabbedPaneController extends BasicController implements ControllerE
 			OLATResourceable lockResourceable = OresHelper.createOLATResourceableTypeWithoutCheck(this.getClass().getName());
 			lock = CoordinatorManager.getInstance().getCoordinator().getLocker().acquireLock(lockResourceable, ureq.getIdentity(), "deleteGroup");
 			if (!lock.isSuccess()) {
-				String text = getTranslator().translate("error.deleteworkflow.locked.by", new String[]{lock.getOwner().getName()});
+				String fullName = CoreSpringFactory.getImpl(UserManager.class).getUserDisplayName(lock.getOwner());
+				String text = getTranslator().translate("error.deleteworkflow.locked.by", new String[]{ fullName });
 				Controller uiInfoMsgCtrl = MessageUIFactory.createInfoMessage(ureq, wControl, null, text);
 				listenTo(uiInfoMsgCtrl);//register to let dispose on dispose of this controller
 				putInitialPanel(uiInfoMsgCtrl.getInitialComponent());
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 b7c04efd2291c1f1433f6942c2d4dc57bc09cfde..1ef1b191a93e377becb714914e18fa5b09aa7b42 100644
--- a/src/main/java/org/olat/repository/delete/service/RepositoryDeletionManager.java
+++ b/src/main/java/org/olat/repository/delete/service/RepositoryDeletionManager.java
@@ -255,6 +255,7 @@ public class RepositoryDeletionManager extends BasicManager implements UserDataD
 			}
 			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()} );
 		}
 	}
diff --git a/src/main/java/org/olat/restapi/repository/course/CourseResourceFolderWebService.java b/src/main/java/org/olat/restapi/repository/course/CourseResourceFolderWebService.java
index 99b305124a4b8caac604b07927310b841de727c4..fc411e537ab6426feac0b7156573d0cca576bd93 100644
--- a/src/main/java/org/olat/restapi/repository/course/CourseResourceFolderWebService.java
+++ b/src/main/java/org/olat/restapi/repository/course/CourseResourceFolderWebService.java
@@ -354,7 +354,7 @@ public class CourseResourceFolderWebService {
 		
 		if(newFile instanceof MetaTagged && ((MetaTagged)newFile).getMetaInfo() != null) {
 			MetaInfo infos = ((MetaTagged)newFile).getMetaInfo();
-			infos.setAuthor(ureq.getIdentity().getName());
+			infos.setAuthor(ureq.getIdentity());
 			infos.write();
 		}
 
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 32dbc0368328cf71ed56d5a4d69d8189a8b5054b..8ccde62c8bc1cc3d94e360071486ef951e11b651 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());
+		messageDocument.setAuthor(message.getAuthor().getName());//TODO username
 		messageDocument.setCreatedDate(message.getCreationDate());
 		messageDocument.setLastChange(message.getCreationDate());
 		messageDocument.setResourceUrl(searchResourceContext.getResourceUrl());
diff --git a/src/main/java/org/olat/search/ui/StandardResultController.java b/src/main/java/org/olat/search/ui/StandardResultController.java
index 2c4fff9f8aa9bb474527b2a25adb3ed86a533240..4a02969865b640d670d295f87314243a9f2f4710 100644
--- a/src/main/java/org/olat/search/ui/StandardResultController.java
+++ b/src/main/java/org/olat/search/ui/StandardResultController.java
@@ -20,6 +20,11 @@
 
 package org.olat.search.ui;
 
+import java.util.Collections;
+import java.util.List;
+
+import org.olat.basesecurity.BaseSecurityManager;
+import org.olat.basesecurity.IdentityShort;
 import org.olat.core.gui.UserRequest;
 import org.olat.core.gui.components.form.flexible.FormItem;
 import org.olat.core.gui.components.form.flexible.FormItemContainer;
@@ -34,6 +39,7 @@ import org.olat.core.gui.control.WindowControl;
 import org.olat.core.util.Formatter;
 import org.olat.core.util.StringHelper;
 import org.olat.search.model.ResultDocument;
+import org.olat.user.UserManager;
 
 /**
  * Description:<br>
@@ -64,8 +70,17 @@ public class StandardResultController extends FormBasicController implements Res
 		if(formLayout instanceof FormLayoutContainer) {
 			FormLayoutContainer formLayoutCont = (FormLayoutContainer)formLayout;
 			formLayoutCont.contextPut("result", document);
-			formLayoutCont.contextPut("id", this.hashCode());
+			formLayoutCont.contextPut("id", hashCode());
 			formLayoutCont.contextPut("formatter", Formatter.getInstance(getLocale()));
+			
+			String author = document.getAuthor();
+			if(StringHelper.containsNonWhitespace(author)) {
+				List<IdentityShort> identities = BaseSecurityManager.getInstance().findShortIdentitiesByName(Collections.singleton(author));
+				if(identities.size() > 0) {
+					author = UserManager.getInstance().getUserDisplayName(identities.get(0));
+				}
+			}
+			formLayoutCont.contextPut("author", author);
 		}
 		
 		String highlightLabel = document.getHighlightTitle();
diff --git a/src/main/java/org/olat/search/ui/_content/standardResult.html b/src/main/java/org/olat/search/ui/_content/standardResult.html
index 3554f05ac4da42dadb0910ef41c43370bbc89981..e864394bbaa451faf3a1e44aa1439e44855ffce5 100644
--- a/src/main/java/org/olat/search/ui/_content/standardResult.html
+++ b/src/main/java/org/olat/search/ui/_content/standardResult.html
@@ -25,9 +25,9 @@
     #end
     
     <div class="o_search_result_details" style="display: none" id="o_search_result_$id">
-		#if (!$result.author.equals("") ) 
+		#if (!$author.equals("") ) 
 			<div class="o_search_result_author">
-		    	<strong>$r.translate("label.search.author"):</strong> $result.author.
+		    	<strong>$r.translate("label.search.author"):</strong> $author.
 			</div>
 		#end
 		#if ($result.lastChange )
diff --git a/src/main/java/org/olat/user/ChangePrefsController.java b/src/main/java/org/olat/user/ChangePrefsController.java
index 3c75fb94915ecd3c725c2c9e3acb227cff57232e..67aa96139145d06ccae74b7117a05a9dde39b97a 100644
--- a/src/main/java/org/olat/user/ChangePrefsController.java
+++ b/src/main/java/org/olat/user/ChangePrefsController.java
@@ -207,7 +207,8 @@ class SpecialPrefsForm extends FormBasicController {
 		// OLAT-6429 don't change another users GUI prefs when he is logged in 
 		if (!ureq.getIdentity().equalsByPersistableKey(tobeChangedIdentity)) {
 			if (sessionManager.isSignedOnIdentity(tobeChangedIdentity.getKey())) {
-				showError("error.user.logged.in", tobeChangedIdentity.getName());
+				String fullName = CoreSpringFactory.getImpl(UserManager.class).getUserDisplayName(tobeChangedIdentity);
+				showError("error.user.logged.in",fullName);
 				prefsElement.reset();
 				return;
 			}
diff --git a/src/main/java/org/olat/user/HomePageContextEntryControllerCreator.java b/src/main/java/org/olat/user/HomePageContextEntryControllerCreator.java
index 0e8468736fea784f907ed5ff34ee7b79f4a2d281..c5e41256a323c87be17cf8568136d58722fa59e1 100644
--- a/src/main/java/org/olat/user/HomePageContextEntryControllerCreator.java
+++ b/src/main/java/org/olat/user/HomePageContextEntryControllerCreator.java
@@ -67,7 +67,7 @@ public class HomePageContextEntryControllerCreator extends DefaultContextEntryCo
 	public String getTabName(ContextEntry ce, UserRequest ureq) {
 		Identity identity = extractIdentity(ce);
 		if (identity == null) return null;
-		return UserManagerImpl.getInstance().getUserDisplayName(identity.getUser());
+		return UserManagerImpl.getInstance().getUserDisplayName(identity);
 	}
 
 	/**
diff --git a/src/main/java/org/olat/user/HomePageDisplayController.java b/src/main/java/org/olat/user/HomePageDisplayController.java
index b573824540214037181ea8ecdc0c4a9f8ec767b8..15bdb7b9efb6069b3041b3ca9d77dea66f7af8b2 100644
--- a/src/main/java/org/olat/user/HomePageDisplayController.java
+++ b/src/main/java/org/olat/user/HomePageDisplayController.java
@@ -77,7 +77,6 @@ public class HomePageDisplayController extends BasicController {
 		setTranslator(UserManager.getInstance().getPropertyHandlerTranslator(getTranslator()));
 		VelocityContainer mainVC = createVelocityContainer("homepagedisplay");
 
-		mainVC.contextPut("userName", homeIdentity.getName());
 		mainVC.contextPut("deleted", homeIdentity.getStatus().equals(Identity.STATUS_DELETED));
 		mainVC.contextPut("user", homeIdentity.getUser());
 		mainVC.contextPut("locale", getLocale());
diff --git a/src/main/java/org/olat/user/IdentityContextEntryControllerCreator.java b/src/main/java/org/olat/user/IdentityContextEntryControllerCreator.java
index 7c3130762d72ec502677399afa2a6a5f804fa8c8..c85fc8c9614e0d26c2c62cb8d589ab6c95e7b8d2 100644
--- a/src/main/java/org/olat/user/IdentityContextEntryControllerCreator.java
+++ b/src/main/java/org/olat/user/IdentityContextEntryControllerCreator.java
@@ -72,7 +72,7 @@ public class IdentityContextEntryControllerCreator extends DefaultContextEntryCo
 	public String getTabName(ContextEntry ce, UserRequest ureq) {
 		Identity identity = extractIdentity(ce);
 		if (identity == null) return null;
-		return UserManagerImpl.getInstance().getUserDisplayName(identity.getUser());
+		return UserManagerImpl.getInstance().getUserDisplayName(identity);
 	}
 
 	/**
diff --git a/src/main/java/org/olat/user/UserInfoMainController.java b/src/main/java/org/olat/user/UserInfoMainController.java
index c163629b28fea060b07cab6db4dbd87fe0840665..8d3513dd48e8f90c717b613e7c485b3d6d197414 100644
--- a/src/main/java/org/olat/user/UserInfoMainController.java
+++ b/src/main/java/org/olat/user/UserInfoMainController.java
@@ -255,9 +255,8 @@ public class UserInfoMainController extends MainLayoutBasicController implements
 		myContent = createVelocityContainer("userinfo");
 
 		if (menuCommand.equals(CMD_HOMEPAGE)) {
-			String userName = identity.getName();
 			HomePageConfigManager hpcm = HomePageConfigManagerImpl.getInstance();
-			HomePageConfig homePageConfig = hpcm.loadConfigFor(userName);
+			HomePageConfig homePageConfig = hpcm.loadConfigFor(identity.getName());
 			removeAsListenerAndDispose(homePageDisplayController);
 			homePageDisplayController = new HomePageDisplayController(ureq, getWindowControl(), identity, homePageConfig);
 			listenTo(homePageDisplayController);
diff --git a/src/main/java/org/olat/user/UserManager.java b/src/main/java/org/olat/user/UserManager.java
index 766d4a4124bf76966db51a8092f4ba104d6edf88..052145a6d808a24faa01775bde73ff949a6137cd 100644
--- a/src/main/java/org/olat/user/UserManager.java
+++ b/src/main/java/org/olat/user/UserManager.java
@@ -139,7 +139,7 @@ public abstract class UserManager extends BasicManager {
 	 * @param usr The user object to be updated
 	 * @return The true if successfully updated
 	 */
-	public abstract void updateUser(User usr);
+	public abstract User updateUser(User usr);
 
 	/**
 	 * Updates the user object for a given identity
@@ -247,12 +247,19 @@ public abstract class UserManager extends BasicManager {
 	 */
 	public abstract String getUserDisplayName(User user);
 	
+	/**
+	 * 
+	 * @param identity
+	 * @return
+	 */
+	public abstract String getUserDisplayName(Identity identity);
+	
 	/**
 	 * 
 	 * @param identityKeys
 	 * @return
 	 */
-	public abstract Map<Long,String> getUserDisplayNames(Collection<Long> identityKeys);
+	public abstract Map<Long,String> getUserDisplayNamesByKey(Collection<Long> identityKeys);
 	
 	/**
 	 * Returns the users displayable name, e.g. "Firstname Lastname"
@@ -261,4 +268,16 @@ public abstract class UserManager extends BasicManager {
 	 * @return
 	 */
 	public abstract String getUserDisplayName(IdentityShort user);
+	
+	public abstract String getUserDisplayName(String username);
+	
+	public abstract String getUserDisplayName(Long identityKey);
+	
+	/**
+	 * Return a map where the key is the username and the value is
+	 * the full name
+	 * @param usernames
+	 * @return
+	 */
+	public abstract Map<String,String> getUserDisplayNamesByUserName(Collection<String> usernames);
 }
diff --git a/src/main/java/org/olat/user/UserManagerImpl.java b/src/main/java/org/olat/user/UserManagerImpl.java
index cebac7c619911a0c7a0a97332bc616a7ce89da3c..53b2528437afcd82533fe47cb7feead8dce900c4 100644
--- a/src/main/java/org/olat/user/UserManagerImpl.java
+++ b/src/main/java/org/olat/user/UserManagerImpl.java
@@ -19,6 +19,7 @@
  */
 package org.olat.user;
 
+import java.io.Serializable;
 import java.nio.charset.Charset;
 import java.util.ArrayList;
 import java.util.Collection;
@@ -29,6 +30,7 @@ import java.util.List;
 import java.util.Locale;
 import java.util.Map;
 
+import javax.annotation.PostConstruct;
 import javax.persistence.TypedQuery;
 
 import org.olat.basesecurity.BaseSecurity;
@@ -44,6 +46,8 @@ import org.olat.core.id.User;
 import org.olat.core.id.UserConstants;
 import org.olat.core.logging.AssertException;
 import org.olat.core.util.WebappHelper;
+import org.olat.core.util.cache.CacheWrapper;
+import org.olat.core.util.coordinate.CoordinatorManager;
 import org.olat.core.util.i18n.I18nModule;
 import org.olat.core.util.mail.MailHelper;
 import org.olat.properties.Property;
@@ -69,6 +73,10 @@ public class UserManagerImpl extends UserManager {
   private DB dbInstance;
   @Autowired
   private BaseSecurity securityManager;
+  @Autowired
+  private CoordinatorManager coordinatorManager;
+
+	private CacheWrapper<Serializable,String> usernameCache;
   
 	/**
 	 * Use UserManager.getInstance(), this is a spring factory method to load the
@@ -77,6 +85,12 @@ public class UserManagerImpl extends UserManager {
 	private UserManagerImpl() {
 		INSTANCE = this;
 	}
+	
+	@PostConstruct
+	public void init() {
+		usernameCache = coordinatorManager.getCoordinator().getCacher()
+				.getCache(UserManager.class.getSimpleName(), "username");
+	}
 
 	/**
 	 * @see org.olat.user.UserManager#createUser(java.lang.String, java.lang.String, java.lang.String)
@@ -295,7 +309,7 @@ public class UserManagerImpl extends UserManager {
 	 * @see org.olat.user.UserManager#loadUserByKey(java.lang.Long)
 	 */
 	public User loadUserByKey(Long key) {
-		return (UserImpl) DBFactory.getInstance().loadObject(UserImpl.class, key);
+		return DBFactory.getInstance().loadObject(UserImpl.class, key);
 		// User not loaded yet (lazy initialization). Need to access
 		// a field first to really load user from database.
 	}
@@ -303,15 +317,23 @@ public class UserManagerImpl extends UserManager {
 	/**
 	 * @see org.olat.user.UserManager#updateUser(org.olat.core.id.User)
 	 */
-	public void updateUser(User usr) {
+	@Override
+	public User updateUser(User usr) {
 		if (usr == null) throw new AssertException("User object is null!");
-		DBFactory.getInstance().updateObject(usr);
+		return dbInstance.getCurrentEntityManager().merge(usr);
 	}
 
 	/**
 	 * @see org.olat.user.UserManager#updateUserFromIdentity(org.olat.core.id.Identity)
 	 */
+	@Override
 	public boolean updateUserFromIdentity(Identity identity) {
+		try {
+			String fullName = getUserDisplayName(identity);
+			updateUsernameCache(identity.getKey(), identity.getName(), fullName);
+		} catch (Exception e) {
+			logWarn("Error update usernames cache", e);
+		}
 		updateUser(identity.getUser());
 		return true;
 	}
@@ -374,34 +396,122 @@ public class UserManagerImpl extends UserManager {
 		updateUser(user);
 		if(isLogDebugEnabled()) logDebug("Delete all user-attributtes for user=" + user);
 	}
+	
+	
+
+	@Override
+	public String getUserDisplayName(String username) {
+		String fullName = usernameCache.get(username);
+		if(fullName == null) {
+			List<IdentityShort> identities = securityManager.findShortIdentitiesByName(Collections.singletonList(username));
+			for(IdentityShort identity:identities) {
+				fullName = getUserDisplayName(identity);
+				updateUsernameCache(identity.getKey(), identity.getName(), fullName);
+			}
+		}
+		return fullName;
+	}
+
+	@Override
+	public String getUserDisplayName(Long identityKey) {
+		if(identityKey == null || identityKey.longValue() <= 0) {
+			return "";
+		}
+		
+		String fullName = usernameCache.get(identityKey);
+		if(fullName == null) {
+			IdentityShort identity = securityManager.loadIdentityShortByKey(identityKey);
+			updateUsernameCache(identity.getKey(), identity.getName(), fullName);
+		}
+		return fullName;
+	}
+
+	@Override
+	public Map<String, String> getUserDisplayNamesByUserName(Collection<String> usernames) {
+		if(usernames == null | usernames.isEmpty()) {
+			return Collections.emptyMap();
+		}
+		
+		Map<String, String> fullNames = new HashMap<String,String>();
+		List<String> newUsernames = new ArrayList<String>();
+		for(String username:usernames) {
+			String fullName = usernameCache.get(username);
+			if(fullName != null) {
+				fullNames.put(username, fullName);
+			} else {
+				newUsernames.add(username);
+			}
+		}
+
+		List<IdentityShort> identities = securityManager.findShortIdentitiesByName(newUsernames);
+		for(IdentityShort identity:identities) {
+			String fullName = getUserDisplayName(identity);
+			updateUsernameCache(identity.getKey(), identity.getName(), fullName);
+			fullNames.put(identity.getName(), fullName);
+		}
+
+		return fullNames;
+	}
+
+	@Override
+	public String getUserDisplayName(Identity identity) {
+		if (userDisplayNameCreator == null) return "";
+		String fullName = userDisplayNameCreator.getUserDisplayName(identity.getUser());
+		updateUsernameCache(identity.getKey(), identity.getName(), fullName);
+		return fullName;
+	}
 
 	/**
 	 * @see org.olat.user.UserManager#getUserDisplayName(org.olat.core.id.User)
 	 */
 	@Override
 	public String getUserDisplayName(User user) {
-		if (this.userDisplayNameCreator == null) return "";
-		return this.userDisplayNameCreator.getUserDisplayName(user);
+		if (userDisplayNameCreator == null) return "";
+		return userDisplayNameCreator.getUserDisplayName(user);
 	}
 	
 	/**
 	 * @see org.olat.user.UserManager#getUserDisplayName(org.olat.core.id.IdentityShort)
 	 */
 	@Override
-	public String getUserDisplayName(IdentityShort user) {
-		if (this.userDisplayNameCreator == null) return "";
-		return this.userDisplayNameCreator.getUserDisplayName(user);
+	public String getUserDisplayName(IdentityShort identity) {
+		if (userDisplayNameCreator == null) return "";
+		String fullName = userDisplayNameCreator.getUserDisplayName(identity);
+		updateUsernameCache(identity.getKey(), identity.getName(), fullName);
+		return fullName;
 	}
 
 	@Override
-	public Map<Long, String> getUserDisplayNames(Collection<Long> identityKeys) {
+	public Map<Long, String> getUserDisplayNamesByKey(Collection<Long> identityKeys) {
+		
+		if(identityKeys == null | identityKeys.isEmpty()) {
+			return Collections.emptyMap();
+		}
+		
+		Map<Long, String> fullNames = new HashMap<Long,String>();
+		List<Long> newIdentityKeys = new ArrayList<Long>();
+		for(Long identityKey:identityKeys) {
+			String fullName = usernameCache.get(identityKey);
+			if(fullName != null) {
+				fullNames.put(identityKey, fullName);
+			} else {
+				newIdentityKeys.add(identityKey);
+			}
+		}
+
 		List<IdentityShort> identities = securityManager.loadIdentityShortByKeys(identityKeys);
-		Map<Long,String> namesMap = new HashMap<Long,String>(identities.size());
 		for(IdentityShort identity:identities) {
-			String displayName = this.getUserDisplayName(identity);
-			namesMap.put(identity.getKey(), displayName);
+			String fullName = getUserDisplayName(identity);
+			updateUsernameCache(identity.getKey(), identity.getName(), fullName);
+			fullNames.put(identity.getKey(), fullName);
 		}
-		return namesMap;
+
+		return fullNames;
+	}
+	
+	private void updateUsernameCache(Long identityKey, String username, String fullName) {
+		usernameCache.put(identityKey, fullName);
+		usernameCache.put(username, fullName);
 	}
 
 	/**
diff --git a/src/main/java/org/olat/user/UserPropertiesController.java b/src/main/java/org/olat/user/UserPropertiesController.java
index 2925d4e804534dc83636554b9df031b1ee30fcbb..ce03410bc7574476bd2cc2361cb475eb1c3f4abf 100644
--- a/src/main/java/org/olat/user/UserPropertiesController.java
+++ b/src/main/java/org/olat/user/UserPropertiesController.java
@@ -28,6 +28,7 @@ package org.olat.user;
 import java.util.Date;
 import java.util.List;
 
+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;
@@ -124,7 +125,8 @@ public class UserPropertiesController extends BasicController {
 				else if (actionid.equals("delete")) {
 					int rowid = te.getRowId();
 					foundProp = (Property) tdm.getObject(rowid);
-					activateYesNoDialog(ureq, translate("propdelete.yesno.title"),translate("propdelete.yesno.text",new String[]{foundProp.getName(),displayedIdentity.getName()}), null);
+					String fullName = CoreSpringFactory.getImpl(UserManager.class).getUserDisplayName(displayedIdentity);
+					activateYesNoDialog(ureq, translate("propdelete.yesno.title"),translate("propdelete.yesno.text",new String[]{foundProp.getName(), fullName}), null);
 				}
 			}
 		}
diff --git a/src/main/resources/database/mysql/alter_8_4_0_to_9_0_0.sql b/src/main/resources/database/mysql/alter_8_4_0_to_9_0_0.sql
index 5d97dd8569d0439b69297965cb39361dedd16431..d472e67ef5a82ea254a2b16d486320ea0d912b54 100644
--- a/src/main/resources/database/mysql/alter_8_4_0_to_9_0_0.sql
+++ b/src/main/resources/database/mysql/alter_8_4_0_to_9_0_0.sql
@@ -347,7 +347,7 @@ alter table o_mail_attachment add column datas_checksum bigint;
 alter table o_mail_attachment add column datas_path varchar(1024);
 alter table o_mail_attachment add column datas_lastmodified datetime;
 create index idx_mail_att_checksum_idx on o_mail_attachment (datas_checksum);
-create index idx_mail_path_idx on o_mail_attachment (datas_path);
+create index idx_mail_path_idx on o_mail_attachment (datas_path(255));
 create index idx_mail_att_siblings_idx on o_mail_attachment (datas_checksum, mimetype, datas_size, datas_name);
 
 
diff --git a/src/main/resources/database/mysql/setupDatabase.sql b/src/main/resources/database/mysql/setupDatabase.sql
index d45f194c39bbb6be05b953dd0658d1b23bcbbd8a..9808a36e95cf261c841baa1c87639074650017fc 100644
--- a/src/main/resources/database/mysql/setupDatabase.sql
+++ b/src/main/resources/database/mysql/setupDatabase.sql
@@ -1992,7 +1992,7 @@ alter table o_mail add constraint FKF86663165A4FA5DC foreign key (fk_from_id) re
 alter table o_mail_to_recipient add constraint FKF86663165A4FA5DD foreign key (fk_recipient_id) references o_mail_recipient (recipient_id);
 alter table o_mail_attachment add constraint FKF86663165A4FA5DF foreign key (fk_att_mail_id) references o_mail (mail_id);
 create index idx_mail_att_checksum_idx on o_mail_attachment (datas_checksum);
-create index idx_mail_path_idx on o_mail_attachment (datas_path);
+create index idx_mail_path_idx on o_mail_attachment (datas_path(255));
 create index idx_mail_att_siblings_idx on o_mail_attachment (datas_checksum, mimetype, datas_size, datas_name);
 
 create index ac_offer_to_resource_idx on o_ac_offer (fk_resource_id);
diff --git a/src/main/resources/infinispan-config.xml b/src/main/resources/infinispan-config.xml
index 4ba5419195db9b355c4f00deb52c2bf95f2e3a86..17692b431e0c88075146eb6e21917e9381a48f49 100644
--- a/src/main/resources/infinispan-config.xml
+++ b/src/main/resources/infinispan-config.xml
@@ -52,7 +52,13 @@
 		<expiration maxIdle="900000" wakeUpInterval="5000"/>
 		<transaction transactionMode="NON_TRANSACTIONAL" />
 	</namedCache>
-
+	
+	<namedCache name="UserManager@username">
+		<locking isolationLevel="READ_COMMITTED" concurrencyLevel="1000" lockAcquisitionTimeout="15000" useLockStriping="false"/>
+		<eviction maxEntries="20000" strategy="LIRS"/>
+		<expiration maxIdle="2700000" wakeUpInterval="15000"/>
+		<transaction transactionMode="NON_TRANSACTIONAL" />
+	</namedCache>
 
 	<!-- 
 	Hibernate cache
diff --git a/src/test/java/org/olat/core/util/vfs/version/VersionManagerTest.java b/src/test/java/org/olat/core/util/vfs/version/VersionManagerTest.java
index e6da09c9283692601b6f159ecbf0a8769bb6bfb6..10f906261c60ad63a74ec2bcf03b405227b7f7a8 100644
--- a/src/test/java/org/olat/core/util/vfs/version/VersionManagerTest.java
+++ b/src/test/java/org/olat/core/util/vfs/version/VersionManagerTest.java
@@ -325,7 +325,7 @@ public class VersionManagerTest extends OlatTestCase {
 		//set the author
 		MetaTagged metaTagged = (MetaTagged)file;
 		MetaInfo metaInfo = metaTagged.getMetaInfo();
-		metaInfo.setAuthor(id1.getName());
+		metaInfo.setAuthor(id1);
 		metaInfo.setCreator(id1.getName());
 		metaInfo.write();
 		
@@ -386,7 +386,7 @@ public class VersionManagerTest extends OlatTestCase {
 		//set the author
 		MetaTagged metaTagged = (MetaTagged)file;
 		MetaInfo metaInfo = metaTagged.getMetaInfo();
-		metaInfo.setAuthor(id1.getName());
+		metaInfo.setAuthor(id1);
 		metaInfo.setCreator(id1.getName());
 		metaInfo.write();
 		
@@ -454,7 +454,7 @@ public class VersionManagerTest extends OlatTestCase {
 		//set the author
 		MetaTagged metaTagged = (MetaTagged)file;
 		MetaInfo metaInfo = metaTagged.getMetaInfo();
-		metaInfo.setAuthor(id1.getName());
+		metaInfo.setAuthor(id1);
 		metaInfo.setCreator(id1.getName());
 		metaInfo.write();
 		
diff --git a/src/test/java/org/olat/modules/fo/ForumManagerTest.java b/src/test/java/org/olat/modules/fo/ForumManagerTest.java
index 0514d3d6dffcf7785f6e519cd9f71105bea14357..4d09c78de5be1368bec1ce864d70a13bbd69c870 100644
--- a/src/test/java/org/olat/modules/fo/ForumManagerTest.java
+++ b/src/test/java/org/olat/modules/fo/ForumManagerTest.java
@@ -29,6 +29,7 @@ package org.olat.modules.fo;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 
+import java.util.Calendar;
 import java.util.Date;
 import java.util.Iterator;
 import java.util.List;
@@ -168,12 +169,15 @@ public class ForumManagerTest extends OlatTestCase {
 	@Test public void testGetNewMessageInfo() {
 		log.debug("Start testGetNewMessageInfo()");
 		ForumManager foma = ForumManager.getInstance();
-		Date now = new Date();
-		List<Message> msgList = foma.getNewMessageInfo(fo.getKey(), new Date() );
-		assertEquals(0,msgList.size());
-		Date before = new Date(now.getTime() - 3600);
-		msgList = foma.getNewMessageInfo(fo.getKey(), before );
-		assertEquals(14,msgList.size());
+		
+		sleep(1500);//we must ensure a lap of 1 second
+		Calendar cal = Calendar.getInstance();
+		cal.setTime(new Date());
+		List<Message> msgList = foma.getNewMessageInfo(fo.getKey(), cal.getTime());
+		assertEquals(0, msgList.size());
+		cal.add(Calendar.HOUR_OF_DAY, - 1);
+		msgList = foma.getNewMessageInfo(fo.getKey(), cal.getTime());
+		assertEquals(14, msgList.size());
 	}
 	
 	@Test public void testDeleteMessageTree() {