diff --git a/src/main/java/org/olat/course/editor/MultiSPController.java b/src/main/java/org/olat/course/editor/MultiSPController.java
index a442b06916fcfca918e623c6a752ec65102e07a1..d53da1dd07c0edd2b2bbc9c213b7c5fed93afc80 100644
--- a/src/main/java/org/olat/course/editor/MultiSPController.java
+++ b/src/main/java/org/olat/course/editor/MultiSPController.java
@@ -21,6 +21,8 @@
 package org.olat.course.editor;
 
 import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -130,7 +132,10 @@ public class MultiSPController extends FormBasicController {
 
 		if(item instanceof VFSContainer) {
 			VFSContainer container = (VFSContainer)item;
-			for(VFSItem subItem:container.getItems(new MultiSPVFSItemFilter())) {	
+			List<VFSItem> subItems = container.getItems(new MultiSPVFSItemFilter());
+			Collections.sort(subItems, new VFSItemNameComparator());
+			
+			for(VFSItem subItem:subItems) {	
 				MultipleSelectionElement sel = initTreeRec(level + 1, subItem, layoutcont);
 				node.getChildren().add(sel);
 			}
@@ -233,7 +238,8 @@ public class MultiSPController extends FormBasicController {
 		}
 		
 		//recurse
-		for(MultipleSelectionElement childElement:node.getChildren()) {
+		List<MultipleSelectionElement> childElements = node.getChildren();
+		for(MultipleSelectionElement childElement:childElements) {
 			create(childElement, course, parentNode);
 		}
 	}
@@ -336,11 +342,29 @@ public class MultiSPController extends FormBasicController {
 		}
 	}
 	
-	public class MultiSPVFSItemFilter implements VFSItemFilter {
+	public static class MultiSPVFSItemFilter implements VFSItemFilter {
 		@Override
 		public boolean accept(VFSItem vfsItem) {
 			String name = vfsItem.getName();
 			return !name.startsWith(".");
 		}
 	}
+	
+	public static class VFSItemNameComparator implements Comparator<VFSItem> {
+
+		@Override
+		public int compare(VFSItem o1, VFSItem o2) {
+			if(o1 == null && o2 == null) return 0;
+			if(o1 == null) return -1;
+			if(o2 == null) return 1;
+			
+			String n1 = o1.getName();
+			String n2 = o2.getName();
+			
+			if(n1 == null && n2 == null) return 0;
+			if(n1 == null) return -1;
+			if(n2 == null) return 1;
+			return n1.compareToIgnoreCase(n2);
+		}
+	}
 }
\ No newline at end of file