diff --git a/src/caosdb/common/models.py b/src/caosdb/common/models.py
index ac9321bbd2384694d6606460d150ef2a64e68b38..495b4de52a2fa6ac69517aad50d5f1b1605ed873 100644
--- a/src/caosdb/common/models.py
+++ b/src/caosdb/common/models.py
@@ -981,6 +981,22 @@ class Entity(object):
 
         return self
 
+    def apply_to_ids(self, func):
+        self.id = func(self.id)
+
+        for par in self.parents:
+            par.id = func(par.id)
+
+        for prop in self.properties:
+            prop.id = func(prop.id)
+            isref = is_reference(prop.datatype)
+
+            if isref:
+                if isinstance(prop.value, list):
+                    prop.value = [func(el) for el in prop.value]
+                else:
+                    prop.value = func(prop.value)
+
 
 def _parse_col_values(cdt, vals):
     matcher = re.compile(r"^(?P<col>[^<]+)<(?P<dt>[^>]+)>$")