diff --git a/src/main/java/org/olat/core/commons/modules/bc/meta/MetaInfoFactory.java b/src/main/java/org/olat/core/commons/modules/bc/meta/MetaInfoFactory.java
index 1f9de4902b777e242b8e140f977f8d8a52f32aa7..b75d745d2975fd34fc283d2c123728c78907e0c4 100644
--- a/src/main/java/org/olat/core/commons/modules/bc/meta/MetaInfoFactory.java
+++ b/src/main/java/org/olat/core/commons/modules/bc/meta/MetaInfoFactory.java
@@ -36,7 +36,7 @@ public class MetaInfoFactory {
 	 * @param metaInfo
 	 */
 	private MetaInfoFactory(MetaInfo metaInfo) {
-		this.metaInfo = metaInfo;
+		MetaInfoFactory.metaInfo = metaInfo;
 	}
 
 	public static MetaInfo createMetaInfoFor(OlatRelPathImpl path) {
diff --git a/src/main/java/org/olat/core/commons/modules/bc/meta/MetaInfoFormController.java b/src/main/java/org/olat/core/commons/modules/bc/meta/MetaInfoFormController.java
index c83e5d28c0eaf29fd60fb8082ab32d8e92e719de..6fb8adc2f9a3ca270c500dbd3055b1635bfa6481 100644
--- a/src/main/java/org/olat/core/commons/modules/bc/meta/MetaInfoFormController.java
+++ b/src/main/java/org/olat/core/commons/modules/bc/meta/MetaInfoFormController.java
@@ -246,7 +246,7 @@ public class MetaInfoFormController extends FormBasicController {
 
 		if (!isSubform) {
 
-			if(!meta.isDirectory()) {
+			if(meta != null && !meta.isDirectory()) {
 				Long lockedById = meta.getLockedBy();
 				//locked
 				String lockedTitle = getTranslator().translate("mf.locked");
@@ -277,21 +277,24 @@ public class MetaInfoFormController extends FormBasicController {
 			}
 			
 			// username
-			uifactory.addStaticTextElement("mf.author", meta.getHTMLFormattedAuthor(), formLayout);
+			String author = meta == null ? "" : meta.getHTMLFormattedAuthor();
+			uifactory.addStaticTextElement("mf.author", author, formLayout);
 
 			// filesize
 			uifactory.addStaticTextElement("mf.size", sizeText, formLayout);
 
 			// last modified date
-			uifactory.addStaticTextElement("mf.lastModified", StringHelper.formatLocaleDate(meta.getLastModified(), getLocale()), formLayout);
+			String lastModified = meta == null ? "" : StringHelper.formatLocaleDate(meta.getLastModified(), getLocale());
+			uifactory.addStaticTextElement("mf.lastModified", lastModified, formLayout);
 
 			// file type
 			uifactory.addStaticTextElement("mf.type", typeText, formLayout);
 
-			uifactory.addStaticTextElement("mf.downloads", String.valueOf(meta.getDownloadCount()), formLayout);
+			String downloads = meta == null ? "" : String.valueOf(meta.getDownloadCount());
+			uifactory.addStaticTextElement("mf.downloads", downloads, formLayout);
 		}
 
-		if (!isSubform && meta.isDirectory()) {
+		if (!isSubform && meta != null && meta.isDirectory()) {
 			// Don't show any meta data except title and comment if the item is
 			// a directory.
 			// Hide the metadata.
@@ -303,7 +306,9 @@ public class MetaInfoFormController extends FormBasicController {
 		if (!isSubform) {
 			final FormLayoutContainer buttonLayout = FormLayoutContainer.createButtonLayout("buttonLayout", getTranslator());
 			formLayout.add(buttonLayout);
-			uifactory.addFormSubmitButton("submit", buttonLayout);
+			if(meta != null) {
+				uifactory.addFormSubmitButton("submit", buttonLayout);
+			}
 			uifactory.addFormCancelButton("cancel", buttonLayout, ureq, getWindowControl());
 		}
 	}
diff --git a/src/main/java/org/olat/modules/vitero/ui/ViteroUserToGroupController.java b/src/main/java/org/olat/modules/vitero/ui/ViteroUserToGroupController.java
index 73e97ccd39c3f3c0ebba9cca255356b03a625ead..c6de33da2a7989635a16e103792c3c1a72444664 100644
--- a/src/main/java/org/olat/modules/vitero/ui/ViteroUserToGroupController.java
+++ b/src/main/java/org/olat/modules/vitero/ui/ViteroUserToGroupController.java
@@ -103,12 +103,35 @@ public class ViteroUserToGroupController extends BasicController {
 		tableCtr = new TableController(tableConfig, ureq, getWindowControl(), trans, true);
 		listenTo(tableCtr);
 		
-		tableCtr.addColumnDescriptor(getColumnDescriptor(Col.firstName.ordinal(), UserConstants.FIRSTNAME, ureq.getLocale()));
-		tableCtr.addColumnDescriptor(getColumnDescriptor(Col.lastName.ordinal(), UserConstants.LASTNAME, ureq.getLocale()));
-		tableCtr.addColumnDescriptor(getColumnDescriptor(Col.email.ordinal(), UserConstants.EMAIL, ureq.getLocale()));
-		tableCtr.addColumnDescriptor(new CustomRenderColumnDescriptor("user.role", Col.role.ordinal(),null, ureq.getLocale(),
-				ColumnDescriptor.ALIGNMENT_LEFT, new RoleCellRenderer(getTranslator())));
-		tableCtr.addColumnDescriptor(new SignColumnDescriptor("signin", Col.sign.ordinal(), ureq.getLocale(), getTranslator()));
+		tableCtr.addColumnDescriptor(getColumnDescriptor(Col.firstName.ordinal(), UserConstants.FIRSTNAME, getLocale()));
+		tableCtr.addColumnDescriptor(getColumnDescriptor(Col.lastName.ordinal(), UserConstants.LASTNAME, getLocale()));
+		tableCtr.addColumnDescriptor(getColumnDescriptor(Col.email.ordinal(), UserConstants.EMAIL, getLocale()));
+		tableCtr.addColumnDescriptor(new CustomRenderColumnDescriptor("user.role", Col.role.ordinal(),null, getLocale(),
+				ColumnDescriptor.ALIGNMENT_LEFT, new RoleCellRenderer(getTranslator())){
+
+			@Override
+			public int compareTo(int rowa, int rowb) {
+				Object a = table.getTableDataModel().getValueAt(rowa,dataColumn);
+				Object b = table.getTableDataModel().getValueAt(rowb,dataColumn);
+				
+				String r1 = null;
+				if(a instanceof GroupRole) {
+					r1 = ((GroupRole)a).name();
+				} else if(a instanceof String) {
+					r1 = ("owner".equals(a) || "coach".equals(a)) ? GroupRole.teamleader.name() : (String)a;
+				}
+				
+				String r2 = null;
+				if(b instanceof GroupRole) {
+					r2 = ((GroupRole)b).name();
+				} else if(b instanceof String) {
+					r2 = ("owner".equals(b) || "coach".equals(b)) ? GroupRole.teamleader.name() : (String)b;
+				}
+
+				return super.compareString(r1, r2);
+			}
+		});
+		tableCtr.addColumnDescriptor(new SignColumnDescriptor("signin", Col.sign.ordinal(), getLocale(), getTranslator()));
 		
 		tableCtr.addMultiSelectAction("signin", "signin");
 		tableCtr.addMultiSelectAction("signout", "signout");