diff --git a/services/univention-ad-connector/modules/univention/connector/ad/__init__.py b/services/univention-ad-connector/modules/univention/connector/ad/__init__.py index 61c9fdc4b3..509ca580dc 100644 --- a/services/univention-ad-connector/modules/univention/connector/ad/__init__.py +++ b/services/univention-ad-connector/modules/univention/connector/ad/__init__.py @@ -1670,14 +1670,16 @@ class ad(univention.connector.ucs): uniqueMember_del = del_members['user'] + del_members['group'] + del_members['windowscomputer'] memberUid_add = [] memberUid_del = [] + trans_add = {} for member in add_members['user']: (_rdn_attribute, uid, _flags) = str2dn(member)[0][0] memberUid_add.append(uid) for member in add_members['unknown'] + add_members['windowscomputer']: # user or group? - ucs_object_attr = self.lo.get(member) - uid = ucs_object_attr.get('uid') + res = self.lo.search(base=member, scope='base') + uid = res[0][1].get('uid') if uid: memberUid_add.append(uid[0].decode('UTF-8')) + trans_add[member] = res[0][0] for member in del_members['user']: (_rdn_attribute, uid, _flags) = str2dn(member)[0][0] memberUid_del.append(uid) @@ -1686,6 +1688,9 @@ class ad(univention.connector.ucs): uid = ucs_object_attr.get('uid') if uid: memberUid_del.append(uid[0]) + for k, v in trans_add.items(): + uniqueMember_add.remove(k) + uniqueMember_add.append(v) if uniqueMember_del or memberUid_del: ucs_admin_object.fast_member_remove(uniqueMember_del, memberUid_del, ignore_license=True) if uniqueMember_add or memberUid_del: