SMS MT has over 50 intranet site collections hosted on premise in SharePoint 2010 that needs to be migrated across to Office 365 SharePoint online because the on premise intranet site will be decommissioned and archived.  Each intranet site collection in SharePoint 2010 was an individual client and each client site can have one or more project sub sites. To deliver their business requirements, the following goals needs to be achieved:

  • Identity which site collections will be migrated across to SharePoint O365 online and which site will be archived in old intranet on premise;
  • Identity what on premise documents for each pending migrated site will be uploaded online and which documents can be archived; and
  • Identity the security permissions roles and users who will have access to SharePoint Online and what documents users will have access to.

To successfully complete the SharePoint online migration project, the following tasks were implemented:

  1. Gap analysis with PM and myself were conducted to determine, by producing a spreadsheet lists that shows
    • Which sites was needed to be transferred across; and
    •  Which sites was excluded from migration and can be achieved as read only records in SharePoint 2010 intranet.

2. Manually create the new site collection from SharePoint online tenant admin UI

3. Developed a console app using Office PnP core libraries to provision the destination client site and client’s project sub site in SharePoint online. Console app used C#.NET, SharePoint Client side object class to talk to SharePoint to perform operations such as:

    • Ask for user login credentials to connect to O365 with OfficePnP.Core library AuthenticationManager class;
    • Console app reads all the default target O365 site, user email, resource files from a config file;
    • Provision Assets library, images, CSS and scripts folder at target site collection;
    • Upload CSS, images and scripts files to target site collection;
    • Provision architecture sub site (using team site template but optional) and 3 document libraries, including adding sub folders to each document library and adding SharePoint group role and adding user to the group;
    • Provision a process document library,  create some fields for 1 custom content type, created folders for the doc library;
    • Bulk upload some document files to process document library by getting console app to read a CSV containing location list of files to be updated;
    • Create 2 custom lists (i.e. Clients Register & Project Register) and its custom fields; and
    • Set JS link to custom JavaScript files that are used to create a new client and project.

4. Developed the JavaScript script using CSOM class to create a new project and client site.

5. Provision all the client sub-site manually via the add new form UI (OOTB).  Adding a new client sub-site will trigger the save button to call the custom JavaScript to create a new client sub-site using JavaScript CSOM.

6. Perform mapping process by generating a mapped CSV file that lists all the source URLs of doc libraries that will be mapped to the new destination URL doc libraries.

7. Notify all users to check in and published all their documents in SharePoint 2010 intranet site.

8. Download and install SharePoint Management online Power-Shell.

9. Install Sharegate third party tool. The migration tool was use to bulk migrate many documents across.

10. Install Sharegate Power-Shell modules – Use Power-Shell to create a script that will read the mapped CSV file in step 6 and copy contents across from SharePoint 2010 to SharePoint Online. The Script ran outside business hours and next morning I did PVT to confirm all documents has been migrated across successfully.


The outcome result of successfully completing this migration project is increase productivity for end-users to easily find and work on relevant documents in O365 and give them automation tool to create one or many projects sub sites per client site.

SMS migrated site