Archive

Author Archive

#ProjectOnline PWA Project Details Page integration with Project Roadmap #Office365 #PPM #PowerPlatform #MSFlow

January 16, 2019 Leave a comment
Paul Mather
I am a Project Server and SharePoint consultant but my main focus currently is around Project Server.
I have been working with Project Server for nearly five years since 2007 for a Microsoft Gold Certified Partner in the UK, I have also been awared with the Microsoft Community Contributor Award 2011.
I am also a certified Prince2 Practitioner.

This article has been cross posted from pwmather.wordpress.com (original article)

As you are probably aware by now, the new Roadmap feature is live in Project Home as detailed in this blog post: https://pwmather.wordpress.com/2018/12/19/project-roadmap-is-live-ppm-projectmanagement-msproject-projectonline-office365-powerplatfom/ This post covers a new button that would have appeared in your Project Online PWA instance:

image

This new Add to Roadmap button is on the Task tab on Schedule Project Detail Page. This enables you to add published tasks to a project roadmap directly in Project Online PWA without having to navigate away to the Project Home, open the Roadmap then adding the tasks via the Roadmap interface.

When the current project is linked to a roadmap row with at least one task selected (you can select multiple), clicking this will load a modal pop up:

image

You will then need to select the correct Roadmap and Row using the dropdowns. Only Roadmaps and Rows will appear where the current project is already linked. Here is one Roadmap where this project is linked:

image

I’ve selected the Deployment task then clicked the Add to Roadmap button then selected the Roadmap and Row as seen below:

image

Clicking Add will start the process to add the task:

image

Once completed you will see the added to roadmap message as below with a clickable link to the roadmap:

image

Accessing the roadmap will now show the new task added:

image

If you try the Add to Roadmap button for a project that is not linked to a Project Roadmap you will see this modal popup:

image

A great enhancement to Project Online!

Advertisements
Categories: Paul Mather, Work Tags:

#Project Roadmap #CDS #App Overview #PPM #ProjectManagement #MSProject #ProjectOnline #Office365 #PowerPlatform #Dynamics365 Part 2

January 7, 2019 Leave a comment
Paul Mather
I am a Project Server and SharePoint consultant but my main focus currently is around Project Server.
I have been working with Project Server for nearly five years since 2007 for a Microsoft Gold Certified Partner in the UK, I have also been awared with the Microsoft Community Contributor Award 2011.
I am also a certified Prince2 Practitioner.

This article has been cross posted from pwmather.wordpress.com (original article)

This post follows on from part 1: https://pwmather.wordpress.com/2019/01/01/project-roadmap-cds-app-overview-ppm-projectmanagement-msproject-projectonline-office365-powerplatfom-dynamics365-part-1/ In part 1 we had a quick overview of the solutions used in the CDS app for the Roadmap service. In this post we will look at the fields used by the Roadmap service and take a look at some of the data in the Portfolio Service CDS database. As you know, this new feature is known as Roadmap to the end users, but the backend is known as the Portfolio Service, hence both names being used here.

Firstly we will have a look at some of the entities and field definitions from the Portfolio Service solution PowerApps admin interface that we briefly accessed at the end of part 1:

image

As you can see from the screen shot above, there are 6 entities deployed in the Portfolio Service solution. Each of these entities have various other artefacts such as views, keys, fields etc. For this post, we will just look at the fields. We wont explore all of the entities or all of the fields in each entity, but we will look at some of the key entities and fields used by the Roadmap service.

Firstly we will look at the Roadmap entity in the PowerApps portal:

image

You can scroll along the grid to see the properties such as description etc. This entity contains the roadmap details – the roadmap properties and rows added to the roadmap. Some of the key fields here for us as end users for reporting etc. are:

  • msdyn_name – this field will contain the Roadmap name and the row name
  • msdyn_type – this is used to determine the type – either a Roadmap which is type 0 or a row which is type 1
  • msdyn_roadmapid – this is the roadmap / row GUID
  • msdyn_parentroadmapid – this is contains the roadmap GUID for the rows added to a roadmap
  • msdyn_groupaadid – this is the associated Office 365 group ID

The next entity is the Roadmap Item:

image

This entity contains the roadmap item details – items added to rows on the roadmap and items added directly to the roadmap like key dates. Some key fields are:

  • msdyn_name – this field will contain item or key date name
  • msdyn_duedate – this field will contain the due date for row items
  • msdyn_startdate – this field will contain the start date for row items
  • msdyn_status – this is the status for the item such as At Risk, On Track etc.
  • msdyn_type – this is used to determine the type – either a key date which is type 0 or a phase which is type 1
  • msdyn_roadmapid – this is the roadmap / row GUID
  • msdyn_roadmapitemid – this contains the roadmap item GUID

The next entity is the Roadmap Item Link:

image

This entity contains the roadmap item link details – items added to rows on the roadmap that are linked to external projects (Project Online or Azure Boards currently). Some key fields are:

  • msdyn_externalname – this field will contain the external task name
  • msdyn_externalduedate – this field will contain the external due date for row items
  • msdyn_externalprojecttaskid – this is the external task GUID from the external project
  • msdyn_externalstartdate – this field will contain the external start date for row items
  • msdyn_externaltype – this is used to determine the type – either a key date which is type 0 or a phase which is type 1
  • msdyn_externalurl – this is the link to the external project
  • msdyn_roadmapid – this is the roadmap row GUID
  • msdyn_roadmapitemid – this contains the roadmap item GUID
  • msdyn_roadmapitemlinkid – this contains the roadmap item link GUID

The final entity that we will look at is the Roadmap Row Link:

image

This entity contains the roadmap row link details – rows on the roadmap that are linked to external projects (Project Online or Azure Boards currently). Some key fields are:

  • msdyn_externalname – this field will contain the external project name
  • msdyn_externalprojectid – this is the project GUID from the external project
  • msdyn_externalurl – this is the link to the external project
  • msdyn_refreshenddate – this is the finish time the external project last synchronised with the CDS data via the Flow
  • msdyn_refreshstartdate – this is the start time the external project last synchronised with the CDS data via the Flow
  • msdyn_roadmapid – this is the roadmap row GUID
  • msdyn_roadmaprowlinkid – this contains the roadmap row link GUID

Lets explore the data in the Roadmap entity. There are several ways in which we can do this, in code using the Organization Service or the Web API: https://docs.microsoft.com/en-us/powerapps/developer/common-data-service/work-with-data-cds or there is a Connector for Power BI: https://powerapps.microsoft.com/en-us/blog/cds-for-apps-powerbi/ For this I will use Power Query in Power BI but also show you how to access the Web API too. To access the Roadmap data in Power BI you will need the server URL. There are at least two ways (probably more) to get the correct server URL for the CDS Roadmap uses. Firstly via the Office 365 Admin Center using the steps below:

Access the Office 365 Admin Center > Admin Centers > Dynamics 365:

image

Then click open on the correct instance and you will see the server URL in the URL bar:

image

The other way, if you do not have access to the Admin Center is by using the browser dev tools. Access Project Home > Press F12 / open the dev tools > Access a Roadmap > In the Network tab, find the network call GetCdsEndpoint then check the Response, you will see a cdsurl property:

image

Once you have the server URL you can either use the Power BI connector or the Web API. The the simplest way to demo viewing this data using the Web API is via the Browser. In this example. Add the following to the end of the server URL: /api/data/v9.1 – you can use a different version, at the time of writing 9.1 was the latest on my tenant. Going to the root Web API URL will return the JSON for all of the entities available. Append the entity that you want to access to the end of the URL and you will see all of the data available in the entity:

image

As the Web API implements the OData protocol you can use the standard query options such as $select or $filter. Here I’m just selecting the name and type from the roadmaps entity:

https://org05724544.crm11.dynamics.com/api/data/v9.1/msdyn_roadmaps()?$select=msdyn_name,msdyn_type

image

Here I’m filtering for roadmaps only as the roadmaps entity contains roadmaps and rows:

https://org05724544.crm11.dynamics.com/api/data/v9.1/msdyn_roadmaps()?$filter=msdyn_type eq 0

image

To easily make sense of the data you need to format the JSON. Power BI is easier to visualise the data.

In Power BI click Get Data > More > Online Services > Common Data Service for App (Beta):

image

Select it then press connect. Accept the warning about being a preview connector (something to be aware of!). Now enter the server URL:

image

Now you can see all of the tables / entities that are in this CDS service, for the purpose of this blog post I will just expand Entities then select Roadmap, Roadmap Item, Roadmap Item Link and Roadmap Row Link:

image

Then click Edit to load these in the query editor. I’ve removed some of the default fields to clean up the data. Here is one of my roadmaps from the msdyn_roadmap table via Power Query in Power BI:

image

Here is a row from my roadmap:

image

Here is a key date added to my roadmap from the msdyn_roadmapitem table:

image

Here is a task (known as a phase in Roadmap) added to a row in the roadmap:

image

Here is a milestone (known as a key date in Roadmap) added to a row in the roadmap:

image

Here is an item link for a task linked to a row in Roadmap from msdyn_roadmapitemlink table:

image

Here is an row link for a project linked to a row in Roadmap from msdyn_roadmaprowlink table:

image

In the final part of this mini series, we will look at following on from this and creating a simple report in Power BI for the Roadmap data and bring in some Project Online data.

Categories: Paul Mather, Work Tags:

#Project Roadmap #CDS #App Overview #PPM #ProjectManagement #MSProject #ProjectOnline #Office365 #PowerPlatfom #Dynamics365 Part 1

January 1, 2019 Leave a comment
Paul Mather
I am a Project Server and SharePoint consultant but my main focus currently is around Project Server.
I have been working with Project Server for nearly five years since 2007 for a Microsoft Gold Certified Partner in the UK, I have also been awared with the Microsoft Community Contributor Award 2011.
I am also a certified Prince2 Practitioner.

This article has been cross posted from pwmather.wordpress.com (original article)

Following on from my last post where we walkthrough using the new Roadmap service for Microsoft PPM, in this post we take a quick look at some of the backend architecture within Dynamics 365. For those of you that missed the first post on Roadmap, a link is here: https://pwmather.wordpress.com/2018/12/19/project-roadmap-is-live-ppm-projectmanagement-msproject-projectonline-office365-powerplatfom/

The new Roadmap Service is built on top of the Common Data Service (CDS) for Apps that is part of the Power Platform offering. Details on the CDS for Apps can be found here: https://docs.microsoft.com/en-us/powerapps/maker/common-data-service/data-platform-intro. For this post we start in the Office 365 admin center, click the Admin Center icon from the left nav then click Dynamics 365. This will load the Dynamics 365 Administration Center:

image

On this Microsoft Demo instance I have one instance, this is where Roadmap is deployed to. Clicking the Open button will open this instance in a new window:

image

It defaults to the Administration screen. Using the Settings menu you can access other settings:

image

Most of these settings are either empty or contain the default entities / settings but a few do contain specific settings for the Roadmap service – also known as the Portfolio Service as you will seen further on in this post. If you access the Customizations menu:

image

Then click Publishers and you will see the Publishers this App uses:

image

Notice “Microsoft Project” – this is the Roadmap part of the app. Go back to the Customizations page and click Solutions, you will then see the solutions that this app uses:

image

Notice the two Portfolio Service solutions – these are part of the Roadmap solution. You can click the “Portfolio Service” display name and this will load the solution information / components:

image

Here you can navigate the various components such as entities then the fields within those entities:

image

We will explore the fields in part 2. You will notice the status bar informing us that we cannot edit components that are within a managed solution, these are managed by the Portfolio Service solution.

In part 2 we will look at the fields used by the Roadmap service and the data in the CDS database for Roadmap.

Categories: Paul Mather, Work Tags:

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

December 19, 2018 Leave a comment
Paul Mather
I am a Project Server and SharePoint consultant but my main focus currently is around Project Server.
I have been working with Project Server for nearly five years since 2007 for a Microsoft Gold Certified Partner in the UK, I have also been awared with the Microsoft Community Contributor Award 2011.
I am also a certified Prince2 Practitioner.

This article has been cross posted from pwmather.wordpress.com (original article)

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.

Categories: Paul Mather, Work Tags:

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

December 14, 2018 Leave a comment
Paul Mather
I am a Project Server and SharePoint consultant but my main focus currently is around Project Server.
I have been working with Project Server for nearly five years since 2007 for a Microsoft Gold Certified Partner in the UK, I have also been awared with the Microsoft Community Contributor Award 2011.
I am also a certified Prince2 Practitioner.

This article has been cross posted from pwmather.wordpress.com (original article)

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.

Categories: Paul Mather, Work Tags:

#ProjectOnline Publish all projects using #MSFLow #MicrosoftFlow #PPM #PMOT #Office365 #PowerPlatform part 2

December 12, 2018 Leave a comment
Paul Mather
I am a Project Server and SharePoint consultant but my main focus currently is around Project Server.
I have been working with Project Server for nearly five years since 2007 for a Microsoft Gold Certified Partner in the UK, I have also been awared with the Microsoft Community Contributor Award 2011.
I am also a certified Prince2 Practitioner.

This article has been cross posted from pwmather.wordpress.com (original article)

Following on from my first blog post on Publishing all projects in Project Online using Microsoft Flow, here is the 2nd post. For those that missed the 1st part, it can be found here: https://pwmather.wordpress.com/2018/12/06/projectonline-publish-all-projects-using-msflow-microsoftflow-ppm-pmot-office365-powerplatform-part-1/

In this post we will look at achieving the same publish all functionality but using different actions than we used in the last example. Previously we used the actions available with the Project Online connector, in this example we do not use the Project Online connector when accessing Project Online. The Project Online connector actions used previously to get the projects, check the projects out and then publish and check in the projects have been replaced with a SharePoint action where we can call the Project Online REST APIs. This is to show another example of working with Project Online using Flow. This approach does require an understanding of the Project Online REST APIs but this approach offers so much more capability for Project Online when using Microsoft Flow. The Flow can be seen below:

image

The difference between this Publish all flow and the example from part 1 is that we have replaced all of the Project Online connector native actions with the SharePoint “Send an HTTP Request to SharePoint” action and removed the Filter action as that is not required now. The “Send an HTTP Request to SharePoint” action can be used to work with the Project Online REST CSOM API and the Odata Reporting API directly from Microsoft Flow – this opens up so many more options for working with Project Online using Flow! This Flow assumes you have set up the connection for SharePoint Online using an account that has publish access to all projects and access to the Odata Reporting API in Project Online. This example is still triggered using the schedule action so I wont cover that part. Once triggered, the first action is to get all of the Project Online projects:

image

Enter the Project Online PWA site URL in the Site Address, select the HTTP Method – GET in this case. Then add the Uri, in this case we are using the Odata API to return all project Id’s and filter out the timesheet project but this could be updated to select only projects based on your logic such as projects with a certain custom field value or projects not published in a certain number of days / weeks etc. Then add the HTTP headers as seen. This action will get all of the projects based on the Odata query. Next we need to loop through all of the projects in the array to check them out, publish them then check them back in. To do this we need to use an “Apply to each” action:

image

In the output from the previous step we use body(‘Send_an_HTTP_request_to_SharePoint_-_get_projects’)[‘value’] to use the data from the previous step which is all of our Project Online projects minus the timesheet project in this example. Then for each project in the array we check out the project using another “Send an HTTP request to SharePoint” action:

image

This time the HTTP Method is a POST and the Uri is set to use the REST CSOM API to check out the project. We pass in the ProjectId from the current item in the array using items(‘Apply_to_each’)[‘ProjectId’]

The final action is to publish the project and check it in, this is done using another “Send an HTTP request to SharePoint” action:

image

The HTTP Method is a POST and the Uri is set to use the REST CSOM API to publish the project and check it in – the check in is performed using the true parameter. We pass in the ProjectId from the current item in the array using items(‘Apply_to_each’)[‘ProjectId’]

The final variation of this publish all example is only very slightly different, the only difference is that it is manually triggered rather than on a schedule. We have removed the schedule action and replaced it with a SharePoint trigger to trigger when an item is created on a list:

image

I have a list on my PWA site that only PWA admins can access, here an admin user creates a new item, this then triggers the publish all flow:

image

We then have a history of who triggered the publish all jobs and when.

This post will hopefully give you some ideas on how Microsoft Flow can now really compliment Project Online and offer some scenarios for low / no code customisations.

In the next post we will look at more examples for building low / no code solutions for Project Online using Microsoft Flow.

Categories: Paul Mather, Work Tags:

#ProjectOnline Publish all projects using #MSFLow #MicrosoftFlow #PPM #PMOT #Office365 #PowerPlatform part 1

December 5, 2018 Leave a comment
Paul Mather
I am a Project Server and SharePoint consultant but my main focus currently is around Project Server.
I have been working with Project Server for nearly five years since 2007 for a Microsoft Gold Certified Partner in the UK, I have also been awared with the Microsoft Community Contributor Award 2011.
I am also a certified Prince2 Practitioner.

This article has been cross posted from pwmather.wordpress.com (original article)

I recently had the opportunity to present at a Microsoft Tech Sync session where I presented a session on Project Online and Flow. During this session gave examples of how Microsoft Flow compliments Project Online by enabling no / low code solutions to extend the Project Online features. I plan to do several blog posts over the next month or so where I will share some of these Microsoft Flows. Hopefully this will give you some ideas of how Microsoft Flow can be used to simplify some of those customisations for Project Online.

The first Flow example I want to share with you is a publish all projects flow. I have published examples before for Project Server and Project Online as found here:

These all required a basic understanding of the Project Server / Project Online APIs and somewhere to run the code from – I thought this would be a good example to move over to a Microsoft Flow. In this blog post I will walkthrough the first example I have for publishing all projects as seen here:

image

This is built using only actions from the Project Online connector in Flow – so there is no need to understand the Project Online APIs! This Flow assumes you have setup the connection to Project Online using an account that has publish access to all projects. This Flow is triggered using a schedule as seen here:

image

When this Flow is triggered, the first action is to get all the Project Online projects using the List Projects action:

image

All you need to do is provide the PWA site URL. This List Projects action also includes project templates so these need to be filtered out, to do this we filter the results returned from the List Projects action using a Filter Array action:

image

In the From field we enter body(‘List_projects’)[‘value’] to get the data from the previous action, which in this case is the List projects action. In the filter we use item()[‘ProjectType’] is not equal to 1, Project Type 1 being the Project Templates. In advanced edit mode it looks like this:

image

Next we need to loop through all of the projects in the array to check them out, publish them then check them back in. To do this we need to use an Apply to each action:

image

In the output from the previous step we use body(‘Filter_array’) to use the data from the previous step which is all of our Project Online projects minus the project templates. Then for each project in the array we check out the project using the default Checkout project action:

image

Enter the Project Online PWA URL then in the Project Id property pass in the Project ID from the current item in the array using items(‘Apply_to_each’)[‘Id’]

The final action is to publish the project and check it in, this is done using the default Checkin and publish project action:

image

Enter the Project Online PWA URL then in the Project Id property pass in the Project ID from the current item in the array using items(‘Apply_to_each’)[‘Id’]

That is it, when this flow executes it will publish all of your Project Online projects. A simple no code serverless solution!

In part 2 we will look at two other variations for publishing all projects in Office 365 Project Online using Microsoft Flow.

Categories: Paul Mather, Work Tags:
%d bloggers like this: