diff --git a/src/caosdb/apiutils.py b/src/caosdb/apiutils.py
index 30cad59276505e81049109558e524d696ce5c998..5fff7fd9312cbebfa52f38a982fdc7f58ee7c9cb 100644
--- a/src/caosdb/apiutils.py
+++ b/src/caosdb/apiutils.py
@@ -532,8 +532,8 @@ COMPARED = ["name", "role", "datatype", "description", "importance"]
 
 
 def compare_entities(old_entity, new_entity):
-    olddiff = {"properties": {}, "parents": {}}
-    newdiff = {"properties": {}, "parents": {}}
+    olddiff = {"properties": {}, "parents": []}
+    newdiff = {"properties": {}, "parents": []}
 
     if old_entity is new_entity:
         return (olddiff, newdiff)
@@ -596,10 +596,41 @@ def compare_entities(old_entity, new_entity):
 
     for parent in old_entity.parents:
         if len([0 for p in new_entity.parents if p.name == parent.name]) == 0:
-            olddiff["parents"][parent.name] = {}
+            olddiff["parents"].append(parent.name)
 
     for parent in new_entity.parents:
         if len([0 for p in old_entity.parents if p.name == parent.name]) == 0:
-            newdiff["parents"][parent.name] = {}
+            newdiff["parents"].append(parent.name)
 
     return (olddiff, newdiff)
+
+
+def describe_diff(olddiff, newdiff, as_update=True):
+    description = "## Difference between the old and the new version of {}\n\n"
+
+    for attr in list(set(list(olddiff.keys)+list(newdiff.keys))):
+        if attr == "parents" or attr == "properties":
+            continue
+        description += "{} differs:\n".format(attr)
+        description += "old version: {}\n".format(
+            olddiff[attr] if attr in olddiff else "not set")
+        description += "new version: {}\n\n".format(
+            newdiff[attr] if attr in newdiff else "not set")
+
+    if len(olddiff["parents"]) > 0:
+        description += ("Parents that are only in the old version:\n"
+                        + ", ".join(olddiff["parents"]))
+
+    if len(newdiff["parents"]) > 0:
+        description += ("Parents that are only in the new version:\n"
+                        + ", ".join(olddiff["parents"]))
+
+    for prop in list(set(list(olddiff["properties"].keys)
+                         + list(newdiff["properties"].keys))):
+        description += "property {} differs:\n".format(prop)
+        description += "old version: {}\n".format(
+            olddiff["properties"][prop] if prop
+            in olddiff["properties"] else "has none")
+        description += "new version: {}\n\n".format(
+            newdiff["properties"][prop] if prop
+            in newdiff["properties"] else "has none")