diff --git a/transporte/views.py b/transporte/views.py
index ecfbf26fadb9ff5c6bb85e7052b929d872356124..b5b5b0ea26280fbd6416ddeb802300e9e69470f6 100644
--- a/transporte/views.py
+++ b/transporte/views.py
@@ -190,12 +190,12 @@ def edit_transport(id=None):
             #
             # if ticket is new, update object with zammad ticket id
             #
-            # if transport.ticket_id is None:
-            #    transport.ticket_id = update_ticket(transport)
-            #    db.session.add(transport)
-            #    db.session.commit()
-            # else:
-            #    update_ticket(transport)
+            if transport.ticket_id is None:
+                transport.ticket_id = update_ticket(transport)
+                db.session.add(transport)
+                db.session.commit()
+            else:
+                update_ticket(transport)
 
             for file in request.files.getlist("file_upload"):
                 if file.filename:
@@ -322,8 +322,8 @@ def mark_transport(mark, id=None):
         #
         # close ticket
         #
-        # if transport.ticket_id:
-        #    close_ticket(transport, mark)
+        if transport.ticket_id:
+            close_ticket(transport, mark)
 
         db.session.add(transport)
         db.session.commit()
diff --git a/transporte/zammad_integration.py b/transporte/zammad_integration.py
index 4ac74f2f8cbe06aad7d87eedad99ad1c4e089ee8..e3ce9cb28fc29a24e8fff9e54112aa23f5846917 100644
--- a/transporte/zammad_integration.py
+++ b/transporte/zammad_integration.py
@@ -5,27 +5,28 @@ from flask import render_template
 from zammad_py import ZammadAPI
 
 
-def close_ticket(transport, reason):
-    client = ZammadAPI(
-        username=app.config["ZAMMAD_USER"],
-        password=app.config["ZAMMAD_PASS"],
-        host=app.config["ZAMMAD_HOST"],
-        is_secure=app.config["ZAMMAD_SECURE"],
+def get_client():
+    return ZammadAPI(
+        url=app.config["ZAMMAD_URL"], http_token=app.config["ZAMMAD_TOKEN"]
     )
 
+
+def get_user(email, client):
+    # very cheap userlookup.
+    # the email should be unique so we never should get more than 1 result
+    # if 0 results we need create the user
+    zammad_search_result = client.user.search(f"query=email:{email}")
+    if len(zammad_search_result) == 0:
+        return client.user.create({"firstname": email, "email": email})
+    return zammad_search_result[0]
+
+
+def close_ticket(transport, reason):
+    client = get_client()
+
     messagebody = reason
 
-    #
-    # if new helpdesk user is closing a ticket,
-    # we need to create the user in the ticket system
-    #
-    zammad_search_result = client.user.search({"query": transport.user.login})
-    if zammad_search_result:
-        zammad_user = zammad_search_result[0]
-    else:
-        zammad_user = client.user.create(
-            {"firstname": transport.user.login, "email": transport.user.login}
-        )
+    zammad_user = get_user(transport.user.login, client)
 
     ticketTemplate = {
         "id": transport.ticket_id,
@@ -50,23 +51,9 @@ def close_ticket(transport, reason):
 
 
 def update_ticket(transport):
-    client = ZammadAPI(
-        username=app.config["ZAMMAD_USER"],
-        password=app.config["ZAMMAD_PASS"],
-        host=app.config["ZAMMAD_HOST"],
-        is_secure=app.config["ZAMMAD_SECURE"],
-    )
+    client = get_client()
 
-    #
-    # Create user if not exists
-    #
-    zammad_search_result = client.user.search({"query": transport.user.login})
-    if zammad_search_result:
-        zammad_user = zammad_search_result[0]
-    else:
-        zammad_user = client.user.create(
-            {"firstname": transport.user.login, "email": transport.user.login}
-        )
+    zammad_user = get_user(transport.user.login, client)
 
     messagebody = render_template("email_transport_update.html", transport=transport)