diff --git a/uffd/group/models.py b/uffd/group/models.py
index 98b60453878aab5e494f898e029d9779e995350d..5006c097a3878e47c8fac2fcef188824f404048a 100644
--- a/uffd/group/models.py
+++ b/uffd/group/models.py
@@ -25,7 +25,7 @@ class Group():
 
 	@classmethod
 	def from_ldap_dn(cls, dn):
-		conn = ldap.service_conn()
+		conn = ldap.get_conn()
 		conn.search(dn, '(objectClass=groupOfUniqueNames)')
 		if not len(conn.entries) == 1:
 			return None
diff --git a/uffd/group/views.py b/uffd/group/views.py
index 35ad425d41ab871e55efcee4736fc009732390b8..1c6bcf2ef60b53dd6d3f967d992007a10de9bddb 100644
--- a/uffd/group/views.py
+++ b/uffd/group/views.py
@@ -1,7 +1,7 @@
 from flask import Blueprint, current_app, render_template
 
 from uffd.navbar import register_navbar
-from uffd.ldap import service_conn, escape_filter_chars
+from uffd.ldap import get_conn, escape_filter_chars
 
 from .models import Group
 
@@ -10,7 +10,7 @@ bp = Blueprint("group", __name__, template_folder='templates', url_prefix='/grou
 @bp.route("/")
 @register_navbar('Groups', icon='layer-group', blueprint=bp)
 def group_list():
-	conn = service_conn()
+	conn = get_conn()
 	conn.search(current_app.config["LDAP_BASE_GROUPS"], '(objectclass=groupOfUniqueNames)')
 	groups = []
 	for i in conn.entries:
@@ -19,7 +19,7 @@ def group_list():
 
 @bp.route("/<int:gid>")
 def group_show(gid):
-	conn = service_conn()
+	conn = get_conn()
 	conn.search(current_app.config["LDAP_BASE_GROUPS"], '(&(objectclass=groupOfUniqueNames)(gidNumber={}))'.format((escape_filter_chars(gid))))
 	assert len(conn.entries) == 1
 	group = Group.from_ldap(conn.entries[0])
diff --git a/uffd/ldap/__init__.py b/uffd/ldap/__init__.py
index 61ffb9e0dde2158e82c80db24f77de409468ad95..b57cd78472b79aea9bd586629d81f1e105e199de 100644
--- a/uffd/ldap/__init__.py
+++ b/uffd/ldap/__init__.py
@@ -1,4 +1,4 @@
 from .ldap import bp as ldap_bp
-from .ldap import service_conn, user_conn, escape_filter_chars, uid_to_dn, loginname_to_dn, get_next_uid
+from .ldap import get_conn, escape_filter_chars, uid_to_dn, loginname_to_dn, get_next_uid
 
 bp = [ldap_bp]
diff --git a/uffd/ldap/ldap.py b/uffd/ldap/ldap.py
index a9068cc7c1d913b8584cd795c2a4bfdda9887cfc..760ae0929ce08b2e9e559595240bbf0e1ca55ca5 100644
--- a/uffd/ldap/ldap.py
+++ b/uffd/ldap/ldap.py
@@ -16,11 +16,14 @@ def fix_connection(conn):
 def service_conn():
 	server = Server(current_app.config["LDAP_SERVICE_URL"], get_info=ALL)
 	conn = Connection(server, current_app.config["LDAP_SERVICE_BIND_DN"], current_app.config["LDAP_SERVICE_BIND_PASSWORD"], auto_bind=True)
-	return fix_connection(conn)
 
 def user_conn():
 	pass
 
+def get_conn():
+	conn = service_conn()
+	return fix_connection(conn)
+
 def uid_to_dn(uid):
 	conn = service_conn()
 	conn.search(current_app.config["LDAP_BASE_USER"], '(&(objectclass=person)(uidNumber={}))'.format(escape_filter_chars(uid)))
diff --git a/uffd/user/models.py b/uffd/user/models.py
index 8d889a1fc3bc4adba5a908835d2c9ce06da00697..d4d3fb39e8d48120971b77ae43d63cfabe33cd32 100644
--- a/uffd/user/models.py
+++ b/uffd/user/models.py
@@ -35,14 +35,14 @@ class User():
 
 	@classmethod
 	def from_ldap_dn(cls, dn):
-		conn = ldap.service_conn()
+		conn = ldap.get_conn()
 		conn.search(dn, '(objectClass=person)')
 		if not len(conn.entries) == 1:
 			return None
 		return User.from_ldap(conn.entries[0])
 
 	def to_ldap(self, new):
-		conn = ldap.service_conn()
+		conn = ldap.get_conn()
 		if new:
 			attributes= {
 				'uidNumber': ldap.get_next_uid(),
diff --git a/uffd/user/views.py b/uffd/user/views.py
index b6633bbb83cc0ea1dd03894547c14d1a40aeb352..31ef6989557baab6d319adb83e3df828650402d9 100644
--- a/uffd/user/views.py
+++ b/uffd/user/views.py
@@ -4,14 +4,14 @@ from uffd.navbar import register_navbar
 from uffd.csrf import csrf_protect
 
 from .models import User
-from uffd.ldap import service_conn, escape_filter_chars
+from uffd.ldap import get_conn, escape_filter_chars
 
 bp = Blueprint("user", __name__, template_folder='templates', url_prefix='/user/')
 
 @bp.route("/")
 @register_navbar('Users', icon='users', blueprint=bp)
 def user_list():
-	conn = service_conn()
+	conn = get_conn()
 	conn.search(current_app.config["LDAP_BASE_USER"], '(objectclass=person)')
 	users = []
 	for i in conn.entries:
@@ -25,7 +25,7 @@ def user_show(uid=None):
 		user = User()
 		ldif = '<none yet>'
 	else:
-		conn = service_conn()
+		conn = get_conn()
 		conn.search(current_app.config["LDAP_BASE_USER"], '(&(objectclass=person)(uidNumber={}))'.format((escape_filter_chars(uid))))
 		assert len(conn.entries) == 1
 		user = User.from_ldap(conn.entries[0])
@@ -35,7 +35,7 @@ def user_show(uid=None):
 @bp.route("/<int:uid>/update", methods=['POST'])
 @bp.route("/new", methods=['POST'])
 def user_update(uid=False):
-	conn = service_conn()
+	conn = get_conn()
 	if uid:
 		conn.search(current_app.config["LDAP_BASE_USER"], '(&(objectclass=person)(uidNumber={}))'.format((escape_filter_chars(uid))))
 		assert len(conn.entries) == 1
@@ -62,7 +62,7 @@ def user_update(uid=False):
 @csrf_protect
 @bp.route("/<int:uid>/del")
 def user_delete(uid):
-	conn = service_conn()
+	conn = get_conn()
 	conn.search(current_app.config["LDAP_BASE_USER"], '(&(objectclass=person)(uidNumber={}))'.format((escape_filter_chars(uid))))
 	assert len(conn.entries) == 1
 	if conn.delete(conn.entries[0].entry_dn):