Explanation of environment: I am running SharePoint 2010 SP1, December CU's. I have a list item which has a taxonomy column. As expected, if a term (e.g. “foo”) is deleted from the term store, users no longer see “foo” as an option for new items, but the term remains on previous items because “foo” is not deleted from the TaxonomyHiddenList by the Taxonomy Update Scheduler job.

Problem: This presents problems with search because if “foo” is deleted, we don’t want anyone to ever know “foo” existed anywhere on our site.

Desired Behavior: In addition to updating current items, I would like orphaned terms to be deleted from the TaxonomyHiddenList

Proposed Solution: Write a custom timer job to iterate through all terms and delete any orphaned items from the TaxonomyHiddenList

Question: Is this a viable solution? Am I missing something? Is there a more elegant way to handle this than manhandling the TaxonomyHiddenList?


I have successfully used the script from this blog: http://tjwheeler.blogspot.com/2010/11/content-migration-and-taxonomy-fields.html

  • Hey Paul... thanks for the reply. This helps... I was mostly concerned with whether or not it is ok to manipulate the taxonomyhiddenlist. This blog post gives me some support for my solution. I ended up creating a timer job to clean up this list every hour. – Peter Walke Feb 21 '12 at 3:57

This out-of-the-box timer job is maybe doing this job: Taxonomy Update Scheduler. Documentation at Microsoft TechNet

  • I have confirmed that the Taxonomy Update Scheduler only updates existing items, it does not clean up orphaned items. – Peter Walke Jan 30 '12 at 18:14

I don't believe anyone can recommend fiddling with hidden system lists. There probably won't be any concequences, but there's always a slight risk involved.

Personally if this would be a "customer" case, I would open a MS support ticket and tried to get an official comment on whether this kind of cleanup job would be supported. They might also suggest a better official alternative; I wouldn't be surprised if these orphaned TaxonomyHiddenList items would be deleted after some OOB job X has run Y times...


Well I had this trouble today... And fed up seeking a solution, I went to SQL server and deleted them in table !

In the table ECMTerm, find the ID of the term you want to delete, mine were 3209 to 3213. Then apply this :

Delete [MetadataMing2013].[dbo].[ECMTermSetMembership] where Termid in (3209,3210,3211,3212,3213)


delete [MetadataMing2013].[dbo].[ECMTerm] Where id in (3209,3210,3211,3212,3213)


Delete [MetadataMing2013].[dbo].[ECMTermLabel] where Termid in (3209,3210,3211,3212,3213)


delete [MetadataMing2013].[dbo].[ECMTermProperty]     where Termid in (3209,3210,3211,3212,3213)


delete [MetadataMing2013].[dbo].[ECMTermDescription]  where Termid in (3209,3210,3211,3212,3213)


delete [MetadataMing2013].[dbo].[ECMChangeLog] where objectid in (3209,3210,3211,3212,3213)

  • Probably works, but hacking the DB can put you into an unsupported state very quickly, so use your best judgement when doing this. It can seriously hamper future upgrade paths. – Peter Walke Dec 22 '16 at 21:18

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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