ObjectSharp has been working with SharePoint technologies for years now: building public facing websites and intranet for the clients, developing custom SharePoint web parts and features, designing custom templates, and so on... Oh yes, I forgot to mention hundreds of hours of SharePoint training (public and private) for developers and power users that we have taught to our clients. But, despite this tremendous amount of SharePoint expertise ObjectSharp has built up internally, we never had time to move our own corporate website to Microsoft Office SharePoint Server 2007 platform. Long story short, finally, the vast benefits from moving to SharePoint platform outweighed the problems with dedicating our own internal resources to this project, and we have received a go ahead to proceed with the project. As a project manager for this SharePoint migration project, I would like to share with you the experience and the certain amount of wisdom we have gained from this project of moving our original "sophisticated and fancy-looking" website to the SharePoint-based web content management platform.
As in any other project, we have identified the goals that will determine if the projects have been successful or not:
- SharePoint-based website must look exactly (or as close as possible) as our original website
- SharePoint-based website must keep all existing functionality of the original website (public and administrative parts). All additional features for the new site will be added in the future website versions.
- SharePoint-based website must leverage existing SharePoint features and minimize the amount of custom code as much as possible
- The migration has to be transparent to our clients and the effect on our SEO ranking should be minimal
Planning infrastructure for SharePoint environment
To properly plan the infrastructure for SharePoint environment we need to know
- What are we going to use SharePoint for?
- What features of SharePoint will be utilized?
- How many visitors do we expect on the website? What's the expected server load?
- What will be the expected size of the website? How often will the website be updated?
- What are the performance requirements for the site?
- What are the availability requirements?
- What are our disaster recovery policy and standard maintenance schedules?
Here is an excellent link for estimating performance and capacity requirements for SharePoint servers: http://technet.microsoft.com/en-us/library/cc262405.aspx. Also if you require redundancy and availability in your SharePoint environment here are the guidelines from Microsoft for that: http://technet.microsoft.com/en-us/library/cc263044.aspx and http://technet.microsoft.com/en-us/library/cc748824.aspx.
Planning the development and production environments
It's always a good idea to separate development environment from the production environment. D'oh! Ideally, you will have separate SharePoint farm for developers, testers, content authors, and, of course, separate SharePoint farm for production.
For more information visit http://technet.microsoft.com/en-us/library/cc263209.aspx
Determine website structure and navigation
To comply with the project goals we needed to keep the existing site structure and navigation, so we have copied over the website structure to the new site. Luckily, SharePoint allows you to shape your site structure any way you want. We have created a single web application for our website, as it's more than sufficient. We have enabled anonymous access to the web application. We have also extended this web application to include support for SSL.
Now, we had to find the way to transfer our navigation menu to the new site. One of our consultants and Microsoft MVP, Justin Lee, had an answer for us: to use ASP.NET menu control with CssFriendly adapter. With a minimum of configuration tweaking and no custom code necessary we're able to get the menu transferred within an hour or so, but let's not jump ahead J
Determine authored elements: custom master pages, stylesheets, page layouts, content types, web parts, etc.
When determining the page layouts and content types required for the website, you need to know what kind of content will be present on the page(s) and how it will be displayed to the public. I usually compile a list of different type of pages that the website will have, along with the list of entries that will be displayed on those pages. Having an original wireframe for the website will make this process so much easier.
Almost all content in our new SharePoint-based website will be in a form of a web part. Fortunately, SharePoint has a lot of built-in web parts that will be able to accommodate most of the content to be moved. Content Editor webpart, Content Query webpart, Image webpart are three web parts that you will probably use the most on your website. Naturally, sometimes your website will require functionality that SharePoint does not support out of the box, so Microsoft has provided the tools that will help you to develop all kinds of custom features. You need will to download Microsoft Office SharePoint Server 2007 SDK, SharePoint Extensions for Visual Studio 2008, and, of course, the copy of SharePoint DLLs from the SharePoint server! Please note, you can find a lot of information for SharePoint developers at http://www.microsoft.com/click/SharePointDeveloper/
Now it's time for a little bit of SharePoint branding and development….