Unable to change Sync Rule - The given key was not present in the dictionary.
Hi Sean,
I've seen similar looking error when working with custom FIM web service client. By default the client used accountName to query users from FIM service. If I changed the key to, say employeeId, then the client returned this "The given key was not present
in the dictionary" error (can't remember the exact words...). I assumed it was because some of the users had empty employeeId attribute (eg. administrator) and the client didn't have error checking for that.
This is just a guess, but maybe it helps: Could it be that changing the sync rule requires that all currently matched objects must have the new relationship attribute available?
-LariLari Savolainen - Sr. Consultant IDM/IAM (www.panoramapartners.fi)
January 22nd, 2011 2:59am
Issue Resolved.
FYI
Cause:
======
The precedence values for the synchronization rules jumped from 4 to 6, and there was no sync rule with a precedence of "5". Since the UI does not allow this
to happen, I am not sure how the data got into this situation (maybe we had 6 values at one time and deleted the 5th and it didnt automatically reorder?)
Resolution:
=========
Changed the precedence value for the sync rule that was set to 6 back to 5. As I could not set this via the Portal, I used a SQL update script (after ensuring
we had a backup of the databases, just in case).
Once this change was made, we could change the sync rules without incident.
Free Windows Admin Tool Kit Click here and download it now
January 22nd, 2011 3:33am
FIM 2010 update 1 and latest hotfix
This is in regards to an Outbound Sync Rule from FIM to SQLdatabase, unable to change the RelationShip Criteria on one of the outbound syncs from AccountName = AccountName to anything=anything(tried several options) but we are on the other Outbound
Sync rules without any errors.
Here is the error we get in eventvwr. Any help is welcomed, thank you! Looks like data is corrupt somewhere, just need to be pointed in the right direction.
Requestor: urn:uuid:4f322aa2-82a8-4d72-8df4-6e04860ca034
mscorlib: System.Collections.Generic.KeyNotFoundException: The given key was not present in the dictionary.
at System.ThrowHelper.ThrowKeyNotFoundException()
at System.Collections.Generic.Dictionary`2.get_Item(TKey key)
at Microsoft.ResourceManagement.ActionProcessor.SyncRuleActionProcessor.SortSyncRuleByPrecedence(Dictionary`2 precedenceDictionary)
at Microsoft.ResourceManagement.ActionProcessor.SyncRuleActionProcessor.AdjustScopeAndRelationship(String currentConnectedSystemId, Int32 currentPrecedence, IList`1 scopeAndRelationshipParameters, Dictionary`2 parameterDictionary, Dictionary`2&
syncRuleDictionary)
at Microsoft.ResourceManagement.ActionProcessor.SyncRuleActionProcessor.PreProcessUpdateRequest(RequestType request)
at Microsoft.ResourceManagement.ActionProcessor.SyncRuleActionProcessor.PreProcessRequestFromObjectType(RequestType request)
at Microsoft.ResourceManagement.ActionProcessor.ActionDispatcher.PreProcessRequestFromObjectType(RequestType request)
at Microsoft.ResourceManagement.WebServices.RequestDispatcher.CreateRequest(CreateRequestDispatchParameter dispatchParameter)
at Microsoft.ResourceManagement.WebServices.RequestDispatcher.CreateRequest(UniqueIdentifier requestor, UniqueIdentifier targetIdentifier, OperationType operation, String businessJustification, List`1 requestParameters, CultureInfo locale, Boolean
isChildRequest, Guid cause, Boolean doEvaluation, Nullable`1 serviceId, Nullable`1 servicePartitionId)
at Microsoft.ResourceManagement.WebServices.RequestDispatcher.CreateRequest(UniqueIdentifier requestor, UniqueIdentifier targetIdentifier, OperationType operation, String businessJustification, List`1 requestParameters, CultureInfo locale, Boolean
isChildRequest, Guid cause, Boolean doEvaluation)
at Microsoft.ResourceManagement.WebServices.ResourceManagementService.Put(Message request)
January 22nd, 2011 4:35am