diff --git a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/dataset/DeleteDataSetExecutor.java b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/dataset/DeleteDataSetExecutor.java
index 069575b237b748867409311c04c6e7b46086e468..dda39378f941b7fc7f3fe905441f0852e4c90438 100644
--- a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/dataset/DeleteDataSetExecutor.java
+++ b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/dataset/DeleteDataSetExecutor.java
@@ -37,6 +37,7 @@ import ch.systemsx.cisd.openbis.generic.server.business.bo.ITrashBO;
 import ch.systemsx.cisd.openbis.generic.shared.dto.DataPE;
 import ch.systemsx.cisd.openbis.generic.shared.dto.DataSetRelationshipPE;
 import ch.systemsx.cisd.openbis.generic.shared.dto.DeletionPE;
+import ch.systemsx.cisd.openbis.generic.shared.dto.ExternalDataPE;
 import ch.systemsx.cisd.openbis.generic.shared.dto.Session;
 import ch.systemsx.cisd.openbis.generic.shared.util.RelationshipUtils;
 
@@ -60,7 +61,16 @@ public class DeleteDataSetExecutor extends AbstractDeleteEntityExecutor<IDeletio
     @Override
     protected void checkAccess(IOperationContext context, IDataSetId entityId, DataPE entity)
     {
-        if (false == new SimpleSpaceValidator().doValidation(context.getSession().tryGetPerson(), entity.getSpace()))
+        boolean isStorageConfirmed;
+        if (entity instanceof ExternalDataPE)
+        {
+            isStorageConfirmed = ((ExternalDataPE) entity).isStorageConfirmation();
+        } else
+        {
+            isStorageConfirmed = true;
+        }
+
+        if (isStorageConfirmed && false == new SimpleSpaceValidator().doValidation(context.getSession().tryGetPerson(), entity.getSpace()))
         {
             throw new UnauthorizedObjectAccessException(entityId);
         }
diff --git a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/dataset/UpdateDataSetExecutor.java b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/dataset/UpdateDataSetExecutor.java
index 4971b5c52bb4a32c0823b2fc4b2fd68b6b8100a2..507ac13b9f3fc1ded5f6cff252951a8896751447 100644
--- a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/dataset/UpdateDataSetExecutor.java
+++ b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/dataset/UpdateDataSetExecutor.java
@@ -41,6 +41,7 @@ import ch.systemsx.cisd.openbis.generic.server.authorization.validator.DataSetPE
 import ch.systemsx.cisd.openbis.generic.server.business.bo.DataAccessExceptionTranslator;
 import ch.systemsx.cisd.openbis.generic.server.dataaccess.IDAOFactory;
 import ch.systemsx.cisd.openbis.generic.shared.dto.DataPE;
+import ch.systemsx.cisd.openbis.generic.shared.dto.ExternalDataPE;
 import ch.systemsx.cisd.openbis.generic.shared.dto.PersonPE;
 import ch.systemsx.cisd.openbis.generic.shared.dto.properties.EntityKind;
 import ch.systemsx.cisd.openbis.generic.shared.util.RelationshipUtils;
@@ -100,7 +101,17 @@ public class UpdateDataSetExecutor extends AbstractUpdateEntityExecutor<DataSetU
     @Override
     protected void checkAccess(IOperationContext context, IDataSetId id, DataPE entity)
     {
-        if (false == new DataSetPEByExperimentOrSampleIdentifierValidator().doValidation(context.getSession().tryGetPerson(), entity))
+        boolean isStorageConfirmed;
+        if (entity instanceof ExternalDataPE)
+        {
+            isStorageConfirmed = ((ExternalDataPE) entity).isStorageConfirmation();
+        } else
+        {
+            isStorageConfirmed = true;
+        }
+
+        if (isStorageConfirmed
+                && false == new DataSetPEByExperimentOrSampleIdentifierValidator().doValidation(context.getSession().tryGetPerson(), entity))
         {
             throw new UnauthorizedObjectAccessException(id);
         }
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/validator/AbstractDataSetByExperimentOrSampleIdentifierValidator.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/validator/AbstractDataSetByExperimentOrSampleIdentifierValidator.java
index ff4c3d90bd361747d74ad77b34aae8441792a064..55699dfaf54b5fb6a69a03009ce0b7977cade4cb 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/validator/AbstractDataSetByExperimentOrSampleIdentifierValidator.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/validator/AbstractDataSetByExperimentOrSampleIdentifierValidator.java
@@ -33,10 +33,6 @@ public abstract class AbstractDataSetByExperimentOrSampleIdentifierValidator<DAT
     @Override
     public boolean doValidation(PersonPE person, final DATA_SET dataSet)
     {
-        if (StorageConfirmedForAdminValidator.isValid(person, isStorageConfirmed(dataSet)) == false)
-        {
-            return false;
-        }
         if (getExperimentIdentifier(dataSet) != null)
         {
             return experimentValidator.isValid(person, new IIdentifierHolder()