diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/screening/server/DssServiceRpcScreening.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/screening/server/DssServiceRpcScreening.java
index b9b656889e90a5bd5fab4692f7eafcef14c4fee6..a05f5ce442bab18235712d95e5fe8e9652f77cad 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/dss/screening/server/DssServiceRpcScreening.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/screening/server/DssServiceRpcScreening.java
@@ -26,6 +26,7 @@ import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.List;
+import java.util.Map;
 
 import com.csvreader.CsvReader;
 
@@ -138,25 +139,23 @@ public class DssServiceRpcScreening extends AbstractDssServiceRpc implements
     public List<ImageDatasetMetadata> listImageMetadata(String sessionToken,
             List<? extends IImageDatasetIdentifier> imageDatasets)
     {
-        try
+        ArrayList<String> datasetCodes = new ArrayList<String>();
+        for (IImageDatasetIdentifier dataset : imageDatasets)
+        {
+            datasetCodes.add(dataset.getDatasetCode());
+        }
+        Map<String, File> datasetRoots =
+                checkAccessAndGetRootDirectories(sessionToken, datasetCodes);
+        List<ImageDatasetMetadata> result = new ArrayList<ImageDatasetMetadata>();
+        for (IImageDatasetIdentifier dataset : imageDatasets)
         {
-            List<ImageDatasetMetadata> result = new ArrayList<ImageDatasetMetadata>();
-            for (IImageDatasetIdentifier dataset : imageDatasets)
+            File rootDirectoryOrNull = datasetRoots.get(dataset.getDatasetCode());
+            if (rootDirectoryOrNull != null)
             {
-                result.add(extractImageMetadata(sessionToken, dataset));
+                result.add(extractImageMetadata(dataset, rootDirectoryOrNull));
             }
-            return result;
-        } catch (IOException ex)
-        {
-            throw wrapIOException(ex);
         }
-    }
-
-    private ImageDatasetMetadata extractImageMetadata(String sessionToken,
-            IImageDatasetIdentifier dataset) throws IOException
-    {
-        File datasetRoot = checkAccessAndGetRootDirectory(sessionToken, dataset.getDatasetCode());
-        return extractImageMetadata(dataset, datasetRoot);
+        return result;
     }
 
     private static ImageDatasetMetadata extractImageMetadata(IImageDatasetIdentifier dataset,