#Office365 #ProjectOnline Project Request process using #MicrosoftForms and #MicrosoftFlow #ProjectManagement #PPM #MSProject #SharePoint #PowerPlatform

October 23, 2019 at 8:17 pm | Posted in Add-on, Administration, App, Configuration, Customisation, Functionality, Information, Workflow | 1 Comment
Tags: , , , , , , , ,

Following on from my last post where I created an example Microsoft Flow to create a project in Office 365 Project Online using the correct Enterprise Project Type, I’ve extended this to show how to build a project request process using Microsoft Forms, Flow Approvals, SharePoint and Project Online. If you missed the last post, here it is https://pwmather.wordpress.com/2019/09/27/creating-new-projects-based-on-epts-in-office365-projectonline-using-microsoftflow-ppm-powerplatform-rest-msproject-projectmanagement/

For this project request process there are a few components required, the Form and the SharePoint list then the Flow to bring it together. The form is used to capture the project requests but this could as easily have been a PowerApp. My simple form can be seen below:

Form

We could ask any questions we want on the form but the key part for this project request example is the department question as this is used for two purposes. The first, to get the project approvals from the correct person in that department and secondly to create the approved projects using the correct Enterprise Project Type (EPT) in Project Online. The next component is a SharePoint list to store the requests and approval responses. I created this in the Project Online Project Web App (PWA) site collection but again, this list could exist in any SharePoint Online site collection or we could have even created an entity in the Power Platform CDS to store the data. The simple list can be seen below:

List

The columns I have on this list are detailed below:

  • Title – used to store the Project Name from the request form
  • Project Description – used to store the Project Description from the request form
  • Project EPT – used to store the project department from the request form
  • Justification – used to store the project justification from the request form
  • Reviewed By – used to store the Flow Approval reviewer
  • Review Status – used to store Flow Approval status
  • Reviewer Comments – used to store the Flow Approval reviewer comments
  • Project Requested By – used to store the email address of the user who completed the request form
  • Project ID – used to store the Project ID from Project Online for projects that get created by the Flow

The next component is the Microsoft Flow, this is used to capture the Form responses once they are submitted, start the approvals, create the SharePoint list item on the Project Request List then if approved, create the project and update the list item. If rejected the Flow sends a rejected email to the project requester.The Flow can be seen below with one of the switch cases expanded:

Flow

I will cover the Flow in detail next but the final component required is Project Online. In my Project Online instance I have 3 EPTs, one for Marketing, one for R&D and the default Enterprise Project.

So back to the Flow, the Flow is triggered when a new form response is submitted to the Project Request form, it then uses an Apply to each loop with a list of the response notifications passed in from the trigger. The first step inside the Apply to each action is the Get response details Form action with the form response ID passed in. The Flow then uses a Switch action to have different paths based on the department value, the “Which department is the project for?” answer is used to switch on:

Flow1

The Flow then has different cases in the Switch action, one for each of the possible values for the “Which department is the project for?” question:

Flow2

Now we will expand one of the cases to see the details and I will point out the differences between each case:

Flow3

The first action in the case is a Flow Approval using the “Start and wait for an approval” action. This approval type is set to “Approve/Reject – First to response”. As this is the Marketing case, the approval title is “Marketing Project Request” and it is assigned to the user who approves new Marketing projects. I have just used my account for demo purposes! The title and approver it is assigned to could be different per department. Then in the details section we just pass in values from the “Get response details” action so that the approver knows what they are approving. Then there is a Condition action to check the outcome of the approval action, this just uses the Outcome output from the approval action. Then for approvals that were approved the Flow uses another Apply to each loop this time passing in the Approval action responses – we only have one approver but the Approvals action can have more than one response so it needs the loop. Then inside the approved loop the Flow uses the SharePoint create item action to create the list item on the Project Request List, then it uses the SharePoint HTTP action to create the project in Project Online then finally a SharePoint Update item action to update the list item with the newly created project ID. The overview can be seen below with details for these actions next:

Flow4

Create item action has the Form answers and the approval reviewer and reviewers comments passed in to create the list item:

Flow5

The SharePoint HTTP action posts to ProjectServer/Projects/Add API with the project name and description being passed in from the Form answers, the EnterpriseProjectTypeId is hard coded to the Marketing EPT – this GUID would be different in the other cases so the project is created with the correct EPT:

Flow6

The final action for the approved request is to update the previously created list item on the project request list with the newly created project Id using the SharePoint Update item action. Here we pass in the ID from the previous Create Approved item action, the Title is required so that is set again using the Form answer and the Project ID is set using an expression body(‘create_Marketing_project’)[‘Id’]. The expression will be different for the other cases as it needs the name of the action that is used to create the project.

Flow7

If the project request is rejected, the Flow creates the item on the list the same way is does if approved but the Review Status field is set to “Rejected” then the Flow sends an email to the user who requested the project:

Flow8

That’s it – really simple! Next I’ll show the approvals email for a requested project, this can be seen below:

Email

I will then approve this with some comments:

Email2

Once submitted, the email updates to show its approved:

Email2

In this example, the item is then created on the list, the project created and the list item updated with the project GUID. I will create a video in the next week or two to demo this.

A nice simple low / no code solution for building a project request process for Project Online using Microsoft Forms, SharePoint Online and Microsoft Flow, watch out for the video on my YouTube channel soon: https://www.youtube.com/channel/UC_b_pa1ADKlUqIpLK9AmR1g?sub_confirmation=1

Creating new Projects based on EPTs in #Office365 #ProjectOnline using #MicrosoftFlow #PPM #PowerPlatform #REST #MSProject #ProjectManagement

September 27, 2019 at 5:06 pm | Posted in Add-on, Administration, App, Configuration, Customisation, Functionality, Information, Workflow | 1 Comment
Tags: , , , , , , ,

When creating projects in Office 365 Project Online you can create projects based on different types known as Enterprise Project Types, here is a link on setting these up: https://pwmather.wordpress.com/2014/01/27/getting-started-with-projectonline-part-5-ps2013-office365-project-ppm-sharepointonline-pm/ Creating a project via PWA enables you to select the correct EPT for your type of project. When creating a project programmatically you can also set the correct EPT. The default “Creates new project” Project Online Microsoft Flow action does not provide the ability to set the Enterprise Project Type, it will just use the default type. The action can be seen below:

Flow1

The easy solution is to use the SharePoint HTTP action to use the Project Online CSOM REST API as seen below in this example:

Flow2

This example is very much hard coded and manual when setting the EPT value, project names etc. In a real world example these would be set from the source application requesting to create a project, but the process is the same. So assuming the source application had set the variable to Marketing as seen below, the switch action would then check the value in the variable:

Flow3

In the switch action you would have switch cases for each EPT you have / want to use. In my test PWA instance I have 3 EPTs I wanted to use – Enterprise Project, Marketing and R&D:

PWA

I have set the Switch action to have 3 cases, 2 to match the the EPT values for Marketing and RD then the 3rd as a catch all that uses the default Enterprise Project EPT.

In this example case the variable value is Marketing so the Switch action would then use the CreateMarketingProject action seen below – this is the SharePoint HTTP action:

Flow4

Here we call the _api/ProjectServer/Project/Add project API with a POST request and pass JSON in the body that details how to create the project as seen below:

Flow5

The key parameter value here for the EPT is the EnterpriseProjectTypeId, in this case this is the GUID for the Marketing EPT as seen below:

PWA2

The EnterpriseProjectTypeId GUIDs are different in the other cases within the Switch action so that the projects are created using the correct EPT. Without passing in the EnterpriseProjectTypeId, the project would create using the default EPT. A simple solution for creating the correct project type in Project Online using the Power Platform application Microsoft Flow.

#ProjectOnline – how to check if a project is checked out using #MicrosoftFlow #Office365 #PPM #MSProject #PowerPlatform #ProjectManagement

September 25, 2019 at 1:20 pm | Posted in Add-on, Administration, App, Configuration, Customisation, Functionality, Information, Workflow | Comments Off on #ProjectOnline – how to check if a project is checked out using #MicrosoftFlow #Office365 #PPM #MSProject #PowerPlatform #ProjectManagement
Tags: , , , , , , ,

When programmatically working with projects in Office 365 Project Online, if you wish to edit a project, you will only be able to do this if the project is not already checked out. Below is a simple example using Microsoft Flow to check if the projects are checked out:

Flow

The Flow is detailed below. Firstly the Flow will query the ProjectServer API which is the CSOM REST API using a SharePoint HTTP action:

Flow1

This queries the Projects endpoint and includes the IsCheckedOut property. NOTE: Use an account for the SharePoint connection that has full edit access to all project in the PWA site collection as the ProjectServer API is security trimmed.

Then the Flow uses an Apply to each loop, the dataset returned from the previous action is used which is body(‘CheckIfProjectsCheckedOut’)[‘value’]. Then a condition action is used, this is where the Flow will check if the project is checked out. The value passed into the check is the IsCheckedOut property using items(‘Apply_to_each_project’)[‘IsCheckedOut’], here we check if this is false:

Flow2

Now at this point you would continue with your project update if this check was true (project is not checked out) and not proceed with the update if this check was false (project is checked out). For the purpose of this example Flow, I just send an email but in a real world example, this is where your actions would go to update the projects, log which projects could not be updated etc.

Flow3

A simple solution to help build more robust Flows for Project Online.

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

July 31, 2019 at 12:01 pm | Posted in Add-on, Administration, App, Configuration, Customisation, Functionality, Information, Reporting, Workflow | 1 Comment
Tags: , , , , , , , , ,

It’s been a while since I published the last post in this mini series due to getting carried away with other Microsoft Flow goodness for Project Online. The previous post in this custom email notification series can be found below:

https://pwmather.wordpress.com/2019/04/30/projectonline-custom-email-notifications-using-msflow-microsoftflow-ppm-pmot-msproject-exchange-office365-powerplatform-part-2/

In the final part of this email notification series we send an email with a list of projects that have not been published in the defined period, in this example it’s set to 5 days. The Flow also creates a task in Microsoft Planner for the user to chase the project owners to update their project plans. The Flow summary can be seen below:

FlowSummary

The trigger is based on a schedule, in this example it is running weekly. Then the Flow uses the Get past time action to get the date in the past, in this example 5 days ago. A compose action is then used to get todays date in the required format. These steps can be seen below:

Flow1

The Flow then use the SharePoint HTTP action to query the ProjectData API to get the list of Projects where the last published date is on or before the past time date, in this case 5 days ago. The logic here would be changed for your requirements, for example you would also filter out projects that were completed / closed. The next action is a Create HTML table action, here we just pass in the results from the HTTP action as seen in the tooltip displayed in the screenshot below:

Flow2

The final 2 actions in this Flow create the Planner task and then send the email. We pass in some variables to create the Planner task, in this example we use the output from the Today action to use todays date in the Title and used to set the due date. The task gets assigned to me in this example so I would put my PMO hat on, this would be assigned to someone in the organisation who would be checking project plan quality etc. Then the Flow sends an email, typically this could go to an individual, likely the same person the Planner task is assigned to, or it could go to a multiple people or a group / distribution list etc. In the body on the email the output from the create HTML table action is used and also the task Id for the new planner task:

Flow3

When this Flow runs, this results in a new Planner task being created in the selected Planner plan:

PlannerTask

Then the email is sent out:

Email

As you can see, the email contains a table of test projects from my test Project Online instance that have not been published in the last 5 days and also a link to the task I have assigned in Planner.

Look out for more Microsoft Flow / PowerApps examples for Project Online in the future. For previous examples I have done, this links includes most: https://pwmather.wordpress.com/tag/power-platform/

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 | Comments Off on Download example #MicrosoftFlow for Syncing #MSProject #Roadmap Row Item Status with #ProjectOnline Task Status #CDS #PowerPlatform #MSFlow #REST #SharePoint #WorkManagement #Office365
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 | 1 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 | 2 Comments
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.

Sync #MSProject #Roadmap Row Item Status with #ProjectOnline Task Status using #MicrosoftFlow #CDS #PowerPlatform #MSFlow #REST #SharePoint #WorkManagement #Office365

May 27, 2019 at 9:36 pm | Posted in Administration, Configuration, Functionality, Information, Reporting | 1 Comment
Tags: , , , , , , ,

At the recent Microsoft PPM Summit in Prague last week, Chris Boyd from the Microsoft Project Product team demonstrated syncing the Roadmap row item status with the task status from the Project Online schedule. This was done using compiled code in a console application which worked well. I set myself a little challenge to do something similar but all from Microsoft Flow. Being a public holiday here in the UK, I found an hour spare today to tackle this. In this blog post I walkthrough the Flow actions required to do this. A summary image can be seen below:

image

As you can see, this flow is triggered on a Project Online Project Publish. I then execute a REST query on the Project Data API using the send an HTTP request to SharePoint action:

image

I pass in the published project ID and select the TaskID and the custom field I’m using to set the Roadmap row item status. I created a custom field called “Roadmap Health” that was a lookup with the same status values as Roadmap but you can use any field and values, just update the query and Flow Switch action as needed.

I then create a new variable called “Health” and set the Type to an Integer:

image

I then add an Apply to each action and pass in the body(‘GetTaskHealth’)[‘value’] expression to use the output from my REST call:

image

I then have a condition check action to check for null values in the Roadmap Health field, the expression for the field is items(‘Apply_to_each’)[‘RoadmapHealth’] then null is also added via an expression:

image

You could remove the need for the condition check by filtering out the nulls in the REST call. If this is false, nothing happens as there is no status to sync, if this true the next action is a  Switch, the field I’m using in the switch is referenced using the expression: items(‘Apply_to_each’)[‘RoadmapHealth’]

image

Then for each possible value from the task level custom field you are using, map this to one of the Roadmap status’ by setting the Health variable, for example, when the Roadmap Health task field value is equal to “On Track” I set the variable to 0:

image

The Roadmap status enumerations are below:

  • On Track = 0
  • Potential Problem = 1
  • At Risk = 2
  • Complete = 10
  • Not Set = 100

Once that is completed for all possible outcomes, the next action is the List records Common Data Service action:

image

Here the Flow returns the Roadmap Item Link record for the TaskId passed in, the TaskId is referenced using the following expression: items(‘Apply_to_each’)[‘TaskId’]

The next action is another Apply to each action, Flow does this automatically as the List records would typically return more than one record:

image

The output used for this action is the default List records value from the Dynamic Content option. Then the final action within the Flow is the Common Data Service Update a record:

image

This action updates the Roadmap Items, I then pass in the List records Roadmap Item value from the Dynamic content panel, this is the Roadmap Item Id value. I also pass in the Health variable in the “Health Status Value” field. The flow will loop through all Project tasks and update the equivalent Roadmap row item status, pretty simple for a no / low code solution using only Microsoft Flow!

Over the next few days I will publish a short video for this Flow on my YouTube channel and also probably provide a download link for this Flow template to help as a solution starter.

#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.

Next Page »

Blog at WordPress.com.
Entries and comments feeds.