diff --git a/src/main/java/org/olat/course/CourseFactory.java b/src/main/java/org/olat/course/CourseFactory.java
index c89e4cac6db764a48fe8bae5ec7b900a109bc03c..bfe3f59174a0202b90fe876fa7f02c7e87ef0853 100644
--- a/src/main/java/org/olat/course/CourseFactory.java
+++ b/src/main/java/org/olat/course/CourseFactory.java
@@ -416,6 +416,9 @@ public class CourseFactory extends BasicManager {
 		PersistingCourseImpl targetCourse = new PersistingCourseImpl(targetRes.getResourceableId());
 		File fTargetCourseBasePath = targetCourse.getCourseBaseContainer().getBasefile();
 		
+		//close connection before file copy
+		DBFactory.getInstance(false).commitAndCloseSession();
+		
 		synchronized (sourceCourse) { // o_clusterNOK - cannot be solved with doInSync since could take too long (leads to error: "Lock wait timeout exceeded")
 			// copy configuration
 			CourseConfig courseConf = CourseConfigManagerImpl.getInstance().copyConfigOf(sourceCourse);
@@ -439,9 +442,6 @@ public class CourseFactory extends BasicManager {
 			File fSourceTaskfoldernodesFolder = new File(FolderConfig.getCanonicalRoot()
 					+ TACourseNode.getTaskFoldersPathRelToFolderRoot(sourceCourse.getCourseEnvironment()));
 			if (fSourceTaskfoldernodesFolder.exists()) FileUtils.copyDirToDir(fSourceTaskfoldernodesFolder, fTargetCourseBasePath, false, "copy task folder directories");
-
-			//make sure the DB connection is available after this point
-			DBFactory.getInstance(false).commitAndCloseSession();
 			
 			// update references
 			List<Reference> refs = referenceManager.getReferences(sourceCourse);
diff --git a/src/main/java/org/olat/group/ui/main/MemberListTableSort.java b/src/main/java/org/olat/group/ui/main/MemberListTableSort.java
index 5624d43b3da6ed8fcf84bc4e54971db535db598b..808fd2104bd96a13bd2aa7ebb24c014ac8e232d3 100644
--- a/src/main/java/org/olat/group/ui/main/MemberListTableSort.java
+++ b/src/main/java/org/olat/group/ui/main/MemberListTableSort.java
@@ -36,9 +36,7 @@ import org.olat.group.ui.main.MemberListTableModel.Cols;
  *
  */
 public class MemberListTableSort extends SortableFlexiTableModelDelegate<MemberView> {
-	
-	
-	
+
 	public MemberListTableSort(SortKey orderBy, SortableFlexiTableDataModel<MemberView> tableModel, Locale locale) {
 		super(orderBy, tableModel, locale);
 	}
@@ -46,16 +44,20 @@ public class MemberListTableSort extends SortableFlexiTableModelDelegate<MemberV
 	@Override
 	protected void sort(List<MemberView> rows) {
 		int columnIndex = getColumnIndex();
-		Cols column = Cols.values()[columnIndex];
-		switch(column) {
-			case role:
-				Collections.sort(rows, new RoleMemberViewComparator());
-				break;
-			case groups:
-				Collections.sort(rows, new GroupMemberViewComparator(getCollator()));
-				break;
-			default: {
-				super.sort(rows);
+		if(columnIndex >= AbstractMemberListController.USER_PROPS_OFFSET) {
+			super.sort(rows);
+		} else {
+			Cols column = Cols.values()[columnIndex];
+			switch(column) {
+				case role:
+					Collections.sort(rows, new RoleMemberViewComparator());
+					break;
+				case groups:
+					Collections.sort(rows, new GroupMemberViewComparator(getCollator()));
+					break;
+				default: {
+					super.sort(rows);
+				}
 			}
 		}
 	}