@@ -, +, @@ values --- .../modules/univention/connector/__init__.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) --- a/services/univention-ad-connector/modules/univention/connector/__init__.py +++ a/services/univention-ad-connector/modules/univention/connector/__init__.py @@ -36,6 +36,7 @@ import string import os import cPickle import types +import collections import random import traceback import copy @@ -1061,7 +1062,14 @@ class ucs: else: equal = compare[0] == compare[1] if not equal: - ucs_object[ucs_key] = value + # This is deduplication of LDAP attribute values for S4 -> UCS. + # It preserves ordering of the attribute values which is + # important for the handling of `con_other_attribute`. + if isinstance(value, list): + ucs_object[ucs_key] = list(collections.OrderedDict.fromkeys(value)) + else: + ucs_object[ucs_key] = value + ud.debug(ud.LDAP, ud.INFO, "set key in ucs-object: %s" % ucs_key) else: ud.debug(ud.LDAP, ud.WARN, '__set_values: no ucs_attribute found in %s' % attributes) --