diff --git a/src/main/java/org/olat/course/certificate/manager/CertificatesManagerImpl.java b/src/main/java/org/olat/course/certificate/manager/CertificatesManagerImpl.java
index 5eaf6b7d3c2316dd96a0da6991250a064e146026..983467271e18f7b900badb470a92748cad5d2ee8 100644
--- a/src/main/java/org/olat/course/certificate/manager/CertificatesManagerImpl.java
+++ b/src/main/java/org/olat/course/certificate/manager/CertificatesManagerImpl.java
@@ -314,6 +314,8 @@ public class CertificatesManagerImpl implements CertificatesManager, MessageList
 	public CertificateImpl getCertificateById(Long key) {
 		StringBuilder sb = new StringBuilder();
 		sb.append("select cer from certificate cer")
+		  .append(" inner join fetch cer.identity ident")
+		  .append(" inner join fetch ident.user identUser")
 		  .append(" where cer.key=:certificateKey");
 		List<CertificateImpl> certificates = dbInstance.getCurrentEntityManager()
 				.createQuery(sb.toString(), CertificateImpl.class)
@@ -896,7 +898,7 @@ public class CertificatesManagerImpl implements CertificatesManager, MessageList
 	
 	private void removeLastFlag(Identity identity, Long resourceKey) {
 		StringBuilder sb = new StringBuilder();
-		sb.append("update certificate  cer set cer.last=false")
+		sb.append("update certificate cer set cer.last=false")
 		  .append(" where cer.olatResource.key=:resourceKey and cer.identity.key=:identityKey");
 		
 		dbInstance.getCurrentEntityManager().createQuery(sb.toString())
diff --git a/src/main/java/org/olat/modules/coach/manager/CoachingDAO.java b/src/main/java/org/olat/modules/coach/manager/CoachingDAO.java
index 0bc6c5bf97e4919e04688e74124b91881a78cfe5..dbb9736b5945f3d6bd3ac1068f948e42493ea74f 100644
--- a/src/main/java/org/olat/modules/coach/manager/CoachingDAO.java
+++ b/src/main/java/org/olat/modules/coach/manager/CoachingDAO.java
@@ -619,8 +619,12 @@ public class CoachingDAO {
 	
 	protected List<StudentStatEntry> getStudentsStatisticsNative(Identity coach, List<UserPropertyHandler> userPropertyHandlers) {
 		Map<Long, StudentStatEntry> map = new HashMap<>();
+		//long start1 = System.nanoTime();
 		boolean hasCoachedStudents = getStudentsStastisticInfosForCoach(coach, map, userPropertyHandlers);
+		//CodeHelper.printNanoTime(start1, "Coached infos");
+		//long start2 = System.nanoTime();
 		boolean hasOwnedStudents = getStudentsStastisticInfosForOwner(coach, map, userPropertyHandlers);
+		//CodeHelper.printNanoTime(start2, "Owned infos");
 		if(hasOwnedStudents || hasCoachedStudents) {
 			for(StudentStatEntry entry:map.values()) {
 				entry.setCountRepo(entry.getRepoIds().size());
@@ -628,7 +632,9 @@ public class CoachingDAO {
 				entry.setInitialLaunch(entry.getLaunchIds().size());
 				entry.setLaunchIds(null);
 			}
+			//long start3 = System.nanoTime();
 			getStudentsStatisticStatement(coach, hasCoachedStudents, hasOwnedStudents, map);
+			//CodeHelper.printNanoTime(start3, "Statistics students");
 			for(StudentStatEntry entry:map.values()) {
 				int notAttempted = entry.getCountRepo() - entry.getCountPassed() - entry.getCountFailed();
 				entry.setCountNotAttempted(notAttempted);
@@ -706,17 +712,17 @@ public class CoachingDAO {
 		sb.append("  ").appendToArray("sg_re.repositoryentry_id").append(" as re_ids,")
 		  .append("  ").appendToArray("pg_initial_launch.id").append(" as pg_ids")
 		  .append(" from o_repositoryentry sg_re")
+		  .append(" inner join o_re_to_group owngroup on (owngroup.fk_entry_id = sg_re.repositoryentry_id)")
+		  .append(" inner join o_bs_group_member sg_owner on (sg_owner.fk_group_id=owngroup.fk_group_id ")
+		  .append("  and owngroup.r_defgroup=").appendTrue().append(" and sg_owner.g_role='owner' and sg_owner.fk_identity_id=:coachKey)")
 		  .append(" inner join o_re_to_group togroup on (togroup.fk_entry_id = sg_re.repositoryentry_id)")
 		  .append(" inner join o_bs_group_member sg_participant on (sg_participant.fk_group_id=togroup.fk_group_id and sg_participant.g_role='participant')")
 		  .append(" inner join o_bs_identity sg_participant_id on (sg_participant_id.id=sg_participant.fk_identity_id)")
 		  .append(" inner join o_user sg_participant_user on (sg_participant_user.user_id=sg_participant_id.fk_user_id)")
 		  .append(" left join o_as_user_course_infos pg_initial_launch")
-		  .append("   on (pg_initial_launch.fk_resource_id = sg_re.fk_olatresource and pg_initial_launch.fk_identity = sg_participant.fk_identity_id)")
+		  .append("   on (pg_initial_launch.fk_resource_id = sg_re.fk_olatresource and pg_initial_launch.fk_identity = sg_participant_id.id)")
 		  .append(" where sg_re.accesscode >= ").append(RepositoryEntry.ACC_OWNERS).append(" and sg_re.fk_olatresource in (")
 		  .append("  select sg_res.resource_id from o_olatresource sg_res where sg_res.resname = 'CourseModule'")
-		  .append(" ) and exists (")
-		  .append("  select owngroup.id from o_re_to_group owngroup inner join o_bs_group_member sg_owner on (sg_owner.fk_group_id=owngroup.fk_group_id)")
-		  .append("  where owngroup.fk_entry_id = sg_re.repositoryentry_id and owngroup.r_defgroup=").appendTrue().append(" and sg_owner.g_role='owner' and sg_owner.fk_identity_id=:coachKey")
 		  .append(" )")
 		  .append(" group by sg_participant_id.id, sg_participant_user.user_id");
 
@@ -745,6 +751,7 @@ public class CoachingDAO {
 					userProperties[i] = (String)rawStat[pos++];
 				}
 				entry = new StudentStatEntry(identityKey, identityName, userProperties);
+				
 				map.put(identityKey, entry);
 			}
 			appendArrayToSet(rawStat[pos++], entry.getRepoIds());
@@ -796,12 +803,13 @@ public class CoachingDAO {
 			  .append("   distinct sg_statement.id as st_id ")
 			  .append("  from o_repositoryentry sg_re ")
 			  .append("  inner join o_re_to_group togroup on (togroup.fk_entry_id = sg_re.repositoryentry_id) ")
-			  .append("  inner join o_bs_group_member sg_coach on (sg_coach.fk_group_id=togroup.fk_group_id and sg_coach.g_role = 'coach') ")
+			  .append("  inner join o_bs_group_member sg_coach on (sg_coach.fk_group_id=togroup.fk_group_id")
+			  .append("   and sg_coach.fk_identity_id=:coachKey and sg_coach.g_role = 'coach') ")
 			  .append("  inner join o_bs_group_member sg_participant on (sg_participant.fk_group_id=sg_coach.fk_group_id and sg_participant.g_role='participant') ")
 			  .append("  inner join o_as_eff_statement sg_statement ")
 			  .append("    on (sg_statement.fk_identity = sg_participant.fk_identity_id and sg_statement.fk_resource_id = sg_re.fk_olatresource) ")
-			  .append("  where sg_coach.fk_identity_id=:coachKey and ( ")
-			  .append("    (sg_re.accesscode>2 and sg_coach.g_role = 'coach') ")
+			  .append("  where  ( ")
+			  .append("    (sg_re.accesscode>2) ")
 			  .append("    or ")
 			  .append("    (sg_re.accesscode=1 and sg_re.membersonly=").appendTrue().append(")) ")
 			  .append(" )");
@@ -814,13 +822,14 @@ public class CoachingDAO {
 			sb.append("  fin_statement.id in ( select  ")
 			  .append("    distinct sg_statement.id as st_id ")
 			  .append("  from o_repositoryentry sg_re ")
-			  .append("  inner join o_re_to_group owngroup on (owngroup.fk_entry_id = sg_re.repositoryentry_id and owngroup.r_defgroup=").appendTrue().append(") ")
-			  .append("  inner join o_bs_group_member sg_owner on (sg_owner.fk_group_id=owngroup.fk_group_id and sg_owner.g_role = 'owner') ")
+			  .append("  inner join o_re_to_group owngroup on (owngroup.fk_entry_id = sg_re.repositoryentry_id ) ")
+			  .append("  inner join o_bs_group_member sg_owner on (sg_owner.fk_group_id=owngroup.fk_group_id")
+			  .append("    and sg_owner.g_role='owner' and sg_owner.fk_identity_id=:coachKey and owngroup.r_defgroup=").appendTrue().append(")")
 			  .append("  inner join o_re_to_group togroup on (togroup.fk_entry_id = sg_re.repositoryentry_id) ")
 			  .append("  inner join o_bs_group_member sg_participant on (sg_participant.fk_group_id=togroup.fk_group_id and sg_participant.g_role='participant') ")
 			  .append("  inner join o_as_eff_statement sg_statement ")
 			  .append("    on (sg_statement.fk_identity = sg_participant.fk_identity_id and sg_statement.fk_resource_id = sg_re.fk_olatresource) ")
-			  .append("  where sg_owner.fk_identity_id=:coachKey and sg_re.accesscode>=").append(RepositoryEntry.ACC_OWNERS).append(") ");
+			  .append("  where sg_re.accesscode>=").append(RepositoryEntry.ACC_OWNERS).append(") ");
 		  
 		}
 		sb.append(" group by fin_statement.fk_identity");
diff --git a/src/main/java/org/olat/user/AbstractUserPropertyHandler.java b/src/main/java/org/olat/user/AbstractUserPropertyHandler.java
index 8bcaa04d4c19cccd48c6cab05b55b501f5e254a2..988dd5d300170d0ccb1ab7af476a6c72a0eec8ea 100644
--- a/src/main/java/org/olat/user/AbstractUserPropertyHandler.java
+++ b/src/main/java/org/olat/user/AbstractUserPropertyHandler.java
@@ -152,7 +152,7 @@ public abstract class AbstractUserPropertyHandler implements UserPropertyHandler
 					value = null;
 				}
 			} catch (IllegalArgumentException | IllegalAccessException e) {
-				e.printStackTrace();
+				log.error("", e);
 			}
 			return value;
 		} else if (user != null) {
@@ -165,7 +165,7 @@ public abstract class AbstractUserPropertyHandler implements UserPropertyHandler
 	 * @param value The raw value in a 18n independent form
 	 */
 	protected void setInternalValue(User user, String value) {
-		if (user instanceof UserImpl) {
+		if (user instanceof UserImpl && getter != null) {
 			try {
 				// remove fields with null or empty value from o_userfield table (hibernate)
 				// sparse data storage
@@ -174,9 +174,11 @@ public abstract class AbstractUserPropertyHandler implements UserPropertyHandler
 				} else {
 					getter.set(user, value);
 				}
-			} catch (IllegalArgumentException |IllegalAccessException e) {
-				e.printStackTrace();
+			} catch (IllegalArgumentException | IllegalAccessException e) {
+				log.error("", e);
 			}
+		} else {
+			log.warn("Set read-only value: " + name,  null);
 		}
 	}
 
diff --git a/src/main/java/org/olat/user/UserImpl.java b/src/main/java/org/olat/user/UserImpl.java
index 00902f9f05817ad1ae07e9bc0ca1a0c9c8c46c23..4075595af4854bc526033dedfda053feee2def7d 100644
--- a/src/main/java/org/olat/user/UserImpl.java
+++ b/src/main/java/org/olat/user/UserImpl.java
@@ -121,6 +121,8 @@ public class UserImpl implements Persistable, User {
 	private String socialSecurityNumber;
 	@Column(name="u_userinterests", nullable=true, insertable=true, updatable=true)
 	private String userInterests;
+	@Column(name="u_usersearchedinterests", nullable=true, insertable=true, updatable=true)
+	private String userSearchedInterests;
 	
 	@Column(name="u_telprivate", nullable=true, insertable=true, updatable=true)
 	private String telPrivate;
diff --git a/src/main/java/org/olat/user/propertyhandlers/DateDisplayPropertyHandler.java b/src/main/java/org/olat/user/propertyhandlers/DateDisplayPropertyHandler.java
index 30b8d8b43148e3734b00ad9a8e0361999dc2480c..f770c83c5f10a7eaa097ac052b07cc8027c10b47 100644
--- a/src/main/java/org/olat/user/propertyhandlers/DateDisplayPropertyHandler.java
+++ b/src/main/java/org/olat/user/propertyhandlers/DateDisplayPropertyHandler.java
@@ -23,7 +23,6 @@ import java.util.Date;
 import java.util.Locale;
 import java.util.Map;
 
-import org.olat.basesecurity.BaseSecurityManager;
 import org.olat.core.gui.components.form.ValidationError;
 import org.olat.core.gui.components.form.flexible.FormItem;
 import org.olat.core.gui.components.form.flexible.FormItemContainer;
@@ -35,6 +34,7 @@ import org.olat.core.logging.OLog;
 import org.olat.core.logging.Tracing;
 import org.olat.core.util.StringHelper;
 import org.olat.user.AbstractUserPropertyHandler;
+import org.olat.user.UserImpl;
 
 /**
  * this class displays a static textElement. it always shows one of three dates:
@@ -73,10 +73,10 @@ public class DateDisplayPropertyHandler extends AbstractUserPropertyHandler {
 		if (DATE_TYPE_CR.equals(myName))
 			return user.getCreationDate();
 		if (DATE_TYPE_LL.equals(myName)) {
-			Identity id = BaseSecurityManager.getInstance().findIdentityByUser(user);
-			if (id != null)
+			Identity id = ((UserImpl)user).getIdentity();
+			if (id != null) {
 				return id.getLastLogin();
-
+			}
 			// huh, we didn't find this identity
 			log.warn("Couldn't find Identity for given User: " + user.getKey());
 			return new Date(0);
@@ -107,6 +107,11 @@ public class DateDisplayPropertyHandler extends AbstractUserPropertyHandler {
 		return "";
 	}
 
+	@Override
+	protected void setInternalValue(User user, String value) {
+		//read-only
+	}
+
 	@Override
 	public void updateUserFromFormItem(User user, FormItem formItem) {
 		// we do nothing here, its read-only
diff --git a/src/main/resources/database/mysql/alter_10_x_0_to_11_0_0_user.sql b/src/main/resources/database/mysql/alter_10_x_0_to_11_0_0_user.sql
index 488970c47dec17daa3b28553561ac00eeacc9c11..e2161502383a3c76179c348b861693cecaa70250 100644
--- a/src/main/resources/database/mysql/alter_10_x_0_to_11_0_0_user.sql
+++ b/src/main/resources/database/mysql/alter_10_x_0_to_11_0_0_user.sql
@@ -34,6 +34,7 @@ alter table o_user add column u_rank varchar(255);
 alter table o_user add column u_degree varchar(255);
 alter table o_user add column u_position varchar(255);
 alter table o_user add column u_userinterests varchar(255);
+alter table o_user add column u_usersearchedinterests varchar(255);
 alter table o_user add column u_officestreet varchar(255);
 alter table o_user add column u_extendedofficeaddress varchar(255);
 alter table o_user add column u_officepobox varchar(255);
@@ -147,6 +148,7 @@ update o_user set u_rank=(select propvalue from o_userproperty where user_id=fk_
 update o_user set u_degree=(select propvalue from o_userproperty where user_id=fk_user_id and propname='degree') where u_degree is null;
 update o_user set u_position=(select propvalue from o_userproperty where user_id=fk_user_id and propname='position') where u_position is null;
 update o_user set u_userinterests=(select propvalue from o_userproperty where user_id=fk_user_id and propname='userInterests') where u_userinterests is null;
+update o_user set u_usersearchedinterests=(select propvalue from o_userproperty where user_id=fk_user_id and propname='userSearchedInterests') where u_usersearchedinterests is null;
 update o_user set u_officestreet=(select propvalue from o_userproperty where user_id=fk_user_id and propname='officeStreet') where u_officestreet is null;
 update o_user set u_extendedofficeaddress=(select propvalue from o_userproperty where user_id=fk_user_id and propname='extendedOfficeAddress') where u_extendedofficeaddress is null;
 update o_user set u_officepobox=(select propvalue from o_userproperty where user_id=fk_user_id and propname='officePoBox') where u_officepobox is null;
@@ -167,6 +169,7 @@ update o_user set u_swissedupersonstudybranch1=(select propvalue from o_userprop
 update o_user set u_swissedupersonstudybranch2=(select propvalue from o_userproperty where user_id=fk_user_id and propname='swissEduPersonStudyBranch2') where u_swissedupersonstudybranch2 is null;
 update o_user set u_swissedupersonstudybranch3=(select propvalue from o_userproperty where user_id=fk_user_id and propname='swissEduPersonStudyBranch3') where u_swissedupersonstudybranch3 is null;
 
+alter table o_userproperty drop foreign key FK4B04D83FD1A80C95;
 
 drop view o_bs_identity_short_v;
 create view o_bs_identity_short_v as (
diff --git a/src/main/resources/database/mysql/setupDatabase.sql b/src/main/resources/database/mysql/setupDatabase.sql
index 269fd95b0a20724c08074a0eb57b87ea0b19e450..111fb42cdf371747c731f7ac5f7a9ed59b5ae626 100644
--- a/src/main/resources/database/mysql/setupDatabase.sql
+++ b/src/main/resources/database/mysql/setupDatabase.sql
@@ -249,6 +249,7 @@ create table if not exists o_user (
    u_degree varchar(255),
    u_position varchar(255),
    u_userinterests varchar(255),
+   u_usersearchedinterests varchar(255),
    u_officestreet varchar(255),
    u_extendedofficeaddress varchar(255),
    u_officepobox varchar(255),
@@ -2084,9 +2085,6 @@ alter table o_bs_invitation add constraint inv_to_group_group_ctx foreign key (f
 -- user
 create index usr_notification_interval_idx on o_user (notification_interval);
 
-alter table o_userproperty add index FK4B04D83FD1A80C95 (fk_user_id), add constraint FK4B04D83FD1A80C95 foreign key (fk_user_id) references o_user (user_id);
-create index propvalue_idx on o_userproperty (propvalue);
-
 -- pub sub
 create index name_idx on o_noti_pub (resname, resid, subident);
 
diff --git a/src/main/resources/database/oracle/alter_10_x_0_to_11_0_0_user.sql b/src/main/resources/database/oracle/alter_10_x_0_to_11_0_0_user.sql
index e20d44d563970060aa7f943e131f5f722ba58596..11057eb8fb4b5b329ee81ecb359236205d11d1e3 100644
--- a/src/main/resources/database/oracle/alter_10_x_0_to_11_0_0_user.sql
+++ b/src/main/resources/database/oracle/alter_10_x_0_to_11_0_0_user.sql
@@ -34,6 +34,7 @@ alter table o_user add u_rank varchar2(255 char);
 alter table o_user add u_degree varchar2(255 char);
 alter table o_user add u_position varchar2(255 char);
 alter table o_user add u_userinterests varchar2(255 char);
+alter table o_user add u_usersearchedinterests varchar2(255 char);
 alter table o_user add u_officestreet varchar2(255 char);
 alter table o_user add u_extendedofficeaddress varchar2(255 char);
 alter table o_user add u_officepobox varchar2(255 char);
@@ -147,6 +148,7 @@ update o_user set u_rank=(select propvalue from o_userproperty where user_id=fk_
 update o_user set u_degree=(select propvalue from o_userproperty where user_id=fk_user_id and propname='degree') where u_degree is null;
 update o_user set u_position=(select propvalue from o_userproperty where user_id=fk_user_id and propname='position') where u_position is null;
 update o_user set u_userinterests=(select propvalue from o_userproperty where user_id=fk_user_id and propname='userInterests') where u_userinterests is null;
+update o_user set u_usersearchedinterests=(select propvalue from o_userproperty where user_id=fk_user_id and propname='userSearchedInterests') where u_usersearchedinterests is null;
 update o_user set u_officestreet=(select propvalue from o_userproperty where user_id=fk_user_id and propname='officeStreet') where u_officestreet is null;
 update o_user set u_extendedofficeaddress=(select propvalue from o_userproperty where user_id=fk_user_id and propname='extendedOfficeAddress') where u_extendedofficeaddress is null;
 update o_user set u_officepobox=(select propvalue from o_userproperty where user_id=fk_user_id and propname='officePoBox') where u_officepobox is null;
@@ -167,6 +169,7 @@ update o_user set u_swissedupersonstudybranch1=(select propvalue from o_userprop
 update o_user set u_swissedupersonstudybranch2=(select propvalue from o_userproperty where user_id=fk_user_id and propname='swissEduPersonStudyBranch2') where u_swissedupersonstudybranch2 is null;
 update o_user set u_swissedupersonstudybranch3=(select propvalue from o_userproperty where user_id=fk_user_id and propname='swissEduPersonStudyBranch3') where u_swissedupersonstudybranch3 is null;
 
+alter table o_userproperty drop constraint FK4B04D83FD1A80C95;
 
 drop view o_bs_identity_short_v;
 create view o_bs_identity_short_v as (
diff --git a/src/main/resources/database/oracle/setupDatabase.sql b/src/main/resources/database/oracle/setupDatabase.sql
index 1b029d2accc96135998fae415686a6579376bda2..14ab79e99a52068c7b9dc82d868860ee4a5d0856 100644
--- a/src/main/resources/database/oracle/setupDatabase.sql
+++ b/src/main/resources/database/oracle/setupDatabase.sql
@@ -280,6 +280,7 @@ CREATE TABLE o_user (
    u_degree varchar2(255 char),
    u_position varchar2(255 char),
    u_userinterests varchar2(255 char),
+   u_usersearchedinterests varchar2(255 char),
    u_officestreet varchar2(255 char),
    u_extendedofficeaddress varchar2(255 char),
    u_officepobox varchar2(255 char),
@@ -2152,8 +2153,6 @@ create index idx_inv_to_group_group_ctx on o_bs_invitation (fk_group_id);
 -- user
 create index usr_notification_interval_idx on o_user (notification_interval);
 
-alter table o_userproperty add constraint FK4B04D83FD1A80C95 foreign key (fk_user_id) references o_user (user_id);
-create index FK4B04D83FD1A80C95 on o_userproperty (fk_user_id);
 create index propvalue_idx on o_userproperty (propvalue);
 
 -- pub sub
diff --git a/src/main/resources/database/postgresql/alter_10_x_0_to_11_0_0_user.sql b/src/main/resources/database/postgresql/alter_10_x_0_to_11_0_0_user.sql
index d244390e88279af8829c53164196939b4888761e..d0e26325f8fa4c2cd4a32feba9730842064de3eb 100644
--- a/src/main/resources/database/postgresql/alter_10_x_0_to_11_0_0_user.sql
+++ b/src/main/resources/database/postgresql/alter_10_x_0_to_11_0_0_user.sql
@@ -34,6 +34,7 @@ alter table o_user add column u_rank varchar(255);
 alter table o_user add column u_degree varchar(255);
 alter table o_user add column u_position varchar(255);
 alter table o_user add column u_userinterests varchar(255);
+alter table o_user add column u_usersearchedinterests varchar(255);
 alter table o_user add column u_officestreet varchar(255);
 alter table o_user add column u_extendedofficeaddress varchar(255);
 alter table o_user add column u_officepobox varchar(255);
@@ -147,6 +148,7 @@ update o_user set u_rank=(select propvalue from o_userproperty where user_id=fk_
 update o_user set u_degree=(select propvalue from o_userproperty where user_id=fk_user_id and propname='degree') where u_degree is null;
 update o_user set u_position=(select propvalue from o_userproperty where user_id=fk_user_id and propname='position') where u_position is null;
 update o_user set u_userinterests=(select propvalue from o_userproperty where user_id=fk_user_id and propname='userInterests') where u_userinterests is null;
+update o_user set u_usersearchedinterests=(select propvalue from o_userproperty where user_id=fk_user_id and propname='userSearchedInterests') where u_usersearchedinterests is null;
 update o_user set u_officestreet=(select propvalue from o_userproperty where user_id=fk_user_id and propname='officeStreet') where u_officestreet is null;
 update o_user set u_extendedofficeaddress=(select propvalue from o_userproperty where user_id=fk_user_id and propname='extendedOfficeAddress') where u_extendedofficeaddress is null;
 update o_user set u_officepobox=(select propvalue from o_userproperty where user_id=fk_user_id and propname='officePoBox') where u_officepobox is null;
@@ -167,7 +169,7 @@ update o_user set u_swissedupersonstudybranch1=(select propvalue from o_userprop
 update o_user set u_swissedupersonstudybranch2=(select propvalue from o_userproperty where user_id=fk_user_id and propname='swissEduPersonStudyBranch2') where u_swissedupersonstudybranch2 is null;
 update o_user set u_swissedupersonstudybranch3=(select propvalue from o_userproperty where user_id=fk_user_id and propname='swissEduPersonStudyBranch3') where u_swissedupersonstudybranch3 is null;
 
-
+alter table o_userproperty drop constraint FK4B04D83FD1A80C95;
 
 drop view o_bs_identity_short_v;
 create view o_bs_identity_short_v as (
diff --git a/src/main/resources/database/postgresql/setupDatabase.sql b/src/main/resources/database/postgresql/setupDatabase.sql
index 54e7ab4fdf50cacb61e264bd21c8b84fbd2e8e4e..696118b7bc475d0541e003ba599891e65fff42dc 100644
--- a/src/main/resources/database/postgresql/setupDatabase.sql
+++ b/src/main/resources/database/postgresql/setupDatabase.sql
@@ -247,6 +247,7 @@ create table o_user (
    u_degree varchar(255),
    u_position varchar(255),
    u_userinterests varchar(255),
+   u_usersearchedinterests varchar(255),
    u_officestreet varchar(255),
    u_extendedofficeaddress varchar(255),
    u_officepobox varchar(255),
@@ -2001,8 +2002,6 @@ create index idx_user_instid_idx on o_user (u_institutionaluseridentifier);
 create index idx_user_instemail_idx on o_user (u_institutionalemail);
 create index idx_user_creationdate_idx on o_user (creationdate);
 
-alter table o_userproperty add constraint FK4B04D83FD1A80C95 foreign key (fk_user_id) references o_user;
-create index FK4B04D83FD1A80C95 on o_userproperty (fk_user_id);
 create index propvalue_idx on o_userproperty (propvalue);
 
 -- pub sub
diff --git a/src/test/java/org/olat/resource/lock/pessimistic/PLockTest.java b/src/test/java/org/olat/resource/lock/pessimistic/PLockTest.java
index 23a8cfc5f07d66104baa79869998e19616a36633..edeede09513962dc47bc31bdb9eaf015a9e31573 100644
--- a/src/test/java/org/olat/resource/lock/pessimistic/PLockTest.java
+++ b/src/test/java/org/olat/resource/lock/pessimistic/PLockTest.java
@@ -466,10 +466,10 @@ public class PLockTest extends OlatTestCase {
 
 		// 4. wait till all are finished or it takes too long
 		try {
-			doneSignal.await(20, TimeUnit.SECONDS);
+			doneSignal.await(60, TimeUnit.SECONDS);
 			log.info("perf for Plocktest:testPerf(): "+(System.currentTimeMillis()-start));
 		} catch (InterruptedException e) {
-			fail("Test takes too long (more than 20s)");
+			fail("Test takes too long (more than 60s)");
 		}
 		
 		// repeat the same again - this time it should/could be faster
@@ -496,9 +496,9 @@ public class PLockTest extends OlatTestCase {
 		// 4. wait till all are finished or it takes too long
 		
 		try {
-			boolean interrupt = doneSignal.await(20, TimeUnit.SECONDS);
+			boolean interrupt = doneSignal.await(60, TimeUnit.SECONDS);
 			log.info("perf (again) for Plocktest:testPerf(): "+(System.currentTimeMillis()-start2));
-			assertTrue("Test takes too long (more than 20s)", interrupt);
+			assertTrue("Test takes too long (more than 60s)", interrupt);
 		} catch (InterruptedException e) {
 			fail("" + e.getMessage());
 		}