#Office365 #ProjectfortheWeb #MicrosoftTeams integration #PowerAutomate #ProjectManagement #PPM #MSProject #PowerPlatform #AdaptiveCards Part 4

December 12, 2019 at 1:22 pm | Posted in Add-on, Administration, App, Customisation, Functionality, Information | Leave a comment
Tags: , , , , , , ,

In part 4 of this series we will create a simple Power Automate Flow that posts a message to a Team when a project is overdue. For part 3 of the series, here is the link if you missed it where we looked at adding a Bot for Project for the web into Teams: https://pwmather.wordpress.com/2019/11/22/office365-projectfortheweb-microsoftteams-integration-projectmanagement-ppm-msproject-powerplatform-powervirtualagents-part-3/

This post will use Teams messages and Adaptive Cards in Teams, this will be similar to the posts I created in the summer for Project Online: https://pwmather.wordpress.com/tag/adaptive-cards/ 

Firstly create the Power Automate Flow to get the data, in this simple example I have a scheduled Flow that runs once a week, queries the Projects entity in the CDS with a filter as seen below to only return the projects that are not 100% complete and the Finish date is before todays date:


Then an Apply to each action is used as the List Overdue Projects is more than likely to return more than one project:


Here you can see some additional Compose actions as I calculate the days overdue and also build up a Project Link, these are used in the Post a message action. The message is switched to code view so that I could build up a HTML link. I created most of the message when in the HTML view then switched it to the code view to create the Project Link. When this runs this posts a message for each project overdue, in my example test tenant I have two test projects that are overdue:


Before we move on to the adaptive card example, I will detail the example compose actions I have:


FinDateTickValue = ticks(items(‘Apply_to_each’)[‘msdyn_finish’])

TodayTickValue = ticks(utcNow())

DateDifference = div(sub(outputs(‘TodayTickValue’),outputs(‘FinDateTickValue’)),864000000000)

ProjLink = concat(‘https://project.microsoft.com/?org=cdsOrg#/taskgrid?projectId=projectId’,items(‘Apply_to_each’)[‘msdyn_projectid’])  – cdsOrg would be updated to your correct CDS org like below:


In the next example I will use the Teams Adaptive Card action to post this message as a card rather than a standard message:


The card is authored in JSON, I used the same process here as I documented my previous posts for Project Online, no need to hand craft the JSON, use adaptive card designer here: https://adaptivecards.io/designer. Once you have the card built and designed in the designer, copy the card JSON and paste into the Flow message input:


Add the dynamic content to the JSON message as seen below to pass in the correct data based on your card design:


When this Flow runs it posts cards to the Teams channel for the overdue projects as seen below:


The cards can be made to be as engaging as you like with images, text, fonts etc. this is just a basic example for this blog post.

There are many use cases for this type of simple Project for the Web and Microsoft Teams integration using Power Automate, I will look to post some other examples in the future.

#Office365 #ProjectfortheWeb #MicrosoftTeams integration #ProjectManagement #PPM #MSProject #PowerPlatform #PowerVirtualAgents Part 3

November 22, 2019 at 7:16 pm | Posted in Add-on, Administration, App, Functionality, Information, Workflow | 1 Comment
Tags: , , , , , , , ,

In part 3 of this series we will look at adding the sample bot created in part 2 in to Microsoft Teams. If you missed part 2 it can be found here: https://pwmather.wordpress.com/2019/11/20/office365-projectfortheweb-microsoftteams-integration-projectmanagement-ppm-msproject-powerplatform-part-2/

Now we have a working Power Virtual Agent (PVA) for creating projects in Project for the Web we can now embed this into other applications such as Microsoft Teams, custom web applications, Cortana, Facebook etc. Do remember that PVAs are currently only in preview and not generally available yet. For this example we will add this into Microsoft Teams. Firstly we need to publish the bot from the Publish page:


Once published at least once you will then be able to try out your bot in the demo website:


Each time you make a change to the bot, once ready you will need to publish it again. Now that it’s published we click Channels under the Manage menu, then in this example click Microsoft Teams:


Now click the Add button and this generates the App ID:


Copy the App ID for a later step. Now load the Teams App Studio (or add it to Teams if you don’t have this yet). In the App Studio click Manifest editor and the click “Create a new app”. Complete the form as required:


Now using the left hand menu, click Bots under “2 Capabilities”:


Click “Set up”. Then click “Existing bot”, add the bot name then paste in the App ID copied in the previous step when adding the Teams channel in the Power Virtual Agents window and set the scope to Personal then click Save:


Now click on Test and distribute under “3 Finish”:


Here you can install the app in Teams for testing or Download. In this example I’m downloading it then in Teams click Apps > Upload a custom app:


Once uploaded, from the Bots filter in Apps you will see the bot:


Click that then you will be able to Add it and it will appear in your personal Chat and you can create a project from there:


For more details see this link: https://docs.microsoft.com/en-gb/power-virtual-agents/publication-add-bot-to-microsoft-teams

I will add some more Microsoft Teams integration options for Project for the Web soon!

#Office365 #ProjectfortheWeb #MicrosoftTeams integration #ProjectManagement #PPM #MSProject #PowerPlatform Part 2

November 20, 2019 at 8:47 pm | Posted in Add-on, Administration, App, Configuration, Customisation, Functionality, Information, Workflow | 1 Comment
Tags: , , , , , , , ,

In the last post we started looking at integration options for Project for the Web in Microsoft Teams, this post can be found here: https://pwmather.wordpress.com/2019/11/16/office365-projectfortheweb-microsoftteams-integration-projectmanagement-ppm-msproject-powerplatform-part-1/

This post continues with the Project for the Web and Microsoft Teams integration theme but this time creating a Project directly from Teams using a bot. This makes use of the new Power Virtual Agents feature that is currently in preview: https://powervirtualagents.microsoft.com/ In this post we will build a very simple Power Virtual Agent, PVA for short, that will enable to user to create a project in the Project for the Web service.

In the first part (Part 2 of the series) we create the PVA bot and Power Automate Flow. Firstly access the Power Virtual Agents preview and create a new bot, I’ve created one called “Project Creation”:


I wont cover all the possible options for the PVAs as these are well documented here: https://docs.microsoft.com/en-us/power-virtual-agents/, I will just cover the minimum to get started creating a project. Click the “Customize your greeting” button to load the default Greeting topic editor:


Here on the canvas you can create / edit the steps for the greeting topic. I’ve deleted some of the default messages, updated a message and about to add a question:


I’ve created my first question that the bot will ask the user:


This is taking the entire response as the answer and saving it to the projectName variable. The next question is asking for the start date:


This is identifying the responses as Date and time and saving it to the startDate variable. As you can see this added two conditions in but I will delete those as they are not required in this bot. The final question is asking the user which department is the project for. Department is a custom field I have in the project entity:


This is a multiple choice question to give the user a option to select, I’ve matched the options here that are available my custom Department Option set in the CDS. The answer will be saved to the department variable. As you can see this added three conditions in but I will delete those as they are not required in this bot. Next we need to call an action to create the project. This will call a Flow, create the Flow using the “Create a flow” option if you do not have the Flow yet:


That will take you to the Flow editor with the Power Virtual Agents Flow Template loaded:


Modify this Flow as needed and update the name. Here is my Flow:


Key changes highlighted below:

Updated the JSON schema to support the data the PVA is passing in:


Added a switch action to handle the different departments:


Then within each case, add a “Create a new record” CDS action to create the project, here is the Marketing project example:


Pass in the details as needed, the key parts for this post is that I’m passing in the Name value and the Start Date value from the PVA bot. I’ve hard coded items like the Project Manager in this example. For other setting, see this post for details: https://pwmather.wordpress.com/2019/11/11/office365-projectfortheweb-project-request-process-using-microsoftforms-cds-and-powerautomate-projectmanagement-ppm-msproject-powerplatform/ Repeat this for each case in the switch action. The final action is the response to the PVA, this has been updated with the correct outputs that I want to post back:


For this Flow to be available, it needs to be added to a solution. To do this navigate to the Power Apps home and click Solutions > New solution and complete the form then click create. Access the new solution and click Add exiting from the command bar:


Select Flow then click Outside Solutions and select the Flow then click Add:


Now back in the PVA bot editor window, click “Call an action” again" and select the Flow that was added to the solution and set the variables:


We then add another message to inform the user that the project has been created and end the conversation:


Save the bot and test it:



We can now see the new empty project that has been created:


That’s it for part 2 of this series, in part 3 we will look at adding this bot in to Microsoft Teams. Power Virtual Agents are pretty awesome for low / no code bots, try out the preview and see what you think!

#Office365 #ProjectfortheWeb #MicrosoftTeams integration #ProjectManagement #PPM #MSProject #PowerPlatform Part 1

November 16, 2019 at 12:15 pm | Posted in Add-on, Administration, App, Configuration, Customisation, Functionality, Information | 1 Comment
Tags: , , , , , ,

This is a new mini series for the new Project for the Web application that will look at various ways / examples for integrating with Microsoft Teams for improved collaboration. This blog series will talk about Project for the Web: https://pwmather.wordpress.com/tag/project-for-the-web/.

I previously posted a examples on integrating Office 365 Project Online with Microsoft Teams, here are many examples for Project Online: https://pwmather.wordpress.com/tag/microsoft-teams/. This series will build similar integrations but for Project for the Web.

In this first post, we will keep it very simple and just surface the Project in a new Team linked to the Office 365 Group used for the Project. Firstly for this example, as we want to link the Project in a Tab in a Team Channel, we will create a new Team linked to Office 365 Group. If your Project is not linked to an Office 365 Group yet, for example if you haven’t added any team members yet, access the Project and link this to an existing Office 365 Group or create a new Office 365 Group as required.  To create / link the Project to an Office 365 Group, access the Project then click “Group members” in the top right corner:


Here use the menu to either create a new group or add to a group. For this example I’m going to use this project and group:


This Office 365 Group doesn’t current have a Microsoft Team associated. Now jump into Microsoft Teams and click Join or create a team at the bottom left below the Teams you are a member of then click Create a team:


Click Create from…


Then Office 365 group:


Scroll and find the group you want, in this example I selected the group I created for the Project:


Now click Create. We now have the new Team linked to the Office 365 group associated with the project:


In the General Channel I will create a new Website tab to link to the project:


The URL used here is as follows:


Where {cdsOrg} is the Organization project for the web is deployed to, {projectId} is the project ID for the project. The last query string on the end is dynamicsUI=true, this is to remove the Office 365 header and the left navigation pane to give a better embedded experience. Without the dynamicsUI query sting:


With the dynamicsUI query string:


Back in Microsoft Teams, we can now access the Project plan inside Microsoft Teams:


This could be automated if needed but the manual steps are so simple. Next up we look at adding more Microsoft Teams integration for Project for the Web.

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


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:


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:


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:


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:


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


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:


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


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:


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.


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:


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


I will then approve this with some comments:


Once submitted, the email updates to show its approved:


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:


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: https://www.microsoft.com/en-gb/microsoft-365/roadmap?filters=&filters=&searchterms=54641 

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: https://pwmather.wordpress.com/2019/08/28/projectonline-and-adaptive-cards-in-microsoftteams-using-microsoftflow-to-chase-users-for-overdue-timesheets-ppm-projectmanagement-msproject-powerplatform-office365/

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.

#ProjectOnline and adaptive cards in #MicrosoftTeams using #MicrosoftFlow to chase users for overdue timesheets #PPM #ProjectManagement #MSProject #PowerPlatform #Office365

August 28, 2019 at 4:27 pm | Posted in Add-on, Administration, App, Configuration, Customisation, Functionality, Information, Reporting, Workflow | 1 Comment
Tags: , , , , , ,

Another example use case for adaptive cards in Microsoft Teams to add additional Office 365 Project Online integration. In this example this solution will post a card in Teams for users who have timesheets in progress that are overdue. My previous example posted to Project Owners: https://pwmather.wordpress.com/2019/08/24/projectonline-and-adaptive-cards-in-microsoftteams-using-microsoftflow-for-project-owner-actions-ppm-projectmanagement-msproject-office365-powerplatform/

This example posts to the timesheet owners who have timesheets overdue. To avoid posting to all users in Project Online, this example filters the users based on an enterprise resource custom flag field called “Timesheet Required”. The resources that need to submit timesheets have this new field set to “Yes”.

Like previous posts, I used https://adaptivecards.io/designer/ to design the card.

The Microsoft Flow can be seen below:


The Flow is triggered on a schedule then uses the Current time action to get the current time. Then a SharePoint HTTP action is used to query the ProjectData API to get a list of resources in Project Online who are required to complete timesheets:


Next an Apply to each action is used as the previous action could return more than one resource, the output from the previous action is used for the input. Inside the Apply to each action, a SharePoint HTTP action is used to query the ProjectData API for each resource from the GetUsersForTimesheets action. In the Uri query, two variables are passed in, the resource name items(‘Apply_to_each’)[‘ResourceName’] and the current time:


Then a condition check is used to check if there is at least one timesheet for that resource using the expression length(body(‘GetAllUsersInProgressOverdueTimesheets’)[‘value’]) :


If there is at least one timesheet for that resource the Flow then posts a card to that resource in Microsoft Teams. This is posted to the timesheet owner using the expression items(‘Apply_to_each’)[‘ResourceEmailAddress’]. There are some dynamic values passed into the JSON too for the ResourceName items(‘Apply_to_each’)[‘ResourceName’] and count of timesheets length(body(‘GetAllUsersInProgressOverdueTimesheets’)[‘value’]):


The card is posted to the users Flow chat as seen below:


The user will then be able to click the button to access the timesheet summary page in Project Online and update the timesheets as needed.

Another simple low / no code option for integrating Office 365 Project Online and Microsoft Teams using Microsoft Flow.

Next Page »

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