Yeah... looks to me like that component does not exist.
The labels for terms used in the user profile are stored in the UserProfileValue
database in the SecondaryVal
column.
The only method updating that value in the database is the WriteSecondaryValue
(in Microsoft.Office.Server.UserProfiles.ProfileUpdateWrapperBase
). The only relevant method using this is the UserProfile.Commit(bool)
method.
Since the Managed Metadata Service is responsible for the rename / update and it and no managed metadata timer job is calling UserProfile.Commit()
, nobody knows that the label/name of the term has changed.
Let's take this example:
- User Profile: Johnny Developer
- Skills: Jogging; Reading; Swimming
The skills are terms in MMS. I rename Jogging to Running.
I have tried the following:
- Refresh the user profile in the browser --> The field is changed right away, however the database still has the old value (and hence every other system like search); No luck.
- Run a full sync, since the timer job at one point is calling
Commit
--> No luck.
- I tried changing some other field in a user profile --> No luck.
- Changed the metadata field itself --> Success!
I didn't go deeper than this, but apparently there is some kind of ChangeSet mechanism: Only fields that are changed / touched are being commited by calling Commit
. Since the rename of the label happens in the MMS, nobody is touching the taxonomy field in the user profile, hence it is not being commited on save.
Apparently there is no mechanism such as the Taxonomy timer job updating all TaxonomyHiddenList
in all site collections for User Profiles. Bug? Feature?
The best workaround I can come up with is to just update the field for all users (e.g. add a fake Skill, save, remove the fake skill)