diff --git a/src/caosdb/apiutils.py b/src/caosdb/apiutils.py
index 297a11f0cabffd3cbf6ed06f2e246fcb5b8577aa..6602ca446d84d12944e752134d2b41ce25f8d75e 100644
--- a/src/caosdb/apiutils.py
+++ b/src/caosdb/apiutils.py
@@ -735,14 +735,14 @@ def merge_entities(entity_a: Entity, entity_b: Entity):
     for key in diff_r2["properties"]:
         if key in diff_r1["properties"]:
             if ("importance" in diff_r1["properties"][key] and
-                "importance" in diff_r2["properties"][key]):
+                    "importance" in diff_r2["properties"][key]):
                 if (diff_r1["properties"][key]["importance"] !=
-                    diff_r2["properties"][key]["importance"]):
+                        diff_r2["properties"][key]["importance"]):
                     raise NotImplementedError()
             elif ("importance" in diff_r1["properties"][key] or
                   "importance" in diff_r2["properties"][key]):
                 raise NotImplementedError()
-            
+
             for attribute in ("datatype", "unit", "value"):
                 if diff_r1["properties"][key][attribute] is None:
                     setattr(entity_a.get_property(key), attribute,
@@ -750,9 +750,17 @@ def merge_entities(entity_a: Entity, entity_b: Entity):
                 else:
                     raise RuntimeError("Merge conflict.")
         else:
-            entity_a.add_property(
-                entity_b.get_property(key),
-                importance=entity_b.get_importance(key))
+            # TODO: This is a temporary FIX for
+            #       https://gitlab.indiscale.com/caosdb/src/caosdb-pylib/-/issues/105
+            entity_a.add_property(id=entity_b.get_property(key).id,
+                                  name=entity_b.get_property(key).name,
+                                  datatype=entity_b.get_property(key).datatype,
+                                  value=entity_b.get_property(key).value,
+                                  unit=entity_b.get_property(key).unit,
+                                  importance=entity_b.get_importance(key))
+            # entity_a.add_property(
+            #     entity_b.get_property(key),
+            #     importance=entity_b.get_importance(key))
 
     for special_attribute in ("name", "description"):
         sa_a = getattr(entity_a, special_attribute)
diff --git a/unittests/test_apiutils.py b/unittests/test_apiutils.py
index 1dab18a321ad2c0229a79fe7a462a2e39487311f..daa1e1c390ec81cc90c5834b61733b5c9e26925c 100644
--- a/unittests/test_apiutils.py
+++ b/unittests/test_apiutils.py
@@ -35,6 +35,8 @@ from caosdb.apiutils import (apply_to_ids, compare_entities, create_id_query,
 
 from .test_property import testrecord
 
+import pytest
+
 
 def test_convert_object():
     r2 = db.apiutils.convert_to_python_object(testrecord)
@@ -251,3 +253,69 @@ def test_copy_entities():
         assert c.properties[i] != r.properties[i]
         assert c.properties[i].value == r.properties[i].value
         assert c.get_importance(c.properties[i]) == r.get_importance(r.properties[i])
+
+
+def test_merge_entities():
+    r = db.Record(name="A")
+    r.add_parent(name="B")
+    r.add_property(name="C", value=4, importance="OBLIGATORY")
+    r.add_property(name="D", value=[3, 4, 7], importance="OBLIGATORY")
+    r.description = "A fancy test record"
+
+    r2 = db.Record()
+    r2.add_property(name="F", value="text")
+    merge_entities(r2, r)
+    assert r2.get_parents()[0].name == "B"
+    assert r2.get_property("C").name == "C"
+    assert r2.get_property("C").value == 4
+    assert r2.get_property("D").name == "D"
+    assert r2.get_property("D").value == [3, 4, 7]
+
+    assert r2.get_property("F").name == "F"
+    assert r2.get_property("F").value == "text"
+
+
+def test_merge_bug_109():
+    rt = db.RecordType(name="TestBug")
+    p = db.Property(name="test_bug_property", datatype=db.LIST(db.INTEGER))
+
+    r_b = db.Record(name="TestRecord")
+    r_b.add_parent(rt)
+    r_b.add_property(p, value=[18, 19])
+
+    r_a = db.Record(name="TestRecord")
+    r_a.add_parent(rt)
+
+    merge_entities(r_a, r_b)
+
+    assert r_b.get_property("test_bug_property").value == [18, 19]
+    assert r_a.get_property("test_bug_property").value == [18, 19]
+
+    assert "<Value>18</Value>\n    <Value>19</Value>" in str(r_b)
+    assert "<Value>18</Value>\n    <Value>19</Value>\n    <Value>18</Value>\n    <Value>19</Value>" not in str(r_b)
+
+    assert "<Value>18</Value>\n    <Value>19</Value>" in str(r_a)
+    assert "<Value>18</Value>\n    <Value>19</Value>\n    <Value>18</Value>\n    <Value>19</Value>" not in str(r_a)
+
+
+@pytest.mark.xfail
+def test_bug_109():
+    rt = db.RecordType(name="TestBug")
+    p = db.Property(name="test_bug_property", datatype=db.LIST(db.INTEGER))
+
+    r_b = db.Record(name="TestRecord")
+    r_b.add_parent(rt)
+    r_b.add_property(p, value=[18, 19])
+
+    r_a = db.Record(name="TestRecord")
+    r_a.add_parent(rt)
+    r_a.add_property(r_b.get_property("test_bug_property"))
+
+    assert r_b.get_property("test_bug_property").value == [18, 19]
+    assert r_a.get_property("test_bug_property").value == [18, 19]
+
+    assert "<Value>18</Value>\n    <Value>19</Value>" in str(r_b)
+    assert "<Value>18</Value>\n    <Value>19</Value>\n    <Value>18</Value>\n    <Value>19</Value>" not in str(r_b)
+
+    assert "<Value>18</Value>\n    <Value>19</Value>" in str(r_a)
+    assert "<Value>18</Value>\n    <Value>19</Value>\n    <Value>18</Value>\n    <Value>19</Value>" not in str(r_a)