diff --git a/src/main/java/org/olat/admin/UserAdminMainController.java b/src/main/java/org/olat/admin/UserAdminMainController.java
index c0129f5f3dd563c93bb1d656b55d19f9e0997e99..933e587d3d49f303f920b00372a2a7789321dcb5 100644
--- a/src/main/java/org/olat/admin/UserAdminMainController.java
+++ b/src/main/java/org/olat/admin/UserAdminMainController.java
@@ -77,6 +77,7 @@ import org.olat.core.util.coordinate.LockResult;
 import org.olat.core.util.resource.OresHelper;
 import org.olat.user.UserManager;
 import org.olat.util.logging.activity.LoggingResourceable;
+import org.springframework.beans.factory.annotation.Autowired;
 
 /**
  * <pre>
@@ -94,7 +95,7 @@ import org.olat.util.logging.activity.LoggingResourceable;
 public class UserAdminMainController extends MainLayoutBasicController implements Activateable2 {
 	public static final String EXTENSIONPOINT_MENU_MENUQUERIES = ".menu.menuqueries";
 	private static boolean extensionLogged = false;
-	OLog log = Tracing.createLoggerFor(this.getClass());
+	private static final OLog log = Tracing.createLoggerFor(UserAdminMainController.class);
 	private MenuTree olatMenuTree;
 	private Panel content;
 	
@@ -106,7 +107,8 @@ public class UserAdminMainController extends MainLayoutBasicController implement
 	private String activatePaneInDetailView = null;
 
 	private LockResult lock;
-	private final UserManager userManager;
+	@Autowired
+	private UserManager userManager;
 
 	/**
 	 * Constructor of the home main controller
@@ -114,9 +116,7 @@ public class UserAdminMainController extends MainLayoutBasicController implement
 	 * @param wControl The current window controller
 	 */
 	public UserAdminMainController(UserRequest ureq, WindowControl wControl) {
-		super(ureq, wControl);		
-		
-		userManager = UserManager.getInstance();
+		super(ureq, wControl);
 		
 		olatMenuTree = new MenuTree("olatMenuTree");
 		olatMenuTree.setExpandSelectedNode(false);
@@ -130,9 +130,7 @@ public class UserAdminMainController extends MainLayoutBasicController implement
 		// allow closing of active menu tree element
 		olatMenuTree.setExpandSelectedNode(false);
 
-
 		// we always start with a search controller
-		//fxdiff BAKS-7 Resume function
 		OLATResourceable ores = OresHelper.createOLATResourceableInstance(firstNode.getUserObject().toString(), 0l);
 		ThreadLocalUserActivityLogger.addLoggingResourceInfo(LoggingResourceable.wrapBusinessPath(ores));
 		WindowControl bwControl = addToHistory(ureq, ores, null);
@@ -170,6 +168,7 @@ public class UserAdminMainController extends MainLayoutBasicController implement
 	/**
 	 * @see org.olat.core.gui.control.DefaultController#event(org.olat.core.gui.UserRequest, org.olat.core.gui.control.Controller, org.olat.core.gui.control.Event)
 	 */
+	@Override
 	public void event(UserRequest ureq, Controller source, Event event) {
 		if (source == contentCtr ) {
 			if (event instanceof SingleIdentityChosenEvent) {
@@ -178,7 +177,6 @@ public class UserAdminMainController extends MainLayoutBasicController implement
 				// cleanup old userAdminCtr controller
 				removeAsListenerAndDispose(userAdminCtr);
 
-				//fxdiff BAKS-7 Resume function
 				OLATResourceable ores = OresHelper.createOLATResourceableInstance(Identity.class, identity.getKey());
 				ThreadLocalUserActivityLogger.addLoggingResourceInfo(LoggingResourceable.wrapBusinessPath(ores));
 				
@@ -246,47 +244,43 @@ public class UserAdminMainController extends MainLayoutBasicController implement
 
 		//first check if it is node which opens a subtree with further uobject.tree.commands
 		if (uobject.equals("menuroles")) {
-			if (rolesVC == null)
+			if (rolesVC == null) {
 				rolesVC = createVelocityContainer("systemroles");
-			//fxdiff BAKS-7 Resume function
+			}
 			addToHistory(ureq, bwControl);
 			return rolesVC;
 		}		
 		else if (uobject.equals("menuqueries")) {
-			if (queriesVC == null)
+			if (queriesVC == null) {
 				queriesVC = createVelocityContainer("predefinedqueries");
-			//fxdiff BAKS-7 Resume function
+			}
 			addToHistory(ureq, bwControl);
 			return queriesVC;
 		}
 		else if (uobject.equals("menuaccess")) {
-			if (queriesVC == null)
+			if (queriesVC == null) {
 				queriesVC = createVelocityContainer("systemroles");
-			//fxdiff BAKS-7 Resume function
+			}
 			addToHistory(ureq, bwControl);
 			return queriesVC;
 		} else if (uobject.equals("userdelete")) {
 			//creates the user deletin controller
 			//if locking fails -> a contentCtrl is created
 			//-> hence removeAsListenerAndDispose(contentCtr) is delegated to the method called!
-			//fxdiff BAKS-7 Resume function
 			addToHistory(ureq, bwControl);
 			return createAndLockUserDeleteController(ureq, bwControl);
 		} else if (uobject.equals("userdelete_direct")) {
 			//creates the user deletin controller
 			//if locking fails -> a contentCtrl is created
 			//-> hence removeAsListenerAndDispose(contentCtr) is delegated to the method called!
-			//fxdiff BAKS-7 Resume function
 			addToHistory(ureq, bwControl);
 			return createAndLockDirectUserDeleteController(ureq, bwControl);
 		} 		
 		
 		//these nodes re-create (not stateful) content Controller (contentCtrl)
-		//
 		removeAsListenerAndDispose(contentCtr);
 		if (uobject.equals("usearch") || uobject.equals("useradmin")) {
 			activatePaneInDetailView = null;
-			//fxdiff BAKS-7 Resume function
 			contentCtr = new UsermanagerUserSearchController(ureq, bwControl);
 			addToHistory(ureq, bwControl);
 			listenTo(contentCtr);
@@ -302,7 +296,6 @@ public class UserAdminMainController extends MainLayoutBasicController implement
 				Boolean canCreatePwdByConfig = BaseSecurityModule.USERMANAGER_CAN_CREATE_PWD;				
 				canCreateOLATPassword = canCreatePwdByConfig.booleanValue();
 			}
-			//fxdiff BAKS-7 Resume function
 			contentCtr = new UserCreateController(ureq, bwControl, canCreateOLATPassword);
 			addToHistory(ureq, bwControl);
 			listenTo(contentCtr);
@@ -318,7 +311,6 @@ public class UserAdminMainController extends MainLayoutBasicController implement
 				Boolean canCreatePwdByConfig = BaseSecurityModule.USERMANAGER_CAN_CREATE_PWD;				
 				canCreateOLATPassword = canCreatePwdByConfig.booleanValue();
 			}
-			//fxdiff BAKS-7 Resume function
 			contentCtr = new UserImportController(ureq, bwControl, canCreateOLATPassword);
 			addToHistory(ureq, bwControl);
 			listenTo(contentCtr);
@@ -327,7 +319,6 @@ public class UserAdminMainController extends MainLayoutBasicController implement
 		else if (uobject.equals("admingroup")) {
 			activatePaneInDetailView = "";
 			SecurityGroup[] secGroup = {BaseSecurityManager.getInstance().findSecurityGroupByName(Constants.GROUP_ADMIN)};
-			//fxdiff BAKS-7 Resume function
 			contentCtr = new UsermanagerUserSearchController(ureq, bwControl,secGroup, null, null, null, null, Identity.STATUS_VISIBLE_LIMIT, true);
 			addToHistory(ureq, bwControl);
 			listenTo(contentCtr);
@@ -336,7 +327,6 @@ public class UserAdminMainController extends MainLayoutBasicController implement
 		else if (uobject.equals("authorgroup")) {
 			activatePaneInDetailView = "edit.uroles";
 			SecurityGroup[] secGroup = {BaseSecurityManager.getInstance().findSecurityGroupByName(Constants.GROUP_AUTHORS)};
-			//fxdiff BAKS-7 Resume function
 			contentCtr = new UsermanagerUserSearchController(ureq, bwControl,secGroup, null, null, null, null, Identity.STATUS_VISIBLE_LIMIT, true);
 			addToHistory(ureq, bwControl);
 			listenTo(contentCtr);
@@ -346,7 +336,6 @@ public class UserAdminMainController extends MainLayoutBasicController implement
 			activatePaneInDetailView = "edit.uroles";
 			// special case: use user search controller and search for all users that have author rights
 			PermissionOnResourceable[] permissions = {new PermissionOnResourceable(Constants.PERMISSION_HASROLE, Constants.ORESOURCE_AUTHOR)};
-			//fxdiff BAKS-7 Resume function
 			UsermanagerUserSearchController myCtr = new UsermanagerUserSearchController(ureq, bwControl,null, permissions, null, null, null, Identity.STATUS_VISIBLE_LIMIT, true);
 			addToHistory(ureq, bwControl);
 			// now subtract users that are in the author group to get the co-authors
@@ -360,7 +349,6 @@ public class UserAdminMainController extends MainLayoutBasicController implement
 		else if (uobject.equals("resourceowners")) {
 			activatePaneInDetailView = "edit.uroles";
 			PermissionOnResourceable[] permissions = {new PermissionOnResourceable(Constants.PERMISSION_HASROLE, Constants.ORESOURCE_AUTHOR)};
-			//fxdiff BAKS-7 Resume function
 			contentCtr = new UsermanagerUserSearchController(ureq, bwControl,null, permissions, null, null, null, Identity.STATUS_VISIBLE_LIMIT, true);
 			addToHistory(ureq, bwControl);
 			listenTo(contentCtr);
@@ -369,7 +357,6 @@ public class UserAdminMainController extends MainLayoutBasicController implement
 		else if (uobject.equals("groupmanagergroup")) {
 			activatePaneInDetailView = "edit.uroles";
 			SecurityGroup[] secGroup = {BaseSecurityManager.getInstance().findSecurityGroupByName(Constants.GROUP_GROUPMANAGERS)};
-			//fxdiff BAKS-7 Resume function
 			contentCtr = new UsermanagerUserSearchController(ureq, bwControl,secGroup, null, null, null, null, Identity.STATUS_VISIBLE_LIMIT, true);
 			addToHistory(ureq, bwControl);
 			listenTo(contentCtr);
@@ -378,7 +365,6 @@ public class UserAdminMainController extends MainLayoutBasicController implement
 		else if (uobject.equals("usermanagergroup")) {
 			activatePaneInDetailView = "edit.uroles";
 			SecurityGroup[] secGroup = {BaseSecurityManager.getInstance().findSecurityGroupByName(Constants.GROUP_USERMANAGERS)};
-			//fxdiff BAKS-7 Resume function
 			contentCtr = new UsermanagerUserSearchController(ureq, bwControl,secGroup, null, null, null, null, Identity.STATUS_VISIBLE_LIMIT, true);
 			addToHistory(ureq, bwControl);
 			listenTo(contentCtr);
@@ -387,7 +373,6 @@ public class UserAdminMainController extends MainLayoutBasicController implement
 		else if (uobject.equals("usergroup")) {
 			activatePaneInDetailView = "edit.uroles";
 			SecurityGroup[] secGroup = {BaseSecurityManager.getInstance().findSecurityGroupByName(Constants.GROUP_OLATUSERS)};
-			//fxdiff BAKS-7 Resume function
 			contentCtr = new UsermanagerUserSearchController(ureq, bwControl,secGroup, null, null, null, null, Identity.STATUS_VISIBLE_LIMIT, true);
 			addToHistory(ureq, bwControl);
 			listenTo(contentCtr);
@@ -396,7 +381,6 @@ public class UserAdminMainController extends MainLayoutBasicController implement
 		else if (uobject.equals("anonymousgroup")) {
 			activatePaneInDetailView = "edit.uroles";
 			SecurityGroup[] secGroup = {BaseSecurityManager.getInstance().findSecurityGroupByName(Constants.GROUP_ANONYMOUS)};
-			//fxdiff BAKS-7 Resume function
 			contentCtr = new UsermanagerUserSearchController(ureq, bwControl,secGroup, null, null, null, null, Identity.STATUS_VISIBLE_LIMIT, true);
 			addToHistory(ureq, bwControl);
 			listenTo(contentCtr);
@@ -412,7 +396,6 @@ public class UserAdminMainController extends MainLayoutBasicController implement
 		}
 		else if (uobject.equals("logondeniedgroup")) {
 			activatePaneInDetailView = "edit.uroles";
-			//fxdiff BAKS-7 Resume function
 			contentCtr = new UsermanagerUserSearchController(ureq, bwControl,null, null, null, null, null, Identity.STATUS_LOGIN_DENIED, true);
 			addToHistory(ureq, bwControl);
 			listenTo(contentCtr);
@@ -420,7 +403,6 @@ public class UserAdminMainController extends MainLayoutBasicController implement
 		}		
 		else if (uobject.equals("deletedusers")) {
 			activatePaneInDetailView = "list.deletedusers";
-			//fxdiff BAKS-7 Resume function
 			contentCtr = new UsermanagerUserSearchController(ureq, bwControl,null, null, null, null, null, Identity.STATUS_DELETED, false);
 			addToHistory(ureq, bwControl);
 			listenTo(contentCtr);
@@ -431,7 +413,6 @@ public class UserAdminMainController extends MainLayoutBasicController implement
 			Calendar cal = Calendar.getInstance();
 			cal.add(Calendar.DAY_OF_MONTH, -7);
 			Date time = cal.getTime();
-			//fxdiff BAKS-7 Resume function
 			contentCtr = new UsermanagerUserSearchController(ureq, bwControl, null, null, null, time, null, Identity.STATUS_VISIBLE_LIMIT, true);
 			addToHistory(ureq, bwControl);
 			listenTo(contentCtr);
@@ -442,7 +423,6 @@ public class UserAdminMainController extends MainLayoutBasicController implement
 			Calendar cal = Calendar.getInstance();
 			cal.add(Calendar.MONTH, -1);
 			Date time = cal.getTime();
-			//fxdiff BAKS-7 Resume function
 			contentCtr = new UsermanagerUserSearchController(ureq, bwControl, null, null, null, time, null, Identity.STATUS_VISIBLE_LIMIT, true);
 			addToHistory(ureq, bwControl);
 			listenTo(contentCtr);
@@ -453,7 +433,6 @@ public class UserAdminMainController extends MainLayoutBasicController implement
 			Calendar cal = Calendar.getInstance();
 			cal.add(Calendar.MONTH, -6);
 			Date time = cal.getTime();
-			//fxdiff BAKS-7 Resume function
 			contentCtr = new UsermanagerUserSearchController(ureq, bwControl, null, null, null, time, null, Identity.STATUS_VISIBLE_LIMIT, true);
 			addToHistory(ureq, bwControl);
 			listenTo(contentCtr);
@@ -461,7 +440,6 @@ public class UserAdminMainController extends MainLayoutBasicController implement
 		}
 		else if (uobject.equals("created.newUsersNotification")) {
 			activatePaneInDetailView = null;
-			//fxdiff BAKS-7 Resume function
 			bwControl = addToHistory(ureq, ores, null);	
 			contentCtr = new NewUsersNotificationsController(ureq, bwControl);
 			listenTo(contentCtr);
@@ -470,7 +448,6 @@ public class UserAdminMainController extends MainLayoutBasicController implement
 		else if (uobject.equals("noauthentication")) {
 			activatePaneInDetailView = null;
 			String[] auth = {null};
-			//fxdiff BAKS-7 Resume function
 			contentCtr = new UsermanagerUserSearchController(ureq, bwControl, null, null, auth, null, null, Identity.STATUS_VISIBLE_LIMIT, true);
 			addToHistory(ureq, bwControl);
 			listenTo(contentCtr);
@@ -487,7 +464,6 @@ public class UserAdminMainController extends MainLayoutBasicController implement
 	 * @param ureq
 	 * @return
 	 */
-	//fxdiff BAKS-7 Resume function
 	private Component createAndLockDirectUserDeleteController(UserRequest ureq, WindowControl wControl) {
 		Controller lockCtrl = acquireDeleteUserLock(ureq);
 		if (lockCtrl == null) {
@@ -508,7 +484,6 @@ public class UserAdminMainController extends MainLayoutBasicController implement
 	 * @param ureq
 	 * @return
 	 */
-	//fxdiff BAKS-7 Resume function
 	private Component createAndLockUserDeleteController(UserRequest ureq, WindowControl wControl) {
 		Controller lockCtrl = acquireDeleteUserLock(ureq);
 
@@ -559,12 +534,14 @@ public class UserAdminMainController extends MainLayoutBasicController implement
 		admin = new GenericTreeNode();		
 		admin.setTitle(translator.translate("menu.useradmin"));
 		admin.setUserObject("useradmin");
+		admin.setCssClass("o_sel_useradmin");
 		admin.setAltText(translator.translate("menu.useradmin.alt"));
 		gtm.setRootNode(admin);
 
 		gtnChild = new GenericTreeNode();		
 		gtnChild.setTitle(translator.translate("menu.usearch"));
 		gtnChild.setUserObject("usearch");
+		gtnChild.setCssClass("o_sel_useradmin_search");
 		gtnChild.setAltText(translator.translate("menu.usearch.alt"));
 		admin.setDelegate(gtnChild);
 		admin.addChild(gtnChild);
@@ -574,12 +551,14 @@ public class UserAdminMainController extends MainLayoutBasicController implement
 			gtnChild = new GenericTreeNode();		
 			gtnChild.setTitle(translator.translate("menu.ucreate"));
 			gtnChild.setUserObject("ucreate");
+			gtnChild.setCssClass("o_sel_useradmin_create");
 			gtnChild.setAltText(translator.translate("menu.ucreate.alt"));
 			admin.addChild(gtnChild);
 			
 			gtnChild = new GenericTreeNode();		
 			gtnChild.setTitle(translator.translate("menu.usersimport"));
 			gtnChild.setUserObject("usersimport");
+			gtnChild.setCssClass("o_sel_useradmin_import");
 			gtnChild.setAltText(translator.translate("menu.usersimport.alt"));
 			admin.addChild(gtnChild);
 		}
@@ -588,12 +567,14 @@ public class UserAdminMainController extends MainLayoutBasicController implement
 			gtnChild = new GenericTreeNode();		
 			gtnChild.setTitle(translator.translate("menu.userdelete"));
 			gtnChild.setUserObject("userdelete");
+			gtnChild.setCssClass("o_sel_useradmin_delete");
 			gtnChild.setAltText(translator.translate("menu.userdelete.alt"));
 			admin.addChild(gtnChild);
 
 			gtnChild = new GenericTreeNode();		
 			gtnChild.setTitle(translator.translate("menu.userdelete.direct"));
 			gtnChild.setUserObject("userdelete_direct");
+			gtnChild.setCssClass("o_sel_useradmin_direct_delete");
 			gtnChild.setAltText(translator.translate("menu.userdelete.direct.alt"));
 			admin.addChild(gtnChild);
 		}
@@ -750,9 +731,7 @@ public class UserAdminMainController extends MainLayoutBasicController implement
 		return gtm;
 	}
 	
-	
 	@Override
-	//fxdiff BAKS-7 Resume function
 	public void activate(UserRequest ureq, List<ContextEntry> entries, StateEntry state) {
 		if(entries == null || entries.isEmpty()) return;
 		
@@ -832,9 +811,9 @@ public class UserAdminMainController extends MainLayoutBasicController implement
 	/**
 	 * @see org.olat.core.gui.control.DefaultController#doDispose(boolean)
 	 */
+	@Override
 	protected void doDispose() {
 		// controllers disposed in BasicController
 		releaseDeleteUserLock();
 	}
-
 }
diff --git a/src/main/java/org/olat/admin/user/UserCreateController.java b/src/main/java/org/olat/admin/user/UserCreateController.java
index c2f394da1eef275ccc15249076a17162ec091b26..c342a67a8356b327a94a07934711da5e5e0c9d19 100644
--- a/src/main/java/org/olat/admin/user/UserCreateController.java
+++ b/src/main/java/org/olat/admin/user/UserCreateController.java
@@ -138,7 +138,7 @@ public class UserCreateController extends BasicController  {
 
 class NewUserForm extends FormBasicController {
 	
-	private OLog log = Tracing.createLoggerFor(this.getClass());
+	private static final OLog log = Tracing.createLoggerFor(NewUserForm.class);
 	
 	private static final String formIdentifyer = NewUserForm.class.getCanonicalName();
 	private static final String PASSWORD_NEW1 = "passwordnew1";
@@ -174,10 +174,14 @@ class NewUserForm extends FormBasicController {
 	
 	@Override
 	protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) {						
-		uifactory.addStaticTextElement("heading1", null, translate("new.form.please.enter"), formLayout);
+		setFormTitle("title.newuser");
+		setFormDescription("new.form.please.enter");
+		formLayout.setElementCssClass("o_sel_id_create");
+		
 		usernameTextElement = uifactory.addTextElement(LOGINNAME, "username", 128, "", formLayout);
 		usernameTextElement.setMandatory(true);
 		usernameTextElement.setDisplaySize(30);
+		usernameTextElement.setElementCssClass("o_sel_id_username");
 		
 		UserManager um = UserManager.getInstance();
 		userPropertyHandlers = um.getUserPropertyHandlersFor(formIdentifyer, true);
@@ -189,6 +193,8 @@ class NewUserForm extends FormBasicController {
 			if(userPropertyHandler.getName().equals(UserConstants.EMAIL)) {
 				emailTextElement = (TextElement) formItem;
 			}
+
+			formItem.setElementCssClass("o_sel_id_" + userPropertyHandler.getName().toLowerCase());
 		}
 		
 		Map<String, String> languages = I18nManager.getInstance().getEnabledLanguagesTranslated();
@@ -216,11 +222,13 @@ class NewUserForm extends FormBasicController {
 			psw1TextElement.setMandatory(true);
 			psw1TextElement.setDisplaySize(30);
 			psw1TextElement.setVisible(showPasswordFields);
+			psw1TextElement.setElementCssClass("o_sel_id_password1");
 
 			psw2TextElement = uifactory.addPasswordElement(PASSWORD_NEW2, "new.form.password.new2", 255, "", formLayout);
 			psw2TextElement.setMandatory(true);
 			psw2TextElement.setDisplaySize(30);		
 			psw2TextElement.setVisible(showPasswordFields);
+			psw2TextElement.setElementCssClass("o_sel_id_password2");
 		}
 		
 		uifactory.addFormSubmitButton("save", "submit.save", formLayout);
diff --git a/src/main/java/org/olat/admin/user/UserSearchForm.java b/src/main/java/org/olat/admin/user/UserSearchForm.java
index c8a9573793deb43e22db4f597fdaa73e85beb497..a35a2f27afa22886723c5dabae42ef4264d1fef8 100644
--- a/src/main/java/org/olat/admin/user/UserSearchForm.java
+++ b/src/main/java/org/olat/admin/user/UserSearchForm.java
@@ -157,8 +157,11 @@ public class UserSearchForm extends FormBasicController {
 
 	@Override
 	protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) {
+		formLayout.setElementCssClass("o_sel_user_search_form");
+		
 		login = uifactory.addTextElement("login", "search.form.login", 128, "", formLayout);
 		login.setVisible(isAdminProps);
+		login.setElementCssClass("o_sel_user_search_username");
 
 		UserManager um = UserManager.getInstance();
 		Translator tr = Util.createPackageTranslator(
@@ -183,7 +186,8 @@ public class UserSearchForm extends FormBasicController {
 				TextElement textElement = (TextElement)fi;
 				textElement.setItemValidatorProvider(null);
 			}
-
+			
+			fi.setElementCssClass("o_sel_user_search_".concat(userPropertyHandler.getName().toLowerCase()));
 			propFormItems.put(userPropertyHandler.getName(), fi);
 		}
 		
@@ -193,6 +197,7 @@ public class UserSearchForm extends FormBasicController {
 		// Don't use submit button, form should not be marked as dirty since this is
 		// not a configuration form but only a search form (OLAT-5626)
 		searchButton = uifactory.addFormLink("submit.search", buttonGroupLayout, Link.BUTTON);
+		searchButton.setElementCssClass("o_sel_user_search_button");
 		if (cancelButton) {
 			uifactory.addFormCancelButton("cancel", buttonGroupLayout, ureq, getWindowControl());
 		}
diff --git a/src/main/java/org/olat/admin/user/UsermanagerUserSearchController.java b/src/main/java/org/olat/admin/user/UsermanagerUserSearchController.java
index 3d77275ea45d5b8050d1d5cd43e6b3691c399eed..b2f5a8c3677b9b8e036a31e9959bd9c25e0156f0 100644
--- a/src/main/java/org/olat/admin/user/UsermanagerUserSearchController.java
+++ b/src/main/java/org/olat/admin/user/UsermanagerUserSearchController.java
@@ -836,9 +836,11 @@ class UsermanagerUserSearchForm extends FormBasicController {
 	
 	@Override
 	protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) {
+		formLayout.setElementCssClass("o_sel_user_search_form");
 	
 		login = uifactory.addTextElement("login", "search.form.login", 128, "", formLayout);
 		login.setVisible(isAdministrativeUser);
+		login.setElementCssClass("o_sel_user_search_username");
 		items.put("login", login);
 
 		Translator tr = Util.createPackageTranslator(
@@ -867,7 +869,8 @@ class UsermanagerUserSearchForm extends FormBasicController {
 				TextElement textElement = (TextElement) fi;
 				textElement.setItemValidatorProvider(null);
 			}
-			
+
+			fi.setElementCssClass("o_sel_user_search_".concat(userPropertyHandler.getName().toLowerCase()));
 			fi.setTranslator(tr);
 			items.put(fi.getName(), fi);
 		}
diff --git a/src/main/java/org/olat/admin/user/imp/UserImportController.java b/src/main/java/org/olat/admin/user/imp/UserImportController.java
index 42e5414513731d1c0f466aad71dc8ea44156ed26..86c284f1205229374cd563ba6c1c9e2f141b881f 100644
--- a/src/main/java/org/olat/admin/user/imp/UserImportController.java
+++ b/src/main/java/org/olat/admin/user/imp/UserImportController.java
@@ -106,6 +106,7 @@ public class UserImportController extends BasicController {
 		this.canCreateOLATPassword = canCreateOLATPassword;
 		mainVC = createVelocityContainer("importindex");
 		startLink = LinkFactory.createButton("import.start", mainVC, this);
+		startLink.setElementCssClass("o_sel_id_start_import_user_button");
 		startLink.setPrimary(true);
 		putInitialPanel(mainVC);
 	}
diff --git a/src/test/java/org/olat/selenium/UserTest.java b/src/test/java/org/olat/selenium/UserTest.java
index f40e0bf3a076e146993baa22545f9c1b0e8f82ac..7cd810c4e57e44749d1339fb67c30ff82ff5d5c2 100644
--- a/src/test/java/org/olat/selenium/UserTest.java
+++ b/src/test/java/org/olat/selenium/UserTest.java
@@ -40,9 +40,12 @@ import org.junit.runner.RunWith;
 import org.olat.restapi.support.vo.CourseVO;
 import org.olat.selenium.page.LoginPage;
 import org.olat.selenium.page.NavigationPage;
+import org.olat.selenium.page.User;
 import org.olat.selenium.page.course.CoursePageFragment;
 import org.olat.selenium.page.graphene.OOGraphene;
+import org.olat.selenium.page.user.ImportUserPage;
 import org.olat.selenium.page.user.PortalPage;
+import org.olat.selenium.page.user.UserAdminPage;
 import org.olat.selenium.page.user.UserPasswordPage;
 import org.olat.selenium.page.user.UserPreferencesPageFragment;
 import org.olat.selenium.page.user.UserPreferencesPageFragment.ResumeOption;
@@ -442,4 +445,97 @@ public class UserTest {
 		//we are in "My courses", check
 		OOGraphene.waitElement(NavigationPage.myCoursesAssertBy, browser);
 	}
+	
+	/**
+	 * The administrator create an user, the user log in.
+	 * 
+	 * @param loginPage
+	 * @throws IOException
+	 * @throws URISyntaxException
+	 */
+	@Test
+	@RunAsClient
+	public void createUser(@InitialPage LoginPage loginPage,
+			@Drone @User WebDriver userBrowser)
+	throws IOException, URISyntaxException {
+		//login
+		loginPage
+			.assertOnLoginPage()
+			.loginAs("administrator", "openolat")
+			.resume();
+		
+		String uuid = UUID.randomUUID().toString();
+		String username = "miku-" + uuid;
+		UserVO userVo = UserAdminPage.createUserVO(username, "Miku", "Hatsune", "miku-" + uuid + "@openolat.com", "miku01");
+		UserAdminPage userAdminPage = navBar
+			.openUserManagement()
+			.openCreateUser()
+			.fillUserForm(userVo)
+			.assertOnUserEditView(username);
+		
+		userAdminPage
+			.openSearchUser()
+			.searchByUsername(username)
+			.assertOnUserInList(username)
+			.selectByUsername(username)
+			.assertOnUserEditView(username);
+		
+		//user log in
+		LoginPage userLoginPage = LoginPage.getLoginPage(userBrowser, deploymentUrl);
+		//tools
+		userLoginPage
+			.loginAs(username, "miku01")
+			.resume()
+			.assertLoggedIn(userVo);
+	}
+	
+	/**
+	 * Import 2 new users and check if the first can log in.
+	 * 
+	 * @param loginPage
+	 * @param userBrowser
+	 * @throws IOException
+	 * @throws URISyntaxException
+	 */
+	@Test
+	@RunAsClient
+	public void importUsers(@InitialPage LoginPage loginPage,
+			@Drone @User WebDriver userBrowser)
+	throws IOException, URISyntaxException {
+		//login
+		loginPage
+			.assertOnLoginPage()
+			.loginAs("administrator", "openolat")
+			.resume();
+		
+		UserAdminPage userAdminPage = navBar
+			.openUserManagement()
+			.openImportUsers();
+		//start import wizard
+		ImportUserPage importWizard = userAdminPage.startImport();
+		
+		String uuid = UUID.randomUUID().toString();
+		String username1 = "moka-" + uuid;
+		String username2 = "mizore-" + uuid;
+		
+		StringBuilder csv = new StringBuilder();
+		importWizard.append(username1, "rosario01", "Moka", "Akashiya", csv);
+		importWizard.append(username2, "vampire01", "Mizore", "Shirayuki", csv);
+		importWizard
+			.fill(csv.toString())
+			.next() // -> preview
+			.next() // -> groups
+			.next() // -> emails
+			.finish();
+		
+		OOGraphene.waitAndCloseBlueMessageWindow(browser);
+		
+		//user log in
+		LoginPage userLoginPage = LoginPage.getLoginPage(userBrowser, deploymentUrl);
+		//tools
+		userLoginPage
+			.loginAs(username1, "rosario01")
+			.resume()
+			.assertLoggedIn(username1);
+	}
 }
diff --git a/src/test/java/org/olat/selenium/page/LoginPage.java b/src/test/java/org/olat/selenium/page/LoginPage.java
index c82430671da9255fe8d1f681531a7dde3ed3ac0f..3bbf05ff8bf8d246494cba4e2249f951d84ae841 100644
--- a/src/test/java/org/olat/selenium/page/LoginPage.java
+++ b/src/test/java/org/olat/selenium/page/LoginPage.java
@@ -79,6 +79,14 @@ public class LoginPage {
 		Assert.assertTrue(name.contains(user.getLastName()));
 	}
 	
+	public void assertLoggedIn(String username) {
+		WebElement usernameEl = browser.findElement(usernameFooterBy);
+		Assert.assertNotNull(usernameEl);
+		Assert.assertTrue(usernameEl.isDisplayed());
+		String value = usernameEl.getText();
+		Assert.assertTrue(value.contains(username));
+	}
+	
 	/**
 	 * Login and accept the disclaimer if there is one.
 	 * 
diff --git a/src/test/java/org/olat/selenium/page/NavigationPage.java b/src/test/java/org/olat/selenium/page/NavigationPage.java
index 1536a98fc7cdb4ac1f3314cfc3e579b9cef4978e..5426d067ea44330d24cc2b9d40a1bf3870938aa0 100644
--- a/src/test/java/org/olat/selenium/page/NavigationPage.java
+++ b/src/test/java/org/olat/selenium/page/NavigationPage.java
@@ -31,6 +31,7 @@ import org.olat.selenium.page.group.GroupsPage;
 import org.olat.selenium.page.repository.AuthoringEnvPage;
 import org.olat.selenium.page.repository.CatalogAdminPage;
 import org.olat.selenium.page.user.PortalPage;
+import org.olat.selenium.page.user.UserAdminPage;
 import org.openqa.selenium.By;
 import org.openqa.selenium.WebDriver;
 import org.openqa.selenium.WebElement;
@@ -97,8 +98,9 @@ public class NavigationPage {
 		return new MyCoursesPage(browser);
 	}
 	
-	public void openUserManagement() {
+	public UserAdminPage openUserManagement() {
 		navigate(userManagementBy);
+		return UserAdminPage.getUserAdminPage(browser);
 	}
 	
 	public AdministrationPage openAdministration() {
diff --git a/src/test/java/org/olat/selenium/page/user/ImportUserPage.java b/src/test/java/org/olat/selenium/page/user/ImportUserPage.java
new file mode 100644
index 0000000000000000000000000000000000000000..74bca1f1fe5f7c91a6d703727837c59a1e041c2b
--- /dev/null
+++ b/src/test/java/org/olat/selenium/page/user/ImportUserPage.java
@@ -0,0 +1,122 @@
+/**
+ * <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.selenium.page.user;
+
+import java.awt.Toolkit;
+import java.awt.datatransfer.StringSelection;
+
+import org.junit.Assert;
+import org.olat.selenium.page.graphene.OOGraphene;
+import org.openqa.selenium.By;
+import org.openqa.selenium.Keys;
+import org.openqa.selenium.Platform;
+import org.openqa.selenium.WebDriver;
+import org.openqa.selenium.WebElement;
+
+/**
+ * 
+ * Drive the user import wizard.
+ * 
+ * Initial date: 04.05.2015<br>
+ * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com
+ *
+ */
+public class ImportUserPage {
+
+	public static final By nextBy = By.className("o_wizard_button_next");
+	public static final By finishBy = By.className("o_wizard_button_finish");
+	
+	private WebDriver browser;
+	
+	public ImportUserPage(WebDriver browser) {
+		this.browser = browser;
+	}
+	
+	public ImportUserPage fill(String csv) {
+		By importTextareaBy = By.cssSelector("div.o_wizard_steps_current_content textarea");
+		WebElement importTextareaEl = browser.findElement(importTextareaBy);
+		Toolkit.getDefaultToolkit().getSystemClipboard().setContents(new StringSelection(csv), null);
+		if(Platform.MAC.equals(Platform.getCurrent())) {
+			importTextareaEl.sendKeys(Keys.COMMAND + "v");
+		} else {
+			importTextareaEl.sendKeys(Keys.CONTROL + "v");
+		}
+		return this;
+	}
+	
+	/**
+	 * Append a line in the form:<br/>
+	 * Benutzername *	Passwort	Sprache	Vorname *	Nachname *	E-Mail *	Institution	Institutionsnummer	Institutions E-Mail<br/>
+	 * demo	olat4you	de	Peter	Muster	peter.muster@demo.ch	Universität Zürich	08-123-987	peter.muster@uzh.ch<br/>
+	 * 
+	 * 
+	 * 
+	 * @param username
+	 * @param password
+	 * @param firstName
+	 * @param lastName
+	 * @param sb
+	 */
+	public void append(String username, String password, String firstName, String lastName, StringBuilder sb) {
+
+		String email = username.replace("-", "") + "@frentix.com";
+		String institution = "frentix GmbH";
+		String institutionNumber = "034-" + System.currentTimeMillis();
+		String institutionEmail = username.replace("-", "") + "@openolat.org";
+		
+		sb.append(username).append("	")
+		  .append(password).append("	")
+		  .append("de").append("	")
+		  .append(firstName).append("	")
+		  .append(lastName).append("	")
+		  .append(email).append("	")
+		  .append(institution).append("	")
+		  .append(institutionNumber).append("	")
+		  .append(institutionEmail).append('\n');
+	}
+	
+	/**
+	 * Next
+	 * @return this
+	 */
+	public ImportUserPage next() {
+		WebElement next = browser.findElement(nextBy);
+		Assert.assertTrue(next.isDisplayed());
+		Assert.assertTrue(next.isEnabled());
+		next.click();
+		OOGraphene.waitBusy(browser);
+		return this;
+	}
+	
+	/**
+	 * Finish the wizard
+	 * @return this
+	 */
+	public ImportUserPage finish() {
+		WebElement finish = browser.findElement(finishBy);
+		Assert.assertTrue(finish.isDisplayed());
+		Assert.assertTrue(finish.isEnabled());
+		finish.click();
+		OOGraphene.waitBusy(browser);
+		OOGraphene.closeBlueMessageWindow(browser);
+		return this;
+	}
+
+}
diff --git a/src/test/java/org/olat/selenium/page/user/UserAdminPage.java b/src/test/java/org/olat/selenium/page/user/UserAdminPage.java
new file mode 100644
index 0000000000000000000000000000000000000000..1a0628b43c35f1a7cc57d8151c75e79dbdeb0dce
--- /dev/null
+++ b/src/test/java/org/olat/selenium/page/user/UserAdminPage.java
@@ -0,0 +1,186 @@
+/**
+ * <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.selenium.page.user;
+
+import java.util.List;
+
+import org.junit.Assert;
+import org.olat.selenium.page.graphene.OOGraphene;
+import org.olat.user.restapi.UserVO;
+import org.openqa.selenium.By;
+import org.openqa.selenium.WebDriver;
+import org.openqa.selenium.WebElement;
+
+/**
+ * 
+ * Initial date: 30.04.2015<br>
+ * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com
+ *
+ */
+public class UserAdminPage {
+
+	public static final By menuTreeeBy = By.className("o_sel_useradmin_search");
+	
+	private WebDriver browser;
+	
+	public UserAdminPage(WebDriver browser) {
+		this.browser = browser;
+	}
+	
+	public static UserAdminPage getUserAdminPage(WebDriver browser) {
+		OOGraphene.waitElement(menuTreeeBy, browser);
+		WebElement main = browser.findElement(By.id("o_main"));
+		Assert.assertTrue(main.isDisplayed());
+		return new UserAdminPage(browser);
+	}
+	
+	public UserAdminPage openCreateUser() {
+		By createBy = By.cssSelector(".o_tree li.o_sel_useradmin_create>div>span.o_tree_link>a");
+		WebElement createMenuItem = browser.findElement(createBy);
+		createMenuItem.click();
+		OOGraphene.waitBusy(browser);
+		return this;
+	}
+	
+	public UserAdminPage openSearchUser() {
+		By createBy = By.cssSelector(".o_tree li.o_sel_useradmin_search>div>span.o_tree_link>a");
+		browser.findElement(createBy).click();
+		OOGraphene.waitBusy(browser);
+		return this;
+	}
+	
+	public UserAdminPage openImportUsers() {
+		By importBy = By.cssSelector(".o_tree li.o_sel_useradmin_import>div>span.o_tree_link>a");
+		browser.findElement(importBy).click();
+		OOGraphene.waitBusy(browser);
+		return this;
+	}
+	
+	public ImportUserPage startImport() {
+		By importBy = By.cssSelector("a.o_sel_id_start_import_user_button.btn-primary");
+		browser.findElement(importBy).click();
+		OOGraphene.waitBusy(browser);
+		return new ImportUserPage(browser);
+	}
+	
+	public static UserVO createUserVO(String username, String firstName, String lastName, String email, String password) {
+		UserVO userVo = new UserVO();
+		userVo.setLogin(username);
+		userVo.setFirstName(firstName);
+		userVo.setLastName(lastName);
+		userVo.setEmail(email);
+		userVo.setPassword(password);
+		return userVo;
+	}
+	
+	public UserAdminPage fillUserForm(String username, String firstName, String lastName, String email, String password) {
+		UserVO userVo = createUserVO(username, firstName, lastName, email, password);
+		return fillUserForm(userVo);
+	}
+	
+	public UserAdminPage fillUserForm(UserVO userVo) {
+		By usernameBy = By.cssSelector(".o_sel_id_create .o_sel_id_username input[type='text']");
+		WebElement usernameEl = browser.findElement(usernameBy);
+		usernameEl.sendKeys(userVo.getLogin());
+		
+		By firstNameBy = By.cssSelector(".o_sel_id_create .o_sel_id_firstname input[type='text']");
+		WebElement firstNameEL = browser.findElement(firstNameBy);
+		firstNameEL.sendKeys(userVo.getFirstName());
+		
+		By lastNameBy = By.cssSelector(".o_sel_id_create .o_sel_id_lastname input[type='text']");
+		WebElement lastNameEl = browser.findElement(lastNameBy);
+		lastNameEl.sendKeys(userVo.getLastName());
+		
+		By emailBy = By.cssSelector(".o_sel_id_create .o_sel_id_email input[type='text']");
+		WebElement emailEl = browser.findElement(emailBy);
+		emailEl.sendKeys(userVo.getEmail());
+
+		By password1By = By.cssSelector(".o_sel_id_create .o_sel_id_password1 input[type='password']");
+		WebElement password1El = browser.findElement(password1By);
+		password1El.sendKeys(userVo.getPassword());
+
+		By password2By = By.cssSelector(".o_sel_id_create .o_sel_id_password2 input[type='password']");
+		WebElement password2El = browser.findElement(password2By);
+		password2El.sendKeys(userVo.getPassword());
+		
+		By saveBy = By.cssSelector(".o_sel_id_create button.btn-primary");
+		browser.findElement(saveBy).click();
+		OOGraphene.waitBusy(browser);
+		return this;
+	}
+	
+	public UserAdminPage assertOnUserEditView(String username) {
+		By userInfoTdBy = By.cssSelector(".o_user_infos table tr td");
+		List<WebElement> tds = browser.findElements(userInfoTdBy);
+		boolean found = false;
+		for(WebElement td:tds) {
+			String text = td.getText();
+			if(text != null && text.equals(username)) {
+				found = true;
+				break;
+			}
+		}
+		Assert.assertTrue(found);
+		return this;
+	}
+	
+	public UserAdminPage searchByUsername(String username) {
+		By usernameBy = By.cssSelector(".o_sel_user_search_form .o_sel_user_search_username input[type='text']");
+		WebElement usernameEl = browser.findElement(usernameBy);
+		usernameEl.sendKeys(username);
+		
+		By searchBy = By.cssSelector(".o_sel_user_search_form a.btn-default");
+		browser.findElement(searchBy).click();
+		OOGraphene.waitBusy(browser);
+		
+		return this;
+	}
+	
+	public UserAdminPage assertOnUserInList(String username) {
+		By userLinksBy = By.xpath("//div[contains(@class,'o_table_wrapper')]//table//tr//td//a[text()[contains(.,'" + username + "')]]");
+		List<WebElement> usernameEls = browser.findElements(userLinksBy);
+		Assert.assertFalse(usernameEls.isEmpty());
+		return this;
+	}
+	
+	public UserAdminPage selectByUsername(String username) {
+		By rows = By.cssSelector("div.o_table_wrapper table tbody tr");
+		By usernameLinksBy = By.xpath("td//a[text()[contains(.,'" + username + "')]]");
+		By selectBy = By.xpath("td//a[contains(@href,'select.user')]");
+		
+		WebElement selectEl = null;
+		List<WebElement> rowEls = browser.findElements(rows);
+		for(WebElement rowEl:rowEls) {
+			List<WebElement> usernameLinkEls = rowEl.findElements(usernameLinksBy);
+			if(usernameLinkEls.size() > 0) {
+				List<WebElement> selectEls = rowEl.findElements(selectBy);
+				if(selectEls.size() > 0) {
+					selectEl = selectEls.get(0);
+				}
+				
+			}
+		}
+		
+		Assert.assertNotNull(selectEl);
+		selectEl.click();
+		OOGraphene.waitBusy(browser);
+		return this;
+	}
+}