Archive

Archive for the ‘Work’ Category

#ProjectOnline – 1 PWA site collection for all or 1 per department? #O365 #PPM #PMOT #Office365 #MSProject

March 20, 2017 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)

A question I hear a few times from organisations is “We have a new department or business unit coming on-board with Project Online, do we need a new PWA instance for them or can we use the one we already have?” The answer isn’t normally a straightforward yes or no. This post aims to cover most of the questions you need to ask when considering using the existing PWA site collection or creating a new one for a new department / business unit.

The first thing to consider is the Project Online limitations for the data such as number of projects per PWA site, check out the limits here: http://bit.ly/2nXhYU2. Check how many projects you currently have in the PWA site collection and how many more the new business unit expect to add into the PWA site collection – if you are going to be reaching the limits on a PWA site collection then consider a dedicated PWA site collection for the new business unit. The number of PWA site collections in each Office 365 tenant will not be an issue – you can have up to 9,999. Just because you can have lots of PWA site collection doesn’t automatically mean the answer is a new PWA site collection each time!

One PWA site collection will support different PWA configurations for each business unit or department (custom fields , Enterprise Project Types etc.) by making use of the Department functionality to separate those configuration items. So for example, the R&D department only see configuration items relevant to them. So if the new business unit has different custom field / EPT requirements, that shouldn’t be a problem using a single PWA instance.

Whilst talking about configuration items, there are some items that are at the PWA site collection level that can’t be configured / tailored to each business unit or department. These would be some of the Time and Task Management options such as Time Reporting Periods, Timesheet settings and Task settings. Also some settings under the Operational Policies such as Additional Server Settings. If the new business unit has different requirements for time capturing they would need a dedicated PWA instance.

Another important aspect to consider is – will these different business units require access to the same enterprise resources to assign to tasks? Will they need to view the true resource demand / availability for these resources in one place? If this is the case then the easiest option is for the new business unit to use the same PWA site collection.

If there is a requirement to see the data from each business unit together in PWA, for example in a project center view then a single PWA site collection would be required. Similarly, if both business units projects needed to be included in the organisations portfolio strategic analysis for cost and resource requirements, a single PWA site collection will be required.

Reporting is another key factor, if the reports need to show data from all business units / departments then a single PWA instance is easier but it is still possible to generate reports that use data from multiple PWA site collections. With multiple PWA site collections this is something that can be worked around providing there was common metadata between the PWA site collections to enable projects from both PWA site collections to be viewed in the same report.

Then there is the management of the PWA site collection/s. It might be that the organisation has a central PMO function that administers the PWA site collection – adding another PWA site collection will increase their workload.

This is by no means an exhaustive list, here are just a few of the things to consider when deciding on using the existing PWA site collection or a new PWA site collection when a new business unit / department are coming on board.

Categories: Paul Mather, Work Tags:

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

March 15, 2017 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)

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

http://bit.ly/2msEbZ5

Project 2016 March 2017 update:
http://bit.ly/2nnzxAE

SharePoint Server 2016 / Project Server 2016 March 2017 update: 
http://bit.ly/2msrNZ7 & http://bit.ly/2nnFJc0

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

http://bit.ly/2msEbZ5

Project Server 2013 March 2017 CU Server Roll up package:
http://bit.ly/2nnFH3S

Project Server 2013 March 2017 update:
http://bit.ly/2msrQ7f

Project 2013 March 2017 update:
http://bit.ly/2nnpaN5

Also worth noting, if you haven’t done so already, install Service Pack 1 http://bit.ly/1uorn2C first if installing the March 2017 CU on 2013.

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

Categories: Paul Mather, Work Tags:

Rebuild and Reorganize indexes on all tables in MS database

March 14, 2017 Leave a comment

As part of database maintenance, indexes on databases have to be rebuilt or reorganised depending on how fragmented the indexes are. From the article Reorganize and Rebuild Indexes, the advice is to reorganise index if avg_fragmentation_in_percent value is between 5 and 30 and to rebuild index if it is more than 30%.

The script below queries all fragmented indexes more than 5 percent and using a cursor a loop is performed on the results to rebuild or reorganise  indexes depending on the percentage of fragmentation using dynamic SQL, i.e.

The script can be downloaded from technet gallery  , i.e. if avg_fragmentation_in_percent value is between 5 and 30 then reorganise else rebuild.


declare @tableName nvarchar(500)
declare @indexName nvarchar(500)
declare @indexType nvarchar(55)
declare @percentFragment decimal(11,2)


declare FragmentedTableList cursor for
SELECT OBJECT_NAME(ind.OBJECT_ID) AS TableName,
ind.name AS IndexName, indexstats.index_type_desc AS IndexType,
indexstats.avg_fragmentation_in_percent
FROM sys.dm_db_index_physical_stats(DB_ID(), NULL, NULL, NULL, NULL) indexstats
INNER JOIN sys.indexes ind ON ind.object_id = indexstats.object_id
AND ind.index_id = indexstats.index_id
WHERE
-- indexstats.avg_fragmentation_in_percent , e.g. >30, you can specify any number in percent
indexstats.avg_fragmentation_in_percent > 5
AND ind.Name is not null
ORDER BY indexstats.avg_fragmentation_in_percent DESC


OPEN FragmentedTableList
FETCH NEXT FROM FragmentedTableList
INTO @tableName, @indexName, @indexType, @percentFragment


WHILE @@FETCH_STATUS = 0
BEGIN
print 'Processing ' + @indexName + 'on table ' + @tableName + ' which is ' + cast(@percentFragment as nvarchar(50)) + ' fragmented'
if(@percentFragment<= 30)
BEGIN
EXEC( 'ALTER INDEX ' + @indexName + ' ON ' + @tableName + ' REBUILD; ')
print 'Finished reorganizing ' + @indexName + 'on table ' + @tableName
END
ELSE
BEGIN
EXEC( 'ALTER INDEX ' + @indexName + ' ON ' + @tableName + ' REORGANIZE;')
print 'Finished rebuilding ' + @indexName + 'on table ' + @tableName
END
FETCH NEXT FROM FragmentedTableList
INTO @tableName, @indexName, @indexType, @percentFragment
END
CLOSE FragmentedTableList
DEALLOCATE FragmentedTableList

from reshmeeauckloo http://bit.ly/2mHUNQb

Reshmee Auckloo
Reshmee Auckloo – Reshmee is a certified Microsoft professional and has been involved in delivering solutions across a wide variety of industry sectors in a range of assignments from SSRS to Microsoft SharePoint, Project Server development, CRM Dynamics and .Net including business requirements gathering and software quality assurance.

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

#ProjectOnline #PowerBI Currency Conversion Project Cost Report Part 2 #PPM #BI #Office365 #PowerQuery

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 post on currency conversion found below:

http://bit.ly/2mYg9Xz

This post walks through a different option for working with multiple currencies. This post will create a similar report as seen below:

image

This report enables the project cost to be calculated based on project currency and rate for the year. In this example I have two projects that should be reporting costs in Euros,the PWA site is set up using Pounds (GBP) as are the resources that are used on those projects. So for those two projects in PWA the projects display a EUR symbol but there is no conversion to calculate the Euro rate from the GBP resource rates used.

In the steps below we walkthrough how to set up this example. Firstly in the Power BI Desktop client add the Projects OData feed:

  • Click Get Data > OData Feed and add the Odata URL for your PWA site: <PWASite>/_api/ProjectData/Projects and click OK
  • Click Edit to launch the Power BI Query Editor then click Choose Columns and uncheck Select All to deselect all the columns then select at least ProjectId, ProjectName, ProjectCurrency and ProjectType and click OK
  • Click the dropdown menu on the ProjectType column and uncheck 7.
  • Change the table from Query1 to Projects

The Projects table is now completed.

Now we need to create a currency table, still within the Query Editor see these steps:

  • Click Enter Data and create 4 columns, Currency, Master, Date and Rate then enter the data as required and click OK, for the purpose of the blog post here is the data I entered:
  • image
  • On my PWA instance, GBP is the default currency used for this demo / blog post so this is set to 1.00 then I have a example currencies / rates for Euros. The project data in my PWA instance ranges from 2016 to 2018 so I need rates to cover those years
  • Click Add Column > Custom and enter the name “Year” with the formula of  Column Date.Year([Date]) and click OK
  • Right click on Master column and change the type to True / False
  • Change the table name to CurrencyData

The currency table is now completed.

Now we need to get the Task Timephased data, still within the Query Editor opened from creating the currency table table, see these steps:

  • New Source > OData Feed and add the OData URL for your PWA site: <PWASite>/_api/ProjectData/TaskTimephasedDataSet and click OK then OK again
  • Click Choose Columns and uncheck Select All to deselect all the columns then select at least ProjectId, TaskCost, TaskIsProjectSummary and TimeByDay and click OK
  • Change the table from Query2 to TaskData
  • Click the dropdown menu on the TaskCost column, if it states “List may be incomplete” click load more and then uncheck 0. In the advanced editor check the filter is ([TaskCost] <> 0)
  • Click the dropdown menu on the TaskIsProjectSummary column and uncheck false
  • Click Add Column > Custom Column and enter the name “Year” with the formula of Date.Year([TimeByDay]) and click OK
  • Click Merge Queries > Merge Queries, in the Merge window select Projects then select ProjectId in the TaskData table and ProjectId in Projects table:
  • image
  • Click OK
  • In the New Column column heading, click the Expand button, select just ProjectCurrency and uncheck the use original column name option:
  • image
  • Click OK
  • Click Merge Queries > Merge Queries, in the Merge window select CurrencyData then  hold the Ctrl key down and click Year and then ProjectCurrency in the TaskData table and then Year and then Currency in the CurrencyData table like below:
  • image
  • Click OK
  • In the New Column column heading, click the Expand button, select just Rate and uncheck the use original column name option:
  • image
  • Click OK
  • Click Add Custom > Custom Column and enter the name “TaskCost_Converted” with the formula of [TaskCost] * [Rate] and click OK
  • Right Click the column heading for TaskCost_Converted column and click Change Type > Decimal Number:
  • image 

The TaskData table is now complete. Click Close & Apply > Close & Apply. Check the table relationships are correct, it should just be Projects linked to TaskData using ProjectId.

Now design the report as required. For the purpose of this blog post I created one table with the following fields:

image

Ensure TaskCost and TaskCost_Converted fields are set to Sum and all other fields on the table are set to Don’t summarize. If you need to work with multiple currencies in reports, try this out and extend it for your specific needs.

Categories: Paul Mather, Work Tags:

SQL script batch execution using sqlcmd in PowerShell

There is often a mismatch between needs of the development team (multiple discreet T-SQL files for separate concerns) and the release team (the requirement  for one step automated deployment) . The script bridges the requirement by using sqlcmd.exe to run a batch of SQL scripts.

A text file is used listing all sql files that need to run in a particular order to avoid errors which may occur if there are dependencies between the scripts. Instead of using a text file a number can be prefixed to the scripts based on the order they need to run.

The script expects two parameters –

  • Path of folder containing the set of T-SQL files (and the manifest file, see below)
  • Connection string

The script can be downloaded from technet gallery.

## Provide the path name of the SQL scripts folder and connnection string
##.\SQLBatchProcessing.ps1 -SQLScriptsFolderPath "C:\Sql Batch Processing\SQLScripts" -ConnectionString "DEV-DB-01"
Param(
[Parameter(Mandatory=$true)][String]$ConnectionString ,
[Parameter(Mandatory=$true)][String]$SQLScriptsFolderPath
)
Set-ExecutionPolicy -ExecutionPolicy:Bypass -Force -Confirm:$false -Scope CurrentUser
Clear-Host
#check whether the SQL Script Path exists
$SQLScriptsPath = Resolve-Path $SQLScriptsFolderPath -ErrorAction Stop
#a manifest file will exisit in the SQL scripts folder detailing the order the scripts need to run.
$SQLScriptsManifestPath = $SQLScriptsFolderPath + "\Manifest.txt"
#Find out whether the manifest file exists in the the SQL Scripts folder
$SQLScriptsManifestPath = Resolve-Path $SQLScriptsManifestPath -ErrorAction Stop


#if manifest file found iterate through each line , validate if corresponding SQL script exists in file before running each of them
Get-Content $SQLScriptsManifestPath | ForEach-Object {
$SQLScriptsPath = $SQLScriptsFolderPath + "\" + $_.ToString()
Resolve-Path $SQLScriptsPath -ErrorAction Stop
}
$SQLScriptsLogPath = $SQLScriptsFolderPath + "\" + "SQLLog.txt"
Add-Content -Path $SQLScriptsLogPath -Value "***************************************************************************************************"
Add-Content -Path $SQLScriptsLogPath -Value "Started processing at [$([DateTime]::Now)]."
Add-Content -Path $SQLScriptsLogPath -Value "***************************************************************************************************"
Add-Content -Path $SQLScriptsLogPath -Value ""
Get-Content $SQLScriptsManifestPath | ForEach-Object {
$SQLScriptsPath = $SQLScriptsFolderPath + "\" + $_.ToString()
$text = "Running script " + $_.ToString();
Add-Content -Path $SQLScriptsLogPath -Value $text
sqlcmd -S "DEV-DB-01" -i $SQLScriptsPath | Out-File -Append -filepath $SQLScriptsLogPath
}
Add-Content -Path $SQLScriptsLogPath -Value "***************************************************************************************************"
Add-Content -Path $SQLScriptsLogPath -Value "End processing at [$([DateTime]::Now)]."
Add-Content -Path $SQLScriptsLogPath -Value "***************************************************************************************************"
Add-Content -Path $SQLScriptsLogPath -Value ""

from reshmeeauckloo http://bit.ly/2mntBWD

Reshmee Auckloo
Reshmee Auckloo – Reshmee is a certified Microsoft professional and has been involved in delivering solutions across a wide variety of industry sectors in a range of assignments from SSRS to Microsoft SharePoint, Project Server development, CRM Dynamics and .Net including business requirements gathering and software quality assurance.

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

#ProjectOnline #PowerBI Currency Conversion Project Cost Report Part 1 #PPM #BI #Office365

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)

Whilst Microsoft’s Office 365 PPM tool Project Online supports projects using different currencies, there is no conversion based on a currency rate. The project has a currency set and the correct currency symbol is displayed for cost data. In the reports and views there is no conversion based on an exchange rate between currencies. This blog post shows a simple way using Power BI to have a report calculate the project cost based on the defined currency as seen below:

image

In the steps below we walkthrough how to set up this simple example. Firstly in the Power BI Desktop client add the Projects OData feed:

  • Click Get Data > OData Feed and add the Odata URL for your PWA site: <PWASite>/_api/ProjectData/Projects and click OK
  • Click Edit to launch the Power BI Query Editor then click Choose Columns and uncheck Select All to deselect all the columns then select at least ProjectName, ProjectCost and  ProjectType and click OK
  • Click the dropdown menu on the ProjectType column and uncheck 7.
  • Change the table from Query1 to Projects

The Projects table is now completed.

Now we need to create a table for the different currencies and rates we want to use.

  • Click Enter Data to launch the Create Table window and create the columns “Currency” and “Rate”. Enter the data as needed and call the table Currency then click OK. I created the following:
  • image
  • On my PWA instance, GBP is the currency used for this demo / blog post so this is set to 1.00 then I have a example currencies / rates for Euros and USD

The Currency table is now completed. Click Close & Apply > Close & Apply. Create a table with the project data on then a slicer for the currency values from the currency table like below:

image

Now right click on the Projects table in the fields pane and click New measure:

image

Enter the following in the formula / query bar:

image

This gets the selected currency from our slicer as a value in the Projects table. This is then used in the next new measure we create. Right click on the Projects table in the fields pane and click New measure again:

image

Enter the following in the formula / query bar:

image

Now add the ProjectCost_Converted field into the table with the project data and change the slicer selection and notice the ProjectCost_Converted values change, as seen below for Euros (EUR):

image

For Pounds (GBP):

image

For US Dollars (USD):

image

This simple version doesn’t take into account for projects that span multiple years where different rates will apply, it could be extended to support that though. In part 2 later this week we look at pre-calculating the project cost so that the portfolio cost is correct based on the currency defined by the project, look out for that towards the end of the week.

Categories: Paul Mather, Work Tags:

#ProjectOnline licenses now included in some #Dynamics365 Enterprise user licenses #Office365 #PPM

February 26, 2017 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)

Project Online is now available in the Dynamics 365 Enterprise user licenses:

  • Project Online Essentials available in Team Member, Sales, Customer Service, Field Service, Project Service Automation, Enterprise Plans 1 & 2 Dynamics 365 Enterprise User licenses
  • Project Online Premium available in Project Service Automation and Enterprise Plan 1 & 2

Take a look at the licensing guide here for details: http://bit.ly/2lJ8pIy

Also fellow MVP Allan Rocha blogged about this a few days ago: http://bit.ly/2lYddwb

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