I’m working with a customer who has 7000+ sites hosted in an On-Premise SharePoint 2010 farm. The farm has about 78 custom WSPs deployed throughout the farm. We had very little source code from each of the WSPs as this customer was a perfect example of how not to do SharePoint Application development. We had solutions raging from the deployment of custom CSS to others involving web services deployed to the ISAPI folder on the WFEs. Needless to say many recommended practices were not followed.
The following steps were used to evaluate the farm. These are necessary in the Planning stages to determine what will/can be moved.
- Capture the Inventory of your sites and the Information Architecture. The inventory should capture the following:
- List of Web applications
- List of Site Collections
- List of Sites
- List of Features and their Associated Site Collections/Sites (Important for STEP 2)
- Size of each site
- Last Updated Date for the site items. (Will help identify dead sites)
- Capture the inventory of your Solution Packages (WSPs) and download.
- Use a tool like SPCAF http://www.spcaf.com/ to evaluate. SPCAF will provide a report for migration to the cloud and thus the recommendation to use the tool. (This tool was invaluable in getting the evaluation of the WSPs done in a timely manner.) We classified each WSP into one of the following buckets, the timelines are based on our teams capacity to convert the items.
- Low (2-4 weeks) – Converting simple SharePoint artifacts like web parts, Content Types/Branding to the new model.
- Medium (4-6 Weeks) – Solutions with complex deployments/configurations. This would include things like rewriting a Visual Studio Workflow and or converting Event receivers. This could also include those solutions with numerous Web parts and other artifacts which need to be converted.
- Medium-High (6-10 Weeks) – Solutions which will need some re-architecting and/or alternate configurations due to artifacts and/or services which are deployed directly to the SharePoint server. An Example here would be a web service which was deployed to the ISAPI folder as this will not be allowed in O365 we will need an alternate place for deploying this solution and the ability for the sites leveraging these solutions to access the new deployment location (preferably Azure).
- High (10+ Weeks) – These should be full on rewrite which will require some requirements gathering and building of a project backlog. They will require architecture design of the solution/app and would typically be a large solution/project with multiple components
- Once the WSPs are classified we evaluated the Sites from Step 1 and matched those up with the sites which were using the custom features in the WSPs from Step 3. This gives us a report on which sites contain customizations and which ones do not. We now have an idea on which sites will be trouble
- We now needed to determine which sites get migrated first. We created a set of buckets for Site Classification:
- Low – No Customizations Required. These sites were migrated first.
- Medium – Small customizations which could be completed quickly such as the Low & Medium solutions from Step 3 above.
- High – Any customizations which will take some time to migrate.
- We them formulated the schedule for migration based on the above information. We are using a migration tool to do the pushing of the data to O365 as part of our Testing and eventually our Execute stage.
SharePoint Artifact Migration Recommendations
Once we had our Inventory we classified each of the custom artifacts with a plan of attack for migrating these items to the Cloud. Because Solution Packages (WSPs) are not allowed in O365. These packages and their associated SharePoint Features will need to be broken down and converted to the SharePoint App Model where applicable. Many of the guidelines for converting these solutions reside as part of the O365 Patterns and Practices recommendations. Below are he guidelines we used for the various artifacts:
- Provisioning/Web Templates/Site Templates – Any web templates and site templates as well as the process for provisioning new sites should leverage the guidelines from the O365 Patterns and Practices team.
- Workflows – Custom workflows created in Visual Studio which use code behind to complete tasks. Workflows which were built with Visual Studio will need to be converted to the SharePoint 2013 declarative workflow model. These workflows will need to be rebuilt from scratch.
- Content Types – These were custom content types which were deployed as a part of a WSP Solution. Content Types should be evaluated to determine if they can reside in a Content Type Hub. This will provide the content types to all Site Collections subscribing to that hub and provide a safe location for management of the enterprise content types which were previously deployed as WSP solutions. Secondly, Content Types can be deployed using CSOM and the App Model APIs available for use in the O365.
- List Templates – custom list templates and in some cases their associated implementations which are deployed as part of a WSP Solution. List Templates can be deployed via the CSOM APIs and by leveraging the Application model APIs.
- Web parts – Custom web parts which are deployed as WSPs. All Web parts will need to be recreated as SharePoint 2013 App Parts. This will bring these solutions into the App Model configuration and allow for the deployment of these Web Parts into the Cloud.
- InfoPath Forms – InfoPath forms which contained code behind and or required full trust in order to work. Administrator/Full Trust Info Path forms will should be rewritten as SharePoint Hosted Applications. This will allow the required flexibility needed for the forms while allowing the use of the form on multiple sites as needed through the SharePoint 2013 App Model.
- WCF/Web Services – WCF Services which were deployed to the Web Front End servers which contained calls to the SharePoint APIs. These services need to be redesigned/built as SharePoint Provider Hosted Apps.
- Web.Config Modifications – Changes to the Web.config on the Web Front Ends which were needed to enable functionality by custom code. These modifications will need to be identified and the associated solutions which required them will need to be re-factored into a supported model. Most likely these solutions will become Provider Hosted Applications for which the required customizations can be made without deploying anything to the SharePoint servers.