0
Completed

Case-insensitive uniqueness of LDAP attribute names

Carol Wapshere 3 years ago in UNIFYBroker/Microsoft Identity Manager • updated by anonymous 2 years ago 2

Just in case anyone else makes the same silly mistake as I did:


IdB 5.1 and MIM Sync. Adapter was populated, MA created fine, but then got a stopped-extension-dll-exception on the Full Import (full event message below).


The problem was I had done some rename and other transformations which ended up with some fileds with the same name but different casing - FIELDNAME and fieldName. Idb accepted it, and interestingly MIM also accepted it when creating the MA. It was only on running the Import I got an error.


Log Name: ApplicationSource: FIMSynchronizationService
Date: 8/19/2016 3:18:58 AM
Event ID: 6801
Task Category: Server
Level: Error
Keywords: Classic
User: N/A
Computer: <name>
Description:
The extensible extension returned an unsupported error.
The stack trace is:
"System.ArgumentException: An item with the same key has already been added.
at System.ThrowHelper.ThrowArgumentException(ExceptionResource resource)
at System.Collections.Generic.Dictionary`2.Insert(TKey key, TValue value, Boolean add)
at System.Linq.Enumerable.ToDictionary[TSource,TKey,TElement](IEnumerable`1 source, Func`2 keySelector, Func`2 elementSelector, IEqualityComparer`1 comparer)
at Unify.Product.IdentityBroker.SearchResultEntry.get_Attributes()
at Unify.Product.IdentityBroker.ImportProxy.EntryToAdd(SearchResultEntry searchEntry)
at System.Linq.Enumerable.WhereSelectArrayIterator`2.MoveNext()
at System.Linq.Enumerable.<SelectManyIterator>d__16`2.MoveNext()
at Unify.Product.IdentityBroker.ExtensionMethods.Take[TSource](IEnumerator`1 source, Int32 count, IList`1& items)
at Unify.Product.IdentityBroker.ExtensionMethods.<Page>d__3`1.MoveNext()
at Unify.Product.IdentityBroker.ImportProxy.Import(GetImportEntriesRunStep importRunStep)
at Unify.Product.IdentityBroker.UnifyLdapConnector.GetImportEntries(GetImportEntriesRunStep importRunStep)
Forefront Identity Manager 4.3.2266.0"
Event Xml:
<System>
<Provider Name="FIMSynchronizationService" />
<EventID Qualifiers="49152">6801</EventID>
<Level>2</Level>
<Task>3</Task>
<Keywords>0x80000000000000</Keywords>
<TimeCreated SystemTime="2016-08-19T03:18:58.000000000Z" />
<EventRecordID>8430</EventRecordID>
<Channel>Application</Channel>
<Computer>c21-mim.chris21demo.unifysolutions.local</Computer>
<Security />
</System>
<EventData>
<Data>System.ArgumentException: An item with the same key has already been added.
at System.ThrowHelper.ThrowArgumentException(ExceptionResource resource)
at System.Collections.Generic.Dictionary`2.Insert(TKey key, TValue value, Boolean add)
at System.Linq.Enumerable.ToDictionary[TSource,TKey,TElement](IEnumerable`1 source, Func`2 keySelector, Func`2 elementSelector, IEqualityComparer`1 comparer)
at Unify.Product.IdentityBroker.SearchResultEntry.get_Attributes()
at Unify.Product.IdentityBroker.ImportProxy.EntryToAdd(SearchResultEntry searchEntry)
at System.Linq.Enumerable.WhereSelectArrayIterator`2.MoveNext()
at System.Linq.Enumerable.<SelectManyIterator>d__16`2.MoveNext()
at Unify.Product.IdentityBroker.ExtensionMethods.Take[TSource](IEnumerator`1 source, Int32 count, IList`1& items)
at Unify.Product.IdentityBroker.ExtensionMethods.<Page>d__3`1.MoveNext()
at Unify.Product.IdentityBroker.ImportProxy.Import(GetImportEntriesRunStep importRunStep)
at Unify.Product.IdentityBroker.UnifyLdapConnector.GetImportEntries(GetImportEntriesRunStep importRunStep)
Forefront Identity Manager 4.3.2266.0</Data>
</EventData>
</Event>
Affected Versions:
Fixed by Version:

Answer

Under review

Thanks for posting this Carol. The LDAP specification does indicate that attribute names are case-insensitive, and as such it would be helpful if Identity Broker enforced this on adapter schemas. I've created a backlog item to address this.