Domanda

I know that the Taxonomy Update Scheduler-TimerJob (Microsoft.SharePoint.Taxonomy.UpdateHiddenListJobDefinition) is responsible for updating SPListItems when terms have been renamed.

But...
Who or what checks UserProfileProperties for terms that have been renamed?

Background:
I have used a term as a value for a UserProfileProperty. The term has been renamed. Taxonomy Update Scheduler have all run, as has a full-sync of the UserProfiles. However, search still lists the old values, as does the table [UserProfileValue] in the database of the User Profile Service Application.

Now, I could write a small PowerShell-script to update all the values... But is there no OOTB-Feature to do this?

È stato utile?

Soluzione

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:

  1. 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.
  2. Run a full sync, since the timer job at one point is calling Commit --> No luck.
  3. I tried changing some other field in a user profile --> No luck.
  4. 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)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a sharepoint.stackexchange
scroll top