From 474565e135146a63ee734aebe8bf1837f0cb0e86 Mon Sep 17 00:00:00 2001
From: srosse <none@none>
Date: Thu, 27 Nov 2014 16:21:33 +0100
Subject: [PATCH] OO-1331,CL-338: enhancement to the REST API

---
 .../org/olat/admin/user/UserCreateController.java |  2 +-
 .../olat/admin/user/imp/UserImportController.java |  2 +-
 .../java/org/olat/basesecurity/AuthHelper.java    | 14 +++++++-------
 .../java/org/olat/basesecurity/BaseSecurity.java  |  4 ++--
 .../olat/basesecurity/BaseSecurityManager.java    |  8 +++++---
 .../olat/ldap/manager/LDAPLoginManagerImpl.java   |  2 +-
 .../oauth/ui/OAuthRegistrationController.java     |  2 +-
 .../olat/registration/RegistrationManager.java    |  2 +-
 .../org/olat/repository/RepositoryManager.java    |  5 ++++-
 .../repository/RepositoryEntryResource.java       |  7 ++++---
 .../repository/course/CoursesWebService.java      | 14 ++++++++++++--
 .../org/olat/restapi/support/ObjectFactory.java   |  1 +
 .../restapi/support/vo/RepositoryEntryVO.java     | 14 +++++++++++++-
 .../ShibbolethRegistrationController.java         |  2 +-
 src/main/java/org/olat/user/UserModule.java       |  2 +-
 .../org/olat/user/restapi/UserWebService.java     | 15 ++++++++++-----
 .../basesecurity/BaseSecurityManagerTest.java     |  4 ++--
 .../GetIdentitiesByPowerSearchTest.java           |  8 ++++----
 src/test/java/org/olat/ldap/LDAPLoginTest.java    | 14 +++++++-------
 .../olat/repository/RepositoryManagerTest.java    |  4 +++-
 .../manager/RepositoryEntryStatisticsDAOTest.java |  4 ++--
 src/test/java/org/olat/test/JunitTestHelper.java  |  6 +++---
 .../org/olat/user/EmailCheckPerformanceTest.java  |  2 +-
 src/test/java/org/olat/user/UserManagerTest.java  |  2 +-
 .../olat/user/UserPropertiesPerformanceTest.java  |  2 +-
 src/test/java/org/olat/user/UserTest.java         |  8 ++++----
 26 files changed, 93 insertions(+), 57 deletions(-)

diff --git a/src/main/java/org/olat/admin/user/UserCreateController.java b/src/main/java/org/olat/admin/user/UserCreateController.java
index 4138566a936..7eb26007e3f 100644
--- a/src/main/java/org/olat/admin/user/UserCreateController.java
+++ b/src/main/java/org/olat/admin/user/UserCreateController.java
@@ -343,7 +343,7 @@ class NewUserForm extends FormBasicController {
 		newUser.getPreferences().setLanguage(lang);
 		newUser.getPreferences().setInformSessionTimeout(true);
 		// Save everything in database
-		Identity ident = AuthHelper.createAndPersistIdentityAndUserWithUserGroup(username, pwd, newUser);
+		Identity ident = AuthHelper.createAndPersistIdentityAndUserWithUserGroup(username, null, pwd, newUser);
 		return ident;
 	}
 	
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 9d71af7731a..fd0a7ead087 100644
--- a/src/main/java/org/olat/admin/user/imp/UserImportController.java
+++ b/src/main/java/org/olat/admin/user/imp/UserImportController.java
@@ -177,7 +177,7 @@ public class UserImportController extends BasicController {
 			report.incrementCreatedUser();
 			report.incrementUpdatedShibboletAuthentication();
 		} else {
-			ident = AuthHelper.createAndPersistIdentityAndUserWithUserGroup(login, pwd, newUser);
+			ident = AuthHelper.createAndPersistIdentityAndUserWithUserGroup(login, null, pwd, newUser);
 			report.incrementCreatedUser();
 		}
 		return ident;
diff --git a/src/main/java/org/olat/basesecurity/AuthHelper.java b/src/main/java/org/olat/basesecurity/AuthHelper.java
index c1fa3934902..3aaa608f680 100644
--- a/src/main/java/org/olat/basesecurity/AuthHelper.java
+++ b/src/main/java/org/olat/basesecurity/AuthHelper.java
@@ -333,14 +333,14 @@ public class AuthHelper {
 	 * @param newUser unpersisted user
 	 * @return Identity
 	 */
-	private static Identity createAndPersistIdentityAndUser(String loginName, String pwd, User newUser) {
+	private static Identity createAndPersistIdentityAndUser(String loginName, String externalId, String pwd, User newUser) {
 		Identity ident = null;
 		if (pwd == null) {
 			// when no password is used the provider must be set to null to not generate
 			// an OLAT authentication token. See method doku.
-			ident = BaseSecurityManager.getInstance().createAndPersistIdentityAndUser(loginName, newUser, null, null);
+			ident = BaseSecurityManager.getInstance().createAndPersistIdentityAndUser(loginName, externalId, newUser, null, null);
  		} else {
-			ident = BaseSecurityManager.getInstance().createAndPersistIdentityAndUser(loginName, newUser,
+			ident = BaseSecurityManager.getInstance().createAndPersistIdentityAndUser(loginName, externalId, newUser,
 			BaseSecurityModule.getDefaultAuthProviderIdentifier(), loginName, pwd);
 		}
 		// TODO: Tracing message
@@ -357,8 +357,8 @@ public class AuthHelper {
 	 * @param newUser unpersisted users
 	 * @return Identity
 	 */
-	public static Identity createAndPersistIdentityAndUserWithUserGroup(String loginName, String pwd,  User newUser) {
-		Identity ident = createAndPersistIdentityAndUser(loginName, pwd, newUser);
+	public static Identity createAndPersistIdentityAndUserWithUserGroup(String loginName, String externalId, String pwd,  User newUser) {
+		Identity ident = createAndPersistIdentityAndUser(loginName, externalId, pwd, newUser);
 		// Add user to system users group
 		BaseSecurity securityManager = BaseSecurityManager.getInstance();
 		SecurityGroup olatuserGroup = securityManager.findSecurityGroupByName(Constants.GROUP_OLATUSERS);
@@ -376,9 +376,9 @@ public class AuthHelper {
 	 * @param newUser
 	 * @return
 	 */
-	public static Identity createAndPersistIdentityAndUserWithUserGroup(String loginName, String provider, String authusername, User newUser) {
+	public static Identity createAndPersistIdentityAndUserWithUserGroup(String loginName, String externalId, String provider, String authusername, User newUser) {
 		BaseSecurity securityManager = BaseSecurityManager.getInstance();
-		Identity ident = securityManager.createAndPersistIdentityAndUser(loginName, newUser, provider, authusername, null);
+		Identity ident = securityManager.createAndPersistIdentityAndUser(loginName, externalId, newUser, provider, authusername, null);
 		// Add user to system users group
 		SecurityGroup olatuserGroup = securityManager.findSecurityGroupByName(Constants.GROUP_OLATUSERS);
 		securityManager.addIdentityToSecurityGroup(ident, olatuserGroup);
diff --git a/src/main/java/org/olat/basesecurity/BaseSecurity.java b/src/main/java/org/olat/basesecurity/BaseSecurity.java
index 35f256c9243..3b99666aaf1 100644
--- a/src/main/java/org/olat/basesecurity/BaseSecurity.java
+++ b/src/main/java/org/olat/basesecurity/BaseSecurity.java
@@ -288,7 +288,7 @@ public interface BaseSecurity {
 	 * @param credential the credentials or null if not used
 	 * @return the new identity
 	 */
-	public Identity createAndPersistIdentityAndUser(String username, User user, String provider, String authusername);
+	public Identity createAndPersistIdentityAndUser(String username, String externalId, User user, String provider, String authusername);
 
 	/**
 	 * @param username the username
@@ -300,7 +300,7 @@ public interface BaseSecurity {
 	 * @param password The password which will be used as credentials (not hashed it)
 	 * @return the new identity
 	 */
-	public Identity createAndPersistIdentityAndUser(String username, User user, String provider, String authusername, String password);
+	public Identity createAndPersistIdentityAndUser(String username, String externalId, User user, String provider, String authusername, String password);
 
 	/**
 	 * Return the List of associated Authentications.
diff --git a/src/main/java/org/olat/basesecurity/BaseSecurityManager.java b/src/main/java/org/olat/basesecurity/BaseSecurityManager.java
index 55b1fe8a18a..1153657b189 100644
--- a/src/main/java/org/olat/basesecurity/BaseSecurityManager.java
+++ b/src/main/java/org/olat/basesecurity/BaseSecurityManager.java
@@ -700,9 +700,10 @@ public class BaseSecurityManager extends BasicManager implements BaseSecurity {
 	 * @return Identity
 	 */
 	@Override
-	public Identity createAndPersistIdentityAndUser(String username, User user, String provider, String authusername) {
+	public Identity createAndPersistIdentityAndUser(String username, String externalId, User user, String provider, String authusername) {
 		dbInstance.getCurrentEntityManager().persist(user);
 		IdentityImpl iimpl = new IdentityImpl(username, user);
+		iimpl.setExternalId(externalId);
 		dbInstance.getCurrentEntityManager().persist(iimpl);
 		if (provider != null) { 
 			createAndPersistAuthentication(iimpl, provider, authusername, null, null);
@@ -722,9 +723,10 @@ public class BaseSecurityManager extends BasicManager implements BaseSecurity {
 	 * @return Identity
 	 */
 	@Override
-	public Identity createAndPersistIdentityAndUser(String username, User user, String provider, String authusername, String credential) {
+	public Identity createAndPersistIdentityAndUser(String username, String externalId, User user, String provider, String authusername, String credential) {
 		dbInstance.getCurrentEntityManager().persist(user);
 		IdentityImpl iimpl = new IdentityImpl(username, user);
+		iimpl.setExternalId(externalId);
 		dbInstance.getCurrentEntityManager().persist(iimpl);
 		if (provider != null) { 
 			createAndPersistAuthentication(iimpl, provider, authusername, credential, LoginModule.getDefaultHashAlgorithm());
@@ -1837,7 +1839,7 @@ public class BaseSecurityManager extends BasicManager implements BaseSecurity {
 			// Create it lazy on demand
 			User guestUser = UserManager.getInstance().createUser(trans.translate("user.guest"), null, null);
 			guestUser.getPreferences().setLanguage(locale.toString());
-			guestIdentity = createAndPersistIdentityAndUser(guestUsername, guestUser, null, null, null);
+			guestIdentity = createAndPersistIdentityAndUser(guestUsername, null, guestUser, null, null, null);
 			SecurityGroup anonymousGroup = findSecurityGroupByName(Constants.GROUP_ANONYMOUS);
 			addIdentityToSecurityGroup(guestIdentity, anonymousGroup);
 		} else if (!guestIdentity.getUser().getProperty(UserConstants.FIRSTNAME, locale).equals(trans.translate("user.guest"))) {
diff --git a/src/main/java/org/olat/ldap/manager/LDAPLoginManagerImpl.java b/src/main/java/org/olat/ldap/manager/LDAPLoginManagerImpl.java
index 840e4b1f1d1..1b86a7b0471 100644
--- a/src/main/java/org/olat/ldap/manager/LDAPLoginManagerImpl.java
+++ b/src/main/java/org/olat/ldap/manager/LDAPLoginManagerImpl.java
@@ -447,7 +447,7 @@ public class LDAPLoginManagerImpl implements LDAPLoginManager, GenericEventListe
 		}
 
 		// Create Identity
-		Identity identity = securityManager.createAndPersistIdentityAndUser(uid, user, LDAPAuthenticationController.PROVIDER_LDAP, uid);
+		Identity identity = securityManager.createAndPersistIdentityAndUser(uid, null, user, LDAPAuthenticationController.PROVIDER_LDAP, uid);
 		// Add to SecurityGroup LDAP
 		SecurityGroup secGroup = securityManager.findSecurityGroupByName(LDAPConstants.SECURITY_GROUP_LDAP);
 		securityManager.addIdentityToSecurityGroup(identity, secGroup);
diff --git a/src/main/java/org/olat/login/oauth/ui/OAuthRegistrationController.java b/src/main/java/org/olat/login/oauth/ui/OAuthRegistrationController.java
index c95f571f1e9..bf02e9751fb 100644
--- a/src/main/java/org/olat/login/oauth/ui/OAuthRegistrationController.java
+++ b/src/main/java/org/olat/login/oauth/ui/OAuthRegistrationController.java
@@ -212,7 +212,7 @@ public class OAuthRegistrationController extends FormBasicController {
 		} else {
 			id = username;
 		}
-		authenticatedIdentity = securityManager.createAndPersistIdentityAndUser(username, newUser, registration.getAuthProvider(), id, null);
+		authenticatedIdentity = securityManager.createAndPersistIdentityAndUser(username, null, newUser, registration.getAuthProvider(), id, null);
 		// Add user to system users group
 		SecurityGroup olatuserGroup = securityManager.findSecurityGroupByName(Constants.GROUP_OLATUSERS);
 		securityManager.addIdentityToSecurityGroup(authenticatedIdentity, olatuserGroup);
diff --git a/src/main/java/org/olat/registration/RegistrationManager.java b/src/main/java/org/olat/registration/RegistrationManager.java
index eb344b90894..4ce1ac27c71 100644
--- a/src/main/java/org/olat/registration/RegistrationManager.java
+++ b/src/main/java/org/olat/registration/RegistrationManager.java
@@ -172,7 +172,7 @@ public class RegistrationManager extends BasicManager {
 	 * @return the newly created subject or null
 	 */
 	public Identity createNewUserAndIdentityFromTemporaryKey(String login, String pwd, User myUser, TemporaryKeyImpl tk) {
-		Identity identity = AuthHelper.createAndPersistIdentityAndUserWithUserGroup(login, pwd, myUser);
+		Identity identity = AuthHelper.createAndPersistIdentityAndUserWithUserGroup(login, null, pwd, myUser);
 		if (identity == null) return null;
 		deleteTemporaryKey(tk);
 		return identity;
diff --git a/src/main/java/org/olat/repository/RepositoryManager.java b/src/main/java/org/olat/repository/RepositoryManager.java
index 814b9f63af2..1e30f223787 100644
--- a/src/main/java/org/olat/repository/RepositoryManager.java
+++ b/src/main/java/org/olat/repository/RepositoryManager.java
@@ -680,7 +680,7 @@ public class RepositoryManager extends BasicManager {
 	 * @return
 	 */
 	public RepositoryEntry setDescriptionAndName(final RepositoryEntry re, String displayName, String description,
-			String externalId, String externalRef, String managedFlags, RepositoryEntryLifecycle cycle) {
+			String authors, String externalId, String externalRef, String managedFlags, RepositoryEntryLifecycle cycle) {
 		RepositoryEntry reloadedRe = loadForUpdate(re);
 		if(StringHelper.containsNonWhitespace(displayName)) {
 			reloadedRe.setDisplayname(displayName);
@@ -688,6 +688,9 @@ public class RepositoryManager extends BasicManager {
 		if(StringHelper.containsNonWhitespace(description)) {
 			reloadedRe.setDescription(description);
 		}
+		if(StringHelper.containsNonWhitespace(authors)) {
+			reloadedRe.setAuthors(authors);
+		}
 		if(StringHelper.containsNonWhitespace(externalId)) {
 			reloadedRe.setExternalId(externalId);
 		}
diff --git a/src/main/java/org/olat/restapi/repository/RepositoryEntryResource.java b/src/main/java/org/olat/restapi/repository/RepositoryEntryResource.java
index f97a28e9d7a..e2d53836391 100644
--- a/src/main/java/org/olat/restapi/repository/RepositoryEntryResource.java
+++ b/src/main/java/org/olat/restapi/repository/RepositoryEntryResource.java
@@ -541,7 +541,7 @@ public class RepositoryEntryResource {
     }
 
     RepositoryEntry reloaded = repositoryManager.setDescriptionAndName(re, vo.getDisplayname(), null, 
-    		vo.getExternalId(), vo.getExternalRef(), vo.getManagedFlags(), lifecycle);
+    		vo.getAuthors(), vo.getExternalId(), vo.getExternalRef(), vo.getManagedFlags(), lifecycle);
     RepositoryEntryVO rvo = ObjectFactory.get(reloaded);
     return Response.ok(rvo).build();
   }
@@ -582,6 +582,7 @@ public class RepositoryEntryResource {
       reader = new MultipartReader(request);
       File tmpFile = reader.getFile();
       String displayname = reader.getValue("displayname");
+      String authors = reader.getValue("authors");
       String description = reader.getValue("description");
       String externalId = reader.getValue("externalId");
       String externalRef = reader.getValue("externalRef");
@@ -591,7 +592,7 @@ public class RepositoryEntryResource {
       RepositoryEntry replacedRe;
       if(tmpFile == null) {
       	replacedRe = repositoryManager.setDescriptionAndName(re, displayname, description,
-      			externalId, externalRef, managedFlags, re.getLifecycle());
+      			authors, externalId, externalRef, managedFlags, re.getLifecycle());
       } else {
 	      long length = tmpFile.length();
 	      if(length == 0) {
@@ -602,7 +603,7 @@ public class RepositoryEntryResource {
 	        return Response.serverError().status(Status.NOT_FOUND).build();
 	      } else {
 	      	replacedRe = repositoryManager.setDescriptionAndName(replacedRe, displayname, description,
-	      			externalId, externalRef, managedFlags, replacedRe.getLifecycle());
+	      			authors, externalId, externalRef, managedFlags, replacedRe.getLifecycle());
 	      }
       }
       RepositoryEntryVO vo = ObjectFactory.get(replacedRe);
diff --git a/src/main/java/org/olat/restapi/repository/course/CoursesWebService.java b/src/main/java/org/olat/restapi/repository/course/CoursesWebService.java
index ea568c87cb0..024fb05c833 100644
--- a/src/main/java/org/olat/restapi/repository/course/CoursesWebService.java
+++ b/src/main/java/org/olat/restapi/repository/course/CoursesWebService.java
@@ -26,6 +26,7 @@ import static org.olat.restapi.security.RestSecurityHelper.isAuthor;
 
 import java.io.File;
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 import java.util.Locale;
 import java.util.UUID;
@@ -132,8 +133,9 @@ public class CoursesWebService {
 	@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
 	public Response getCourseList(@QueryParam("start") @DefaultValue("0") Integer start,
 			@QueryParam("limit") @DefaultValue("25") Integer limit,
-			@QueryParam("managed") Boolean managed, @QueryParam("externalId") String externalId,
-			@QueryParam("externalRef") String externalRef,
+			@QueryParam("managed") Boolean managed,
+			@QueryParam("externalId") String externalId, @QueryParam("externalRef") String externalRef,
+			@QueryParam("repositoryEntryKey") String repositoryEntryKey,
 			@Context HttpServletRequest httpRequest, @Context Request request) {
 		RepositoryManager rm = RepositoryManager.getInstance();
 
@@ -141,12 +143,20 @@ public class CoursesWebService {
 		Identity identity = getIdentity(httpRequest);
 		SearchRepositoryEntryParameters params = new SearchRepositoryEntryParameters(identity, roles, CourseModule.getCourseTypeName());
 		params.setManaged(managed);
+		
 		if(StringHelper.containsNonWhitespace(externalId)) {
 			params.setExternalId(externalId);
 		}
 		if(StringHelper.containsNonWhitespace(externalRef)) {
 			params.setExternalRef(externalRef);
 		}
+		if(StringHelper.containsNonWhitespace(repositoryEntryKey) && StringHelper.isLong(repositoryEntryKey)) {
+			try {
+				params.setRepositoryEntryKeys(Collections.singletonList(new Long(repositoryEntryKey)));
+			} catch (NumberFormatException e) {
+				log.error("Cannot parse the following repository entry key: " + repositoryEntryKey);
+			}
+		}
 
 		if(MediaTypeVariants.isPaged(httpRequest, request)) {
 			int totalCount = rm.countGenericANDQueryWithRolesRestriction(params);
diff --git a/src/main/java/org/olat/restapi/support/ObjectFactory.java b/src/main/java/org/olat/restapi/support/ObjectFactory.java
index 681f9565f6a..fd948827444 100644
--- a/src/main/java/org/olat/restapi/support/ObjectFactory.java
+++ b/src/main/java/org/olat/restapi/support/ObjectFactory.java
@@ -158,6 +158,7 @@ public class ObjectFactory {
 		vo.setSoftkey(entry.getSoftkey());
 		vo.setResourcename(entry.getResourcename());
 		vo.setDisplayname(entry.getDisplayname());
+		vo.setAuthors(entry.getAuthors());
 		vo.setResourceableId(entry.getResourceableId());
 		vo.setResourceableTypeName(entry.getResourceableTypeName());
 		OLATResource resource = entry.getOlatResource();
diff --git a/src/main/java/org/olat/restapi/support/vo/RepositoryEntryVO.java b/src/main/java/org/olat/restapi/support/vo/RepositoryEntryVO.java
index 543f3cf958f..96513d2ce2c 100644
--- a/src/main/java/org/olat/restapi/support/vo/RepositoryEntryVO.java
+++ b/src/main/java/org/olat/restapi/support/vo/RepositoryEntryVO.java
@@ -21,6 +21,7 @@ package org.olat.restapi.support.vo;
 
 import javax.xml.bind.annotation.XmlAccessType;
 import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlRootElement;
 
 /**
@@ -35,16 +36,19 @@ import javax.xml.bind.annotation.XmlRootElement;
 @XmlAccessorType(XmlAccessType.FIELD)
 @XmlRootElement(name = "repositoryEntryVO")
 public class RepositoryEntryVO {
+	
 	private Long key;
 	private String softkey;
 	private String resourcename;
 	private String displayname;
+	@XmlAttribute(name="authors",required=false)
+	private String authors;
 	private String externalId;
 	private String externalRef;
 	private String managedFlags;
 	private Long resourceableId;
 	private String resourceableTypeName;
-	
+
 	private Long olatResourceId;
 	private String olatResourceTypeName;
 	
@@ -86,6 +90,14 @@ public class RepositoryEntryVO {
 		this.displayname = displayname;
 	}
 	
+	public String getAuthors() {
+		return authors;
+	}
+
+	public void setAuthors(String authors) {
+		this.authors = authors;
+	}
+	
 	public String getExternalId() {
 		return externalId;
 	}
diff --git a/src/main/java/org/olat/shibboleth/ShibbolethRegistrationController.java b/src/main/java/org/olat/shibboleth/ShibbolethRegistrationController.java
index 8a49330b9f6..2b260c27a87 100644
--- a/src/main/java/org/olat/shibboleth/ShibbolethRegistrationController.java
+++ b/src/main/java/org/olat/shibboleth/ShibbolethRegistrationController.java
@@ -351,7 +351,7 @@ public class ShibbolethRegistrationController extends DefaultController implemen
 						user.setProperty(UserConstants.INSTITUTIONALEMAIL, institutionalEmail);
 					}
 					user.setProperty(UserConstants.INSTITUTIONALUSERIDENTIFIER, shibbolethAttributesMap.get(ShibbolethModule.getInstitutionalUserIdentifier()));
-					identity = secMgr.createAndPersistIdentityAndUser(choosenLogin, user, ShibbolethDispatcher.PROVIDER_SHIB, shibbolethUniqueID);
+					identity = secMgr.createAndPersistIdentityAndUser(choosenLogin, null, user, ShibbolethDispatcher.PROVIDER_SHIB, shibbolethUniqueID);
 					SecurityGroup olatUserGroup = secMgr.findSecurityGroupByName(Constants.GROUP_OLATUSERS);
 					secMgr.addIdentityToSecurityGroup(identity, olatUserGroup);
 					// tell system that this user did accept the disclaimer
diff --git a/src/main/java/org/olat/user/UserModule.java b/src/main/java/org/olat/user/UserModule.java
index 6167076d159..c17965d362e 100644
--- a/src/main/java/org/olat/user/UserModule.java
+++ b/src/main/java/org/olat/user/UserModule.java
@@ -242,7 +242,7 @@ public class UserModule extends AbstractOLATModule {
 
 			// Now finally create that user thing on the database with all
 			// credentials, person etc. in one transation context!
-			identity = BaseSecurityManager.getInstance().createAndPersistIdentityAndUser(user.getUserName(), newUser, authenticationProviderConstant,
+			identity = BaseSecurityManager.getInstance().createAndPersistIdentityAndUser(user.getUserName(), null, newUser, authenticationProviderConstant,
 					user.getUserName(), user.getPassword());
 			if (identity == null) {
 				throw new OLATRuntimeException(this.getClass(), "Error, could not create  user and subject with name " + user.getUserName(), null);
diff --git a/src/main/java/org/olat/user/restapi/UserWebService.java b/src/main/java/org/olat/user/restapi/UserWebService.java
index c71bd96f6bb..7333c2d82de 100644
--- a/src/main/java/org/olat/user/restapi/UserWebService.java
+++ b/src/main/java/org/olat/user/restapi/UserWebService.java
@@ -145,8 +145,9 @@ public class UserWebService {
 	 */
 	@GET
 	@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
-	public Response getUserListQuery(@QueryParam("login") String login, @QueryParam("authProvider") String authProvider,
-			@QueryParam("authUsername") String authUsername,
+	public Response getUserListQuery(@QueryParam("login") String login,
+			@QueryParam("authProvider") String authProvider, @QueryParam("authUsername") String authUsername,
+			@QueryParam("statusVisibleLimit") String statusVisibleLimit,
 			@Context UriInfo uriInfo, @Context HttpServletRequest httpRequest) {
 		
 		if(!isUserManager(httpRequest)) {
@@ -185,8 +186,12 @@ public class UserWebService {
 					userProps.put(handler.getName(), value);
 				}
 			}
-
-			identities = BaseSecurityManager.getInstance().getIdentitiesByPowerSearch(login, userProps, true, null, null, authProviders, null, null, null, null, Identity.STATUS_VISIBLE_LIMIT);
+			
+			Integer status = Identity.STATUS_VISIBLE_LIMIT;
+			if("all".equalsIgnoreCase(statusVisibleLimit)) {
+				status = null;
+			}
+			identities = BaseSecurityManager.getInstance().getIdentitiesByPowerSearch(login, userProps, true, null, null, authProviders, null, null, null, null, status);
 		}
 		
 		int count = 0;
@@ -257,7 +262,7 @@ public class UserWebService {
 		List<ErrorVO> errors = validateUser(null, user, request);
 		if(errors.isEmpty()) {
 			User newUser = UserManager.getInstance().createUser(user.getFirstName(), user.getLastName(), user.getEmail());
-			Identity id = AuthHelper.createAndPersistIdentityAndUserWithUserGroup(user.getLogin(), user.getPassword(), newUser);
+			Identity id = AuthHelper.createAndPersistIdentityAndUserWithUserGroup(user.getLogin(), user.getExternalId(), user.getPassword(), newUser);
 			post(newUser, user, getLocale(request));
 			UserManager.getInstance().updateUser(newUser);
 			return Response.ok(get(id)).build();
diff --git a/src/test/java/org/olat/basesecurity/BaseSecurityManagerTest.java b/src/test/java/org/olat/basesecurity/BaseSecurityManagerTest.java
index 32c55c4e893..0ada5e6e243 100644
--- a/src/test/java/org/olat/basesecurity/BaseSecurityManagerTest.java
+++ b/src/test/java/org/olat/basesecurity/BaseSecurityManagerTest.java
@@ -67,7 +67,7 @@ public class BaseSecurityManagerTest extends OlatTestCase {
 	public void testCreateIdentity() {
 		String username = "createid-" + UUID.randomUUID().toString();
 		User user = userManager.createUser("first" + username, "last" + username, username + "@frentix.com");
-		Identity identity = securityManager.createAndPersistIdentityAndUser(username, user, BaseSecurityModule.getDefaultAuthProviderIdentifier(), username, "secret");
+		Identity identity = securityManager.createAndPersistIdentityAndUser(username, null, user, BaseSecurityModule.getDefaultAuthProviderIdentifier(), username, "secret");
 		dbInstance.commitAndCloseSession();
 		
 		Assert.assertNotNull(identity);
@@ -89,7 +89,7 @@ public class BaseSecurityManagerTest extends OlatTestCase {
 		User user = userManager.createUser("first" + username, "last" + username, username + "@frentix.com");
 		user.setProperty(UserConstants.COUNTRY, "");
 		user.setProperty(UserConstants.CITY, "Basel");
-		Identity identity = securityManager.createAndPersistIdentityAndUser(username, user, BaseSecurityModule.getDefaultAuthProviderIdentifier(), username, "secret");
+		Identity identity = securityManager.createAndPersistIdentityAndUser(username, null, user, BaseSecurityModule.getDefaultAuthProviderIdentifier(), username, "secret");
 		dbInstance.commitAndCloseSession();
 		
 		//reload and update
diff --git a/src/test/java/org/olat/basesecurity/GetIdentitiesByPowerSearchTest.java b/src/test/java/org/olat/basesecurity/GetIdentitiesByPowerSearchTest.java
index f3d1792b15e..2bc3ea68c97 100644
--- a/src/test/java/org/olat/basesecurity/GetIdentitiesByPowerSearchTest.java
+++ b/src/test/java/org/olat/basesecurity/GetIdentitiesByPowerSearchTest.java
@@ -544,7 +544,7 @@ public class GetIdentitiesByPowerSearchTest extends OlatTestCase {
 
 		User onePropUser = UserManager.getInstance().createUser("onepropuser", "onepropuser", one + "@lustig.com");
 		onePropUser.setProperty(UserConstants.FIRSTNAME, "one");		
-		Identity onePropIdentity = baseSecurityManager.createAndPersistIdentityAndUser(oneUsername, onePropUser, BaseSecurityModule.getDefaultAuthProviderIdentifier(), oneUsername, "ppp");
+		Identity onePropIdentity = baseSecurityManager.createAndPersistIdentityAndUser(oneUsername, null, onePropUser, BaseSecurityModule.getDefaultAuthProviderIdentifier(), oneUsername, "ppp");
 		Assert.assertNotNull(onePropIdentity);
 		
 		String two = "two" + UUID.randomUUID().toString().replace("-", "");
@@ -553,7 +553,7 @@ public class GetIdentitiesByPowerSearchTest extends OlatTestCase {
 		User twoPropUser = UserManager.getInstance().createUser("twopropuser", "twopropuser", two + "@lustig.com");
 		twoPropUser.setProperty(UserConstants.FIRSTNAME, "two");
 		twoPropUser.setProperty(UserConstants.LASTNAME, "prop");
-		Identity twoPropIdentity = baseSecurityManager.createAndPersistIdentityAndUser(twoUsername, twoPropUser, BaseSecurityModule.getDefaultAuthProviderIdentifier(), twoUsername, "ppp");
+		Identity twoPropIdentity = baseSecurityManager.createAndPersistIdentityAndUser(twoUsername, null, twoPropUser, BaseSecurityModule.getDefaultAuthProviderIdentifier(), twoUsername, "ppp");
 		Assert.assertNotNull(twoPropIdentity);
 		DBFactory.getInstance().closeSession();
 
@@ -633,7 +633,7 @@ public class GetIdentitiesByPowerSearchTest extends OlatTestCase {
 		user.setProperty(UserConstants.INSTITUTIONALEMAIL, multiInst + "@lustig.com");		
 		user.setProperty(UserConstants.INSTITUTIONALUSERIDENTIFIER, multiInst);		
 		user.setProperty(UserConstants.CITY, "züri");		
-		Identity identity = baseSecurityManager.createAndPersistIdentityAndUser(multiUsername, user, BaseSecurityModule.getDefaultAuthProviderIdentifier(), multiUsername, "ppp");
+		Identity identity = baseSecurityManager.createAndPersistIdentityAndUser(multiUsername, null, user, BaseSecurityModule.getDefaultAuthProviderIdentifier(), multiUsername, "ppp");
 		Assert.assertNotNull(identity);
 		
 		// commit
@@ -749,7 +749,7 @@ public class GetIdentitiesByPowerSearchTest extends OlatTestCase {
 			User user = UserManager.getInstance().createUser(loginName+"_Firstname", loginName + "_Lastname", loginName + "@lustig.com");
 			user.setProperty(UserConstants.INSTITUTIONALNAME, "unizh2");
 			user.setProperty(UserConstants.INSTITUTIONALUSERIDENTIFIER, "12-345-678-908");
-			ident = baseSecurityManager.createAndPersistIdentityAndUser(loginName, user, authProvider, loginName, "ppp");
+			ident = baseSecurityManager.createAndPersistIdentityAndUser(loginName, null, user, authProvider, loginName, "ppp");
 			return ident;
 		}
 	}
diff --git a/src/test/java/org/olat/ldap/LDAPLoginTest.java b/src/test/java/org/olat/ldap/LDAPLoginTest.java
index 58396671309..9212fa42e4f 100644
--- a/src/test/java/org/olat/ldap/LDAPLoginTest.java
+++ b/src/test/java/org/olat/ldap/LDAPLoginTest.java
@@ -181,7 +181,7 @@ public class LDAPLoginTest extends OlatTestCase {
 			try {
 				//create user but with different attributes - must fail since user already exists
 				User user = UserManager.getInstance().createUser("klaus", "Meier", "klaus@meier.ch");
-				Identity identity = securityManager.createAndPersistIdentityAndUser("kmeier", user, "LDAP", "kmeier");
+				Identity identity = securityManager.createAndPersistIdentityAndUser("kmeier", null, user, "LDAP", "kmeier");
 				SecurityGroup secGroup = securityManager.findSecurityGroupByName(LDAPConstants.SECURITY_GROUP_LDAP);
 				securityManager.addIdentityToSecurityGroup(identity, secGroup);
 				
@@ -200,7 +200,7 @@ public class LDAPLoginTest extends OlatTestCase {
 		} else {
 			//create user but with different attributes - must fail since user already exists
 			User user = UserManager.getInstance().createUser("klaus", "Meier", "klaus@meier.ch");
-			Identity identity = securityManager.createAndPersistIdentityAndUser("kmeier", user, "LDAP", "kmeier");
+			Identity identity = securityManager.createAndPersistIdentityAndUser("kmeier", null, user, "LDAP", "kmeier");
 			SecurityGroup secGroup = securityManager.findSecurityGroupByName(LDAPConstants.SECURITY_GROUP_LDAP);
 			securityManager.addIdentityToSecurityGroup(identity, secGroup);
 			// simulate closed session (user adding from startup job)
@@ -264,14 +264,14 @@ public class LDAPLoginTest extends OlatTestCase {
 		
 		//create some users in LDAPSecurityGroup
 		User user = UserManager.getInstance().createUser("grollia", "wa", "gorrila@olat.org");
-		Identity identity = securityManager.createAndPersistIdentityAndUser("gorilla", user, "LDAP", "gorrila");
+		Identity identity = securityManager.createAndPersistIdentityAndUser("gorilla", null,user, "LDAP", "gorrila");
 		SecurityGroup secGroup1 = securityManager.findSecurityGroupByName(LDAPConstants.SECURITY_GROUP_LDAP);
 		securityManager.addIdentityToSecurityGroup(identity, secGroup1);
 		user = UserManager.getInstance().createUser("wer", "immer", "immer@olat.org");
-		identity = securityManager.createAndPersistIdentityAndUser("der", user, "LDAP", "der");
+		identity = securityManager.createAndPersistIdentityAndUser("der", null, user, "LDAP", "der");
 		securityManager.addIdentityToSecurityGroup(identity, secGroup1);
 		user = UserManager.getInstance().createUser("die", "da", "chaspi@olat.org");
-		identity = securityManager.createAndPersistIdentityAndUser("das", user, "LDAP", "das");
+		identity = securityManager.createAndPersistIdentityAndUser("das", null, user, "LDAP", "das");
 		securityManager.addIdentityToSecurityGroup(identity, secGroup1);
 		
 		// simulate closed session
@@ -344,11 +344,11 @@ public class LDAPLoginTest extends OlatTestCase {
 
 		//create Users in LDAP Group only existing in OLAT 
 		User user1 = UserManager.getInstance().createUser("hansi", "hürlima", "hansi@hansli.com");
-		Identity identity1 = securityManager.createAndPersistIdentityAndUser("hansi", user1, "LDAP", "hansi");
+		Identity identity1 = securityManager.createAndPersistIdentityAndUser("hansi", null, user1, "LDAP", "hansi");
 		SecurityGroup secGroup1 = securityManager.findSecurityGroupByName(LDAPConstants.SECURITY_GROUP_LDAP);
 		securityManager.addIdentityToSecurityGroup(identity1, secGroup1);
 		user1 = UserManager.getInstance().createUser("chaspi", "meier", "chaspi@hansli.com");
-		identity1 = securityManager.createAndPersistIdentityAndUser("chaspi", user1, "LDAP", "chaspi");
+		identity1 = securityManager.createAndPersistIdentityAndUser("chaspi", null, user1, "LDAP", "chaspi");
 		securityManager.addIdentityToSecurityGroup(identity1, secGroup1);
 
 		//create User to Delete List
diff --git a/src/test/java/org/olat/repository/RepositoryManagerTest.java b/src/test/java/org/olat/repository/RepositoryManagerTest.java
index 6c830df2c73..01b95493a13 100644
--- a/src/test/java/org/olat/repository/RepositoryManagerTest.java
+++ b/src/test/java/org/olat/repository/RepositoryManagerTest.java
@@ -1105,6 +1105,7 @@ public class RepositoryManagerTest extends OlatTestCase {
 		
 		String newName = "Brand new name";
 		String newDesc = "Brand new description";
+		String newAuthors = "Me and only me";
 		String newExternalId = "Brand - ext";
 		String newExternalRef = "Brand - ref";
 		String newManagedFlags = RepositoryEntryManagedFlag.access.name();
@@ -1112,13 +1113,14 @@ public class RepositoryManagerTest extends OlatTestCase {
 		RepositoryEntryLifecycle newCycle
 			= lifecycleDao.create("New cycle 1", "New cycle soft 1", false, new Date(), new Date());
 		
-		re = repositoryManager.setDescriptionAndName(re, newName, newDesc, newExternalId, newExternalRef, newManagedFlags, newCycle);
+		re = repositoryManager.setDescriptionAndName(re, newName, newDesc, newAuthors, newExternalId, newExternalRef, newManagedFlags, newCycle);
 		Assert.assertNotNull(re);
 		
 		dbInstance.commitAndCloseSession();
 		
 		RepositoryEntry reloaded = repositoryManager.lookupRepositoryEntry(re.getKey());
 		Assert.assertNotNull(reloaded);
+		Assert.assertEquals("Me and only me", reloaded.getAuthors());
 		Assert.assertEquals("Brand new name", reloaded.getDisplayname());
 		Assert.assertEquals("Brand new description", reloaded.getDescription());
 		Assert.assertEquals("Brand - ext", reloaded.getExternalId());
diff --git a/src/test/java/org/olat/repository/manager/RepositoryEntryStatisticsDAOTest.java b/src/test/java/org/olat/repository/manager/RepositoryEntryStatisticsDAOTest.java
index b0a436e9a6f..3375551739c 100644
--- a/src/test/java/org/olat/repository/manager/RepositoryEntryStatisticsDAOTest.java
+++ b/src/test/java/org/olat/repository/manager/RepositoryEntryStatisticsDAOTest.java
@@ -171,7 +171,7 @@ public class RepositoryEntryStatisticsDAOTest extends OlatTestCase {
 		String description = "Description_testIncrementLaunchCounterSetDescription";
 		log.info("RepositoryManagerTest: call setDescriptionAndName");
 		long t3 = System.nanoTime();
-		repositoryManager.setDescriptionAndName(repositoryEntryT1, displayName,description, null, null, null, null);
+		repositoryManager.setDescriptionAndName(repositoryEntryT1, displayName, description, null, null, null, null, null);
 		long t4 = System.nanoTime();
 		log.info("RepositoryManagerTest: call setDescriptionAndName DONE");
 		log.info("RepositoryManagerTest: increments take=" + (t2 - t1) + " setDescription take=" + (t4 -t3) );
@@ -272,7 +272,7 @@ public class RepositoryEntryStatisticsDAOTest extends OlatTestCase {
 						if (i % 25 == 0 ) {
 							String displayName = "DisplayName" + i;
 							String description = "Description" + i;
-							re = repositoryManager.setDescriptionAndName(re, displayName,description, null, null, null, null);
+							re = repositoryManager.setDescriptionAndName(re, displayName, null, description, null, null, null, null);
 							assertEquals("Wrong displayName value", displayName, re.getDisplayname());
 							assertEquals("Wrong description value", description, re.getDescription());
 						}
diff --git a/src/test/java/org/olat/test/JunitTestHelper.java b/src/test/java/org/olat/test/JunitTestHelper.java
index d242dc949c5..d28fa5f461b 100644
--- a/src/test/java/org/olat/test/JunitTestHelper.java
+++ b/src/test/java/org/olat/test/JunitTestHelper.java
@@ -126,7 +126,7 @@ public class JunitTestHelper {
 		SecurityGroup group = securityManager.findSecurityGroupByName(Constants.GROUP_OLATUSERS);
 		if (group == null) group = securityManager.createAndPersistNamedSecurityGroup(Constants.GROUP_OLATUSERS);
 		User user = UserManager.getInstance().createUser("first" + login, "last" + login, login + "@" + maildomain);
-		identity = securityManager.createAndPersistIdentityAndUser(login, user, BaseSecurityModule.getDefaultAuthProviderIdentifier(), login, PWD);
+		identity = securityManager.createAndPersistIdentityAndUser(login, null, user, BaseSecurityModule.getDefaultAuthProviderIdentifier(), login, PWD);
 		securityManager.addIdentityToSecurityGroup(identity, group);
 		return identity;
 	}
@@ -143,7 +143,7 @@ public class JunitTestHelper {
 		SecurityGroup group = securityManager.findSecurityGroupByName(Constants.GROUP_AUTHORS);
 		if (group == null) group = securityManager.createAndPersistNamedSecurityGroup(Constants.GROUP_AUTHORS);
 		User user = UserManager.getInstance().createUser("first" + login, "last" + login, login + "@" + maildomain);
-		identity = securityManager.createAndPersistIdentityAndUser(login, user, BaseSecurityModule.getDefaultAuthProviderIdentifier(), login, PWD);
+		identity = securityManager.createAndPersistIdentityAndUser(login, null, user, BaseSecurityModule.getDefaultAuthProviderIdentifier(), login, PWD);
 		securityManager.addIdentityToSecurityGroup(identity, group);
 		return identity;
 	}
@@ -160,7 +160,7 @@ public class JunitTestHelper {
 		SecurityGroup group = securityManager.findSecurityGroupByName(Constants.GROUP_ADMIN);
 		if (group == null) group = securityManager.createAndPersistNamedSecurityGroup(Constants.GROUP_ADMIN);
 		User user = UserManager.getInstance().createUser("first" + login, "last" + login, login + "@" + maildomain);
-		identity = securityManager.createAndPersistIdentityAndUser(login, user, BaseSecurityModule.getDefaultAuthProviderIdentifier(), login, PWD);
+		identity = securityManager.createAndPersistIdentityAndUser(login, null, user, BaseSecurityModule.getDefaultAuthProviderIdentifier(), login, PWD);
 		securityManager.addIdentityToSecurityGroup(identity, group);
 		return identity;
 	}
diff --git a/src/test/java/org/olat/user/EmailCheckPerformanceTest.java b/src/test/java/org/olat/user/EmailCheckPerformanceTest.java
index 977423e2d57..93bb738bc57 100644
--- a/src/test/java/org/olat/user/EmailCheckPerformanceTest.java
+++ b/src/test/java/org/olat/user/EmailCheckPerformanceTest.java
@@ -124,7 +124,7 @@ public class EmailCheckPerformanceTest extends OlatTestCase {
 				user.setProperty(UserConstants.INSTITUTIONALEMAIL, username + "@" + institution);
 				user.setProperty(UserConstants.INSTITUTIONALNAME, institution);
 				user.setProperty(UserConstants.INSTITUTIONALUSERIDENTIFIER, username + "-" + institution);
-				AuthHelper.createAndPersistIdentityAndUserWithUserGroup(username, "hokuspokus", user);
+				AuthHelper.createAndPersistIdentityAndUserWithUserGroup(username, null, "hokuspokus", user);
 	
 				if (i % 10 == 0) {
 					// flush now to obtimize performance
diff --git a/src/test/java/org/olat/user/UserManagerTest.java b/src/test/java/org/olat/user/UserManagerTest.java
index cff9ebc3f64..d593184888b 100644
--- a/src/test/java/org/olat/user/UserManagerTest.java
+++ b/src/test/java/org/olat/user/UserManagerTest.java
@@ -128,7 +128,7 @@ public class UserManagerTest extends OlatTestCase {
 		String institutEmail = name + "@openolat.com";
 		User user = userManager.createUser("first" + name, "last" + name, email);
 		user.setProperty(UserConstants.INSTITUTIONALEMAIL, institutEmail);
-		Identity identity = securityManager.createAndPersistIdentityAndUser(name, user, BaseSecurityModule.getDefaultAuthProviderIdentifier(), name, "secret");
+		Identity identity = securityManager.createAndPersistIdentityAndUser(name, null, user, BaseSecurityModule.getDefaultAuthProviderIdentifier(), name, "secret");
 		Assert.assertNotNull(identity);
 		return identity;
 	}
diff --git a/src/test/java/org/olat/user/UserPropertiesPerformanceTest.java b/src/test/java/org/olat/user/UserPropertiesPerformanceTest.java
index 9f3c816a888..e423f62510a 100644
--- a/src/test/java/org/olat/user/UserPropertiesPerformanceTest.java
+++ b/src/test/java/org/olat/user/UserPropertiesPerformanceTest.java
@@ -112,7 +112,7 @@ public class UserPropertiesPerformanceTest extends OlatTestCase {
 			user.setProperty(UserConstants.INSTITUTIONALEMAIL, username + "@" + institution);
 			user.setProperty(UserConstants.INSTITUTIONALNAME, institution);
 			user.setProperty(UserConstants.INSTITUTIONALUSERIDENTIFIER, username + "-" + institution);
-			AuthHelper.createAndPersistIdentityAndUserWithUserGroup(username, "hokuspokus", user);
+			AuthHelper.createAndPersistIdentityAndUserWithUserGroup(username, null, "hokuspokus", user);
 
 			if (i % 10 == 0) {
 				// flush now to obtimize performance
diff --git a/src/test/java/org/olat/user/UserTest.java b/src/test/java/org/olat/user/UserTest.java
index 7913e1f6282..fc276ac5e41 100644
--- a/src/test/java/org/olat/user/UserTest.java
+++ b/src/test/java/org/olat/user/UserTest.java
@@ -92,7 +92,7 @@ public class UserTest extends OlatTestCase {
 			u1.setProperty(UserConstants.INSTITUTIONALEMAIL, "instjudihui@id.uzh.ch");
 			u1.setProperty(UserConstants.INSTITUTIONALNAME, "id.uzh.ch");
 			u1.setProperty(UserConstants.INSTITUTIONALUSERIDENTIFIER, "id.uzh.ch");
-			i1 = sm.createAndPersistIdentityAndUser(u1.getProperty(UserConstants.LASTNAME, new Locale("en")),u1,"OLAT",u1.getProperty(UserConstants.LASTNAME, new Locale("en")),"");
+			i1 = sm.createAndPersistIdentityAndUser(u1.getProperty(UserConstants.LASTNAME, new Locale("en")), null, u1, "OLAT", u1.getProperty(UserConstants.LASTNAME, new Locale("en")),"");
 		} else {
 			System.out.println("Does not create user, found 'judihui' already in db");
 			i1 = sm.findIdentityByName("judihui");
@@ -103,7 +103,7 @@ public class UserTest extends OlatTestCase {
 			u2.setProperty(UserConstants.INSTITUTIONALEMAIL, "instmigros@id.migros.uzh.ch");
 			u2.setProperty(UserConstants.INSTITUTIONALNAME, "id.migros.uzh.ch");
 			u2.setProperty(UserConstants.INSTITUTIONALUSERIDENTIFIER, "id.uzh.ch");
-			i2 = sm.createAndPersistIdentityAndUser(u2.getProperty(UserConstants.LASTNAME, new Locale("en")),u2,"OLAT",u2.getProperty(UserConstants.LASTNAME, new Locale("en")),"");
+			i2 = sm.createAndPersistIdentityAndUser(u2.getProperty(UserConstants.LASTNAME, new Locale("en")), null, u2, "OLAT", u2.getProperty(UserConstants.LASTNAME, new Locale("en")),"");
 		} else {
 			System.out.println("Does not create user, found 'migros' already in db");
 			i2 = sm.findIdentityByName("migros");
@@ -114,7 +114,7 @@ public class UserTest extends OlatTestCase {
 			u3.setProperty(UserConstants.INSTITUTIONALEMAIL,"instsalat@id.salat.uzh.ch");
 			u3.setProperty(UserConstants.INSTITUTIONALNAME, "id.salat.uzh.ch");
 			u3.setProperty(UserConstants.INSTITUTIONALUSERIDENTIFIER, "id.uzh.ch");
-			i3 = sm.createAndPersistIdentityAndUser(u3.getProperty(UserConstants.LASTNAME, new Locale("en")),u3,"OLAT",u3.getProperty(UserConstants.LASTNAME, new Locale("en")),"");
+			i3 = sm.createAndPersistIdentityAndUser(u3.getProperty(UserConstants.LASTNAME, new Locale("en")), null, u3," OLAT", u3.getProperty(UserConstants.LASTNAME, new Locale("en")),"");
 		} else {
 			System.out.println("Does not create user, found 'salat' already in db");
 			i3 = sm.findIdentityByName("salat");
@@ -472,7 +472,7 @@ public class UserTest extends OlatTestCase {
 		user.setProperty(UserConstants.INSTITUTIONALEMAIL, "inst" + login + "@" + institution);
 		user.setProperty(UserConstants.INSTITUTIONALNAME, institution);
 		user.setProperty(UserConstants.INSTITUTIONALUSERIDENTIFIER, institution);
-		Identity identity = securityManager.createAndPersistIdentityAndUser(login, user, "OLAT", login,"secret");
+		Identity identity = securityManager.createAndPersistIdentityAndUser(login, null, user, "OLAT", login,"secret");
 		return identity;
 	}
 
-- 
GitLab