diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/predicate/DataSetUpdatesCollectionPredicate.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/predicate/DataSetUpdatesCollectionPredicate.java
index 818012ea1d9ac4ccdc4ac5763fabb704c3de20bf..524376b416867098416b71c2745af301631922e5 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/predicate/DataSetUpdatesCollectionPredicate.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/predicate/DataSetUpdatesCollectionPredicate.java
@@ -73,6 +73,12 @@ public class DataSetUpdatesCollectionPredicate extends
     protected Status doEvaluation(PersonPE person, List<RoleWithIdentifier> allowedRoles,
             List<? extends DataSetUpdatesDTO> value)
     {
+        // Skip all further checks if the person has instance-wide write permissions.
+        if (hasInstanceWritePermissions(person, allowedRoles).isOK())
+        {
+            return Status.OK;
+        }
+
         List<TechId> techIds = new ArrayList<TechId>();
         List<SampleOwnerIdentifier> sampleIdentifiers = new ArrayList<SampleOwnerIdentifier>();
         for (DataSetUpdatesDTO dataSetUpdates : value)
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/predicate/ExperimentUpdatesPredicate.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/predicate/ExperimentUpdatesPredicate.java
index e3b4b535ad782349ae84524e0414b72d0fffddc9..2545969c4859f94b2f7d8b996a56941f54840549 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/predicate/ExperimentUpdatesPredicate.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/predicate/ExperimentUpdatesPredicate.java
@@ -58,11 +58,18 @@ public class ExperimentUpdatesPredicate extends AbstractPredicate<ExperimentUpda
     }
 
     @Override
-    protected
-    Status doEvaluation(final PersonPE person, final List<RoleWithIdentifier> allowedRoles,
+    protected Status doEvaluation(final PersonPE person,
+            final List<RoleWithIdentifier> allowedRoles,
             final ExperimentUpdatesDTO updates)
     {
         assert experimentTechIdPredicate.initialized : "Predicate has not been initialized";
+
+        // Skip all further checks if the person has instance-wide write permissions.
+        if (hasInstanceWritePermissions(person, allowedRoles).isOK())
+        {
+            return Status.OK;
+        }
+
         Status status;
         status =
                 experimentTechIdPredicate.doEvaluation(person, allowedRoles, updates
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/predicate/NewExternalDataPredicate.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/predicate/NewExternalDataPredicate.java
index 28a8f8cc8a8d6a188fbe233d896e5786e2afe2b0..20a4598e7d5a4f476f6b092494fdf5b983e46e7a 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/predicate/NewExternalDataPredicate.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/predicate/NewExternalDataPredicate.java
@@ -59,6 +59,12 @@ public class NewExternalDataPredicate extends AbstractPredicate<NewExternalData>
     protected Status doEvaluation(PersonPE person, List<RoleWithIdentifier> allowedRoles,
             NewExternalData value)
     {
+        // Skip all further checks if the person has instance-wide write permissions.
+        if (hasInstanceWritePermissions(person, allowedRoles).isOK())
+        {
+            return Status.OK;
+        }
+
         SampleIdentifier sampleIdentifier = value.getSampleIdentifierOrNull();
         if (sampleIdentifier != null)
         {
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/predicate/SampleOwnerIdentifierPredicate.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/predicate/SampleOwnerIdentifierPredicate.java
index 0e029cd058bf183e54539436a8878c2c922077b6..f170ba2085d1a3d3d54140fe35eb7b52ccef3099 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/predicate/SampleOwnerIdentifierPredicate.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/predicate/SampleOwnerIdentifierPredicate.java
@@ -83,6 +83,12 @@ public class SampleOwnerIdentifierPredicate extends AbstractPredicate<SampleOwne
     public Status performEvaluation(final PersonPE person,
             final List<RoleWithIdentifier> allowedRoles, final SampleOwnerIdentifier value)
     {
+        // Skip all further checks if the person has instance-wide write permissions.
+        if (hasInstanceWritePermissions(person, allowedRoles).isOK())
+        {
+            return Status.OK;
+        }
+
         if (value.isDatabaseInstanceLevel())
         {
             return databaseInstanceIdentifierPredicate.doEvaluation(person, allowedRoles,
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/predicate/SampleUpdatesCollectionPredicate.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/predicate/SampleUpdatesCollectionPredicate.java
index a3dc393e9453d90210523285d87bfe5a3646becc..1c2ead5fe3e22da5fc563ba45205891b1407ed15 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/predicate/SampleUpdatesCollectionPredicate.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/predicate/SampleUpdatesCollectionPredicate.java
@@ -70,6 +70,12 @@ public class SampleUpdatesCollectionPredicate extends AbstractPredicate<List<Sam
     protected Status doEvaluation(PersonPE person, List<RoleWithIdentifier> allowedRoles,
             List<SampleUpdatesDTO> value)
     {
+        // Skip all further checks if the person has instance-wide write permissions.
+        if (hasInstanceWritePermissions(person, allowedRoles).isOK())
+        {
+            return Status.OK;
+        }
+
         List<TechId> techIds = new ArrayList<TechId>(value.size());
         List<SampleOwnerIdentifier> sampleIdentifiers =
                 new ArrayList<SampleOwnerIdentifier>(value.size());
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/predicate/SpaceIdentifierPredicate.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/predicate/SpaceIdentifierPredicate.java
index 99e6feafae6dbf13c3f9d7bddce51d53a627f89c..c5a09f407c5ab67baf9a86b3a14b982cecf046e4 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/predicate/SpaceIdentifierPredicate.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/predicate/SpaceIdentifierPredicate.java
@@ -57,6 +57,12 @@ public class SpaceIdentifierPredicate extends AbstractSpacePredicate<SpaceIdenti
     protected Status doEvaluation(final PersonPE person,
             final List<RoleWithIdentifier> allowedRoles, final SpaceIdentifier spaceIdentifier)
     {
+        // Skip all further checks if the person has instance-wide write permissions.
+        if (hasInstanceWritePermissions(person, allowedRoles).isOK())
+        {
+            return Status.OK;
+        }
+
         assert initialized : "Predicate has not been initialized";
         final String spaceCode = SpaceCodeHelper.getSpaceCode(person, spaceIdentifier);
         final DatabaseInstancePE databaseInstance = getDatabaseInstance(spaceIdentifier);