Terms and how to update TaxonomyHiddenList when the timer job was not able to update

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:

  • You are using Managed Metadata and administrate that within the central administration website.
  • You are using a List in a site and added a column to use Terms saved in the Managed Metadata database.
  • You merged terms in a term set.
  • You deleted site collections where you have been using some terms.
  • You changed a term in the taxonomy term store.
  • You may run manually the Taxonomy Update Scheduler job on the Scheduled Jobs central admin page or waited more than one hour; because the schedule of that job is set out of the box to run every hour.
  • You may see that the changed term has not been updated to the new value on the List where you are using those information.
  • You found the following entry in the ULS log:

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)



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=, Culture=neutral, PublicKeyToken=71e9bce111e9429c" ,
    "Microsoft.SharePoint.Taxonomy, Version=, 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);







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:


Do this for all sites where you have updated terms.

Comments (17)

  1. Nandini says:

    I applied SP1 and then the June 2011 CU. But updates to the terms in the term store are not updating the hidden taxonomy list. I manully ran the taxonomy update scheduler job. Was hoping the CU would resolve this issue. Any help would be appreciated.


  2. It might happen that you run into another issue not yet documented. I know that we will have an additional fix with August CU so please use the workaround until you tested August CU when it is available.

  3. Abe Sharp says:

    I am too experiencing the similar case as Nandini, SP1 and June 2011 CU applied, but changes to term store are not updated to taxonomyhiddenlist. Edit control works fine. I not sure whether authetication scheme might make a difference, but we are using claims auth.

  4. Please also install August CU because we fixed another issue in that area. blogs.msdn.com/…/sharepoint-2010-and-august-2011-cu.aspx

    The "issue #2" was not visible when running into "issue #1".

  5. Jerome K says:

    We have the SP1 + August 2011 CU installed, but we faced the same issue as described. Only new terms were propagated to the HiddenTaxonomyList, but not updated terms.  Your script was able to propagate all terms successfully. Thanks !

  6. Himansu says:

    Can't we create a new timer job with "TaxonomySession.SyncHiddenList(Site2Update);" to Sync the TaxonomyHiddenList?

  7. You are free to create your own timer jobs. One example: msdn.microsoft.com/…/hh528518.aspx

  8. Zazie says:

    I'm not convinced that the behaviour has been fully addressed with the June 2011 CU.

    We're on Dec 2011 and I have found the same as Jerome K in that edited terms were not being pushed out to the taxonomyhiddenlist with the Taxonomy Update Scheduler job.

    I still had to run the powershell script provided to force the hiddenlist to update with edited terms.

  9. With August 2011 CU we fixed a problem related to "bad" ChangeToken . But this might fix future issues and the old entries are still preventing the job to update the TaxonomyHiddenList entries. Check ULS log for "The changeToken refers to a time before the start of the current change log" and we should have a solution for this but that needs with the current knowledge a support case with us.

  10. Zazie says:

    Thanks for getting back to me, Joerg.

    I can see the error that you describe. My logs (prior to running the script) have entries like this:

    02/21/2012 20:45:03.89 OWSTIMER.EXE (0x2428)                   0x2534 SharePoint Server             Taxonomy                       85si Monitorable Exception occured while hidden list being updated: Microsoft.SharePoint.SPException: The changeToken refers to a time before the start of the current change log.     at Microsoft.SharePoint.SPChangeCollection.GetChanges(SqlSession session)     at Microsoft.SharePoint.SPChangeCollection.InitChangeCollection()     at Microsoft.SharePoint.SPChangeCollection..ctor(SPContentDatabase db, SPChangeQuery query)     at Microsoft.SharePoint.Administration.SPContentDatabase.GetChanges(SPChangeQuery query)     at Microsoft.SharePoint.Taxonomy.UpdateHiddenListJobDefinition.CheckForSiteRestore(MetadataWebServiceApplicationProxy proxy, PartitionSettings proxySettings, Dictionary`2& databaseChangeTokens)     at Microsoft.SharePoint.Taxonomy.UpdateHiddenListJobDefinition.ProcessProxy(MetadataWebServiceAppli… 07be3e55-1d94-44a6-a2bf-2f3f4428a76b

    02/21/2012 20:45:03.89* OWSTIMER.EXE (0x2428)                   0x2534 SharePoint Server             Taxonomy                       85si Monitorable …cationProxy proxy)     at Microsoft.SharePoint.Taxonomy.UpdateHiddenListJobDefinition.Execute(Guid targetInstanceId) 07be3e55-1d94-44a6-a2bf-2f3f4428a76b

    Do I raise the support case with you?

  11. We're experiencing this issue also with Aug CU 2011. Do we need to raise a call?


  12. That's an idea in case you have …..The changeToken refers to a time before the start of the current change log…….

  13. Sree says:

    Thanks the script worked great. We are on SP1 and June CU. Hope Microsoft is more deligent in testing the product and fixes.

  14. Michael says:

    You can also do it that way without having to use the c# code:


    Add-PSSnapin microsoft.sharepoint.powershell

    $site=Get-SPSite <Site-URL>



  15. Matt Stark says:

    Saw this error with the March 2012 CU applied — very weird — barf … Thanks for the tip … worked like a charm.

  16. Thanks Michael, your script worked like a charm!

  17. Hary says:

    Thanks gus for a tips and guidance. I had the similar issue and got it resolved using these resync process.