diff --git a/api-openbis-python3-pybis/src/python/pybis/dataset.py b/api-openbis-python3-pybis/src/python/pybis/dataset.py
index c8ba69d1dfe70c20ec0602aa974aa69caa3b5fb9..236571ced819cc4aa6b86f4443f3bbc8236d813b 100644
--- a/api-openbis-python3-pybis/src/python/pybis/dataset.py
+++ b/api-openbis-python3-pybis/src/python/pybis/dataset.py
@@ -892,6 +892,16 @@ class DataSet(
                     "permId": DSpermId,
                     "@type": "as.dto.datastore.id.DataStorePermId",
                 }
+
+                version = self.openbis.get_server_information().openbis_version
+                if version is not None:
+                    if 'SNAPSHOT' not in version and not version.startswith(
+                            '7') and 'UNKNOWN' not in version:
+                        if (request['method'] in ('createDataSetTypes', 'createDataSets')
+                                and 'metaData' in request['params'][1][0]):
+                            del request['params'][1][0]['metaData']
+
+
                 resp = self.openbis._post_request(self.openbis.as_v3, request)
 
                 if VERBOSE:
@@ -908,6 +918,14 @@ class DataSet(
             props = self.formatter.format(self.p._all_props())
             request["params"][1][0]["properties"] = props
 
+            version = self.openbis.get_server_information().openbis_version
+            if version is not None:
+                if 'SNAPSHOT' not in version and not version.startswith(
+                        '7') and 'UNKNOWN' not in version:
+                    if (request['method'] in ('updateDataSetTypes', 'updateDataSets')
+                            and 'metaData' in request['params'][1][0]):
+                        del request['params'][1][0]['metaData']
+
             self.openbis._post_request(self.openbis.as_v3, request)
             if VERBOSE:
                 print("DataSet successfully updated.")
diff --git a/api-openbis-python3-pybis/src/python/pybis/openbis_object.py b/api-openbis-python3-pybis/src/python/pybis/openbis_object.py
index 195fcbe9dc98a620fa39918e87e75829d890be4d..8f12de6b0d4cb244c48af1643aa97989819a533a 100644
--- a/api-openbis-python3-pybis/src/python/pybis/openbis_object.py
+++ b/api-openbis-python3-pybis/src/python/pybis/openbis_object.py
@@ -233,7 +233,9 @@ class OpenBisObject:
                 if 'SNAPSHOT' not in version and not version.startswith('7') and 'UNKNOWN' not in version:
                     if request['method'] == 'createPropertyTypes' and 'multiValue' in request['params'][1][0]:
                         del request['params'][1][0]['multiValue']
-                    if (request['method'] in ('createSampleTypes', 'createExperimentTypes', 'createDataSetTypes')
+                    if (request['method'] in ('createSampleTypes', 'createSamples',
+                                              'createExperimentTypes', 'createExperiments',
+                                              'createDataSetTypes', 'createDataSets')
                             and 'metaData' in request['params'][1][0]):
                         del request['params'][1][0]['metaData']
 
@@ -255,7 +257,9 @@ class OpenBisObject:
             version = self.openbis.get_server_information().openbis_version
             if version is not None:
                 if 'SNAPSHOT' not in version and not version.startswith('7') and 'UNKNOWN' not in version:
-                    if (request['method'] in ('updateSampleTypes', 'updateExperimentTypes', 'updateDataSetTypes')
+                    if (request['method'] in ('updateSampleTypes', 'updateSamples',
+                                              'updateExperimentTypes', 'updateExperiments',
+                                              'updateDataSetTypes', 'updateDataSets')
                             and 'metaData' in request['params'][1][0]):
                         del request['params'][1][0]['metaData']
 
@@ -327,11 +331,14 @@ class Transaction:
 
         import copy
 
+        version = None
         for entity_type in self.entities:
             for mode in self.entities[entity_type]:
 
                 request_coll = []
                 for entity in self.entities[entity_type][mode]:
+                    if version is None:
+                        version = entity.openbis.get_server_information().openbis_version
                     if mode == "delete":
                         delete_options = get_type_for_entity(entity_type, "delete")
                         delete_options["reason"] = self.reason
@@ -374,6 +381,22 @@ class Transaction:
                     else:
                         raise ValueError(f"Unkown mode: {mode}")
 
+                    if version is not None:
+                        if 'SNAPSHOT' not in version and not version.startswith(
+                                '7') and 'UNKNOWN' not in version:
+                            if request['method'] == 'createPropertyTypes' and 'multiValue' in \
+                                    request['params'][1][0]:
+                                del request['params'][1][0]['multiValue']
+                            if (request['method'] in ('createSampleTypes', 'createSamples',
+                                                      'createExperimentTypes', 'createExperiments',
+                                                      'createDataSetTypes', 'createDataSets',
+                                                      'updateSampleTypes', 'updateSamples',
+                                                      'updateExperimentTypes', 'updateExperiments',
+                                                      'updateDataSetTypes', 'updateDataSets'
+                                                      )
+                                    and 'metaData' in request['params'][1][0]):
+                                del request['params'][1][0]['metaData']
+
                     request_coll.append(request)
 
                 if request_coll:
diff --git a/api-openbis-python3-pybis/src/python/tests/test_dataset.py b/api-openbis-python3-pybis/src/python/tests/test_dataset.py
index 12fb6f6933842b952947a3a04742c1661c18a907..3417b17c948852688571ec082c41dfd32642ba74 100644
--- a/api-openbis-python3-pybis/src/python/tests/test_dataset.py
+++ b/api-openbis-python3-pybis/src/python/tests/test_dataset.py
@@ -143,6 +143,8 @@ def test_create_delete_dataset(space):
     # delete datasets
     dataset.delete("dataset creation test on " + timestamp, True)
 
+    # Give openbis some time to process it
+    time.sleep(1)
     # check that permanent deletion is working
     deletions = o.get_deletions(0, 10)
     assert len(deletions) == 0