Content Migration Overview
Published: May 2010
The content migration APIs provide a simple but flexible solution for migrating content between SharePoint Foundation Web sites. You can export the content from a SharePoint site, along with any dependencies (for example, security, roles, versioning, and other metadata), into single or multiple XML-formatted files called content migration packages. On import to the destination Web site, the packaged data is extracted and interpreted. You can also save the packages to a file server before migrating to a different server.
The object model is designed to work with data ranging from an entire Web site to an item in a list or library. You can select the level of metadata to include with migrated content, as well as choose whether to do a full migration or only an incremental change.
Following are some common scenarios for using the content migration APIs:
Publishing content from a development server to a staging server and from a staging server to a production server. You can manually trigger the publishing process or drive it with a scheduled job.
Allowing end users to export any list and content from a site and import it manually to another site inside or outside of the original server farm.
Enabling third-party content management or collaboration solutions to generate data into the published XML schema and use the import capability to migrate content into SharePoint Foundation.
Selecting components from a Volume Shadow Copy Service (VSS) restore for import to a SharePoint Foundation Web site.
In short, by using the content migration APIs, you can transfer the right content from the right location at the proper time to the correct destination.
The content migration APIs are designed to move content from a source location to a specific destination; these APIs are not designed for backup and restore purposes. Following are some of the limitations of the content migration APIs with respect to backing up and restoring data.
No configuration or application data can be exported or imported.
The largest object you can export is a SharePoint Foundation site (SPWeb object).
The following content cannot be exported or imported: alerts, audit trail, change log history, check in/check out state, recycle bin items, recycle bin state, security state, workflow tasks, and workflow state.
Alerts operate independently—they are never overwritten, added, or deleted at either the source or the destination location.
Although Web Parts migrate between the source and destination locations, assemblies do not migrate. If you have custom Web Parts, you must install the DLLs at the destination location for those Web Parts to work properly.
There are several options for backup and restore in your SharePoint Foundation environment. You can select which of these is most suitable based on your particular requirements. For more information about backup and restore options, see Backing Up and Restoring.
Ways to Use the Content Migration APIs
There are three ways you can invoke the content migration APIs.
Using Windows PowerShell, you can use the import and export operations to migrate data. However, you are limited in scope to a site object only. In addition, you do not have the option of retaining GUIDs, which can be necessary in certain scenarios.
You can use the ExportWeb(String, String, String, Boolean, Boolean, Boolean, Int32) and ImportWeb(String, String, String, Boolean, Boolean, Boolean, Int32) methods implemented in the Sites Web service to migrate data from a remote server. But, as is the case with Stsadm.exe, you are limited in scope to a Web site only. You also do not have the ability to retain GUIDs, which can be a requirement in certain scenarios.
Content Migration object model
The object model provides the most control over your data migration scenarios. Using the object model, you can migrate anything, from a Web site to an item in a list, or a single document in a library. You can choose whether to include information about security, versioning, user roles, and other metadata appropriate to the objects you are migrating. The content migration object model is implemented in the Microsoft.SharePoint.Deployment namespace.
The topics in this section focus on using the content migration object model. For more information about Windows PowerShell, see the SharePoint Foundation Administration Guide. For more information about using a Web service, see ASP.NET Web Services in addition to the ExportWeb(String, String, String, Boolean, Boolean, Boolean, Int32) and ImportWeb(String, String, , String, Boolean) methods mentioned earlier.