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: 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:


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


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:


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:


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:


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:


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:


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:


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


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:


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.


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

Introducing the reimagined Microsoft Project! #ProjectOnline #Office365 #PowerPlatform #PPM #ProjectManagement

September 10, 2019 at 2:09 pm | Posted in Administration, Configuration, Functionality, Information, Installation | Comments Off on Introducing the reimagined Microsoft Project! #ProjectOnline #Office365 #PowerPlatform #PPM #ProjectManagement
Tags: , , ,

There was a nice new message in the Office 365 message center today – Introducing the reimagined Microsoft Project! This can be seen below:


This includes a link to the published roadmap item: 

Looking forward to the new Project going live!

#ProjectOnline and #AzureDevOps integration using #MicrosoftFlow #Office365 #PPM #AzureBoards #MSProject #PowerPlatform #ProjectManagement

September 7, 2019 at 8:03 pm | Posted in Add-on, Administration, Configuration, Customisation, Functionality, Information, Workflow | Comments Off on #ProjectOnline and #AzureDevOps integration using #MicrosoftFlow #Office365 #PPM #AzureBoards #MSProject #PowerPlatform #ProjectManagement
Tags: , , , , , , ,

I’ve posted quite a few posts for Project Online using Microsoft Flow recently so here is another! The last one was to chase / prompt users for in progress overdue timesheets, if you didn’t see this, here it is:

This time we will look at integrating Office 365 Project Online with Azure DevOps using my favourite Power Platform application Microsoft Flow. The Flow can be seen below:


I have two Project Online Enterprise custom fields to support this process. A new project level text custom field called “Azure DevOps Project” to hold the DevOps project name and a new task level flag field called “Managed In DevOps?” to flag which tasks are managed in DevOps. Project Level field seen here in my test project:


Task Level:


In this example test project, the process has run already for tasks 2 to 6 as you can see the task names have updated with the prefix “DevOps_itemId_{id}_” and here are the test project tasks in Azure DevOps:


When the Flow runs, Task 4 and Task 6 will be added to the backlog as Epics in this example based on the process used in this test Azure DevOps project:


The tasks in the project are also updated with the prefix:


Now we will walkthrough the Flow actions. This is triggered on a schedule, in this example it runs daily, then the first action used is a SharePoint HTTP action to query the Project Reporting API to get the Project details for all Projects linked to the Azure DevOps projects. In this example, the Flow is fixed to one Azure DevOps project but you can have multiple Project Online projects creating tasks in the one Azure DevOps project. For additional DevOps projects, create additional Flows / extend as required.


Then an apply to each action is used as the first action could return multiple projects if there are multiple projects in Project Online that have an Azure DevOps Project custom field value of “Paul Mathers Test Project”. The results from the GetProjectDetails action is passed in, then for each project in the dataset another SharePoint HTTP action is used to query the Project Reporting API to get all tasks for the current project where the task is tagged with “Yes” for the new “Managed in DevOps?” custom field and where the task name doesn’t already have the “DevOps_” prefix. The Project ID is passed into the Uri using the expression: items(‘Apply_to_each_project’)[‘ProjectId’]


Then there is a condition action to check if there is at least 1 task in the results from the GetTasksForDevOps action:


If the condition check is true, the Project is checked out using the Project Online Checkout project action, the project Id is passed in using the expression items(‘Apply_to_each_project’)[‘ProjectId’] then another Apply to each action is used and the output from the GetTasksForDevOps action is passed in:


Two actions will run inside this apply to each action for each task returned in the GetTasksForDevOps action. Inside this apply to each action the Azure DevOps Create a work item action is used. The account name, project and work item type are set and fixed – set the work item type as needed based on the process used in the DevOps project. The title is dynamic using the expression items(‘Apply_to_each_task’)[‘TaskName’]:


There are other properties you can set in the advanced options if required:


The final action inside the Apply to each task action is another SharePoint HTTP action, this time to send a PATCH request to the Project Online CSOM REST API to update the task name. The following expressions are used in the Uri items(‘Apply_to_each_project’)[‘ProjectId’] and items(‘Apply_to_each_task’)[‘TaskId’]. In the Body the task name details are inlcuded, the Id of the newly created work item is passed in from the dynamic content and also the task name using the expression items(‘Apply_to_each_task’)[‘TaskName’]:


Once the apply to each task action is completed, the final action in the true part of the condition action is the Project Online Checkin and publish project action. The project Id is passed in using the expression items(‘Apply_to_each_project’)[‘ProjectId’]Flow9

The account used in the SharePoint connection will need access to to Project Online Reporting API and also edit access to all projects. The account used in the Project Online connection will also need edit access to all projects.

That’s it, another simple no code solution for Office 365 Project Online using Microsoft Flow from the Power Platform. This is a simple example that could be extended a lot based on your requirements but hopefully this will provide you a good starting point or give you some inspiration on how to achieve your integration requirements.

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