diff --git a/aleksis/apps/ldap/util/ldap_sync.py b/aleksis/apps/ldap/util/ldap_sync.py
index fd8d5209c2ed58b48b1946bd21d503f7fd9d856b..c79730ce0feacbba62b7b35fde0122c3017c8094 100644
--- a/aleksis/apps/ldap/util/ldap_sync.py
+++ b/aleksis/apps/ldap/util/ldap_sync.py
@@ -128,7 +128,7 @@ def apply_templates(value, patterns, templates, separator="|"):
 
     return value
 
-def get_ldap_value_for_field(model, field, attrs, dn, instance=None):
+def get_ldap_value_for_field(model, field, attrs, dn, instance=None, allow_missing=False):
     """Get the value of a field in LDAP attributes.
 
     Looks at the site preference for sync fields to determine which LDAP field is
@@ -152,7 +152,8 @@ def get_ldap_value_for_field(model, field, attrs, dn, instance=None):
         value = from_ldap(value, field, dn, ldap_field, instance)
 
         return value
-    else:
+
+    if not allow_missing:
         raise KeyError(f"Matching field {ldap_field} not in attributes of {dn}")
 
 
@@ -228,8 +229,9 @@ def ldap_sync_from_user(user, dn, attrs):
         defaults = {}
 
         # Match on all fields selected in preferences
+        fields_map = {f.name: f for f in Person.syncable_fields()}
         for field_name in get_site_preferences()["ldap__matching_fields"]:
-            value = get_ldap_value_for_field(Person, field, attrs, dn)
+            value = get_ldap_value_for_field(Person, fields_map[field_name], attrs, dn)
             matches[field_name] = value
         # Pre-fill all mandatory non-matching fields from User object
         for missing_key in ("first_name", "last_name", "email"):
@@ -254,7 +256,7 @@ def ldap_sync_from_user(user, dn, attrs):
 
     # Synchronise additional fields if enabled
     for field in Person.syncable_fields():
-        value = get_ldap_value_for_field(Person, field, attrs, dn, person)
+        value = get_ldap_value_for_field(Person, field, attrs, dn, person, allow_missing=True)
         setattr(person, field.name, value)
         logger.debug(f"Field {field.name} set to {value} for {person}")