0

I recently updated some Terms in the Term Store but they do not get updated correctly on certain sites.
For example I renamed term A to B. On a particular site, I still get A displayed in a list but when I want to edit the item, I see the correct name B. After saving the old name A gets displayed in the list again.
I have waited about a week for everything to sync up but it seems to be some kind of caching issue. I am using SharePoint 2019 on prem and pull the terms every night from SPO. On other sites it seems to work flawlessly.
I also tried updating the terms on this particular site using PowerShell like this:

$tax = Get-SPTaxonomySession -Site mywebapp
$ts = $tax.TermStores[0]
$site = Get-Spsite https://my.site/with/bad/terms
$ts.UpdateUsedTermsOnSite($site

1 Answer 1

1

So we ended up calling Microsoft and found out that this site's local term store is kinda broken.

As it turns out every SharePoint site has a list named TaxonomyHiddenList. You can reach it by appending Lists/TaxonomyHiddenList to the URL of a site. This list stores the terms used inside the site's lists. It gets synchronized by the timer job Taxonomy Update Scheduler
If you edit the view of this list (wich is harmless according to MS) to show things like IdForTermSet and IdForTermStore you can get said IDs.

If yout IdForTermStore is not the same as your actual Term Store service application your site will not apply updates to the terms correctly. There is also the column CatchAllData wich contains some kind of hash for the Term, its Termset and the Termstore split by a pipe |. You could try replacing those along with the correct IDs/Hashes but it is not guaranteed to work.

There is also a field just called ID wich is used to link the terms together when they are used in a list, sorta lik a lookup. You could get wich local term id is used in a list by using the api like this: /_api/web/lists/getbytitle('Your%20List%20Name')/items(youritemtitle)

What ended up working however is this snippet of PowerShell right here:

#Get the site
$site = Get-Spsite https://my.site/with/bad/terms
#Update the terms
[Microsoft.SharePoint.Taxonomy.TaxonomySession]::SyncHiddenList($site)

Now ofc this does not permanently fix the broken IDs but it at least keeps them up-to-date if we run this snippet every now and then.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.