diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/client/api/gui/AbstractTreeEntityPickerDialog.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/client/api/gui/AbstractTreeEntityPickerDialog.java
index 0daf35b55b75e23c28c316c894c34474c4d826ff..cf1bf8892c3c76d9af0870cf249b0aaeb6adae8f 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/client/api/gui/AbstractTreeEntityPickerDialog.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/client/api/gui/AbstractTreeEntityPickerDialog.java
@@ -209,8 +209,9 @@ public abstract class AbstractTreeEntityPickerDialog extends AbstractEntityPicke
                                 FilterableMutableTreeNode category =
                                         new FilterableMutableTreeNode(Identifier.create(experiment));
                                 category.add(UiUtilities.createWaitingNode());
-                                node.add(category);
+                                node.add(category, false);
                             }
+                            node.filter();
                         }
                     };
         clientModel.listExperiments(action);
@@ -231,8 +232,9 @@ public abstract class AbstractTreeEntityPickerDialog extends AbstractEntityPicke
                                 FilterableMutableTreeNode category =
                                         new FilterableMutableTreeNode(Identifier.create(sample));
                                 category.add(UiUtilities.createWaitingNode());
-                                node.add(category);
+                                node.add(category, false);
                             }
+                            node.filter();
                         }
                     };
         clientModel.listSamplesWithNoExperiments(action);
diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/client/api/gui/DataSetPickerDialog.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/client/api/gui/DataSetPickerDialog.java
index 52128a080073aedcc7afa6449d89ddd948ae8561..2553824dce0e1d89c4cfe3c320f9a7d1eb20972e 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/client/api/gui/DataSetPickerDialog.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/client/api/gui/DataSetPickerDialog.java
@@ -62,12 +62,13 @@ public class DataSetPickerDialog extends AbstractTreeEntityPickerDialog
                                 {
                                     FilterableMutableTreeNode dataSetsNode =
                                             new FilterableMutableTreeNode(UiUtilities.DATA_SETS);
-                                    node.add(dataSetsNode);
+                                    node.add(dataSetsNode, false);
                                     for (DataSet dataSet : dataSets)
                                     {
                                         dataSetsNode.add(new FilterableMutableTreeNode(Identifier
-                                                .create(dataSet)));
+                                                .create(dataSet)), false);
                                     }
+                                    dataSetsNode.filter();
                                 }
 
                                 for (Sample s : samplesDataSets.getSamples())
@@ -75,8 +76,9 @@ public class DataSetPickerDialog extends AbstractTreeEntityPickerDialog
                                     FilterableMutableTreeNode sampleNode =
                                             new FilterableMutableTreeNode(Identifier.create(s));
                                     sampleNode.add(UiUtilities.createWaitingNode());
-                                    node.add(sampleNode);
+                                    node.add(sampleNode, false);
                                 }
+                                node.filter();
                             }
                         });
         }
diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/client/api/gui/SamplePickerDialog.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/client/api/gui/SamplePickerDialog.java
index ade5d7ac7a95d389505fb627323a20137fcd8e8c..be06696239e56c0d93dcb24e4053cba83e528283 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/client/api/gui/SamplePickerDialog.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/client/api/gui/SamplePickerDialog.java
@@ -58,8 +58,9 @@ public class SamplePickerDialog extends AbstractTreeEntityPickerDialog
                                 FilterableMutableTreeNode sampleNode =
                                         new FilterableMutableTreeNode(Identifier.create(s));
                                 sampleNode.add(UiUtilities.createWaitingNode());
-                                node.add(sampleNode);
+                                node.add(sampleNode, false);
                             }
+                            node.filter();
                         }
                     };
         clientModel.listSamples(identifier, action);
diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/client/api/gui/tree/FilterableMutableTreeNode.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/client/api/gui/tree/FilterableMutableTreeNode.java
index 1333d257446ba3305bae4a492dbd57575ab8fac0..15e779b3a22509ca8c56ae7e539f08967af05eea 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/client/api/gui/tree/FilterableMutableTreeNode.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/client/api/gui/tree/FilterableMutableTreeNode.java
@@ -17,6 +17,8 @@
 package ch.systemsx.cisd.openbis.dss.client.api.gui.tree;
 
 import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
 import java.util.Enumeration;
 import java.util.regex.Pattern;
 
@@ -143,6 +145,14 @@ public class FilterableMutableTreeNode extends DefaultMutableTreeNode
                 filtered.add(o);
             }
         }
+        Collections.sort(filtered, new Comparator<Object>()
+            {
+                @Override
+                public int compare(Object o1, Object o2)
+                {
+                    return String.valueOf(o1).compareTo(String.valueOf(o2));
+                }
+            });
         setFiltered(filtered);
     }
     
@@ -198,6 +208,11 @@ public class FilterableMutableTreeNode extends DefaultMutableTreeNode
     
     @Override
     public void add(MutableTreeNode o)
+    {
+        add(o, true);
+    }
+    
+    public void add(MutableTreeNode o, boolean filter)
     {
         super.add(o);
         if (o instanceof FilterableMutableTreeNode)
@@ -205,6 +220,14 @@ public class FilterableMutableTreeNode extends DefaultMutableTreeNode
             FilterableMutableTreeNode filterableMutableTreeNode = (FilterableMutableTreeNode) o;
             filterableMutableTreeNode.setPattern(getPattern());
         }
+        if (filter)
+        {
+            filter();
+        }
+    }
+
+    public void filter()
+    {
         filter(getPattern());
     }
 
@@ -223,7 +246,7 @@ public class FilterableMutableTreeNode extends DefaultMutableTreeNode
     public void removeAllChildren()
     {
         super.removeAllChildren();
-        filter(getPattern());
+        filter();
     }