#ProjectOnline Risk to Issue Escalator built using #MicrosoftFlow #Office365 #SharePoint #JavaScript #PPM #ProjectManagement #MSProject #PMOT #PMO

July 11, 2019 at 11:35 pm | Posted in Administration, Functionality, Add-on, Customisation, Information, Configuration, App, Workflow | Leave a comment
Tags: , , , , ,

More Microsoft Flow action here in this post, this time building a Risk to Issue escalator for Office 365 Project Online. In project management risks sometimes unfortunately turn into issues. When this event occurs it’s useful to be able to copy over some useful information from the risk item and automatically create that issue item with some of the risk data. In this blog post I will show you a simple solution to do this using a combination of Microsoft Flow, Project Online, SharePoint and a tiny bit of JavaScript.

Firstly let’s take a quick look an example risks list on my test Project Online PWA site:

Risks List

This is pretty standard apart from two new columns Escalate? and EscalatedDate. The Escalate? column is used to tag the risks that need escalating and the EscalatedDate column is used to hold the date when the risk was escalated to an issue. The issues list in this example is just standard out of the box. On the Risks page I also have a button labelled “Escalate Risks” this is used to create an item on a central risk to issue escalation tracker list on the root PWA SharePoint site. There is a simple bit of JavaScript code behind the button as seen below:

JavaScript

This JavaScript file is added to a central library in PWA and added to the Project Sites on the Risks Allitems view page using a content editor web part. The code gets the project site title, Project GUID and Project Site URL from the associated Project Site then creates a list item on the central Project Risk to Issue Escalation Tracker list:

Risk to Issue Tracker

This simple example JavaScript code always creates items on the central list but in production you would only create the items if there were risks to escalate. EscalationDate defaults to today’s date, Completed defaults to No and the CountOfRisksEscalated is blank by default. The process of adding the escalation item here has two purposes, one to track the history of what risks are escalated so this can be reported on but also trigger the Microsoft Flow to carry out the escalation. The Microsoft Flow can be seen below:

Flow

The Flow trigger and actions are detailed below:

Flow Trigger

The Flow is trigger when an item is created in the Project Risk to Issue Escalation Tracker list then a SharePoint Get Items action is used. The ProjectSiteUrl property from the trigger action is used to dynamically set the correct site address. This action gets items from the risks list on the correct project site where the risks are tagged for escalation and have not yet been escalated.

Then an Apply to each action is used and the result from the Get Items action is passed in:

Apply to each

Inside the apply to action there is a SharePoint HTTP action to create the issue item using a REST call. Inside the body, JSON defines how to create the new item. For the issue columns in here, the values from the risks fields are used, this is where you can update this to map other risk columns to issue columns, the expression for the risk data is similar to this items(‘Apply_to_each’)[‘Category’][‘value’] for lookup columns or this for default text fields items(‘Apply_to_each’)[‘Description’]

Then another SharePoint HTTP action is used to update the risk item via REST:

RiskItem

The current risk ID is passed in to the Uri (items(‘Apply_to_each’)[‘Id’]). The only column updated is the EscalatedDate column on the risk list with the date the risk was escalated.

The final action in this Flow is a SharePoint Update Item action to update the SharePoint item on the central Project Risk to Issue Escalation Tracker list:

Tracker Update

The item Id and ProjectName are passed in from the Trigger data but these values have not changed. The Completed column is set to Yes and the CountOfRisksEscalated is set using the length expression to count the number of items in the array from the first action: length(body(‘Get_items’)?[‘value’])

That’s it, a simple low / no code configurable solution starter for Risk to Issue escalation in Office 365 Project Online. A video of this solution starter in action can be seen here: https://youtu.be/IgKxDuu1sng

Advertisements

Download example #MicrosoftFlow for Syncing #MSProject #Roadmap Row Item Status with #ProjectOnline Task Status #CDS #PowerPlatform #MSFlow #REST #SharePoint #WorkManagement #Office365

June 19, 2019 at 11:17 pm | Posted in Add-on, Administration, App, Configuration, Customisation, Functionality, Information, Reporting, Workarounds | Leave a comment
Tags: , , , , , , ,

Following on from a recent blog post where I demonstrated an example Microsoft Flow for syncing the Roadmap row item status with the associated Office 365 Project Online Task status, I have now made this solution starter Flow available as a package that can be downloaded and imported. For those of you that missed the previous blog post, a link can be found below here: https://pwmather.wordpress.com/2019/05/27/sync-msproject-roadmap-row-item-status-with-projectonline-task-status-using-microsoftflow-cds-powerplatform-msflow-rest-sharepoint-workmanagement-office365/

FlowImage

The Flow package can be downloaded from the Microsoft Gallery here: https://gallery.technet.microsoft.com/Flow-to-Sync-Roadmap-item-44174a4b

Once downloaded the Flow can be imported, here is a Microsoft Flow blog post on exporting and importing Flow packages: https://flow.microsoft.com/en-us/blog/import-export-bap-packages/

Once imported and the connections all set – this will require a Flow P1 or P2 license as it uses the CDS connector, ensure the account has the correct access to Project Online and the CDS, open the flow and update the trigger and actions as these will currently point to one of my demo tenants:

  1. Update the “When a project is published” trigger with your PWA URL
  2. Update the “GetTaskHealth” action the correct site address for your PWA URL
  3. Update the “GetTaskHealth” action Uri to use the correct task level field, replace “RoadmapHealth” as needed
  4. Update the Switch action to use the correct task custom field – the expression would be items(‘Apply_to_each’)[‘FieldName’] – replace the field name with the correct task field
  5. Ensure the Case statements are updated to match the possible values in your custom field and map to the correct roadmap status value:
      • On Track = 0
      • Potential Problem = 1
      • At Risk = 2
      • Complete = 10
      • Not Set = 100
  6. Update the “List records” action to point to the correct environment
  7. Update the “Update a record” action to point to the correct environment

Now save the Flow and test it.

Hopefully you find this useful as a solution starter.

Create a #MicrosoftTeam for a #ProjectOnline Project using #MicrosoftFlow #Office365 #MicrosoftGraph #PPM #WorkManagement #PowerPlatform #AzureAD #Collaboration #Automation Part2

June 13, 2019 at 8:25 pm | Posted in Add-on, Administration, App, Configuration, Customisation, Functionality, Information, Workarounds | Leave a comment
Tags: , , , , , , , ,

Following on from my last blog post where I started to walkthrough a new Microsoft Flow I created for creating a Microsoft Team for a Project Online project, here is the final part of the Flow. For those that missed part 1, a link can be found below:

https://pwmather.wordpress.com/2019/06/12/create-a-microsoftteam-for-a-projectonline-project-using-microsoftflow-office365-microsoftgraph-ppm-workmanagement-powerplatform-azuread-collaboration-automation-part1/

In the last post we finished off where the Flow action had sent the request to the Graph API to create the new Team with the new channel and new web site tab and then discussed the 202 response and teamsAsyncOperation process. The next part of the Flow’s job is to get the new Teams webUrl and update the Team URL project level custom field in Project Online.

If the Status Code response is 202 to indicate its been accepted, the Flow them moves on to the next action which is a Parse JSON action to get the Location property from the headers output from the previous HTTP action response:

Parse JSON Action 

Then with the Location value another HTTP action is used to call the Graph API:

HTTPTeamResourceLocation

This performs an HTTP GET request to the Graph API to get the targetResourceLocation property from the newly created Microsoft Team, the Location property from the previous Parse JSON action is used in the URI. The advanced options are the same for all HTTP actions where the Graph API is used so I’ve not expanded this is this post – see part 1 for details.

The next action is another Parse JSON from the previous HTTPTeamResourceLocation HTTP action message body:

Parse JSON 2

This time the targetResourceLocation property is needed. Then the final Graph API call is performed to get the webUrl for the newly create Microsoft Team with another GET request. The targetResourceLocation property from the previous Parse JSON action is used in the URI:

HTTPTeamWebUrl

The Flow then moves on to the final Parse JSON action to parse the data returned in the HTTPTeamWebUrl message body:

Parse JSON 3

The Flow now has the new Microsoft Team web URL to update the Project Online project level custom field. The next Flow action is a Checkout project action:

Checkout Project

This action will checkout the project, the expression used here for the Project Id property is items(‘Apply_to_each’)[‘ProjectId’].

The next action is a SharePoint HTTP action to perform a REST call to POST to the Project Online CSOM REST API to update the custom field, this uses the same expression in the URI items(‘Apply_to_each’)[‘ProjectId’] :

UpdateProjectTeamUrl

In the REST call data is sent in the body of the request. This contains the correct internal custom field name for the “Team URL” project field and the custom field value to update the field with, which is the webUrl from the previous Parse JSON 3 action. The internal custom field name would need to be updated to the correct field from your PWA instance.

The final action in this example Flow is Checkin and publish project:

Checkin and publish project

This action will publish the project after updating the custom field and check in the project, the expression used here for the Project Id property is items(‘Apply_to_each’)[‘ProjectId’].

Here are some projects that have been updated and have Microsoft Teams created:

Projects

Here is a Team for one of the test project – “1 Paul Mather Test Project 2”:

Team

This Team has the new Project channel and the Project Page web site tab that loads the Project Details Page from PWA:

Channel

That’s it, a simple low / no code solution to create Microsoft Teams for Office 365 Project Online projects! To use this in production it needs some additional work to handle various different scenarios but hopefully this is a good starting point for someone looking to do something similar.

I will look to provide a download link for this solution starter Flow in the next few days but will post the link on my blog.

Create a #MicrosoftTeam for a #ProjectOnline Project using #MicrosoftFlow #Office365 #MicrosoftGraph #PPM #WorkManagement #PowerPlatform #AzureAD #Collaboration #Automation Part1

June 12, 2019 at 9:52 pm | Posted in Add-on, Administration, App, Configuration, Customisation, Functionality, Information, Workarounds | 1 Comment
Tags: , , , , , , , ,

Following on from my Microsoft Flow theme of blog posts lately, I am a big fan of the Power Platform in general, but I love Microsoft Flow for building low / no code solutions for Office 365 Project Online. In part 1 of this blog post I will start to walkthrough a new Microsoft Flow I have created that will create a new Microsoft Team for a Project Online project with a new channel and web site tab in the channel that displays the Project PDP directly in Teams. This makes use of 2 Project level enterprise custom fields in PWA, in this example I have one flag field called “Team Required?” and one text field called “Team URL”. The flag field is used to control / request a Microsoft Team for the project and the Team URL is used to store a web URL to the newly created Microsoft Team. This Flow has a few actions, these can be seen below:

image

Inside the for each loop:

image

Inside the condition check:

image

The connections used in this Flow are:

image

The account used has full admin access to the Project Online PWA instance.

This is a scheduled Flow, I have set this to run daily, but configure the frequency as required:

image

It’s probably best to schedule it out of hours so that hopefully the projects it creates Microsoft Teams for are checked in at the time the Flow runs as it will edit the Team URL custom field for that project.

Next we set some variables, these variable are used when using the HTTP action to call the Microsoft Graph API. You will need to create an Azure AD app in the Azure Portal and grant it Group.ReadWrite.All Application access:

image

When creating the Azure AD App you will need to make note of the Application (client) ID and the Directory (tenant) ID:

image 

You will also have to create a client secret for the app (keep this secure but make a note of the secret as you can’t view it after!):

image

These three strings / IDs are used in the three variables set in the Flow:

image

The next action is a REST call to the ProjectData API to get a the Project details for projects requesting a Microsoft Team but filtering out those that already have a Team created using this URL:

image

The full action details can be seen below:

image

The next  action is an Apply to each loop as the REST call could return more than one project the result array:

image

The input used is body(‘GetAllProjectsRequiringTeamCreation’)[‘value’], this is added as an expression.

The next action is another REST call but this time to the Project CSOM REST API – notice /ProjectServer rather than /ProjectData, this is the get the Project Owner’s user principal name as this is used later to set the Team / Office 365 group owner:

image

A variable is passed in to the URI to get the data for the current project, the expression used here is items(‘Apply_to_each’)[‘ProjectId’].

Then a Get user profile (V2) action is used, this is used to get the user ID:

image

The expression used here is body(‘GetProjectOwnerUPN’)[‘UserPrincipalName’]

The Flow now has all the data required to go and create the Microsoft Team, the next action is a standard Flow HTTP action:

image

image

In this action, an HTTP POST is used to post the JSON data defined in the body to the teams endpoint in the Microsoft Graph API to create the Team. Walking through the body of the request, firstly the the team template is set, in this example it is just the standard template, then the display name is set, here the items(‘Apply_to_each’)[‘ProjectName’] expression is used. The team description is then set using same text and the same expression used in the display name. Then the owner is set using the Id property in the Dynamic content from the Get user profile (v2) action. That is the basic properties set to create this team. This example creates a public team, you could look to also set the visibility property to private if you wanted a private team, the default visibility is public. In this example, a new channel is also defined, the channel display name and description is set. Within that new channel a new website tab is also defined setting the tab name and contentUrl / websiteUrl. For the URLs, this creates a web site tab with a link to the Project schedule PDP as an example, the items(‘Apply_to_each’)[‘ProjectId’] expression variable is used to dynamically pass in the correct project ID.

The next action is a condition action to check the response back from the Graph API:

image

This uses the Status Code output from the HTTP action, a 202 response indicates the API call was accepted, it doesn’t mean the process is completed as creating a team generates a teamsAsyncOperation to create the team. It is recommended to make a GET request to the Location found in the response header until that call is successful and returns the targetResourceLocation, retry every 30 seconds etc. This example Flow doesn’t perform the retry, it just attempts the call to the location and would fail if it is not completed. That would need to be handled in a production environment but in this test instance I’ve not had this fail yet (works on my machine Smile). I will offer this Flow solution starter as a download but before I do that, I will probably at least put a delay in before making the GET request to the location.

In the part 2 of the this blog post later this week, the rest of the Flow will be detailed.

#ProjectOnline custom #email notifications using #MSFlow #MicrosoftFlow #PPM #PMOT #MSProject #Exchange #Office365 #PowerPlatform Part 2

April 30, 2019 at 8:22 pm | Posted in Add-on, Administration, App, Configuration, Customisation, Functionality, Information, Workflow | Comments Off on #ProjectOnline custom #email notifications using #MSFlow #MicrosoftFlow #PPM #PMOT #MSProject #Exchange #Office365 #PowerPlatform Part 2
Tags: , , , , , , , ,

Following on from my last post on email notifications using Microsoft Flow, this post looks at further examples. Part 1 can be found here: https://pwmather.wordpress.com/2019/03/18/projectonline-custom-email-notifications-using-msflow-microsoftflow-ppm-pmot-msproject-exchange-office365-powerplatform-part-1/

In case you missed it, I also published a video last week with a simple example Flow to send the project owner an email on project creation: https://youtu.be/CCdxUqBrhEA

In part 2 we will look another example email notification to email each resource the projects they are assigned to for the coming week. The Flow can be seen below:

image

This is triggered on schedule as seen below, update as needed:

image

The Flow then gets some date time values using the Date Time actions for the current date time and a future date time:

image

The Flow then fires off an HTTP request to SharePoint to get a list of resources with email addresses from the Project Online Odata Reporting API:

image

Then using an Apply to each action we send an email to the assigned resources. Firstly we pass in the output from the previous step, which is:

body(‘GetAllResourcesWithEmailAddresses’)[‘value’]

image

Then inside the loop we perform another HTTP call to SharePoint, this time to get the resource’s assignments for the week by querying the Project Online Odata Reporting API as seen below:

image

Here we are passing in 3 variables to the Odata query:

  • ResourceId which is the following expression added in: items(‘Apply_to_each’)[‘ResourceId’]
  • Current time and Future time to filter the data returned from the time phased resource demand endpoint to this week, these are the outputs from the previous date time actions:

image

The Flow then creates an HTML table from the data returned from the previous action:

body(‘GetAllResourceAssignments’)[‘value’]

image

Then the final action in the Flow is to send an email:

image

The To value is an expression: items(‘Apply_to_each’)[‘ResourceEmailAddress’]

Update the email body as needed and include the output from Create HTML table action.

This will result in an email being sent to all resources in Project Online with email addresses containing their weekly assignments detailing the projects that they are working on, here is an example email:

image

Another example that demonstrates how easily custom email notifications can be created for Project Online using Microsoft Flow.

#ProjectOnline custom #email notifications using #MSFlow #MicrosoftFlow #PPM #PMOT #MSProject #Exchange #Office365 #PowerPlatform Part 1

March 18, 2019 at 9:26 pm | Posted in Add-on, Administration, App, Configuration, Customisation, Functionality, Information, Workflow | 1 Comment
Tags: , , , , , , , ,

This blogs post has been delayed due to all of my blog posts on Microsoft’s new Roadmap service – summary post here with most of the posts: https://pwmather.wordpress.com/2019/03/01/project-roadmap-cds-app-overview-ppm-projectmanagement-msproject-projectonline-office365-powerplatfom-dynamics365/

This post continues the series of posts I started to do in December 2018 following on from a Microsoft Tech Sync session where I presented a session on Project Online and Flow better together. As it’s been a while, here are links to the previous posts:

Post 1: https://pwmather.wordpress.com/2018/12/06/projectonline-publish-all-projects-using-msflow-microsoftflow-ppm-pmot-office365-powerplatform-part-1/

Post 2: https://pwmather.wordpress.com/2018/12/12/projectonline-publish-all-projects-using-msflow-microsoftflow-ppm-pmot-office365-powerplatform-part-2/

Post 3: https://pwmather.wordpress.com/2018/12/14/projectonline-snapshot-data-to-sharepoint-list-using-msflow-microsoftflow-ppm-pmot-office365-powerplatform/

In this post we take a look at an option for building custom email notifications with a no code / low code solutions using Microsoft Flow. This example sends an email for projects that are running late. There are two simple versions for this, one with a details table in the email and one with just the project name but includes hyperlinks in the email to the project detail page. These are both very similar, the first one can be seen below:

image

This is triggered on the Recurrence trigger, set based on your requirement. This then uses the Sent an HTTP request to SharePoint action to query the Project Online OData Reporting API:

image

This will control the data that is included in the email, so this OData query can be updated based on your requirements. Next the Flow uses the Create an HTML table action:

image

For this action we pass in the project data array from the previous action using a custom expression:

image

The final action is to send the email:

image

In the body of the email here we are just using the output from the previous Create HTML table action:

image

This results in an email being sent with the data from the OData query used (these are just my test projects and not real projects!):

image

Very simple! Sticking with the same theme for late projects but this time the email contains hyperlinks into the projects, this Flow is slightly different:

image

The difference here is we do not use the Create HTML table action but instead use Select and Join from the Data Operations actions. Firstly the select actions looks like this:

image

The Select action is used to transform the data in the results array from the previous step. Just the same as the Create HTML table in the first example, we pass in the project data array value from the previous action into the From property. Then the Select action was changed to use the text mode using the toggle option outlined in red below:

image

In Map properties, transform the data as needed in the email such as:

image

Here we are building up a URL passing in the ProjectId for the PDP URL (update to the correct PDP) and the ProjectName for the URL title. Then we use the Join Data Operations action to put each project on a new row in the email:

image

The From property is just using the Output from the previous Select action:

image

Then the final action is the email:

image

Note the Is HTML property is set to Yes. In the Body we type the email body as required plus the Output from the previous Join action:

image

Then the email is sent on the defined schedule with clickable links to the Project Detail Pages (again, these are just my test projects and not real live projects!):

image

These are two simple examples but as you can see, it’s very easy to build Project Online related emails using Microsoft Flow. I have some more examples in my next posts coming soon.

#Project Roadmap #AzureDevOps #AzureBoards #PPM #ProjectManagement #MSProject #ProjectOnline #Office365 #PowerPlatform #CDS

March 15, 2019 at 6:26 am | Posted in Add-on, Administration, App, Configuration, Functionality, Information, Reporting | 7 Comments
Tags: , , , , , , , , ,

All of my previous posts on the new Roadmap service for Project has been based on Project Online projects, In this post we take a quick look at using Azure DevOps projects in Roadmap. This post wont go into much detail about the new Roadmap service, only how to use Azure DevOps projects in Roadmap. For details on the Roadmap service see this summary post: https://pwmather.wordpress.com/2019/03/01/project-roadmap-cds-app-overview-ppm-projectmanagement-msproject-projectonline-office365-powerplatfom-dynamics365/

Firstly ensure you have access to a project in Azure DevOps. This project will need work items (Epics, User Stories, Features, Tasks etc.) that have two fields used that might not be standard in your organisation depending on the process used in the project, these are Start Date and Target Date. To do this, for each type of work items that you want to sync in Roadmap, from the Work Items board in the Azure DevOps project, click “New Work Item” then the item such as Epic:

image

This list of work items might vary depending on which process your project uses, this example project just uses the basic process. When the Epic page loads, click Customize from the Actions menu seen below:

image

Click New Field:

image

Then set the option to “Use an existing field” and select “Start Date” and click Add Field:

image

Repeat this to add “Target Date” then update the layout to move the two new fields where you want them:

image

Repeat this process for other work items as needed such as Tasks, User Stories or Features depending on what board process your project uses. For example, if your project uses the default Agile process you will just need to update the User Story work item to add these fields. Now with some example Epic work items created in my test Azure DevOps project, each with a start date and target date, I can move over the Roadmap.

I’ve added a new row to my Roadmap for the Azure DevOps project, on the “Connect to a project” menu, I will select “Azure Boards”:

image

Ensure the Azure DevOps organization URL is correct and validated, then select your project:

image

Then the Flow connection details will appear:

image

Sign in if prompted. Then click Connect:

image

Then search for items to add:

image

Then click Add. Now the items will be added to the row:

image

This data will be kept in sync using Microsoft Flow just like the Project Online projects. The Project Online projects Flow runs every 5 minutes by default where as the Azure Board project Flow runs every hour.

In the next post we will look to combine the Azure DevOps Project Board data with the Roadmap data in Power BI.

#Project Roadmap #PowerBI report pack with #ProjectOnline data #PPM #ProjectManagement #MSProject #Office365 #PowerPlatform #Dynamics365 #CDS #Odata

March 8, 2019 at 11:04 pm | Posted in Add-on, Administration, App, Configuration, Functionality, Information, Reporting | 2 Comments
Tags: , , , , , , , , ,

As mentioned in previous posts, I said I will post on how to bring in Project Online data with the Roadmap service data in a Power BI Report. We will start off with the Power BI Roadmap report pack I published recently. If you missed it, it can be downloaded from the post below:

https://pwmather.wordpress.com/2019/01/30/project-roadmap-powerbi-report-pack-ppm-projectmanagement-msproject-projectonline-office365-powerplatform-dynamics365/

image

With the Power BI Roadmap report set up and loading data from your Roadmap service, we will now edit that Power BI report to bring in Project Online data. Firstly click Get Data > Odata Feed and enter the Project Online Reporting API URL like below:

image 

Click OK and sign in as required. In the Navigator window select Projects and Tasks plus other tables as required:

image

Click Edit to load the Power Query editor. Edit the queries as needed, such as removing columns, remaining columns etc. but ensure you leave the ProjectId and TaskId columns in Projects and Tasks queries as these are required to join the Project Online data with the Roadmap data. Once finished you should have at least 9 queries like below:

image

Click Close and Apply in the Power Query editor. Set up the relationships between the Projects table and RoadmapRowLinks and Tasks table and RoadmapItemLinks:

image

Now update the Roadmap Detail page in the report as needed, as seen below outlined in red, I have included some project and task level data from my linked Project Online Projects and Tasks:

image

It’s that simple, take a look and see what you think.

#Project Roadmap is live #PPM #ProjectManagement #MSProject #ProjectOnline #Office365 #PowerPlatfom

December 19, 2018 at 9:00 pm | Posted in Add-on, Administration, App, Configuration, Functionality, Information, Reporting | 3 Comments
Tags: , , , , ,

Microsoft Project Roadmap is now live and rolling out! This is available on one of my demo tenants, in this post we will have a walkthrough creating a roadmap. For those of you who might not be aware, Roadmap is a new feature added to Microsoft’s PPM offering, this was announced at Microsoft Ignite: https://pwmather.wordpress.com/2018/09/24/microsoft-project-the-future-ignite-ppm-pmot-workmanagement-projectonline-projectmanagement/ and: https://pwmather.wordpress.com/2018/09/26/microsoft-project-roadmap-product-at-a-glance-ppm-office365-flow-powerplatform-dynamics365-azure-azureboards/

Once this has been rolled to your tenant, it will need to be enabled, Brian Smith covered that already here: https://blogs.msdn.microsoft.com/brismith/2018/12/07/project-online-getting-started-with-roadmap/. Once activated on your tenant, you will see a new option on the Project Home page:

image

For those of you not familiar with the new Project Home, see this post: https://pwmather.wordpress.com/2018/08/20/new-projectonline-project-home-office365-ppm-ui-ux-msproject-fabricui/

Clicking the Roadmap option for the first time will trigger Roadmap to be set up for the first time on that tenant, you will see the message below:

image 

Once that has completed after a short while, you will see the following page:

image

This is the blank roadmap canvas ready for you to create your roadmap items. There is a prompt to do this, see the “Add a row” card. Click the Add row button, this will load a side panel on the right:

image

Specify a name for the row – this could be the project name, feature name etc., it is just your reference for that roadmap item row. Specify an owner for that roadmap row – this is the person who is responsible for that project or feature etc. Then select the connection, the row can either connect to a Project Online project or an Azure DevOps Board:

image

In this example, I will select Project Online. The panel then changes so you can enter the PWA URL:

image

Enter the PWA URL and press the green tick to validate it:

image

Now start typing the name of the project you want to link this row to:

image

Then click the project name to select it. After a few moments, the panel will update:

image

Click See Details to view the permissions of the Flow – Roadmap uses Microsoft Flow behind the scenes to sync the data from Project Online and Azure Boards into the Roadmap database. Click Continue, the panel will then update to show what services the Flow will connect to and the account it will use:

image

Click Connect, after few moments the panel will update to Add items, here you can search for tasks from the linked Project Online project / Azure Board project:

image

Start typing the task names then select them, the selected items will appear in the table below:

image

Note the Type column, “Phase” are tasks with a duration greater than 0 and “Key date” are 0 duration tasks. Click Add at the bottom once the tasks are selected. These items will then be added to the roadmap row:

image

Notice in the right hand panel, you can see the last time the project was updated – this is the last time the project was synchronised to the roadmap database using Microsoft Flow. This happens every 5 minutes but you can trigger it manually by pressing the update button. We will look at the Flow later on. In the right hand panel, you can also click the project name, this will link to the Project Detail Page for that project in Project Online. You can access this project panel by either clicking the row title or selecting the row then clicking the Details button above the timeline.

Key dates can be added to the timeline using the Add key date button:

image

Key dates can be anything from key business dates to dates when a product is due to ship, it is just a way to visualise important dates for the roadmap.

Multiple rows can be added, you can have different rows linked to different PWA instances or different Azure Boards. The row order can be changed using the Move up or Move down arrow buttons above the timeline when a row is selected.

All items on the roadmap can have a status set:

image

Give the roadmap a name by clicking the “Untitled roadmap”, this will open a panel for you to update the name:

image

You have other options on the page, zoom to change the zoom level of the timeline. Filter to filter for a specific owner. Go to date to scroll the timeline to a date and Members to share access to the roadmap. This is done via Office 365 groups, you can either link this to an existing group or create a new one:

image

Once linked to a group, you will see the privacy level below the roadmap title:

image

The roadmap then has all of the features the Office 365 groups provide such as File, Planner, SharePoint, Conversations etc. The group can be accessed by clicking the group name on the members callout:

image

Clicking the Project link on the top bar will take you back to the Project Home, here you will now see your roadmap:

image

You can create many roadmaps from Project Home, linked to different projects and different Office 365 groups. If you wanted another user to access your roadmap, copy the URL link once you’ve accessed the roadmap then send then the URL, just ensure they have been added as a member to that roadmap.

As mentioned earlier on, the roadmap feature use Microsoft Flow to sync the data with the roadmap database. For each row you create that is linked to Project Online or Azure Boards in a roadmap, a new Flow will get created automatically. These will run every 5 minutes to sync the data. Two rows in my example roadmap were linked to projects in Project Online, this created two Flows for me:

image

We can drill in and see the Flow:

image

There are many actions in this Flow to sync the data, the Flow does many checks checking things like the project last published time and will only sync if the project publish was greater than 15 minutes ago. I wouldn’t recommend changing this Flow unless you know what you are doing – there is no need to change this Flow, leave it be! If you do happen to break it by accident, disable the Flow from the Flow admin page then on the roadmap, try to manually update a project row that is linked to that Flow, it will display a Fix option:

image

Click Fix, the panel will then update to show the Fix button:

image

Click Fix and the Flow will be redeployed.

That’s it for this post – a great addition to the Microsoft PPM offering.

#ProjectOnline Snapshot / data to #SharePoint list using #MSFLow #MicrosoftFlow #PPM #PMOT #Office365 #PowerPlatform

December 14, 2018 at 10:00 pm | Posted in Add-on, Administration, Configuration, Customisation, Functionality, Information, Reporting, Workflow | 2 Comments
Tags: , , , , , , , ,

Next in my series of posts on using Microsoft Flow with Project Online is capturing Project Online data into a SharePoint list, this is a useful scenario for simple snapshot requirements. For example, if you want to snapshot some key project level data, the easiest place to store this data is in a SharePoint list. I have blogged simple code examples before that do this: https://pwmather.wordpress.com/2016/08/26/projectonline-data-capture-snapshot-capability-with-powershell-sharepoint-office365-ppm-bi/ & https://pwmather.wordpress.com/2018/01/27/projectonline-project-level-html-fields-to-a-sharepoint-list-powershell-ppm-office365/ Whilst these approaches work, the PowerShell does need to be run from somewhere, a server / Azure Function etc. This post provides the same end result with Project Online data in a SharePoint list but all from a Microsoft Flow. The Flow can be seen below:

image

This simple example makes use of the recurrence trigger to schedule the process, the “Send an HTTP Request to SharePoint” action to get the project data from Project Online and a SharePoint create item action inside an Apply to each loop. We will walkthrough the actions later in the post.

Firstly, the SharePoint list was created:

image

This was created in my Project Online Project Web App site collection. I created SharePoint columns on this list for each of the fields I wanted to capture from my Project Online dataset. As this is just an example, the number of fields and data is quite limited. Now back to the Flow. We will skip over the recurrence trigger to the first action that gets the Project Online data, this just uses the “Send an HTTP Request to SharePoint” action to call the Project Online OData REST API so that we can easily get all of the Project Online data. In this example we are accessing the Projects endpoint in this API and selecting a few example project level fields including an example custom field:

image

This action will get all of the data based on the Odata query used in the Uri input. We wont cover all of the settings here in this post as I covered this in the last post found here: https://pwmather.wordpress.com/2018/12/12/projectonline-publish-all-projects-using-msflow-microsoftflow-ppm-pmot-office365-powerplatform-part-2/

Next we need to loop through all of the projects in the results array to create a SharePoint list item for each project. To do this we need to use an “Apply to each” action:

image

In the output from the previous step we use body(‘ReadallProjects’)[‘value’] to use the data from the previous step which is all of our Project Online projects with some data minus the timesheet project in this example. Then for each project in the array we create a list item on our target SharePoint list using the create item action. In the create item action we just map the data from the array to the correct list column. The Project Online fields are accessed using an expression, for example for ProjectCost in this example Flow the expression is items(‘Apply_to_each’)[‘ProjectCost’] where apply to each is the name of the action and ProjectCost is the field / property in the results from the Odata query.

Once this Flow runs a few times you can then easily create snapshot / trend reports or even extend the SharePoint view to show what you need:

image

As you can see in this example, I’ve updated the SharePoint view to show the RAG icon in the Overall RAG column rather than the text value. This is very simple with the column formatting options available with the SharePoint modern UI using JSON.

Another example of extending Project Online with low / no code solutions in Office 365.

There will be further example solutions built for Project Online using Microsoft Flow in later posts.

Next Page »

Create a free website or blog at WordPress.com.
Entries and comments feeds.