The purpose of this article is to show how you can design and implement a web content management (WCM) solution based on SharePoint 2010 Publishing Feature, which should handle the entire content publishing process: authoring – review and approval on the staging environment – Publication on the live environment using a content deployment job.
About Publishing and Content Deployment
First of all I would like to point some interesting articles on Microsoft TechNet web site:
SharePoint Topology Design
In this case I have implemented a very simple infrastructure (all the machines are connected in the same LAN):
- Domain Controller – This server has the Active Directory, DNS and Certificate Services.
- Exchange Server – Here I have implemented Exchange 2010, only for internal use. It is very useful to have it in order to be able to test the approval workflow within SharePoint.
- SQL 2008 R2 Server – A standard implementation of SQL Server 2008 R2. I use this server for both SharePoint1 and SharePoint2 farms.
- SharePoint1 – This server will be the Staging / Authoring SharePoint farm.
- SharePoint2 – This server will be the Live SharePoint farm.
The two farms – SharePoint1 and SharePoint2 are separate farms with different service accounts event though they are sharing the same SQL Server. In a real environment if we want to use SharePoint as WCM for a web site, the SharePoint2 farm will be located in DMZ, but this is another story.
Basically we are going to use http://staging for authoring and reviewing and then deploy the content to http://live.
How To Do It
1. Implement Approval using the SharePoint Publishing Feature
In order to use the default approval we need to:
- Create a publishing portal.
- Use Publishing Site with Workflow site template to create new sites. By default this will be the only option available when creating a new site.
Then please configure the outgoing e-mail settings on central administration web site and please do not forget to create a receive connector on Exchange server, or to modify an existing one in order to give permissions for the SharePoint servers to send e-mails.
After that, connect to your staging site collection and click on Site Actions – Site Settings – Site Permissions. From all the groups showed on this page I will focus here only on two of them:
- Site Collection Name Members – Please add here all the editors.
- Approvers – Please add here the person who is going to approve the content.
2. The Approval Workflow built in the SharePoint Publishing Feature
To test the approval process in my example, I have created a new child site based on the Publishing Site with Workflow site template called The Beatles in which I have inserted some information taken from The Beatles page from Wikipedia. The approval is started form the Publishing tab within the page’s ribbon.
Before clicking on the Submit button just check the Schedule button. It gives you the possibility to:
- Select a different future publication date for the page.
- Set an expiration date for the page and notify the page’s contact person (it has to be added within the page’s metadata) when the page is about to expire (you can select with how many days before).
Now it’s time to push the button . Which button? Submit of course. You will be redirected to a new page where before clicking Start you have the possibility to modify some parameters / add some information.
The workflow will generate a task and an email which is going to be send to all the members of the Approvers group. The page’s status will be now Waiting for Approval.
You can see above the screen shots with the e-mail taken from Outlook Web Access and from Office Outlook 2010. From the usability point of view I think that the native integration provided by Office 2010 is great. Just approve the task and the page will be approved and published on the staging SharePoint farm. The editor will receive a confirmation email.
3. Implement Content Deployment
Now, we have an authoring approval process in place but we need to send the published pages to the live environment. In order to do that we have to implement content deployment. In my case I will implement a content deployment job from SharePoint1 to SharePoint2, more precise a job between http://staging and http://live. So let’s go!
First of all please go on Central Administration site on SharePoint2 and click General Application Settings in the left menu.
Please click on the Content Deployment Settings link and check Allow incoming content deployment jobs.
Then on SharePoint1 on from Central Administration – General Application Settings – Configure content deployment paths and jobs we need to create a new path and basically connect SharePoint1 with SharePoint2.
Here there are two things to be taken into consideration:
- Implementation of SSL for Central Administration Web Application. I haven’t done it for this example, so I had to modify Content Deployment Settings on SharePoint2 to accept connections without requiring encryption. Depending on your security objectives or policy you might want to do something different here. More details about how you can configure SSL for Central Administration you can find on this great article at Harbar.net.
- The account used for Authentication. In my example I’m using a Domain Administrator account, but it is enough to have an account which has credentials on both farms.
Now it’s time to test it. You have the option to manually run it (this is what am I doing in the screen shoot below) or you can create a job (just by pressing the New Job button) where you can schedule the run of content deployment.
4. Testing the Content Deployment
The job will fail if:
- You don’t have the same language packs installed on both servers (in my example SharePoint1 has English, Deutsch, Francais and SharePoint2 had only English, Deutsch).
- In the inital deployment the destination site collection is not an empty site. To fix that delete the site collection and the web application on the destination server (including the databases). Then recreate the web application and the site collection choosing as site template, from the custom tab the Select template later… option.