none
How to sync PWA Projects data to a SharePoint list using Flow RRS feed

  • Question

  • Hi, I want to sync project data from Project Online, including some custom enterprise fields, to a SharePoint List which can then use that data in other forms and workflow. 

    I currently have a 3rd party connector that does this kind of sync however its coming up to EOL and is running on a PC, so I'm interested to know if I can do this with Flow. From the research I've done it would appear that the Flow connectors for Project Online only provided a very limited number of fields that can be returned. Is this correct or is there a workaround that I can use via an OData query or other method within Flow? 

    Many thanks for any advise. 

    Regards,

    Conrad

    Ps. I'm not a developer, just an keen BA.

    Saturday, September 7, 2019 11:48 PM

Answers

All replies

  • Hi Conrad,

    Yes you can do this with Flow with little to no code, so perfect for a non-developer. Here is an example Flow for writing Project level data to a SharePoint list: https://pwmather.wordpress.com/2018/12/14/projectonline-snapshot-data-to-sharepoint-list-using-msflow-microsoftflow-ppm-pmot-office365-powerplatform/

    Paul 


    Paul Mather | Twitter | http://pwmather.wordpress.com | CPS | MVP | Downloads

    Sunday, September 8, 2019 6:22 PM
    Moderator
  • Hi Paul, thanks for this. Two clarifications if I may? 

    1. I followed your post above, however when configuring the control "Apply to Each" Flow only gives me a variable of "Body" and not "Value" per your example. Similarly, the subsequent "Create item" step does not then provide me with the fields I expected to get back from the query.

    I have configured the "Send an HTTP request to SharePoint" to point to my PWA instance, method is "GET" and I'm using the following query: 

    /_api/ProjectData/Projects()?$select=ProjectName,ProjectCode,SAPSalesOrderNumber,CustomerPONumber,ProjectStatus,Phase,ProjectManagerName,Client,Customer&$filter=Client eq 'myclient' and Phase ne '5 - Closed' and Phase ne '0 - RFT' and Phase ne '6 - Not Won'

    I did try a very simple query to return just the ProjectName field however I get the same result when I then configure the Control step. Obviously, I've gone wrong somewhere however I can't work it out through trial and error. Any pointers? 

    2. From your Blog article I can see that this approach will continue to add a new records to the SharePoint List each time for any given project, I’m looking for a method where I can match and overwrite existing records so there is only ever a single entry in the SharePoint List for a project. I want this behaviour as I’m using the SharePoint List in subsequent workflows where the data in the list is used in dropdown lists in forms and stored in other SharePoint Lists again for historical record. I assume that if I deleted all the data from the list and then repopulated it each time this would impact my other workflows and historical data. Is there a method that you might recommend looking into?

    Many thanks
    Conrad

    Tuesday, September 17, 2019 2:00 AM
  • Hello,

    You have to create an expression to get the value such as body('{actionName}['value'] - not the properties in the Dynamic content.

    Rather than creating a new item, it sounds like you want to update existing items. You will need to check if the item exists, if not create it, if it does use an update action like in this example where I update a risk item - examples using the SharePoint HTTP action and the SharePoint Update Item action:  https://pwmather.wordpress.com/2019/07/11/projectonline-risk-to-issue-escalator-built-using-microsoftflow-office365-sharepoint-javascript-ppm-projectmanagement-msproject-pmot-pmo/

    Paul


    Paul Mather | Twitter | http://pwmather.wordpress.com | CPS | MVP | Downloads

    Tuesday, September 17, 2019 7:11 AM
    Moderator