#ProjectOnline time phased data rollup for #OData reporting #PPM #PMOT #BI #Excel #PowerBI

November 17, 2017 at 11:44 am | Posted in Administration, Configuration, Functionality, Information, Reporting | Leave a comment
Tags: , , , ,

Recently it was announced that it would be possible to rollup some of the data in the time phased feeds for Project Online, the support documentation can be found here: https://support.office.com/en-us/article/Configure-rollup-of-timephased-reporting-data-in-Project-Online-da8487fe-899e-4510-a264-e2ebc948928c

Currently today in Project Online, the time phased data is stored in the Reporting schema at the day level. For some organisations, this is too granular and they end up having to aggregate the data for reports to weekly / monthly etc. For those customers, having the data at the day level isn’t convenient as storage / performance improvements can be gained from having the data stored at source pre-aggregated. With this change, that will now be possible.

I believe this feature will start rolling out in the next week or two but let’s have a quick look at the options. From the PWA Settings menu you will see a new option under Enterprise Data for Reporting as seen below:

image

This shows the following page:

image

As this new feature has been rolled out to an existing PWA site, this defaults to Daily but new PWA sites created once this feature is rolled out to the tenant will have this setting set to Never.

Let’s look at the impact on the data using my simple project plan that has a task with a duration of 5 days:

image

Using the TaskTimephasedDataSet you can see the data below for Task 2:

image

As expected, there are 5 days displaying work. I will now change the setting to Weekly:

image

For this change to take effect I will need to publish all of my projects but for the purpose of this blog post I will just publish my test project. Refreshing my Excel data, you can see I have two rows as the task spans two weeks:

image

The hours are aggregated on the first day of the week as defined by the PWA site regional settings:

image

Now I will increase the task duration to 50 days to span a few months and set the reporting to monthly then publish my test project. Updated project:

image

Updated to Monthly:

image

Updated Excel report:

image

As you can see the hours are now aggregated on the first day of the month. You can also base this on the fiscal periods defined in PWA.

The feeds that are impacted by this change are:

  • AssignmentBaselineTimephasedDataSet
  • AssignmentTimephasedDataSet
  • TaskBaselineTimephasedDataSet
  • TaskTimephasedDataSet

Once available in your tenant, set the time phased data reporting setting as defined by your reporting requirements and publish all of the projects. I would recommend you did this on a non-production PWA instance first as you might need to update you reports, apps etc. that consume date from those four feeds. Also remember to set this up for new PWA instances created once this feature is live as they will be set to Never.

Keep an eye out for this feature reaching your tenant soon.

Advertisements

#ProjectOnline #PPM #PowerBI Report Pack v2 #BI #Reporting #PowerQuery #DAX #Office365

October 31, 2017 at 12:39 pm | Posted in Add-on, Administration, Customisation, Functionality, Information, Reporting | 2 Comments
Tags: , , , ,

Back in January this year I published my first Power BI report pack for Project Online, the post can be found here: https://pwmather.wordpress.com/2017/01/03/projectonline-ppm-powerbi-report-pack-bi-reporting-powerquery-dax-office365/ I have now published the second version of my report pack for Project Online. This version can be download from the link below:

https://gallery.technet.microsoft.com/Online-Power-BI-Report-abcb3c3b

This report pack consists of 8 reports for Project Online, these reports can be seen below:

Portfolio Report page:

image

Issues Report page:

image

Risks Report page:

image

Project Report page:

image

Resource Demand Report page:

image

Resource Report page:

image

Timesheet Summary Report page:

image

Timesheet Detail Report page:

image

These reports only use default intrinsic fields so it should work for all Project Online deployments.

Once downloaded, the report pack data sources will need to be updated to point to your target Project Online PWA instance. To do this you will need the Power BI desktop tool which is a free download here: https://powerbi.microsoft.com/en-us/desktop

Open the downloaded PWMatherProjectOnlinePowerBIReportPackv2.pbit template file in Power BI Desktop and follow the steps below to point the data sources to your Project Online PWA instance:

 

  • In the parameter window that opens, enter the full Project Online PWA URL
  • Click Load
  • The data will now start to load and you will be prompted to connect
  • On the OData feed window, click Organizational account and click Sign in and enter credentials as required
  • Click Connect
  • On the Privacy levels window set the privacy as required
  • Click Save
  • The data will load – this may take a few minutes depending on the dataset size in Project Online
  • Access the Project Report page and select a project from the project filter
  • Save the report

This file can either be emailed around to colleagues with details on how to update the credentials to their own or what would be better is to publish the report to your Power BI workspace can create an organisational content pack that others can add to their Power BI workspace. If the Power BI organisational content pack is the chosen option, you might want to create a Dashboard first. See a previous blog post on this: https://pwmather.wordpress.com/2017/02/10/projectonline-ppm-powerbi-report-pack-publish-bi-reporting-powerquery-dax-office365/

Enjoy, I hope you like it Smile

#ProjectOnline #PowerBI content pack 2 available #BI #Office365 #PPM update

October 19, 2017 at 11:56 am | Posted in Add-on, Administration, Customisation, Functionality, Information, Reporting | 1 Comment
Tags: , , , ,

Following on from my previous blog post regarding the updated Project Online Power BI content pack from Microsoft –  see below if you missed it:

https://pwmather.wordpress.com/2017/09/26/projectonline-powerbi-content-pack-2-available-bi-office365-ppm/

That was shortly removed from the Power BI service and hasn’t been updated there yet but the template file has since been made available to download from GitHub:

https://github.com/OfficeDev/Project-Power-BI-Content-Packs

You can now have the default reports provided here and extend to your own requirements for example a quick change would be to change the currency symbol used if you are not using US dollars:

image

Another change you might want to do, is make this report pack support non-English PWA site collections. This can be done by editing all of the queries in the Query Editor, use the Advanced Editor and update the code: OData.Feed(#”PWA Site URL” & “/_api/ProjectData”), to OData.Feed(#”PWA Site URL” & “/_api/ProjectData/[en-US]“), This will ensure all of the properties exist and the reports work.

Make the changes as required then publish to your own organisation.

#SharePoint item count from all lists on all sub webs in SharePoint / #ProjectOnline #PPM #PowerShell

September 28, 2017 at 11:29 am | Posted in Add-on, Administration, Customisation, Functionality, Information, PowerShell, Reporting | Leave a comment
Tags: , , , ,

This is a supporting blog post for an example PowerShell script I quickly wrote for Microsoft’s Office 365 SharePoint Online. It was created after a query was posted on the Project Online TechNet forums asking how to easily check what sub sites were being used in PWA.

The code sample can be downloaded from here: https://gallery.technet.microsoft.com/Get-item-count-from-all-026a6db2

To get the script to work, there will need to be some environment variables set and a DLL available, these are detailed below.

Update the environment details:

image

Add the SharePoint Online / PWA URL, username and password for an account that is a site collection admin on the target site collection.

To get the script to work you will need to reference the DLL as seen in the image below:

image

This can be installed from the SharePoint Online Client components / management shell. I used the dll from the SharePoint Online Management Shell in this example.

Below you can see the output from the PowerShell ISE when running against my test SharePoint / Project Online site collection:

SNAGHTML9ae65556

There are probably easier ways to view this information but I thought I would just try with a simple PowerShell script.

#ProjectOnline #PowerBI content pack 2 available #BI #Office365 #PPM

September 26, 2017 at 4:14 pm | Posted in Add-on, Administration, Customisation, Functionality, Information, Reporting | 5 Comments
Tags: , , , ,

2 years ago Microsoft released the first Project Online Power BI Content Pack, this week they have released another updated Project Online content pack! This is available now. For details on how to get the content pack see my original post below:

https://pwmather.wordpress.com/2015/11/18/projectonline-powerbi-content-pack-available-bi-office365-ppm/

The steps are the same to get the new Project Online Content pack. This is version 2.3 as seen below:

image

Once the data is imported access the Report and Dashboard from the Power BI App > My Workspace navigation. I have set this up against our sales demo instance for Project Online. There are default reports for:

Portfolio Dashboard:image

Portfolio Timeline:image

Portfolio Costs:image

Portfolio Milestones:image

Portfolio Risks:image

Portfolio Issues:image

Resource Availability:image

Resource Overview:image

Resource Assignments:image

Resource Details – you will need to select a resource from the Resource Name filter:image

Resource Demand Forecast:image

Project Status – you will need to select a project from the Project filter:image

Project Risks & Issues – you will need to select a resource from the Project filter:image

Report Dashboard:image

Together with this content pack and the example report pack I built earlier this year, there are plenty of examples of reports to make Project Online reporting a simple task! A link to my report pack can be seen below:

https://pwmather.wordpress.com/2017/01/03/projectonline-ppm-powerbi-report-pack-bi-reporting-powerquery-dax-office365/

Link #ProjectOnline tasks to #Planner #Microsoft365 #PPM #PMOT #MSProject

August 29, 2017 at 4:04 pm | Posted in Administration, Functionality, Information | Leave a comment
Tags: , , , , ,

In the latest release of Project Online Desktop Client, depending on the release channel that you are on, you might have noticed the new Planner button in the Task ribbon:

image

My Office version is on the Office Insider Fast channel so that I get the latest changes first but this will typically be controlled by your IT admins so you might need to wait a while until this feature reaches the Office release channel that you are on.

Hovering over the new button provides the details for this feature:

image

This feature allows you to create a hyperlink to the linked Planner Plan from the Planner icon in the indicators column. It could be that you have a bucket type task (sprint etc.) in the Project Online project then the detail tasks / activities might be in the linked Planner plan.

Select a task in the project then click the Planner button and a side pane will launch:

image

Click the “Link to existing Planner plan..” link then you will be able to type the name of the Office 365 Group that contains the Planner plan:

image

Start typing name of the group then select the correct group, in this example I have one called Pauls Test Plan:

image

Notice how it also states that it will add the resources assigned to the task into the group. Click the Create Link button:

image

It then shows that this task is now linked to that Planner plan:

image

You then get the hyperlink directly to the linked Planner Plan using the Planner icon in the indicators column or using the link in the Link to plan pane.

You can only link one task from the project plan to one Planner plan, if you try and link another task to the same Planner plan you will see this alert:

image

The resources added to the linked task didn’t get added to the group as suggested but as this feature is only in the Office Insider builds that might come when this is released in the other release channels. ***Update – this feature does work providing the PWA Resource email address matches the O365 user principle name. I believe other options are being explored***

For release details, see the article here: https://support.office.com/en-us/article/What-s-new-in-Project-2016-111bcaf9-bc27-4c15-80e6-85e726307520?ui=en-US&rs=en-US&ad=US#Audience=Office_Insiders

Running #ProjectOnline #PowerShell in #Azure using #AzureFunctions #PPM #Cloud #Flow #LogicApp Part2

August 1, 2017 at 4:32 pm | Posted in Add-on, Administration, Configuration, Customisation, Functionality, Information, PowerShell, Workflow | Leave a comment
Tags: , , , , , , ,

Following on from part 1 where I introduced the idea of automating certain Microsoft 365 PPM Project Online customisations using PowerShell, Microsoft Flow / Azure Logic Apps and Azure Functions, in part 2 I will set up an example automation for creating a Project Online event driven snapshot application on project published without having to set up any server or write any complied code! If you missed part 1 where this concept was introduced, see the link below:

https://pwmather.wordpress.com/2017/07/28/running-projectonline-powershell-in-azure-using-azurefunctions-ppm-cloud-flow-logicapp-part1/

Firstly I created an Azure Function app in my Azure subscription then created a new function based on the HttpTrigger – PowerShell template:

image

Give the function a name and set the Authorisation level – set the authorisation level to the correct setting for your function. Click Create. For details on Azure Functions, start here: https://docs.microsoft.com/en-us/azure/azure-functions/

You will then be presented with the function and sample code:

image

We will now create the PowerShell script to create the snapshot. This is based on a script I published a while back: https://pwmather.wordpress.com/2016/08/26/projectonline-data-capture-snapshot-capability-with-powershell-sharepoint-office365-ppm-bi/

The script has been updated to work in an Azure Function but also modified to use a parameter so that it only captures data for the published project, the PowerShell script can be seen further on in the post.

Firstly upload the SharePoint CSOM DLLs using the upload button:

image

I used the SharePoint CSOM DLLs from the SharePoint Online Management Shell:

image

Then enter the PowerShell code – screen shots below and code pasted below the images:

image

image

image

Code sample used in function:

# POST method: $req
$requestBody = Get-Content $req -Raw | ConvertFrom-Json
$projID = $requestBody.projID

# GET method: each querystring parameter is its own variable
if ($req_query_name) 
{
    $projID = $req_query_name 
}

#add SharePoint Online DLL - update the location if required
Import-Module "D:\home\site\wwwroot\ProjectSiteUserSyncHTTPTrigger\Microsoft.SharePoint.Client.dll"
Import-Module "D:\home\site\wwwroot\ProjectSiteUserSyncHTTPTrigger\Microsoft.SharePoint.Client.Runtime.dll"

#set the environment details
$PWAInstanceURL = "https://mod497254.sharepoint.com/sites/PWA2"
$username = "admin@MOD497254.onmicrosoft.com" 
$password = "password"
$securePass = ConvertTo-SecureString $password -AsPlainText -Force
#create the SharePoint list on the PWA site and add the correct columns based on the data required
$listname = "ProjectSnapShots"
$results1 = @()

#set the Odata URL with the correct project fields needed
$url = $PWAInstanceURL + "/_api/ProjectData/Projects()?`$Filter=ProjectId eq GUID'$projID'&`$Select=ProjectId,ProjectName,ProjectPercentCompleted"

#get all of the data from the OData URL
while ($url){
    [Microsoft.SharePoint.Client.SharePointOnlineCredentials]$spocreds = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($username, $securePass);    
    $webrequest = [System.Net.WebRequest]::Create($url)
    $webrequest.Credentials = $spocreds
    $webrequest.Accept = "application/json;odata=verbose"
    $webrequest.Headers.Add("X-FORMS_BASED_AUTH_ACCEPTED", "f")
    $response = $webrequest.GetResponse()
    $reader = New-Object System.IO.StreamReader $response.GetResponseStream()
    $data = $reader.ReadToEnd()
    $results = ConvertFrom-Json -InputObject $data
    $results1 += $results.d.results
        if ($results.d.__next){
        $url=$results.d.__next.ToString()
    }
    else {
        $url=$null
    }
}

#add data to snapshot list
#get PWA site client context
$ctx = New-Object Microsoft.SharePoint.Client.ClientContext($PWAInstanceURL) 
$credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($username, $securePass) 
$ctx.Credentials = $credentials 
$ctx.ExecuteQuery()  
 
#get the target list 
$List = $ctx.Web.Lists.GetByTitle($listname) 
$ctx.Load($List) 
$ctx.ExecuteQuery() 

#for each project, create the list item - update the newitem with the correct list columns and project data
foreach ($projectrow in $results1) 
{ 
   $itemcreationInfo = New-Object Microsoft.SharePoint.Client.ListItemCreationInformation 
   $newitem = $List.AddItem($itemcreationInfo) 
   $newitem["Title"] = $projectrow.ProjectName
   $newitem["ProjectId"] = $projectrow.ProjectId
   $newitem["PercentCompleted"] = $projectrow.ProjectPercentCompleted
   $newitem.Update() 
   $ctx.ExecuteQuery() 
} 

The PowerShell code would need to be updated with your environment details: (PWAInstanceUrl, username, password and listname variables). Also the OData URL will need to be updated to include the project level fields that you want to snapshot.The target SharePoint list will also need to be set up in the PWA site collection for the project fields the script uses. This is the list I set up for this example:

image

SnapshotDate is set to Todays date so we don’t need to set that in the code.

The code is simple to follow but in summary the first part will get the projID from request body – we will pass in the ProjectID for the published project from the Flow / Logic App trigger. Then the SharePoint Online CSOM DLLs are imported in. Then the specific PWA environment details are set for the variables. The OData URL is then added to the url variable. Here notice we are filtering for the ProjectID and passing in the $projID variable we get from the request body. The Select part of the query will need to be updated for your project level fields. Next the code gets the data from the OData feed using the web request and adds the data into the results array. Once we have the data, we connect to the SharePoint list, in the example it is the ProjectSnapShots as set in the $listname variable. Lastly the new item is created in the list using the data from the results array.

Now the Azure Function is ready to be used. It can be tested using the Test option in the right hand panel, update the Request body:

image

Update it for a valid project ID. Then click Run above the function code:

image

The Logs window below will help you debug any errors etc.:

image

Then check the SharePoint list in the PWA site and the new item should have been created:

image

We now know the Azure Function is working as expected, now we need to call the Azure function when a project is published. All we need from the Azure Function is the URL to use, use the </>Get function URL button:

image

Select the correct Key, in this example I used the default function key. Copy the URL as it will be needed later.

To call the Azure Function when a project is published, the choice here for a no code option would be Microsoft Flow or Azure Logic App. For this I will use Microsoft Flow but the same steps (triggers , actions etc.) would be used in the Azure Logic App. Create a new Flow and search for Project Online:

image

Then select the Project Online – When a project is published trigger.

Enter the PWA URL:

image

Then click the ellipsis and set the connection for the PWA URL or create a new connection if needed:

image

Click + New step then Add an Action and search Http:

image

Select HTTP – HTTP:

image

Complete the HTTP action:

Method is POST, the Uri is the URL for the function that we copied earlier, Headers are not required. The Body is where we pass in the project ID from the published project trigger:

image

The Flow is now completed:

SNAGHTML55ecdca7

Now click Save flow.

In PWA, Publish a project or projects and see the snapshot data created on the configured snapshot list once the Flow has run:

Flow run:

image

Data added to the list for the project I published – in this example it was the Office 2016 rollout project:

image

This just shows a simple example and the some of the possibilities for extending the Project Online capability when making use of simple PowerShell scripts and other Microsoft 365 / Azure services for cloud / serverless solutions. Look out for more examples in the future.

Running #ProjectOnline #PowerShell in #Azure using #AzureFunctions #PPM #Cloud #Flow #LogicApp Part1

July 28, 2017 at 4:50 pm | Posted in Add-on, Administration, App, Configuration, Customisation, Fixes, Functionality, Information, PowerShell, Workflow | 4 Comments
Tags: , , , , , ,

Following on from my last post where I published an example solution starter PowerShell script for adding project team users to the Project Site, here I mentioned about running the script in an Azure Function and even running this sync from a Project Online event. The blog post can be seen below if you missed that:

https://pwmather.wordpress.com/2017/07/07/projectonline-project-user-sync-to-project-sites-ppm-o365-powershell-sharepoint/

Whilst I will use that example PowerShell script from my last blog post as an example, the concept will work for any PowerShell script.

I wont cover the details in setting up the Azure Function in part 1 as there is plenty of support out there for this – for this example I created an Http Trigger – PowerShell function.

image

I then uploaded the SharePoint DLLs and copied in the PowerShell script into the editor:

image

The project site user sync script didn’t work as is as I had to make some minor changes to get this to run from the Azure Function. This included change the way the SharePoint CSOM DLLs where loaded in. In the example script I used Add-Type to load the DLLs but in the Azure Function I had to switch this out to use Import-Module:

image

The next change I had to make was to comment out all of the feedback to the console, so all of the write-hosts. I also had to remove the functions within the script so that is was one block. After these changes I could execute the PowerShell script to add the project team members from my example project into the associated project site from the Azure Function. As this was an HTTP Trigger Azure Function, you can get the URL to the function and access that URL to execute the function.

This opens up lots of possibilities to easily execute this Azure Function from other applications that can make the HTTP call. For example you build easily execute this script once the project has been published either using a remote event receiver (RER) or a Microsoft Flow / Azure Logic App. The example script would need to be made generic and pass in a variable into the Azure Function for it to be a workable solution.

In part 2 of this blog post we will look at make a full event driven solution that is fired on project publish then executing the Azure Function and passing in a variable.

#ProjectOnline & #ProjectServer #PS2013 / #PS2016 Global Permissions access to PWA Settings Cog #SharePoint menu items

July 13, 2017 at 8:44 pm | Posted in Administration, Configuration, Customisation, Functionality, Information | Leave a comment
Tags: , , , , , ,

I wrote the same blog post but for Project Server 2010 over 5 years ago: https://pwmather.wordpress.com/2012/05/31/projectserver-2010-global-permissions-access-to-pwa-site-actions-menu-items-ps2010-sp2010-msproject/ This blog post will cover the same but for Project Online / Project Server 2013 / 2016. This is useful for PWA site collections that are using the Project Permission mode as you can add / remove these permissions as required. Below I have listed the Project Server /Project Online global permissions and the Settings Cog SharePoint menu items that are available when the permissions are allowed.

  • Log On
    • Allows access to the following Site Actions menu items:
    • Site contents
  • Log On + Manage Lists in Project Web App
    • Allows access to the following Site Actions menu items:
    • Edit page
    • Add an app
    • Site contents
    • Change the look
    • Site Settings (limited options)
  • Log on + Manage Lists in Project Web App + Manage SharePoint Foundation
    • Allows access to the following Site Actions menu items:
    • Edit page
    • Add an app
    • Site contents
    • Change the look
    • Site Settings (all options except Site Collection Admin (SCA) options)

#ProjectOnline project user sync to project sites #PPM #O365 #PowerShell #SharePoint

July 7, 2017 at 4:13 pm | Posted in Add-on, Administration, App, Customisation, Functionality, Information, PowerShell, Workarounds | 1 Comment
Tags: , , , ,

This is a supporting blog post for an example solution starter PowerShell script I wrote for Microsoft’s Office 365 PPM tool Project Online. With the great improvement from Microsoft to now support up to 30,000 Projects and Project Sites in one Project Online Project Web App site collection, there are some limitations such as not being able to sync the users to project sites outside of the PWA site collection. For details on this change see the post here:

https://pwmather.wordpress.com/2017/06/14/projectonline-project-site-settings-location-sharepoint-ppm-o365-msproject/

This solution starter script just demonstrates one method to sync the project team members into the associated Project Site-  the concept would also be useful when using the SharePoint permission mode in PWA. The example script is fixed to one example project / project site and only adds the team members to the members SharePoint group on that site. It doesn’t loop through all projects  or remove users from the project sites etc. This could all easily be done but is beyond the scope of the code sample / solution starter.

The code sample / solution starter can be downloaded from here: https://gallery.technet.microsoft.com/Online-User-Sync-to-7a75ef77

To get the script to work, there will need to be some environment variables set and a DLL available, these are detailed below.

To get the script to work you will need to reference the DLL as seen in the image below:

image

This can be installed from the SharePoint Online Client components / management shell. I used the dll from the SharePoint Online Management Shell in this example.

You will then need to update the environment detail placeholders as seen below:

image

Add the Full PWA URL, username and password for an account that is a full admin on the PWA site collection. Select an example project to test with on a non-production PWA project / project site. Use a project that is not syncing the users to the project site automatically – for example a project site outside of the PWA site collection. Copy the Project GUID – it will be similar to this: 4b75dfb8-4051-e711-80c9-00155da85037 and update the script with the project GUID. An easy way to get the Project GUID is from the PWA PDP URL when accessing the project. For the same project, copy the full project site URL and update the script then find the name of the correct SharePoint group to add the users to. For example it could be the members group. The groups can be found from the project site > Settings cog > Site Settings > Site Permissions.

Once these variable placeholders are set, save the script. Run the script using PowerShell and you will see the users added to the specified group on the project site. Fully test this on a non-production PWA instance first. The code should really be updated to production standard code before using on a production PWA instance and handle removing users, adding users to different permissions groups based on role and dynamically getting the projects and project site urls etc.

Below you can see the output from the PowerShell ISE when running against my example project  / project site on my test PWA instance:

image

Looking at the project site you can see the users here:

image

A production version of the PowerShell script could be set to run each day / night etc. as required. The code could also easily be run using an Azure Function and executed from a URL – you could then build is an event driven type user sync – more on that in my next blog post.

The script is provided "As is" with no warranties etc. – this is just a free solution starter so is use at your own risk.

Next Page »

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