Most project lifecycles have a Manage phase (execution) which involves the ongoing monitoring of the selected projects. Quality delivery of projects is typically measured by the project’s performance to delivering in scope, within budget and on schedule. Project Essentials enables team members to update their projects with actual cost quantities for the current period to help manage and evaluate project performance from one reporting period to the next. Actuals (effective) costs are controlled using an approval workflow; after a cost period is submitted, designated approvers can review/reject the submitted actual cost quantities.
Reporting period lengths are controlled by the granularity that you have set for the stage in the workflow that is marked as an execution. An important thing to note is that starting with CU7 the execution granularity cannot be changed from one stage to another.
In the user interface, actuals cost can be set from the Cost Actuals web part. After filling the values, the reporting period can be submitted for approval or it can be directly approved. Submitting or approving a period opens the next one for edit (according to the settings). A period can be reopened manually or automatically if it is rejected. All this actions are available in the Actual Cost tab from ribbon.
From the API point-of-view you can accomplish the same functionality using UpdateFinancialValues(ValueInfo valuesDataSet, bool isCost) method from ProjectValuesService web service:
o valueInfo – a data set containing the values to update.
o isCost – specifies if the time period is for cost or benefits values
After a cost period is submitted, designated approvers can review/reject the submitted actual cost quantities by going to the Review Actuals page.
When a period is submitted or approved the next Reporting period is opened. From the API perspective this can be achieved using the SetActualPeriodStatus(Guid projectUid, DateTime startDate, PeriodStatus periodStatus, bool bIsBenefits) method from the GranularityService web service:
o projectUid – used to identify the Project Server project instance
o startDate – represents the start date of the reporting period
o periodStatus – used to set the status of the reporting period
o bIsBnefits – specifies if the time period is for cost or benefits values
PeriodStatus is an enum defined in UMT.SDKSamples.Services.CMSI.Granularity namespace with the next oprions:
o Any – default value
o Opened – will open the reporting period
o Submitted – will submit the reporting period for approval
o Approved – will approve the reporting period and opens the next period
If the project is not in execution or the start date does not correspond to a reporting period start date you will get a NoReportingPeriods error.
The sample application provided with the previous article has been updated to also include functionality for timeline changes.
What do you think?