#ProjectOnline #PowerApps using the Project Online Connector #PPM #Apps #MSProject #O365 Part1

March 14, 2018 at 10:39 pm | Posted in Add-on, Administration, App, Configuration, Customisation | 2 Comments
Tags: , , , ,

I recently published two articles on creating a navigation type app for Project Online using PowerApps, here is a screen shot of the project details screen from that example app:

SNAGHTML28370a07

For those of you that missed those posts, the links are below:

https://pwmather.wordpress.com/2018/02/21/projectonline-powerapps-example-office365-ppm-pmot-apps-msproject-part1/

https://pwmather.wordpress.com/2018/02/24/projectonline-powerapps-example-office365-ppm-pmot-apps-msproject-sharepoint-part2/

That particular example used a SharePoint list as the data source as there were certain properties I needed such as the Project Site URL that are not available in the native Project Online connector for PowerApps. I also stored project images in that source SharePoint list and displayed those in my example app. I used a custom process to populate the SharePoint list with the Project Online data and kept that data in sync. In this series of blog posts we will look at how to use the native Project Online PowerApps connector: https://docs.microsoft.com/en-us/connectors/projectonline/.

This connector allows us to perform certain actions in PowerApps such as read the list of Projects directly from the PWA site collection: https://docs.microsoft.com/en-us/connectors/projectonline/#List_projects or creating a new project: https://docs.microsoft.com/en-us/connectors/projectonline/#Creates_new_project for example.

This series of blog posts wont build a full PowerApp using this connector but it will show snippets on how to use some of the Project Online PowerApps connector functions.

The first one we will look at is displaying a list of projects in PowerApps using the list projects function.

This series of posts assume that you have set up a Project Online Connection to Project Online:

SNAGHTML6a9d36

If you haven’t set up a Project Online connection yet, it is very simple, just click the + New Connection link and find Project Online then add.

Using the PowerApps studio, either desktop or web, we will start with a blank app:

SNAGHTML6d726e

The first thing to do is to add the Project Online data source, click “connect to data”. This will load all of your connections you have added to PowerApps / Flow, select the Project Online connection:

SNAGHTML6edae8

Then close the Data window. Now decide on the visual that you need to display the projects, I inserted a gallery:

image

Then set the layout to just Title as I only will just display the project name for the purpose of this blog post:

image

Click Advanced on the Gallery settings pane and you will notice it states “CustomGallerySample” in the DATA > Items field. Update this to:

ProjectOnline.ListProjects("{PWASiteURL}").value

SNAGHTML7a47c5

Now you can select a property to display on the gallery, in this example I will select Name:

SNAGHTML7d85ba

Now all of your projects will appear in the gallery directly from Project Online:

SNAGHTML9f2a46

In the next post we will look at how to use the ListTasks function in the Project Online PowerApps connector.

Advertisements

#ProjectOnline workaround for Project app link on #O365 waffle app launcher #PPM #PMOT #Office365

March 8, 2018 at 2:42 am | Posted in Administration, App, Configuration, Customisation, Fixes, Functionality, Information | 2 Comments
Tags: , , ,

For organisations that only have one Project Web App (PWA) instance and use /PWA, today using the Project app link on the Office 365 waffle app launcher works as expected. For those organisations that have multiple PWA instances this can be an issue. The link I am talking about can be seen below:

SNAGHTMLc747618

This points to /MyProjects as seen above but when Project Online is present on the tenant it will always redirect to /sites/PWA as seen below:

SNAGHTMLc7422f6

This can be a problem for those customers that either have multiple PWA instances or do not use the default /PWA instance. Unfortunately the Project link on the waffle app launcher is not configurable so one workaround we have done for clients before is to not use the /PWA instance at all apart from using it as a landing page for the other PWA instances in the organisation. If you are in the planning stage for rolling out Project Online and know that you will have multiple PWA instances on the same Office 365 tenant, this might be a good option for you to consider and explore.

Firstly create the following css file that will be used to remove the PWA quick launch menu:

image

Save this on the /PWA site somewhere such as the Style Library:

image

Now edit the PWA homepage and delete the “Track your work” web part and add a content editor web part, in the content editor web part reference the .css file and change the chrome type to None:

SNAGHTMLc73b0f3

Click Apply then click OK and the quick launch will disappear. Add another content editor web part and update the Title to “Project Web App sites” or a more appropriate name as required:

image

Click the new content editor web part where is states click here to add new content then add in the links to all the PWA instances that you have on the tenant using the content editor web part controls – you have lots of options and can make it look as nice as you like. In this example I have just used a simple table:

image

Click Stop editing on the Page tab and you will see the following:

image

Then ensure all users of Project Online have read access to the /PWA site (do not grant higher access as you do not want them incorrectly creating projects here):

image

This way if a user clicks the “Project” app link on the Office 365 waffle app launcher they can at least then easily navigate onto the correct PWA instance.

You could take this even further and have multiple content editor web parts on the page, one for each PWA instance then use SharePoint’s audience targeting feature to show the correct PWA instance/s for the logged on user.

#ProjectOnline #PowerApps example #Office365 #PPM #PMOT #Apps #MSProject #SharePoint Part2

February 24, 2018 at 10:17 pm | Posted in Add-on, Administration, App, Configuration, Customisation, Functionality, Information, Mobile | 2 Comments
Tags: , , , , ,

In part 2 of this series we look at continuing with the example PowerApp for Project Online for project details and project navigation. For those of you that missed part 1, a link to the post can be found below:

https://pwmather.wordpress.com/2018/02/21/projectonline-powerapps-example-office365-ppm-pmot-apps-msproject-part1/

In part 2 we will update the detail screen to display the data we want and include links to PWA for the associated project. If you are following, open the app you started in part 1:

image

Using the tree view on the left, click DetailScreen1 to load the detail screen or click the chevron next to a project from the browse screen:

SNAGHTMLad72abf

Firstly I updated the screen label to “Project Details” and deleted the delete and edit icons:

SNAGHTMLadf40c1

Next two buttons were added to the top bar, one for the Site and one for the Tasks. The Site button will launch DataCardValue8 which in my case is the Project Site URL as seen below:

SNAGHTMLaf5ceae

The Tasks button will launch the Project Schedule PDP but concatenating the PWA URL for the schedule PDP (or whatever PDP you want to link to) then using the ProjectID, in my case DataCardValue2, from the detail screen for the projuid URL parameter:

SNAGHTMLafa7b75

The buttons were added to the screen using the insert menu:

image

As you can see, there are lots of options on the insert ribbon! Other quick links could easily be added such as Issues, Risks, New Risk etc. That is it for the detail view, we have some project details and two buttons that link out to PWA for the associated project:

SNAGHTMLb051b8d

Just for fun I also added a new screen in for a chart. I inserted a bar chart and created a project count by progress chart:

image

For the Items, I entered the following formula to count the number of projects Completed, Not Starter or In Progress:

image

The formula is below for my data, ProjectData is the name of my SharePoint list and Progress is the column on my SharePoint list that contains the % complete value for each project:

Table(
    {Column: "Completed", Value: CountIf(ProjectData, Progress = 100)
    },
    {Column: "Not Started", Value: CountIf(ProjectData, Progress = 0)
    },
    {Column: "In Progress", Value: CountIf(ProjectData, Progress <> 0 && Progress <> 100)
    }
)

Then set the item colours:

image

I then added the back arrow to navigate back to the main browse screen:

image

The final change was to add an icon to the main browse screen that enabled navigation to the chart screen:

image

To preview your app in PowerApps, press F5:

Main screen: list of projects with search and sort using project name, link for each project to project detail screen, access to chart screen, refresh the data and link to create a new project in Project Online

image

Details screen: project details with button links to the project site or schedule PDP in Project Online PWA and a back button to the main screen

SNAGHTMLb7913d8

Chart screen: bar chart display project count by progress for Completed, Not Started and In Progress with a back button to the main screen

image

Once you are happy with your app you can share it to your organisation. Before you do, access the App Settings view and give it a name, set the icon and description:

image 

Then click Save and save it to your organisations PowerApps environment then share the app:

SNAGHTMLb8e0f8c

For details on Saving, publishing and sharing your apps see the links here: https://docs.microsoft.com/en-us/powerapps/save-publish-app & https://docs.microsoft.com/en-us/powerapps/share-app Users can then access your app using the browser, PowerApps Studio or the PowerApps mobile app!

Hopefully that has given you enough to get started or given you some ideas for Project Online PowerApps. There are so many features to PowerApps, they are very powerful! For getting started guides on PowerApps start here: https://docs.microsoft.com/en-us/powerapps/getting-started

Have fun!

#ProjectOnline #PowerApps example #Office365 #PPM #PMOT #Apps #MSProject Part1

February 21, 2018 at 11:47 pm | Posted in Add-on, Administration, App, Configuration, Customisation, Functionality, Information, Mobile | 3 Comments
Tags: , , , ,

PowerApps aren’t a new feature in Office 365 but not one that I have blogged about before, mainly due to the lack of native support for Project Online, but I have created apps before using PowerApps  – it’s an awesome application! PowerApps provide a great way for users to create powerful business apps without writing code. You can use the same connectors that have use for Flow etc. so there is great support for SharePoint Online but no so much for Project Online. There is a connector in preview but it doesn’t return the properties I needed for this example. To get around this, the easiest approach is to have your Project Online data in a SharePoint list, I have covered a few examples with code samples before:

https://pwmather.wordpress.com/2018/01/27/projectonline-project-level-html-fields-to-a-sharepoint-list-powershell-ppm-office365/

https://pwmather.wordpress.com/2016/08/26/projectonline-data-capture-snapshot-capability-with-powershell-sharepoint-office365-ppm-bi/

In this series of posts, we will create a simple navigation type app for Project Online using PowerApps. In part 1 we look at getting started and creating / updating the browse / home screen. To do this we will need the Project Online data in a SharePoint list using a similar process as the examples above. This post assumes you already have your Project Online data available in a SharePoint Online list and a process to keep this updated as your Project Online changes, similar to the list below:

SNAGHTML6eb4d2

Access PowerApps from the Office 365 app launcher:

image

This will launch PowerApps:

image

If you haven’t used SharePoint Online in Flow or PowerApps before, firstly you will need to click Connections > New Connections > Type SharePoint in the Search bar and add the SharePoint connection:

image

Once you have the connection you can create the app. To create the PowerApp you can either use the web based PowerApps Studio that can be accessed on the Apps page:

image

Or there is an App available in the Microsoft Store:

image

For the purpose of this blog post I will be using the Windows 10 App but the steps are the same.

Once the App launches, you can Open existing apps:

image

Or create a new one, click the New button:

image

From here you can create an app starting with your data, start from a blank canvas or start from a template. The templates options will present you with template previews to select from:

image

For the purpose of the this blog post and to keep the blog post shorter, we will start with our SharePoint data, if this is your first PowerApp this might be the best option to start with until you’re familiar with PowerApps:

image

Type the URL of the site that contains the list:

SNAGHTML787fc7

Press Go then select the correct list and press Connect, in this example it is ProjectData:

image

PowerApps will then build a working app for you based on the data in your SharePoint list:

image

Once finished, home / browse screen is displayed:

image

Clicking the chevron for a project loads the detail screen:

image

That might be good enough for some scenarios – pretty awesome given it was a click of a button! As mentioned, we will look to make a navigation type app that displays some high level project information so we will make some minor tweaks to the base app PowerApps kindly created for us.

Clicking on different areas on the canvas will enable different settings or you can click the elements using the left hand tree view. The first item we will change is the ProjectData label which by default takes the source list name. This property is the LblAppName1:

image

Moving down the screen, we want to change the search feature so that the search box and sorting work on the Project Name. To do this, select BrowseGallery1 from the left hand tree view, then click Advanced, finally update the Data items. Replace ComplianceAssetId with Title as seen below in two places:

image

The search box and sort icon will now work on the Project Name – in our case this is Title on the source SharePoint list.

Next up we want to see Project Name and Project Owner on the project summary section. Using the left hand tree view, click Title1 then access the Advanced menu. In the DATA section under the Text property, update this to “ThisItem.Title”:

image

Notice the Project Name now appears. Repeat for Subtitle1 and select a different project property or multiple properties, I will set the Project Owner and % complete:

image

I will also change the Body1 property to display the Project Start and Finish Dates:

image

The final change for the browse screen in part 1 of this blog post is to change the IconNewItem1, this is the + symbol in the top right corner. In the default app, this will load the edit screen to create a new list item, for this example we will point this to load the create project page in Project Online. Select the IconNewItem1 from the left hand tree view, replace the OnSelect “NewForm(EditForm1;Navigate(EditScreen1, None) with Launch(https://PWASiteURL/_layouts/15/PWA/Wizards/CreateProject.aspx) and update the tooltip as seen below:

SNAGHTMLb94801

The browse screen should look something like this now:

image

With the ability to search and sort on Project Name:

image

Worth noting is that this project data will not be security trimmed etc.

We have barely touched the surface of PowerApps but that is it for Part 1. In Part 2 we look at updating the detail view and adding in links to navigate to the project in PWA.

#ProjectServer and #SharePoint 2013 / 2016 February 2018 Cumulative Update #PS2013 #SP2013 #PS2016 #SP2016 #MSProject

February 14, 2018 at 7:39 am | Posted in Administration, CU, Fixes, Functionality, Information, Installation | Comments Off on #ProjectServer and #SharePoint 2013 / 2016 February 2018 Cumulative Update #PS2013 #SP2013 #PS2016 #SP2016 #MSProject
Tags: , , , , , , ,

The Office 2016 February 2018 updates and cumulative updates are now available, please see the links below:

https://support.microsoft.com/en-us/kb/4077965

Project 2016 February 2018 update:
https://support.microsoft.com/en-us/kb/4011672

SharePoint Server 2016 / Project Server 2016 February 2018 update: 
https://support.microsoft.com/en-us/kb/4011680

The Office 2013 February 2018 updates and cumulative updates are now available, please see the links below:

https://support.microsoft.com/en-us/kb/4077965

Project Server 2013 February 2018 CU Server Roll up package:
https://support.microsoft.com/en-us/kb/4011694

Project Server 2013 February 2018 update:
https://support.microsoft.com/en-us/kb/4011701

Project 2013 February 2018 update:
https://support.microsoft.com/en-us/kb/4011679

Also worth noting, if you haven’t done so already, install Service Pack 1 http://support2.microsoft.com/kb/2880556 first if installing the February 2018 CU for 2013.

As always, fully test these updates on a replica test environment before deploying to production.

#ProjectOnline #PowerBI Report – Include #HTML formatting #PPM #PMOT #PowerQuery #OData #REST Part 3

January 16, 2018 at 8:18 pm | Posted in Configuration, Customisation, Functionality, Information, Reporting | 4 Comments
Tags: , , , , , , ,

Following on from my 2nd post in this mini series on reporting including HTML formatting in Power BI, in this post we will look at a couple more options that will refresh in the Power BI App Service. If you missed the previous posts, the links are below:

Part 1: https://pwmather.wordpress.com/2018/01/01/projectonline-powerbi-report-include-html-formatting-ppm-pmot-powerquery-odata-rest-part-1/

Part 2: https://pwmather.wordpress.com/2018/01/03/projectonline-powerbi-report-include-html-formatting-ppm-pmot-powerquery-odata-rest-part-2/

The options we will look at in this post require a process to get the Project HTML data into a source that can be queried from Power BI with one call. Firstly I will demonstrate a simple PowerShell script that will get the data and write this to a SharePoint list on the PWA site. This is process is very similar to a Project Online snapshot solution starter script I published back in August 2016: https://pwmather.wordpress.com/2016/08/26/projectonline-data-capture-snapshot-capability-with-powershell-sharepoint-office365-ppm-bi/ Once you have a script running to capture the data on the defined scheduled you will see something similar to the screen shot seen below:

image

Here you can see my process has run twice, once back in August when I first wrote this script and just now when I ran it again. As this is based on sales demo data, you can see in the two expanded examples the data has not changed but in a real world usage I’d like to think the data would have changed / been updated! Having the data in one list enables a SharePoint OData call from Power BI, as I have included the ProjectId in the data on the list, this can easily be joined with the data from the main Project OData Reporting API. As this data is in a SharePoint list you might need to consider the user permissions / access to the list. If this was running on a schedule, either from a Windows Scheduled task if on-prem or maybe a scheduled Azure Function if you wanted to make use of Azure PaaS, set the schedule to run before the reports were due allowing time for this process to complete. I won’t cover the PowerShell script in detail here as I will create a dedicated post for that in a week or two, but I will highlight the changes required if you were to start with the OData snapshot example.

  • The first API called was updated in this example to change the select query to just return the ProjectId:

image

  • After the while statement, the script will start a foreach loop and set the ProjectId to a variable:

image

  • Then the REST URL is constructed and the ProjectId is passed in. The select query includes the Project Name, Project ID and the Multiline custom fields that I want to include. I then make the various REST calls in a try / catch block, firstly to get the data:

image

  • Then to write the data to the SharePoint list:

image

Once that runs successfully with an account that has full access to all projects and edit access the the SharePoint list, your target list will contain all of the projects along with the selected fields. As mentioned, I will post this full script in a week or two once I get a chance to tidy a few bits up in the code sample but hopefully the screenshots of the changes along with the snapshot example PowerShell script, there will be enough pointers to get started. Now the data is in a single source, it is very simple to use in Power BI.

In Power BI Desktop add a new OData feed, in the URL field enter the SharePoint list REST URL for the source list, for example the REST URL I used is: https://tenant.sharepoint.com/sites/PWA/_api/web/lists/getbytitle(‘ProjectMutliLineFields&#8217;)/Items    where ProjectMutliLineFields is the name of my SharePoint list. Edit the query to launch the Power BI query editor. In this example, my source SharePoint list contains duplicate projects but in my report I want to only see the latest. The steps below will transform the data so that the report only has the latest version for each project record. Rename the query to IDandDate then remove all columns except for the ProjectId and Created columns:

image

Now group by ProjectId and get the Max Created value, I called this column “Latest”:

image

That will give you a list of unique Project IDs using the latest record. Now add a 2nd OData feed and use the same SharePoint list REST URL as in the previous step. Remove columns that are not required, I removed all expect for Title, ProjectId, Created and the multiline fields. Then rename the columns to meaningful names if required:

image

This query will currently contain the duplicate project records based on my example list, next I will merge this query with the IDandDate query using the ProjectId column and the Created/Latest column:

image

Hold down the Ctrl key to select more than one column per table for the merge.

This will add the new column into the table:

image

Click the double arrow on the column heading to expand the column then select the aggregate radio button. On the dropdown menu next to Latest select Maximum:

image

This will show a date value for the latest records, where a null is displayed, there is a duplicate record with a later date:

image

Filter out the null records from the Max of Latest date column and that is it. For the purpose of this blog post, I also added a 3rd query to the Project OData API to show data from the two sources. Close and Apply the data then ensure the relationships are correct, I also set the IDandDate query to be hidden in the report view:

image

Then design your report as needed making use of the same HTML Viewer custom visual:

image

As you can see, this is just a simple example like the others just to highlight the HTML formatting being rendered in Power BI.

Another option without having to write and maintain any custom code or write the data to a SharePoint list does make use of a 3rd party tool that extracts the Project Online data into an Azure SQL database as the data changes in Project Online. This particular tool is developed by the Product Dev team I lead at CPS and is called DataStore. This product is part of our edison365 product suite but is available on its own. This isn’t sales pitch so I won’t go into details here but I just wanted to give another option as some people prefer no code solutions. There are also other software vendors that do similar products for Project Online but I’m not sure if they include the multiline project level fields with the HTML. So using this tool or similar (check they include the HTML fields), you can get all of your Project Online data into an Azure SQL database, as mentioned, the DataStore tool will also include the HTML data as displayed below in the example SQL query below:

image

Power BI can get data from the Azure SQL Server and this data will also refresh in the Power BI App Service.

Feel free to contact me if you have any queries or questions but hopefully that gives you some ideas on including the HTML formatting in your Project Online reports using Power BI!

#ProjectServer and #SharePoint 2013 / 2016 January 2018 Cumulative Update #PS2013 #SP2013 #PS2016 #SP2016 #MSProject

January 13, 2018 at 9:13 am | Posted in Administration, CU, Fixes, Functionality, Information, Installation | Comments Off on #ProjectServer and #SharePoint 2013 / 2016 January 2018 Cumulative Update #PS2013 #SP2013 #PS2016 #SP2016 #MSProject
Tags: , , , , , , ,

The Office 2016 January 2018 updates and cumulative updates are now available, please see the links below:

https://support.microsoft.com/en-us/kb/4058103

Project 2016 January 2018 update:
https://support.microsoft.com/en-us/kb/4011633

SharePoint Server 2016 / Project Server 2016 January 2018 update: 
https://support.microsoft.com/en-us/kb/4011642 & https://support.microsoft.com/en-us/kb/4011645

The Office 2013 January 2018 updates and cumulative updates are now available, please see the links below:

https://support.microsoft.com/en-us/kb/4058103

Project Server 2013 January 2018 CU Server Roll up package:
https://support.microsoft.com/en-us/kb/4011650

Project Server 2013 January 2018 update:
https://support.microsoft.com/en-us/kb/4011654

Project 2013 January 2018 update:
https://support.microsoft.com/en-us/kb/4011640

Also worth noting, if you haven’t done so already, install Service Pack 1 http://support2.microsoft.com/kb/2880556 first if installing the January 2018 CU for 2013.

As always, fully test these updates on a replica test environment before deploying to production.

#ProjectOnline #PowerBI Report – Include #HTML formatting #PPM #PMOT #PowerQuery #OData #REST Part 2

January 3, 2018 at 11:10 pm | Posted in Configuration, Customisation, Functionality, Information, Reporting | 8 Comments
Tags: , , , , , , ,

Following on from my first post discussing including HTML formatting for Project Online Power BI Reports, in this post we will look at a summary of options to get the correct data into Power BI then walkthrough one of those options. In part 3, the final part, we will look at one of the other options to get the data.

For those of you that missed part 1, see the post here: https://pwmather.wordpress.com/2018/01/01/projectonline-powerbi-report-include-html-formatting-ppm-pmot-powerquery-odata-rest-part-1/

As per the first post, it is very simple to have the data rendered in Power BI to include the HTML formatting, the slightly more tricky part is to get the Project Online data into Power BI with the HTML included.

First, a bit of background on where in Project Online you can access the enterprise project multiline custom fields with the HTML included. As per the first post, you need to access the REST API ({PWAURL}/_api/ProjectServer) to get the data with the HTML included as the OData Reporting API ({PWAURL}/_api/ProjectData) has had the HTML removed. Using the REST API we can view the endpoints at the root:

SNAGHTML59e8e263

This is the REST API to programmatically interact with the Project Online data, you can create, read, update and delete data using this API depending on your access. For this reporting post we only need to read data, carryout the steps with an account that has access to all projects in the PWA instance like an Admin account.

The endpoint we need is /Projects:

SNAGHTML59ef8e46

This will detail all of the projects the logged on user has access to – it is recommended to carry out these steps with an account that has access to all projects in the PWA instance otherwise you might / will see errors in later steps. For each project detailed you will see a few key project level properties including things like Name, Description, Created Date, ID to name a few. It is also possible to navigate from there using the Project ID to get more details for that project. For example you can get the project tasks using the following URL: ProjectServer/Projects(‘{ProjectGUID}’)/Tasks or get the project team using this URL: ProjectServer/Projects(‘{ProjectGUID}’)/ProjectResources. To get the enterprise project level multiline custom fields we need to use the following URL: ProjectServer/Projects(‘{ProjectGUID}’)/IncludeCustomFields. Accessing this URL for the specified Project GUID (replace the placeholder with an actual project GUID) you will see more properties for that project including the multiline custom fields we need:

SNAGHTML59fcff6f

Notice the HTML in the custom field outlined in red in the image above. You would need to do this call for all projects but using the correct Project GUIDs. Also worth pointing out, in this API the custom fields are referenced using the internal names, for example Custom_x005f_4d0daaaba6ade21193f900155d153dd4 rather than the display names. You can use the custom fields endpoint to map the internal names to the display names: /ProjectServer/CustomFields.

So that covers the background on how you access the multiline custom field data that includes the HTML using the REST API, next we look at how to do this from Power BI. What makes it slightly more tricky than just using the normal OData Reporting API is that you have to make a call dynamically for each project GUID if you are using the REST API directly. In this series of posts we will look at calling this API dynamically straight from Power BI (covered later on in this post) but that has a limitation and also another method to get this data from one call / endpoint but that requires a bit of custom code / a 3rd party tool but does remove the limitation / issue. I will cover off the latter option in the 3rd blog post including a code sample / snippet.

Moving on to Power BI and getting this data dynamically and explaining the limitation. This process with follow the same approach I documented a while back to report on project site data using the the SharePoint list REST API: https://pwmather.wordpress.com/2016/01/05/want-to-query-cross-project-site-sharepoint-lists-in-projectonline-projectserver-powerbi-powerquery-bi-office365-excel-ppm/ As per the post above, this will require a custom function and a custom column to call the function. The limitation of this approach is that it works fine in the Power BI Desktop client but the data will not currently refresh in the Power BI App service. There might be workarounds to this limitation but that is beyond the scope of this blog post.

Firstly get a REST URL for one project that includes custom fields, for example I have used this: https://tenant.sharepoint.com/sites/pwa/_api/ProjectServer/Projects(‘ad641588-f34b-e511-89e3-00059a3c7a00‘)/IncludeCustomFields?$Select=Id,Name,Custom_x005f_4d0daaaba6ade21193f900155d153dd4 – replace the parts highlighted in yellow with details from your PWA instance. In this example I have included just one of my multiline custom fields but include as many multiline fields as required, just separate them using a comma. As mentioned before, use the /CustomFields endpoint to identify the correct custom fields to include in the select statement. You can see below, the example multiline field I have used is called “Status Summary”

SNAGHTML5cb3b4d5

Now add this URL as a data source in Power BI using the Get Data > OData feed option. That will open the Query Editor and show the record:

image

Update the Query Name to something like projectHTMLCFsFunction as this query will be turned into a function. In the Query Editor, on the View tab access the Advanced Editor and you will see your query:

SNAGHTML5cc54192

The full query will be similar to this:

let
    Source = OData.Feed("https://tenant.sharepoint.com/sites/pwa/_api/ProjectServer/Projects(‘ad641588-f34b-e511-89e3-00059a3c7a00&#8217;)/IncludeCustomFields?$Select=Id,Name,Custom_x005f_4d0daaaba6ade21193f900155d153dd4")
in
    Source

This needs to be modified to turn this into a parameterised function like below, parts highlighted in yellow are added / edited:

let loadHTMLCFs = (GUID as text) =>
    let
        Source = OData.Feed("https://tenant.sharepoint.com/sites/pwa/_api/ProjectServer/Projects(&#8216;"&GUID&"‘)/IncludeCustomFields?$Select=Id,Name,Custom_x005f_4d0daaaba6ade21193f900155d153dd4")
    in
        Source
in  loadHTMLCFs

A screen shot below to show the completed query in the Query Editor as the formatting is clearer, bits added / edited are outlined in red:

SNAGHTML5cc4e299

Click Done in the Query Editor and you will see the following:

image

No need to do anything with the parameter or buttons. Now we need to add another data source in for the other data feeds required in the report, for the purpose of this blog I will just add in the minimum required and that is the default OData Reporting API /Projects endpoint to get the other project fields into the report. In the Query Editor on the Home tab click New Source > OData feed and add in the OData Reporting API URL: https://tenant.sharepoint.com/sites/pwa/_api/ProjectData then select the tables required. For this blog post I have just selected Projects. Using the Query Editor, remove unwanted columns, rename columns etc. You will need to keep at least ProjectId and ProjectType, they are required. For the purpose of the blog post I have just selected ProjectId, ProjectType, ProjectName and ProjectOwnerName. Using ProjectType, filter out ProjectType 7 as this is the Timesheet Project record. Keeping this in the dataset will cause errors later on.

Once you have edited the query as required a new custom column needs to be added to invoke the function created earlier. Click the Add Column tab then click Custom Column. Give the column a name such as GetProjectHTMLCFs then enter the following: projectHTMLCFsFunction([ProjectId]) as seen below:

image

projectHTMLCFsFunction is the name of the function we created earlier and we are passing in the ProjectId. When clicking OK, this might take a while depending on how many projects you have as this will invoke the function for each project and call the REST API, passing in the ProjectId for that row and bring back the records. Once completed you will see the records as below in the new custom column:

SNAGHTML5cdd9337

Now the column needs to be expanded, click the double arrow in the custom column heading and expand the multiline custom fields, in this example I just have one:

image

Click OK and the data will refresh / load then display the data for the multiline columns:

SNAGHTML5ce22300

Notice we have the HTML in the data! Rename the columns for the correct display names then when completed, click Close & Apply. The changes will now be applied to the Power BI Report and load the data. Add in the HTML Viewer custom visual as detailed in blog post 1 then add the data on the the report canvas as you would normally. Ensure that the multiline custom fields use the HTML Viewer custom visual:

image

An example with a normal table visual and the HTML Viewer visual:

image

That’s it, design your Project Status reports to now include the HTML formatting your users have added. Just remember though, this will only refresh in the Power BI Desktop client. It can be published to the Power BI App service but the data will be static and will not update, you would need to open the report in the Power BI Desktop client, refresh it then publish it back into the Power BI service.

Next up in part 3 we will look at a slightly different approach to get the data in Power BI that does enable the report / data to refresh in the Power BI App service.

#ProjectOnline #PowerBI Report – Include #HTML formatting #PPM #PMOT #PowerQuery #OData #REST Part 1

January 1, 2018 at 9:40 am | Posted in Configuration, Customisation, Functionality, Information, Reporting | 3 Comments
Tags: , , , , , , ,

My first post for 2018, Happy New Year to all! This post is the first of 2 or 3 posts covering HTML formatting in your Power BI reports from Project Online multiline project level custom fields as seen below – screenshot from mock up / demo data:

image

For those of you that are familiar with the Project Online Reporting API, Microsoft made a change back in May 2016 to remove the HTML from the OData API ({PWAURL}/_api/ProjectData): https://pwmather.wordpress.com/2016/05/30/projectonline-odata-reporting-api-updated-to-remove-html-tags-office365-bi-excel-powerbi/. This was due to requests from customers so that Excel / Power BI reports could contain cleansed data without having to remove the HTML from the strings yourself. As mentioned in the blog post above, the HTML strings for multiline project custom fields are still available from the REST API ({PWAURL}/_api/ProjectServer).

Back in November 2017 a new custom Power BI visual was released to render HTML: https://powerbi.microsoft.com/en-us/blog/power-bi-desktop-november-2017-feature-summary/#HTMLViewer, this now means that you can include the nicely formatted text from Project Online multiline project level custom fields in your Power BI reports. A couple of screen shots below show what your project custom field multiline data probably looks like today in your reports and what it could look like. Ignore the very basic dull looking report, this is purely just to demo the HTML rendering.

Without the HTML formatting from the OData API – it is just a block of text:

image

With the HTML formatting – it is nicely formatted and readable:

image

This matches the text on the Project Detail Page (PDP) in the Project Web App for that example demo project:

image

To be able to include the HTML formatting there are two parts:

  • Get the data that includes the HTML
  • Add the HTML Viewer custom visual to your Power BI Desktop client

The latter being very simple from the Power BI Desktop client by either clicking the ellipsis in the Visualizations pane:

image

Or using the button on the Home ribbon:

image

Then search for the HTML viewer and add it:

image

In the next 1 or 2 posts I will cover some different options for getting access to the data that includes the HTML.

#ProjectServer and #SharePoint 2013 / 2016 November 2017 Cumulative Update #PS2013 #SP2013 #PS2016 #SP2016 #MSProject

November 16, 2017 at 9:20 am | Posted in Administration, CU, Fixes, Functionality, Information, Installation | Comments Off on #ProjectServer and #SharePoint 2013 / 2016 November 2017 Cumulative Update #PS2013 #SP2013 #PS2016 #SP2016 #MSProject
Tags: , , , , , , ,

The Office 2016 November 2017 updates and cumulative updates are now available, please see the links below:

https://support.microsoft.com/en-us/kb/4051890

Project 2016 November 2017 update:
https://support.microsoft.com/en-us/kb/4011227

SharePoint Server 2016 / Project Server 2016 November 2017 update: 
https://support.microsoft.com/en-us/kb/4011243 & https://support.microsoft.com/en-us/kb/4011244

The Office 2013 November 2017 updates and cumulative updates are now available, please see the links below:

https://support.microsoft.com/en-us/kb/4051890

Project Server 2013 November 2017 CU Server Roll up package:
https://support.microsoft.com/en-us/kb/4011249

Project Server 2013 November 2017 update:
https://support.microsoft.com/en-us/kb/4011257

Project 2013 November 2017 update:
https://support.microsoft.com/en-us/kb/4011235

Also worth noting, if you haven’t done so already, install Service Pack 1 http://support2.microsoft.com/kb/2880556 first if installing the November 2017 CU for 2013.

As always, fully test these updates on a replica test environment before deploying to production.

« Previous PageNext Page »

Blog at WordPress.com.
Entries and comments feeds.