How to Migrate SharePoint List Items to Project Online
Recently we did a Project Online/SharePoint Online Implementation based projects which included AdValue (Project Portfolio Management Package) implementation along with the migration of list items from SharePoint 2010 to Microsoft Project Online instance and creating projects from those list items. There were around 200 list items and more than 50 list columns in the old SharePoint list.
So now the question is how this could have been done efficiently. Here, for explaining the steps, I am using limited rows. You can use as many needed. Also, I am referring old SharePoint list as source list and new SharePoint list as destination list.
Below are the steps to Migrate SharePoint List Items to Project Online:
Step 1: Define the fields mapping strategy (source to destination):
We first needed to decide with client how list columns should be mapped to PWA custom fields. An excel template would help here.
|List Column Name||List Column Type||PWA Field Name (To be mapped with list column)||PWA Field Type|
|Project Title||Single line of text||Project Name||Text|
|Project Start Date||Date and Time||Project Start Date||Date|
|Project Finish Date||Date and Time||Project Finish Date||Date|
|Total Team Members||Number||Total Team Members||Number|
|Total Estimated Cost||Currency||Total Estimated Cost||Cost|
|Project Description||Multiple lines of text||Project Description||Text|
|Project Owner||Person or Group||Project Owner||Text|
|Type Of Project||Choice||Type Of Project||Text|
Leveraging the same template, we created our mapping strategy.
Step 2: Export data (in excel) from source list to be migrated:
- Go to the source list i.e. Project Requests.
- Export list items to excel.
Step 3: Normalize the Excel Data for migration:
- Open the excel containing source list items.
- Here, I am keeping all list columns for mapping and removing default columns Item Type & Path.
Step 4: Define the enterprise custom fields mapping in destination list:
- Go to the destination list.
- Go to list settings.
- Go to Project Server settings.
- Map list columns to PWA fields.
- We can’t map the list item ID here. It can be mapped using SharePoint Designer list workflow.
- For mapping a list column to enterprise custom field, make sure that both have same data type.
- Multiline text type field values will be mapped only up to 255 characters.
Step 5: Importing data from excel
- Create a CSOM solution in visual studio. For this, you can refer my previous blog .NET Managed Client Side Object Model for Project Online.
- Add a new class ExcelParser.cs to your visual studio solution. Here, I have named my solution as SPListItemCreation.
- This class file is used to read data from excel file.
Step 6: Creating bulk list items
- List items can be created quickly using CSOM. Modify your Program.cs as my Program.cs file.
- Run the solution. List items will be created in your destination list.
Step 7: Create projects from list items
There are two options for creating projects which can be leveraged based on requirement and data volume.
1. From list item:
- Select the list items, for which you want to create a project in PWA. Here I am selecting all items.
- Under Items, click on Create Projects.
- You will see a pop-up form. This form will show you details of mapping done in Step 4.
- Select Enterprise Project Type under which you want to create the project.
- Click Create Projects.
- Projects will be created in PWA.
2. Using workflow:
In SharePoint Designer list workflow, you can use the action “Create a project from the current list item with this Enterprise Project Type” to create the project from the list item. Also, you can customize the list workflow for creating projects only after certain approvals or column values.
Finally, validate list columns & enterprise custom fields mapping
- Open project, which you have created from list item.
- Validate field values. You will see the same values as there in the list item.
This is how you can create bulk SharePoint list items. In case of query, add your comments below.