diff --git a/tests/test_issues_server.py b/tests/test_issues_server.py
index ba2f31a3f5c2885c5eee10cedfb11be982d9ad50..e9a93685cfd222000a50b399d44ec32692137e4f 100644
--- a/tests/test_issues_server.py
+++ b/tests/test_issues_server.py
@@ -603,13 +603,104 @@ def test_issue_132():
 
 def test_issue_217():
     """Server gets list property datatype wrong if description is updated."""
+    # @review Florian Spreckelsen 2022-03-15
 
     rt = db.RecordType(name="TestRT").insert()
     # prop = db.Property(name="LP", datatype=db.LIST("TestRT")).insert()
     r = db.Record().add_parent(id=rt.id).add_property(name=rt.name,
-                                                      datatype=db.LIST(db.INTEGER),
-                                                      value=[1, 2]).insert()
+                                                      datatype=db.LIST(
+                                                          db.INTEGER),
+                                                      value=[10001, 10002])
+    assert r.get_property(rt.name).datatype == db.LIST(db.INTEGER)
+    assert r.get_property(rt.name).value == [10001, 10002]
+    r.insert()
+    assert r.get_property(rt.name).datatype == db.LIST(db.INTEGER)
+    assert r.get_property(rt.name).value == [10001, 10002]
     r.retrieve()
+    assert r.get_property(rt.name).datatype == db.LIST(db.INTEGER)
+    assert r.get_property(rt.name).value == [10001, 10002]
+    r.retrieve(flags={"cache": "false"})
+    assert r.get_property(rt.name).datatype == db.LIST(db.INTEGER)
+    assert r.get_property(rt.name).value == [10001, 10002]
     r.description = "Changed description"
     r.update()
-    r.retrieve()                # This line fails in the bug report with invalid XML.
+    assert r.get_property(rt.name).datatype == db.LIST(db.INTEGER)
+    assert r.get_property(rt.name).value == [10001, 10002]
+    # This line fails in the bug report with invalid XML.
+    r.retrieve()
+    assert r.get_property(rt.name).datatype == db.LIST(db.INTEGER)
+    assert r.get_property(rt.name).value == [10001, 10002]
+
+
+def test_issue_217_2():
+    """Server gets overridden name of property wrong when the description of record is being updated."""
+    # @review Florian Spreckelsen 2022-03-15
+
+    rt = db.RecordType(name="TestRT").insert()
+    # prop = db.Property(name="LP", datatype=db.LIST("TestRT")).insert()
+    overridden_name = "TestRT-overridden"
+    r = db.Record().add_parent(id=rt.id).add_property(name=overridden_name,
+                                                      id=rt.id)
+    assert r.get_property(overridden_name) is not None
+    assert r.get_property(overridden_name).id == rt.id
+    r.insert()
+    assert r.get_property(overridden_name) is not None
+    assert r.get_property(overridden_name).id == rt.id
+    r.retrieve()
+    assert r.get_property(overridden_name) is not None
+    assert r.get_property(overridden_name).id == rt.id
+    r.retrieve(flags={"cache": "false"})
+    assert r.get_property(overridden_name) is not None
+    assert r.get_property(overridden_name).id == rt.id
+    r.description = "Changed description"  # change description of the record
+    r.update()
+    assert r.get_property(overridden_name) is not None
+    assert r.get_property(overridden_name).id == rt.id
+    r.retrieve()
+    assert r.get_property(overridden_name) is not None
+    assert r.get_property(overridden_name).id == rt.id
+
+
+def test_issue_217_3():
+    """Server gets overridden description of property wrong when the description of record is being updated."""
+    # @review Florian Spreckelsen 2022-03-15
+
+    rt = db.RecordType(name="TestRT", description="Desc").insert()
+    # prop = db.Property(name="LP", datatype=db.LIST("TestRT")).insert()
+    r = db.Record().add_parent(id=rt.id).add_property(description="Desc-overridden",
+                                                      id=rt.id)
+    r.insert()
+    assert r.get_property(rt.name).id == rt.id
+    assert r.get_property(rt.name).description == "Desc-overridden"
+    r.retrieve()
+    assert r.get_property(rt.name).id == rt.id
+    assert r.get_property(rt.name).description == "Desc-overridden"
+    r.retrieve(flags={"cache": "false"})
+    assert r.get_property(rt.name).id == rt.id
+    assert r.get_property(rt.name).description == "Desc-overridden"
+    r.description = "Changed description"  # change description of the record
+    r.update()
+    assert r.get_property(rt.name).id == rt.id
+    assert r.get_property(rt.name).description == "Desc-overridden"
+    r.retrieve()
+    assert r.get_property(rt.name).id == rt.id
+    assert r.get_property(rt.name).description == "Desc-overridden"
+
+
+def test_issue_221():
+    """Unknown error during update of property leaving out datatype"""
+
+    rt = db.RecordType("A")
+    r = db.Record()
+    r.add_parent(rt)
+    p = db.Property(name="B", datatype=db.INTEGER)
+    r.add_property(name="B", value=5)
+    db.Container().extend([rt, r, p]).insert()
+
+    r2 = db.Record(id=r.id).retrieve()
+    r2.remove_property("B")
+    r2.add_property(p, value=7)
+    r2.update()
+    assert r2.get_property("B").value == 7
+    assert r2.get_property("B").datatype == db.INTEGER
+    assert r2.get_property("B").id == p.id