diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/genedata/FeatureStorageProcessor.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/genedata/FeatureStorageProcessor.java
index 8dbc600d523d2d898fecb82060599c0b4fffac15..90797bd2ddc37e12aee06e46a2f678f519046d24 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/genedata/FeatureStorageProcessor.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/genedata/FeatureStorageProcessor.java
@@ -225,6 +225,12 @@ public class FeatureStorageProcessor extends AbstractDelegatingStorageProcessor
             DataSetInformation dataSetInformation)
     {
         Sample sampleOrNull = tryFindSampleForDataSet(dataSetInformation);
+        if (sampleOrNull == null)
+        {
+            throw new IllegalStateException(
+                    "Cannot find a sample to which a plate should be (directly or indirectly) connected: "
+                            + dataSetInformation);
+        }
         return ScreeningContainerDatasetInfo.createBasicScreeningDatasetInfo(dataSetInformation,
                 sampleOrNull);
     }
@@ -239,7 +245,12 @@ public class FeatureStorageProcessor extends AbstractDelegatingStorageProcessor
             for (String dataSetCode : parentDataSetCodes)
             {
                 ExternalData externalData = openBisService.tryGetDataSetForServer(dataSetCode);
-                if (externalData != null && externalData.getSample() != null)
+                if (externalData == null)
+                {
+                    throw new UserFailureException("Cannot find a parent dataset in openBIS: "
+                            + dataSetCode);
+                }
+                if (externalData.getSample() != null)
                 {
                     sampleOrNull = externalData.getSample();
                     break;