Syncing users with changed GUID

At the start of each new IBM Connections environment an important question to answer if which identifier in a company can be used to uniquely identify a user. Often the DocumentUniqueID (in case of a Domino Directory as company directory) or the objectSid (Active directory) are used, but if you have multiple directories in your company or a user administrator who thinks copy-pasting person documents is a great idea, this might not be the best choice.

One of my customers, at the time Connections was installed and configured, solemnly swore that they had an employee key which would never change and was a great candidate for the unique key for each employee. It turns out they didn’t know their own processes as they change the employee key every time a user changes departments…

This change causes big problems in Connections as the new GUID is often not properly synced to the databases of the individual applications. This leads to error messages for the user like this one:

The solution is to sync the GUID in each individual application through wsadmin. These are the commands to do so:

execfile("activitiesAdmin.py")
ActivitiesMemberService.syncMemberByExtId("<old GUID>", {"newExtId" : "<new GUID>" , "allowExtIdSwap" : "true"} )
execfile("wikisAdmin.py")
WikisMemberService.syncMemberByExtId("<old GUID>", {"newExtId" : "<new GUID>" , "allowExtIdSwap" : "true" } )
execfile("blogsAdmin.py")
BlogsMemberService.syncMemberByExtId("<old GUID>", {"newExtId" : "<new GUID>" , "allowExtIdSwap" : "true" } )
execfile("dogearAdmin.py")
DogearMemberService.syncMemberByExtId("<old GUID>", {"newExtId" : "<new GUID>" , "allowExtIdSwap" : "true" } )
execfile("communitiesAdmin.py")
CommunitiesMemberService.syncMemberByExtId("<old GUID>", {"newExtId" : "<new GUID>" , "allowExtIdSwap" : "true" } )
execfile("filesAdmin.py")
FilesMemberService.syncMemberByExtId("<old GUID>", {"newExtId" : "<new GUID>" , "allowExtIdSwap" : "true" } )
execfile("forumsAdmin.py")
ForumsMemberService.syncMemberByExtId("<old GUID>", {"newExtId" : "<new GUID>" , "allowExtIdSwap" : "true" } )
execfile("newsAdmin.py")
NewsMemberService.syncMemberByExtId("<old GUID>", {"newExtId" : "<new GUID>" , "allowExtIdSwap" : "true" } )
execfile("metricsAdmin.py")
MetricsMemberService.syncMemberByExtId("<old GUID>", {"newExtId" : "<new GUID>" , "allowExtIdSwap" : "true" } )