diff --git a/aleksis/apps/ldap/util/ldap_sync.py b/aleksis/apps/ldap/util/ldap_sync.py
index 381794e5c4b0d2958939bcb27fcfd3f6077be5de..19933d97cc22181a1decf4341ff0be4ad2ff4163 100644
--- a/aleksis/apps/ldap/util/ldap_sync.py
+++ b/aleksis/apps/ldap/util/ldap_sync.py
@@ -238,7 +238,12 @@ def ldap_sync_from_user(user, dn, attrs):
         # 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, fields_map[field_name], attrs, dn)
+            try:
+                value = get_ldap_value_for_field(Person, fields_map[field_name], attrs, dn)
+            except KeyError:
+                # Field is not set in LDAP, match on remaining fields
+                continue
+
             matches[field_name] = value
         # Pre-fill all mandatory non-matching fields from User object
         for missing_key in ("first_name", "last_name", "email"):