diff --git a/examples/set_permissions.py b/examples/set_permissions.py
index dfc0a1510823a36d963f5d868052abb17b3fe12d..5a7ecacaf8560b52d75c57fbda1d7c05c01ab719 100755
--- a/examples/set_permissions.py
+++ b/examples/set_permissions.py
@@ -25,15 +25,14 @@
 
 As a result, only a specific user or group may access it.
 
-This script assumes that data similar to the demo server of IndiScale (at
-demo.indiscale.com) exists on the server specified in the pycaosdb.ini
-configuration.
+This script assumes that the user specified in the 
+pycaosdb.ini configuration can create new entities.
 
 """
 
 import caosdb as db
 from caosdb import administration as admin
-import lxml
+from caosdb.utils.caosdb_admin import do_activate_user, do_retrieve_user, do_retrieve_role, do_create_role, do_add_user_roles, do_retrieve_user_roles
 
 
 def assert_user_and_role():
@@ -49,53 +48,35 @@ out : tuple
 
     """
     try:
-        human_user = admin._retrieve_user("jane")
-        _activate_user("jane")
-    except db.ResourceNotFoundError:
+        human_user = do_retrieve_user(user_name="jane")
+        do_activate_user(user_name="jane")
+    except db.HTTPResourceNotFoundError:
         human_user = admin._insert_user(
             "jane", password="Human_Rememberable_Password_1234", status="ACTIVE")
 
     try:
-        alien_user = admin._retrieve_user("xaxys")
-        _activate_user("xaxys")
-    except db.ResourceNotFoundError:
+        alien_user = do_retrieve_user(user_name="xaxys")
+        do_activate_user(user_name="jane")
+    except db.HTTPResourceNotFoundError:
         alien_user = admin._insert_user("xaxys", password="4321_Syxax",
                                         status="ACTIVE")
 
     # At the moment, the return value is only "ok" for successful insertions.
     try:
-        human_role = admin._retrieve_role("human")
-    except db.ResourceNotFoundError:
-        human_role = admin._insert_role("human", "An Earthling.")
+        human_role = do_retrieve_role(role_name="human")
+    except db.HTTPResourceNotFoundError:
+        human_role = do_create_role(role_name="human", role_description="An Earthling.")
 
     try:
-        alien_role = admin._retrieve_role("alien")
-    except db.ResourceNotFoundError:
-        alien_role = admin._insert_role("alien", "An Extra-terrestrial.")
+        alien_role = do_retrieve_role(role_name="alien")
+    except db.HTTPResourceNotFoundError:
+        alien_role = do_create_role(role_name="alien", role_description="An Extra-terrestrial.")
 
-    admin._set_roles("jane", ["human"])
-    admin._set_roles("xaxys", ["alien"])
+    do_add_user_roles(user_name="jane", user_roles=["human"])
+    do_add_user_roles(user_name="xaxys", user_roles=["alien"])
 
-    return (("jane", list(admin._get_roles("jane"))),
-            ("xaxys", list(admin._get_roles("xaxys"))))
-
-
-def _activate_user(user):
-    """Set the user state to "ACTIVE" if necessary.
-
-Parameters
-----------
-user : str
-    The user to activate.
-
-Returns
--------
-None
-
-    """
-    user_xml = lxml.etree.fromstring(admin._retrieve_user(user))
-    if user_xml.xpath("User")[0].attrib["status"] != "ACTIVE":
-        admin._update_user(user, status="ACTIVE")
+    return (("jane", list(do_retrieve_user_roles(user_name="jane"))),
+            ("xaxys", list(do_retrieve_user_roles(user_name="xaxys"))))
 
 
 def get_entities(count=1):
@@ -111,7 +92,7 @@ Returns
 out : Container
     A container of retrieved entities, the length is given by the parameter count.
     """
-    cont = db.execute_query("FIND RECORD Guitar", flags={
+    cont = db.execute_query("FIND RECORD 'Human Food'", flags={
                             "P": "0L{n}".format(n=count)})
     if len(cont) != count:
         raise db.CaosDBException(
@@ -221,20 +202,37 @@ None
         print("Retrieval of all entities was successfully denied.")
 
 
+def create_entities():
+    """Create some test entities.
+    After calling this function, there will be an RecordType "Human Food" with the corresponding Records
+    "Bread", "Tomatoes", and "Twinkies".
+    """
+    rt = db.RecordType(name="Human Food", description="Food that can be eaten only by humans").insert()
+    food = ("Bread", "Tomatoes", "Twinkies")
+
+    cont = db.Container()
+    for i in range(len(food)):
+        rec = db.Record(food[i])
+        rec.add_parent(name="Human Food")
+        cont.append(rec)
+
+    cont.insert()
+
+
 def main():
     """The main function of this script."""
 
-    db.connection.connection.get_connection()._login()
-
+    """Create new users"""
     human, alien = assert_user_and_role()
-
-    # public, private, undefined entities
+    """Load the newly created entities."""
     entities = get_entities(count=3)
-
+    """Set permission for the entities (only humans are allowed to eat human food)"""
     set_permission(human[1][0], alien[1][0], entities)
+    """Test the permissions"""
     test_permission((human[0], "Human_Rememberable_Password_1234"),
                     (alien[0], "4321_Syxax"), entities)
 
 
 if __name__ == "__main__":
     main()
+    # create_entities()