diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/logic/ScreeningApiImpl.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/logic/ScreeningApiImpl.java
index b67b2c625aa4e2755e32d13c00ad7599725224c8..62dbfac649073242f810ed6a83ea545d4e449467 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/logic/ScreeningApiImpl.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/logic/ScreeningApiImpl.java
@@ -83,10 +83,11 @@ public class ScreeningApiImpl
         List<FeatureVectorDatasetReference> result = new ArrayList<FeatureVectorDatasetReference>();
         List<ImageDatasetReference> imageDatasets = listImageDatasets(plates);
         ISampleBO sampleBO = businessObjectFactory.createSampleBO(session);
+        Set<ExperimentPE> visitedExperiments = new HashSet<ExperimentPE>();
         for (PlateIdentifier plate : plates)
         {
             ExperimentPE experiment = tryGetExperiment(sampleBO, plate);
-            if (experiment != null)
+            if (experiment != null && visitedExperiments.contains(experiment) == false)
             {
                 List<ExternalDataPE> datasets =
                         daoFactory.getExternalDataDAO().listExternalData(experiment);
@@ -95,6 +96,7 @@ public class ScreeningApiImpl
                         ScreeningUtils.filterDatasetsByType(childrenDatasets,
                                 ScreeningConstants.IMAGE_ANALYSIS_DATASET_TYPE);
                 result.addAll(asFeatureVectorDatasets(featureVectorDatasets));
+                visitedExperiments.add(experiment);
             }
         }
         return result;