diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/HierarchicalContentTraverseUtil.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/HierarchicalContentTraverseUtil.java
index c50a3bfc6e618e87f649b2278c65cd23d76e4b5b..e84495ce74348c92a1a8859514020fcfb3015f87 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/HierarchicalContentTraverseUtil.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/HierarchicalContentTraverseUtil.java
@@ -16,8 +16,11 @@
 
 package ch.systemsx.cisd.openbis.dss.generic.shared;
 
+import java.util.List;
+
 import ch.systemsx.cisd.common.io.IHierarchicalContent;
 import ch.systemsx.cisd.common.io.IHierarchicalContentNode;
+import ch.systemsx.cisd.common.utilities.HierarchicalContentUtils;
 
 /**
  * A utility class to abstract traversing of {@link IHierarchicalContentNode}-s.
@@ -59,7 +62,9 @@ public class HierarchicalContentTraverseUtil
         visitor.visit(node);
         if (node.isDirectory())
         {
-            for (IHierarchicalContentNode child : node.getChildNodes())
+            List<IHierarchicalContentNode> children = node.getChildNodes();
+            HierarchicalContentUtils.sortNodes(children);
+            for (IHierarchicalContentNode child : children)
             {
                 visit(child, visitor);
             }