diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/api/v1/GeneralInformationService.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/api/v1/GeneralInformationService.java
index ad3415a3007746ee1069724e6283b261b78ed797..77a9be667a8c4819752f8994b609702d97206ee1 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/api/v1/GeneralInformationService.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/api/v1/GeneralInformationService.java
@@ -864,12 +864,13 @@ public class GeneralInformationService extends AbstractServer<IGeneralInformatio
 
         // filter by user
         final PersonPE person = getDAOFactory().getPersonDAO().tryFindPersonByUserId(userId);
-        final DataSetByExperimentIdentifierValidator validator =
+        final DataSetByExperimentIdentifierValidator experimentIdentifierValidator =
                 new DataSetByExperimentIdentifierValidator();
+
         final ArrayList<DataSet> dataSets = new ArrayList<DataSet>(allDataSets.size());
         for (DataSet dataSet : allDataSets)
         {
-            if (validator.doValidation(person, dataSet))
+            if (experimentIdentifierValidator.doValidation(person, dataSet))
             {
                 dataSets.add(dataSet);
             }
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/validator/DataSetByExperimentIdentifierValidator.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/validator/DataSetByExperimentIdentifierValidator.java
index 4556eff62638289fb31419173d0c013b731b37dc..2507f9e9bcabd998cbf4ea685be0311f376661ad 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/validator/DataSetByExperimentIdentifierValidator.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/validator/DataSetByExperimentIdentifierValidator.java
@@ -32,14 +32,16 @@ public class DataSetByExperimentIdentifierValidator extends AbstractValidator<Da
     @Override
     public boolean doValidation(PersonPE person, final DataSet value)
     {
-        return validator.isValid(person, new IIdentifierHolder()
-            {
-                @Override
-                public String getIdentifier()
-                {
-                    return value.getExperimentIdentifier();
-                }
-            });
+
+        return StorageConfirmedForAdminValidator.isValid(person, value.isStorageConfirmed())
+                && validator.isValid(person, new IIdentifierHolder()
+                    {
+                        @Override
+                        public String getIdentifier()
+                        {
+                            return value.getExperimentIdentifier();
+                        }
+                    });
     }
 
 }
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/validator/StorageConfirmedForAdminValidator.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/validator/StorageConfirmedForAdminValidator.java
index 52a86b7f003819d9bd155bc4721a76ba44175e4f..07cf24091a95f5355a51375ab326e4c8012437f6 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/validator/StorageConfirmedForAdminValidator.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/validator/StorageConfirmedForAdminValidator.java
@@ -21,13 +21,13 @@ import ch.systemsx.cisd.openbis.generic.shared.dto.PersonPE;
 import ch.systemsx.cisd.openbis.generic.shared.dto.RoleAssignmentPE;
 
 /**
- * @author Franz-Josef Elmer
+ * @author Jakub Straszewski
  */
 public class StorageConfirmedForAdminValidator extends
         AbstractValidator<ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExternalData>
 {
 
-    private boolean isPersonAllowedForNotConfirmed(PersonPE person)
+    private static boolean isPersonAllowedForNotConfirmed(PersonPE person)
     {
         for (RoleAssignmentPE role : person.getAllPersonRoles())
         {
@@ -39,10 +39,15 @@ public class StorageConfirmedForAdminValidator extends
         return false;
     }
 
+    public static boolean isValid(PersonPE person, boolean isStorageConfirmed)
+    {
+        return isStorageConfirmed || isPersonAllowedForNotConfirmed(person);
+    }
+
     @Override
     public boolean doValidation(PersonPE person,
             ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExternalData value)
     {
-        return value.isStorageConfirmation() || isPersonAllowedForNotConfirmed(person);
+        return isValid(person, value.isStorageConfirmation());
     }
 }
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/fetchoptions/datasetlister/DataSetLister.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/fetchoptions/datasetlister/DataSetLister.java
index 958f643f9ee60b614dcfaa86b63aeb2fb0ae0230..bc1aab8911633be294a0d91efd9c6ecb4f7b0bd6 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/fetchoptions/datasetlister/DataSetLister.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/fetchoptions/datasetlister/DataSetLister.java
@@ -173,6 +173,11 @@ public class DataSetLister implements IDataSetLister
         initializer.setDataSetTypeCode(dataSet.dt_code);
         initializer.setContainerDataSet(DataSetKind.CONTAINER.name().equals(
                 dataSet.dt_data_set_kind));
+        initializer.setStorageConfirmed(dataSet.ed_sc == null || dataSet.ed_sc); // if there's no
+                                                                                 // external data
+                                                                                 // than the storage
+                                                                                 // is considered
+                                                                                 // confirmed
         initializer.setLinkDataSet(DataSetKind.LINK.name().equals(dataSet.dt_data_set_kind));
         if (initializer.isLinkDataSet())
         {
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/fetchoptions/datasetlister/DataSetRecord.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/fetchoptions/datasetlister/DataSetRecord.java
index ed9c22a20cd3b40f3716818c36710c3c4f2f4992..515920cd652fdf8c24727df89714d51e7225aa29 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/fetchoptions/datasetlister/DataSetRecord.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/fetchoptions/datasetlister/DataSetRecord.java
@@ -36,6 +36,8 @@ public class DataSetRecord
 
     public String dt_data_set_kind;
 
+    public Boolean ed_sc;
+
     public String ex_code;
 
     public String sa_code;
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/fetchoptions/datasetlister/IDataSetListingQuery.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/fetchoptions/datasetlister/IDataSetListingQuery.java
index 67ee0e2aab01cb06af97d7a4be1061ddeed3b9fd..1870ea93c6dd490b652c15baf59118234519de8c 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/fetchoptions/datasetlister/IDataSetListingQuery.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/fetchoptions/datasetlister/IDataSetListingQuery.java
@@ -37,6 +37,7 @@ public interface IDataSetListingQuery extends BaseQuery
             + " ds.modification_timestamp as ds_modification_timestamp,"
             + " dt.code as dt_code, dt.data_set_kind as dt_data_set_kind,"
             + " ex.code as ex_code, "
+            + " ed.storage_confirmation as ed_sc,"
             + " sa.code as sa_code, sa.dbin_id as sa_dbin_id, sac.code as sac_code,"
             + " pe.first_name as pe_first_name, pe.last_name as pe_last_name, pe.email as pe_email, pe.user_id as pe_user_id,"
             + " mod.first_name as mod_first_name, mod.last_name as mod_last_name, mod.email as mod_email, mod.user_id as mod_user_id,"
@@ -45,6 +46,7 @@ public interface IDataSetListingQuery extends BaseQuery
             + " ld.external_code as ld_external_code, edms.id as edms_id, edms.code as edms_code, edms.label as edms_label, edms.url_template as edms_url_template, edms.is_openbis as edms_is_openbis"
             + " from data ds inner join data_set_types dt on ds.dsty_id = dt.id"
             + " inner join experiments ex on ds.expe_id = ex.id"
+            + " left outer join external_data ed on ds.id = ed.data_id"
             + " left outer join link_data ld on ds.id = ld.data_id"
             + " left outer join external_data_management_systems edms on ld.edms_id = edms.id"
             + " left outer join samples sa on ds.samp_id = sa.id"
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/api/v1/Translator.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/api/v1/Translator.java
index 87a8c6831fa56975b30b5bd5f04259dc89c069f8..75bca955dac4dd3374726951b44aeaebc917f5b2 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/api/v1/Translator.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/api/v1/Translator.java
@@ -342,6 +342,8 @@ public class Translator
         initializer.setExperimentIdentifier(externalDatum.getExperiment().getIdentifier());
         initializer.setSampleIdentifierOrNull(externalDatum.getSampleIdentifier());
         initializer.setDataSetTypeCode(externalDatum.getDataSetType().getCode());
+        initializer.setStorageConfirmed(externalDatum.isStorageConfirmation());
+
         List<IEntityProperty> properties = externalDatum.getProperties();
         for (IEntityProperty prop : properties)
         {
diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/remoteapitest/api/v1/GeneralInformationServiceJsonApiTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/remoteapitest/api/v1/GeneralInformationServiceJsonApiTest.java
index 4cfffcdcceba20ee2ef0d414b220a39c1e747269..743daa4b38b603a68cb2f133c9f6c014b6c71f8f 100644
--- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/remoteapitest/api/v1/GeneralInformationServiceJsonApiTest.java
+++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/remoteapitest/api/v1/GeneralInformationServiceJsonApiTest.java
@@ -68,6 +68,8 @@ public class GeneralInformationServiceJsonApiTest extends RemoteApiTestCase
 
     protected String sessionToken;
 
+    protected String userSessionToken;
+
     protected IGeneralInformationService createService()
     {
         return TestJsonServiceFactory.createGeneralInfoService();
@@ -78,6 +80,8 @@ public class GeneralInformationServiceJsonApiTest extends RemoteApiTestCase
     {
         generalInformationService = createService();
         sessionToken = generalInformationService.tryToAuthenticateForAllServices("test", "a");
+        userSessionToken =
+                generalInformationService.tryToAuthenticateForAllServices("test_role", "a");
     }
 
     @AfterMethod
@@ -327,6 +331,19 @@ public class GeneralInformationServiceJsonApiTest extends RemoteApiTestCase
         assertEquals(true, result.size() > 0);
     }
 
+    @Test
+    public void testListDataSetsForSampleForRegularUserDoesntIncludeStorageNonConfirmed()
+    {
+        // Search for Samples first
+        SearchCriteria sc = new SearchCriteria();
+        sc.addMatchClause(MatchClause.createPropertyMatch("ORGANISM", "HUMAN"));
+        List<Sample> samples = generalInformationService.searchForSamples(userSessionToken, sc);
+        List<DataSet> result =
+                generalInformationService.listDataSetsForSample(userSessionToken, samples.get(0),
+                        true);
+        assertEquals(0, result.size());
+    }
+
     @Test
     public void testListDataSetsForEmptySampleList()
     {
diff --git a/openbis/sourceTest/sql/postgresql/122/030=external_data.tsv b/openbis/sourceTest/sql/postgresql/122/030=external_data.tsv
index 62d8e8972a942f8a4ff5eca2abd84ace50ab143c..3b5f306416e8417d80246ce40d584af7b1e6ac6a 100644
--- a/openbis/sourceTest/sql/postgresql/122/030=external_data.tsv
+++ b/openbis/sourceTest/sql/postgresql/122/030=external_data.tsv
@@ -1,6 +1,6 @@
 2	xxx/yyy/zzz	1	1	4	U	\N	AVAILABLE	\N	\N	f	-50	t
 4	analysis/result	2	1	4	U	\N	AVAILABLE	\N	\N	f	-50	t
-5	a/1	1	1	4	U	\N	AVAILABLE	42	4711	f	42	t
+5	a/1	1	1	4	U	\N	AVAILABLE	42	4711	f	42	f
 6	a/2	2	1	4	U	\N	AVAILABLE	\N	\N	f	-50	t
 7	a/3	3	1	4	U	\N	AVAILABLE	\N	\N	f	-50	t
 8	xml/result-8	8	1	4	U	\N	AVAILABLE	\N	\N	f	-50	t