Introduction

As a consultant for Microsoft Global Delivery, I recently worked with a Customer who asked for continued use of the Application Templates for Windows SharePoint Services 3.0 (known as the Fab 40 templates) in their Office 365, SharePoint Online Dedicated environment. But we were in a dilemma, because some templates were not working with the SharePoint 2010 release. With the help of .Net Reflector, I have found a resolution to this dilemma.

Background

Basically, there are some issues with a few of the .wsp files after upgrade. In particular, after upgrading, some customers are unable to create new sites based on the following templates: Absence Request and Vacation Schedule Management, Call Center, Help Desk, IT Team Workspace, Knowledge Base, and Physical Asset Tracking and Management.

There are freely downloadable templates which can work in SharePoint 2010, but not with sites that have been upgraded from SharePoint 2007.

After the fixed FAB 40 templates are installed on a SharePoint 2010 environment, they will work with sites upgraded from SharePoint 2007, and new sites can also be created. See the Conclusion and Links section at the end of this article for the location where you can download the templates.

Note   Because the migrated FAB 40 templates are not sandboxed solutions, they cannot be used in Office 365 Standard. They can only be used in Office 365 Dedicated.

The problem

The following templates had issues with the Post Provisioning Event Handler, ZonedWebPartsUrlList:

  • Physical Asset Tracking and Management
  • Absence and Vacation Schedule
  • IT Team Workspace
  • Knowledge Base

The list of files that are passed to the ZonedWebPartsUrlList property are read by Post Provisioning Event Handler, and each Web Part on the page is updated with the list GUID. Unfortunately, many methods in thePost Provisioning Event Handler are obfuscated and cannot be reverse-engineered by .Net Reflector. However, I was still able to deduce the problem.

An error is thrown when the method, SubstituteTokens, gets executed in the Provisioning Event Handler. Here is the code as revealed by .Net Reflector.

In addition, the following templates had issues with other Event Handlers:

  • Document Library and Review
  • Inventory Tracking

The solution

Here are the five fixes in detail:

  • Comment the ZonedWebPartsUrlListproperty in onet.xml for these templates: 
    • Physical Asset Tracking and Management
    • Absence and Vacation Schedule
    • IT Team Workspace
    • Knowledge Base  

 

  • Replace the List ID with the List Name in the Data View Web Parts of these templates: 
    • Physical Asset Tracking and Management
    • Absence and Vacation Schedule
    • IT Team Workspace
    • Knowledge Base

  • Comment the existing features in onet.xml, and write new event receivers for the following templates. I used .Net Reflector to examine the old DLL files and copied the same code to  new event receiver DLL files. 
    • Document Library and Review 
    • Inventory Tracking     

 

  • Comment the existing features in onet.xml TSA Content Types and Fields Feature
  • Change the URL navigation in onet.xml. In SharePoint 2010 the value of the Url property is not being resolved from the resource file.

Download migrated FAB-40 SharePoint 2010 templates from http://gallery.technet.microsoft.com/Migrating-the-SharePoint-edf9ed0c

Conclusion and Links

For more information, see the following: