I am currently working on a project to split up a single site collection to multiple site collections.  There are multiple reasons for doing so, and there are useful blog posts dedicated to the topic of whether to use multiple site collections or subsites.  In this instance, the primary driver for using multiple site collections is to get the desired scoping functionality the customer would like for Nintex Reporting 2008.

Tackling the job of migrating from subsites to new site collections is no trivial task.  There are however, some COTS products specifically tailored to this case:

Unfortunately, I did not have the luxury of using one of these purpose-built tools for this endeavor.  Instead, I have relied on Gary Lapointe’s fantastic stsadm extensions.  Specifically, the following:

  • gl-convertsubsitetositecollection – this one does all of the heavy lifting, using the SharePoint Content Migration API.
  • gl-replacewebpartcontent – this allows you to use regex patterns to search and replace links that are in content editor web parts
  • gl-copynavigation – because the new site collections create their own global navigation, I set the global navigation of the root (/) site collection to be all manual links, and use this extension operation to copy that navigation to the new site collection
  • gl-addsiteadmin – add site collection administrators to the site collections easily

These commands have been grouped into a batch file which will handle each step of the migration process.  This has worked pretty well.  The batch file is executed through a Scheduled Task as the process often can exceed 24 hours in runtime so executing through RDP is not an option. 

The last utility I have made use of for this effort is bmail from Beyond Logic.  This is a simple command-line SMTP mailer which is used at the end of the conversion batch file to notify me that the process is complete.  This saves me the trouble of having to login to the server several times a day to check on progress.

Have I missed any utilities that you find useful for similar work?  If so, please comment!