diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/api/internal/authorization/ScreeningPlateListReadOnlyPredicate.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/api/internal/authorization/ScreeningPlateListReadOnlyPredicate.java
index bd25d5432b538da29960d0e8b824a92f26a2b0b4..0d8c7ec0a11a70d33d81f5e48d51d3fa33365f3d 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/api/internal/authorization/ScreeningPlateListReadOnlyPredicate.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/api/internal/authorization/ScreeningPlateListReadOnlyPredicate.java
@@ -32,6 +32,7 @@ import ch.systemsx.cisd.openbis.generic.shared.authorization.RoleWithIdentifier;
 import ch.systemsx.cisd.openbis.generic.shared.authorization.annotation.ShouldFlattenCollections;
 import ch.systemsx.cisd.openbis.generic.shared.authorization.predicate.AbstractSpacePredicate;
 import ch.systemsx.cisd.openbis.generic.shared.dto.PersonPE;
+import ch.systemsx.cisd.openbis.generic.shared.dto.exception.UndefinedSpaceException;
 import ch.systemsx.cisd.openbis.generic.shared.util.SpaceCodeHelper;
 import ch.systemsx.cisd.openbis.plugin.screening.shared.api.v1.dto.PlateIdentifier;
 
@@ -62,22 +63,27 @@ public class ScreeningPlateListReadOnlyPredicate extends
         final List<String> permIds = new ArrayList<String>(plates.size());
         for (PlateIdentifier plate : plates)
         {
+            boolean hasPermId = false;
             if (plate.getPermId() != null)
             {
                 permIds.add(plate.getPermId());
-            } else
+                hasPermId = true;
+            }
+            
+            final String spaceCodeOrNull =
+                    SpaceCodeHelper.getSpaceCode(person, plate.tryGetSpaceCode());
+            if (spaceCodeOrNull == null && hasPermId == false)
+            {
+                throw new UndefinedSpaceException();
+            }
+            if (spaceCodeOrNull != null && plate.isSharedPlate() == false)
             {
-                final String spaceCode =
-                        SpaceCodeHelper.getSpaceCode(person, plate.tryGetSpaceCode());
-                if (plate.isSharedPlate() == false)
+                final Status status =
+                        evaluate(person, allowedRoles, authorizationDataProvider
+                                .getHomeDatabaseInstance(), spaceCodeOrNull);
+                if (Status.OK.equals(status) == false)
                 {
-                    final Status status =
-                            evaluate(person, allowedRoles, authorizationDataProvider
-                                    .getHomeDatabaseInstance(), spaceCode);
-                    if (Status.OK.equals(status) == false)
-                    {
-                        return status;
-                    }
+                    return status;
                 }
             }
         }