Skip to main content

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

Comments

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.

Regards
Will
Unknown said…
This comment has been removed by the author.
Unknown said…
Looks informative, Thanks for sharing this.
I am not much familiar with PowerShell. So, I tried this LepideMigrator for Documents http://www.lepide.com/lepidemigratordocuments/sharepoint-to-sharepoint-migration.html 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.

Popular posts from this blog

Create list view - Conditional Formatting in SharePoint Designer 2010

In this example, we are going to format a column based on certain condition. Here I already have a list called Projects. I also have workflow associated with it. So whenever I create a new item in the list, workflow status column shows ‘In Progress’. Subsequently when the workflow in completed, the workflow status column shows ‘Completed’. For demonstration purpose, I will set the background color of workflow status column to yellow when the status is ‘In Progress’ and to green when the status is ‘Completed’. In SharePoint Designer open the site on which you are working. Click on ‘Lists and Libraries’ link. Choose the ‘Projects’ list. In SharePoint Designer Navigation, choose ‘Lists and Libraries’. In the list settings page, click on ‘New’ in ‘Views’ section. Provide appropriate name for the view and click OK. After choosing list, click on ‘New’ in the Views section. Give appropriate name to the list. Now click on any column, then in the ribbon, click on List View Tools-&g

SharePoint 2013 (SP 15) - Creating Custom Lists

As I am exploring SharePoint 2013, I found out that there are lot of things that are new and there are lot of thing that are old but presented in a different manner as compared to SharePoint 2010. For example, Site Actions was on the top left corner in SP 2010. But in SP 15 (SharePoint 2013) we dont have ‘Site Actions’ button. But instead we have a settings icon which is placed at top right corner. When you click on the settings icon select Add an App. This will basically allow you to add custom lists, documents libraries etc. Add an App is basically the same as More Options in SharePoint 2010. From now on custom lists & libraries will be called apps. Just like in Apple store or Android store you can develop apps for SharePoint and sell it. You can find more information here: http://officepreview.microsoft.com/en-us/store/apps-for-sharepoint-FX102804987.aspx When you click on Add an App you will be navigated to a different scree which will display different opti

Working with large xml files in c# .net

Working with large (huge) xml files is always a pain in the … The reason? These files can’t be loaded in to memory. On my desktop, where I have 2 gigs memory, I can’t open the file in even notepad. I was presented with a challenge recently to manipulate one such large xml file. The xml file was of 550+ MB. I know many would say I have seen bigger xml files than this. But the heart of the matter is if I can’t open 550+ MB file in notepad or in xmldocument in c#, then I can’t open any file bigger than this. And hence the logic to play with these files would remain same. The scenario: We have an xml file from which we want to remove a single node without removing its children. In the below sample xml fragment, the node has to be removed. The children nodes, must then be attached to ( node’s parent) node. One Two 100.22 GoodDay 3 4 Five 200.09 Cra