Updated 29/June/2011; this issue has been fixed with the June CU and that means the described workaround below is obsolete now.
This post might be important for you when: You know and manage your metadata store; sometimes you changed a term and you are wondering why the changed term cannot be seen in a List where you are using the terms in a column.
You also know: Plan managed metadata
We are working currently on an issue where the terms are not updated and with this post I would like to provide you a workaround. Updated 02/May/2011 to improve the quality of the code below because when we use SPSite we should dispose it at the end.
Consider the following scenario:
Exception with ULS log entry 85si:
Exception occurred while hidden list being updated: System.IO.FileNotFoundException: The site with the id 6c03a437-0d6d-44a3-a542-6235b854a36e could not be found. at Microsoft.SharePoint.SPSite..ctor(Guid id, SPFarm farm, SPUrlZone zone, SPUserToken userToken) at Microsoft.SharePoint.SPSite..ctor(Guid id) at Microsoft.SharePoint.Taxonomy.UpdateHiddenListJobDefinition.ProcessProxy(MetadataWebServiceApplicationProxy proxy) at Microsoft.SharePoint.Taxonomy.UpdateHiddenListJobDefinition.Execute(Guid targetInstanceId)
Workaround:
To work around the issue and update the Taxonomy Hidden list manually you can use the following PowerShell script as follows.
With the blog post experience from my colleague Stefan I built the following script.
I am suggesting to use the PowerShell ISE. Start the ISE as Machine Administrator.
Put the following code lines into a text file and save it as e.g. UpdateTaxonomyHiddenList.ps1.
$Assem = ( "Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" , "Microsoft.SharePoint.Taxonomy, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" ) $Source = @"
using Microsoft.SharePoint;
using Microsoft.SharePoint.Taxonomy;
using System;
namespace TaxonomyUpdater
{
public static class TaxonomyHiddenList
public static void Update(string SiteUrl)
SPSite Site2Update = new SPSite(SiteUrl);
TaxonomySession.SyncHiddenList(Site2Update);
Site2Update.Dispose();
}
"@
Add-Type -ReferencedAssemblies $Assem -TypeDefinition $Source -Language CSharp
Run the script above one time.
After that you can start on the command line to update the TaxonomyHidden List with:
[TaxonomyUpdater.TaxonomyHiddenList]::Update(“http://SharePointServer”)
Do this for all sites where you have updated terms.