Skip to main content

Deriving Milestone RAG Indicators from tasks to the Project Center

updated on 10 Dec 2010 - MS1-Var-P field names were wrong.  Hope Ive got it right this time!!! - Carl
updated on 13 Dec 2010 - data types and task level rollups added to field definition (shame)


In the Project Centre you wish to show the status of your "Gateway" events that are held as Milestones in the project plans to provide a Milestone Summary view.  However there is no out of the box solution to doing this.

The Approach
Firstly you need a Task Level Custom Field that links to a lookup table that defines your milestones.  For Example:

Field Name = C3_Milestone Type
Lookup Table = Gateways
LUT List = MS1, MS2, MS3, MS4, MS5

For each milestone you want to report on in the Project Centre (MS1...5), create the following field structure:
Note:   -T represents task fields, -P represents project fields

- MS1 Switch-T
this is the control field that identifies the relevant task that is tagged with the Gateway = MS1 value (1), Baselined (2), Complete (4), not set (0)

IIf([C3_Milestone Type]="Phase.IT Specification and Design Complete",IIf([% Complete]=100,4,IIf([Baseline Finish]>56000,1,2)),0) 

Type = Number
Rollup = Max

Note:  you will notice 3 result isn't included.  I did this in case we needed a 4th State to be defined later

- MS1 Finish-T  
This field received the finish date of the task where the above flag has been enabled.  Note:  Rollup set to MAX


type = date
Rollup = max

- MS1 BaseFinish-T
As above but captures the baseline finish date. Note:  Rollup set to MAX

IIf([MS1-Switch-T]=2,[Baseline Finish],"NA")

type = date
Rollup = max

- MS1 Finish-P

this project field receives the finish date captured by the previous task level custom field

SWITCH([MS1 Switch-T]=0,"",[MS1 Switch-T]>=1,[MS1-Finish-T])

Type = date

- MS1 BaseFinish-P

this project field receives the baseline finish date captured by the previous task level custom field

IIf([MS1-Switch-T]=2,[MS1 BaseFinish-T],"NA")

Type = Date

This field does a Date Diff between the Finish-P and BaseFinish-P fields

IIf([MS1-Switch-T]=2,([MS1 Finish-P]-[MS1 BaseFinish-P]),0)

Type = Text

Here you can apply a formula to derive your RAG indicator based on the VAR field above.

IIf([MS1 Switch-T]=0,"Not Set",IIf([MS1 Switch-T]=4,"Complete",IIf([MS1 Switch-T]=1,"No Baseline",Switch([MS1-VAR-P] >20,"4 weeks late",[MS1-VAR-p] > 10 And [MS1-VAR-p] <=20,"2-4 weeks late",[MS1-VAR-p] >0 And [MS1-VAR-p]>=10,"<2 weeks late",[MS1-VAR-p] <=0,"On Track"))))

Type = Text

** deliberate mistake = the above formula should say >0 and <=10 (rather than >=10).  Sorry about that :/

The Result


CAVEAT:   it appears that the issue with incorrectly calculating tiered/dependant formulas when publishing via the PSI  has never been fixed.  Therefore any PWA based Publish MAY cause Gateway milestones to fail or show incorrect values (or no indicators).  Mileage may vary...


  1. Great Post Carl - really useful illustration of how to provide high level key milestone status. Did I miss something in that the screengrab at the end shows M1, M2 etc with Graphical Indicators, are these determined in your formula or in the traditional manner within the Custom Field Definition in Server Settings> Enterprise Data section?

  2. The MS1-5 columns in the grab are actually the MS1-5 RAG fields defined above (I renamed them to make them more view-friendly!

    The indicators are defined in the Custom Field Definition section for each field. The graphical indicators are displayed for the results:

    If result of MS1 =
    "complete" show tick
    "not set" show dash
    "No baseline" show white circle
    2-4 Weeks late show Red circle


  3. oooooops....
    Dominic just pointed out my error.... am editing the latter stages of the instructions now


Post a Comment

Popular posts from this blog

#projectserver2013 VIEW FAILURE: The view failed to load. Press OK to reload this view with the default settings. Press cancel to select another view.

** UPDATE ** includes notes relating to secondary bug where Timesheet is created without Administrative tasks.

Does this ring any bells?

This has been bugging me for months, but finally I have a repro for this:

Issue Summary:  When a task is deleted from a plan that is approved into a previous or current timesheet - even when there are no actuals on the task - you can no longer view the timesheet

The following repro has been proven:
- Setup system with Single Entry Mode, with enforced Status Approval before Timesheet Approval
- Create resource as own timesheet manager
- Create new project
- Create two tasks in the same week, starting monday with 5 days duration:  1) Task to assign actuals, 2) Task to delete post submission
- Assign Resource to tasks
- publish project
- as Timesheet User, go to the appropriate timesheet period for the tasks created
- Assign actual work to one task (task 1), leaving task 2 with no actual work
- Submit timesheet
- as Project Status Manager, approve the time on task 1 …

What to do when your application server goes bang

What happens when someone kills your Application Server?
So imagine the scenario:
Three Server Solution - SQL - SharePoint 2010 and Project Server 2010 Application Server (Central Admin Host) - Wfe/ReportServer
We wake one bleary Monday morning to find that some numpty has killed the application server and the users are baying for blood.
Well surprisingly SharePoint handles this disaster recovery scenario particularly well.  Well.  Better than I thought it would to be honest.
Rough steps:
- quick SQL backup to be safe - Rebuild your application server - reinstall pre-reqs - reinstall SP, PS, SPFSP1, SPS+PSSP1, Cumulative Update and other stuff you usually put on there. - Run your configuration wizard to reattach to the Farm, and select Host CA Site
The last step was what I was VERY wary of.  Would the server simply reattach to the Farm, even when there is no CA server available?  
Bingo your back.... almost.... you are going to get errors a-gogo in your event log as things just aren't quite back…

Reporting from Project Server 2016 - multiple sites and userviews

Just a quickie...
I've been interested in how MS have handled the "multiple PWA sites in a Content DB" thing since I read that this was their new approach.  Most of my reporting is via SSRS so i am reliant (still... in 2016) on DB queries rather than OData feeds (tsk) and this "querying a PWA DB with more than one PWA site in it is unsupported" quote was worrying me.

So it looks like what is happening is this.

When you create the first PWA site in a Content DB it hard-codes the SiteID into the _Userview view design elements.  This means that your first PWA Site is the default.  All the data for subsequent sites are still held in the tables against separate SiteID's but you cannot utilise the OOTB _Userview components (see below)

SELECT        ProjectFields....
FROM            pjrep.MSP_TVF_EpmProject('FF19B767-CA6D-4C4C-B123-C0B5AE5354D6') AS MSP_EpmProject