diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/server/business/SampleProvider.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/server/business/SampleProvider.java
index 37365b961e41ec753c805e4b93e1c73d5ac3fe1f..16b6498e671d6c5efd865d94b8cde19747e2f419 100644
--- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/server/business/SampleProvider.java
+++ b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/server/business/SampleProvider.java
@@ -34,8 +34,8 @@ import ch.systemsx.cisd.openbis.generic.shared.dto.Session;
  */
 class SampleProvider implements ISampleProvider
 {
-    private final IBusinessObjectFactory boFactory;
     private final Session session;
+    private final IBusinessObjectFactory boFactory;
     
     private Map<String, Sample> samplesByPermIDs;
     
@@ -55,7 +55,10 @@ class SampleProvider implements ISampleProvider
         samplesByPermIDs = new HashMap<String, Sample>();
         for (Sample sample : list)
         {
-            samplesByPermIDs.put(sample.getPermId(), sample);
+            for (Sample s = sample; s != null; s = s.getGeneratedFrom())
+            {
+                samplesByPermIDs.put(s.getPermId(), s);
+            }
         }
 
     }