Friday, November 19, 2010

Site Migration using PowerShell - SharePoint 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.

Ways to Use the Content Migration APIs
There are three ways you can invoke the content migration APIs.
  • Windows PowerShell
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.
  • SOAP
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.

Below we will see Windows PowerShell and Content Migration Object Model.
Sourse Site that will be exported...

Now for exporting the site, we have to use Export-SPWeb command in the PowerShell prompt.
Export-SPWeb –Identity http://SERVERNAME:PORT/2010Lab/ -Path D:\ExportedFiles\SP2010Lab –IncludeUserSecurity –IncludeVersions CurrentVersion

Once the site is exported, we have to use Import-SPWeb from the PowerShell prompt.
Import-SPWeb http://SERVERNAME:PORT/sites/MigratedContent/ImportedSite/ -Path D:\ExportedFiles\SP2010Lab.cmp

After the successful import, the destination site will be replica of sourse site.

Destination site after Import using PowerShell
If you have any further doubts or comments, please leave comments...

-Vighnesh Bendre


Will Khanijo said...

Hi Vighnesh,

How do we specify metadata column mapping information?

Example - Column A in source maps to Column B in destination. Item value ABC must be converted to Item Value XYZ on destination.


Prologic Corporation said...

This is a good article & good site.Thank you for sharing this article. It is help us following categorize:
healthcare, e commerce, programming, multi platform,inventory management, cloud-based solutions, it consulting, retail, manufacturing, CRM, technology means, digital supply chain management, Delivering high-quality service for your business applications,
Solutions for all Industries,packaged applications,business applications, Web services, data migration
Business intelligence, Business Development, Software Development etc.

Our address:
2002 Timberloch Place, Suite 200
The Woodlands, TX 77380


Peter Gregg said...
This comment has been removed by the author.
Peter Gregg said...

Looks informative, Thanks for sharing this.
I am not much familiar with PowerShell. So, I tried this LepideMigrator for Documents which is an excellent solution to migrate content from a SharePoint Server or Office 365 to the same/different SharePoint, Office 365, and OneDrive for Business.