My Experience Upgrading SharePoint with FAB 40

So, I had been wrestling with error after error from templates that were missing, features, event receivers, and web templates and web parts. Seems like most of our upgrade was time spent wrestling with these things. I had really no idea how they were being used. I just knew we were using 7 of the server admin templates. First thing I did was go and look at Khalil’s 2010 Fab 40 list. I figured as long as I could match them up I would be fixed by simply installing the applicable template on the 2010 side. This was not the case. While we had no problem adding the solutions from Khalil’s blog, we found that none of our errors were addressed by adding them. Apparently Khalil’s list is for people who are looking to have new working copies of the Fab 40. This is nearly the opposite of what I was looking for. I simply wanted my sites to upgrade, and to deprecate the FAB 40 features such that no one would be able to create new sites based on them. I’ve been thinking Khalil’s work would help with upgrade, not so

So I sent out a message to Chris Mullendore, our assigned Microsoft PFE asking him his suggestion:

Do you have any suggestions on fixing these errors?


Found a missing feature Id = 75a0fea7-84d9-447d-b9ec-bc49570874db

Fab 40

KB Provisioning Feature

Found a missing feature Id = 75a0fea7-b0ef-434e-90d6-ce997d970564

Fab 40


Found a missing feature Id = 75a0fea7-fe65-41c3-a965-c5df83fb098b

Fab 40


Assembly KnowledgeBaseEventHandler, Version=, Culture=neutral, PublicKeyToken=71e9bce111e9429c

Fab 40

Knowledge Base

Assembly ReservationEventHandler, Version=, Culture=neutral, PublicKeyToken=71e9bce111e9429c

Fab 40


Assembly ResourceEventHandler, Version=, Culture=neutral, PublicKeyToken=71e9bce111e9429c

Fab 40

Event Panning

WebTemplate ID 75801 (lcid: 1033), provisioned in ContentDatabase WSS_ldsteams47_Content, is missing.

Fab 40

Bug Database

WebTemplate ID 75806 (lcid: 1033), provisioned in ContentDatabase WSS_ldsteams03_Content, is missing.

Fab 40

Knowledge Base

WebTemplate ID 75808 (lcid: 1033), provisioned in ContentDatabase WSS_ldsteams02_Content, is missing.

Fab 40

PATM (PhysicalAssetTracking)

WebTemplate ID 75811 (lcid: 1033), provisioned in ContentDatabase WSS_ldsteams06_Content, is missing.

Fab 40

Absence Absencevacationschedule

"If you’ve deployed the June CU, you can deploy the Fab 40 templates to the farm. This should let the upgrade run and may let you continue to use the sites, but you will not be able to provision new sites using the templates, they’re still not technically supported on 2010, doing so violates the "clean build" goal you mentioned on the phone, and you’re really just punting the problem because the next upgrade is still going to list them as issues without the "grace period" the PG is trying to help with now.

If you’re NOT planning on keeping the old environment running, I would say you should migrate the content to an OOTB site definition (If you don’t already have tools, Excel and Explorer View can be very helpful here) and delete the sites that are referencing those definitions. Then deactivate the solutions (by ID using STSADM -force) and retract the solutions. You should no longer have the references and be able to upgrade the DBs.

If you want to keep the existing sites working, your best option is a separate intermediate 2007 environment. Migrate the sites you want to keep in the old farm to DBs that won’t be upgraded. Copy the DBs you do want to upgrade to the intermediate farm and delete any remaining sites and force deactivation of the 3 features. You should then be able to move the DBs to the 2010 farm and upgrade them successfully.

I have found that occasionally features don’t like to deactivate completely when using the intermediate farm despite the –force command. If you experience this problem (they will still show up during the upgrade and the DB will fail), I’ve found this tool to be helpful:

Though this tool didn’t do anything directly unsupported (no direct DB writes) when I last used it, I have to of course give the disclaimer that this isn’t a Microsoft tool, isn’t supported by us, and you should do a thorough review and be willing take responsibility for any issues created by this tool should there be any.

Let me know if you would like me to elaborate on any of this.


Chris Mullendore


So I sent out a message to some trusted resources…

I am trying to avoid installing the FAB 40, but we have a few hundreds sites based on them, you can see the references below to the errors we’re getting. I’m trying to get info on how best to address the needs of the fab 40 on our farm. I’m considering a third party migration tool to remove the dependency and do that migration at a later date and focusing on the clean migration now.


Was great to hear from the Todd’s…

"You have 3 types of errors below, the assembly errors are due to missing event receivers and you can remove with OM code. The missing feature errors are too able to be cleaned up with OM code or the tool which Chris mentions. The third I suspect are due to missing site definitions which you probably want to copy over the 12 hive to allow support for the webs which have been provisioned. If you don’t copy of the 12 hive funny things such as creating a new web part page will fail with very strange errors, basically due to not finding the onet.xml file."

Todd Carter


"I installed appcore, ProjectTracking and KnowledgeBase on an RTM farm this morning to fix some webs that were broken after a database attach upgrade.

If the customer can afford it, I always try to get them to use 3rd party migration software to clean these things up. Doing that also gives you the flexibility to split up site collections, combine site collections, populate metadata, and spur the economy some more."

Todd Klindt


Based on the feedback from this group… We first tried just copying over the 12 Hive, but couldn’t get any differences with results in test-spcontentdatabase. We then decided to install the seven Fab 40 solutions downloaded from the web. All 7 of them were server dependencies from the 2007 Fab 40. After testing them in our engineering environment, and changing the wsp’s feature.xml to hide each of the features so new people wouldn’t accidentally activate, and also include preventing new subsite creation from those templates. So far of the 2300+ site collections we upgraded, we only have a handful that have had issues, so overall our ability to support the Fab 40 that someone had installed in the past continue to persist for good or for worse, we are upgraded and have moved forward.

I’ve put the 7 Fab 40 Hidden Features on skydrive that we worked on to make hidden so people wouldn’t see them if they tried to activate the features on other sites or sites that are upgraded that didn’t have Fab 40 dependencies. Our goal was to reduce or eliminate dependencies.

We also used the codeplex Feature Admin tool allowed us to clean up a missing CKS Tag cloud, and a custom wow submit button that was deployed across 4 features. Most of those were showing up in 2007 as missing in preupgrade check. Using this codeplex tool we would navigate to a site that was known to have the feature using results from the stsadm -o enumallwebs –includefeatures > enumallwebswfeatures.txt. We may take this to 2010 so we can clean up features on this side as well. It’s been a very useful yet very powerful tool.

Another FAB 40 issue we’ve been experiencing that actually hit us with SP1 and June CU update upgrade was Resources Publishing content type duplication conflict. Our awesome PFE who was right with us during the final stages of upgrade was Chris Mullendore. He wrote us a powershell script to re-write all the Fab 40 "Resource" content types to "FAB40-Resource" content types, then we re-ran the upgrade with the powershell resume script upgrade-spcontentdatabase. Our databases upgrades at that point were nearly flawless…. After tracking down every feature, every assembly, every site template, site/web definition, and after ignoring a few web part errors including the common excel web part that you can ignore.

Here are the errors we got from the upgrade due to FAB 40 conflict, and when we tried to upgrade our Farm with SharePoint 2010 SP1 and June CU.

[SPSiteWssSequence2] [ERROR] [7/11/2011 10:50:51 PM]: Feature upgrade incomplete for Feature ‘PublishingResources’ (Id: ‘aebc918d-b20f-4a11-a1db-9ed84d79c87e’) in Site ‘https://blah/blah’. Exception: An error occurred binding content type ‘0x0101000F1C8B9E0EB4BE489F09807B2C53288F0054AD6EF48B9F7B45A142F8173F171BD1’ to list ‘/pci/_catalogs/masterpage’ on ‘https://blah/blah’. Exception ‘A duplicate content type Publishing Master Page was found.’ (Inner Exception: A duplicate content type Publishing Master Page was found.)

[SPSiteWssSequence2] [ERROR] [7/11/2011 10:51:15 PM]: Feature upgrade incomplete for Feature ‘CTypes’ (Id: ‘695b6570-a48b-4a8e-8ea5-26ea7fc1d162’) in Site ‘https://blah/blah’. Exception: Feature ’75a0fea7-3b2a-4838-8a0c-57ba864feed3′ for list template ‘107’ is not installed in this farm. The operation could not be completed.

If you’re having that issue, I have the permission to give you the script and you have full liability. It’s a sample, and shouldn’t be considered ready for prime time. Use at your own RISK!!!

This Sample Code is provided for the purpose of illustration only and is not intended to be used in a production environment.  THIS SAMPLE CODE AND ANY RELATED INFORMATION ARE PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE.  We grant You a nonexclusive, royalty-free right to use and modify the Sample Code and to reproduce and distribute the object code form of the Sample Code, provided that You agree: (i) to not use Our name, logo, or trademarks to market Your software product in which the Sample Code is embedded; (ii) to include a valid copyright notice on Your software product in which the Sample Code is embedded; and (iii) to indemnify, hold harmless, and defend Us and Our suppliers from and against any claims or lawsuits, including attorneys’ fees, that arise or result from the use or distribution of the Sample Code.

In all we successfully got them all not giving us the errors we were getting prior and the upgrade proceeded. On some of them we did have to use –force to get the feature added and deployed. Following the directions on TechNet to get them installed still worked to remove the errors, but the knowledge base as an example while it has the content doesn’t allow you to add new KBs. We’ve moved its functionality to an enterprise wiki and moved existing articles to PDFs and copy pasted to wiki pages. Fab 40 aren’t perfect, and I’m not happy to say we have to support them through the next version, but I am happy to say, we are now on 2010 across the board.


We are upgraded! Yeah!!

4 Comments on “My Experience Upgrading SharePoint with FAB 40

  1. Hi Joel, I realize it’s been a while since you’ve posted this article. It is still very informative, as I’m assigned the task of migrating 2007 SharePoint sites that are using the Fab 40 templates. We want the sites to migrate with a clean build and no longer use templates. This is the most relative advice I’ve found, however, the link to the file: no longer works and I’m wondering if the script is still available. I think it would be very helpful in our test environment. Thanks!

    • Wish I did. It’s possible that those scripts are still sitting on the utility servers at LDS, but I no longer have access. You could ping @sperryh to see if he happens to still have any of the modified WSPs that we deployed.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.

%d bloggers like this: