% Complete Recognition Method for Revenue Forecasting

The % Complete revenue recognition method relates to fixed fee projects or milestones recognized on percentage of completion. A revenue forecast record is created for each monthly time period to store the values for these objects for use in Revenue Forecasting.

Revenue Forecasting automatically caps the amount at 100% to prevent over-forecasting if the number of hours logged and scheduled on a milestone or project exceeds the number of planned hours, estimated hours at completion, or expected hours.

Note:

Timecard records without assignments are not included in % Complete revenue forecasts.

Revenue Forecasting uses Est Vs Actuals (EVA) records to calculate the following in a given month:

  • Actual percentage of completion.
  • Scheduled and unscheduled percentage of completion.
Tips:

If required, you can exclude scheduled hours in closed periods from your revenue forecast calculations for projects and milestones.For more information, see Excluding Scheduled Hours in Closed Periods (% Complete).

Some calculations described in this topic refer to the Estimated Hours at Completion field, however, you can configure which field is used for calculating the value in the % Hours Completed for Recognition field on a project. For more information, see Scheduling Forecasts.

In the Total Hours Field on Project field on the active revenue forecast setup record, you can specify the field containing the value you want to use as the denominator to calculate the % Hours Completed for Recognition for projects and milestones. If the total scheduled and actual hours exceeds the value in that field and the Use Sched and Actual Hrs for % Complete setting is selected, the calculation for the % Hours Completed for Recognition field uses the total scheduled and actual hours as the denominator instead. For more information, see Scheduling Forecasts.

Warning:

Depending on how you recognize revenue, you must set the Actuals Recognition Template setting or recognition method on either a project or a milestone but not on both.

Project and Milestone Calculations

A revenue forecast record is created for each month for projects and milestones whose recognition method is set as % Complete. This record stores the values from EVAs, unheld resource requests, and timecards for use in Revenue Forecasting.

Values from EVAs and timecards are rolled up into revenue forecast type records for the corresponding project that have "% Complete: Project" or "% Complete: Milestone" in the Revenue Source field. If Include Unheld RRs in % Complete is selected on the active revenue forecast setup record, values from unheld resource requests contribute to revenue forecast type records that have the following in the Revenue Source field:

  • "% Complete: Project Unheld Resource Request"
  • "% Complete: Milestone Unheld Resource Request"

Projects and milestones are considered to be closed or complete when you run a revenue forecast in the following circumstances:

  • Either of the following is true for a project:

    • The value in the Stage field is "Completed".
    • The Closed for Time Entry checkbox is selected.
  • An actual date is recorded for a milestone.

If a record is closed or complete, only actual hours are included and the revenue is split between the actual hours. Any scheduled or unscheduled hours are discounted. Actual hours are used as the total hours instead of the value in the Estimated Hours at Completion field for projects or the Planned Hours field for milestones.

When you run a revenue forecast for a project or milestone, the following calculation is used to work out the total revenue forecast percentage for a given month:

Revenue Pending Recognition percentage + Scheduled Revenue percentage + Unscheduled Revenue percentage from unheld resource requests

Notes:

Some calculations described in this section refer to the Estimated Hours at Completion field. You can configure which field is used for calculating the value in the % Hours Completed for Recognition field on a project. For more information, see Scheduling Forecasts.

If you do not want PSA to use the value in the Bookings field on the project or the Milestone Amount field on a milestone to be used as the total revenue or total amount in revenue forecast calculations, you can specify an alternative numeric field. For more information, see Specifying the Field Containing the Total Project Revenue (% Complete and Equal Split) and Specifying the Field Containing the Total Milestone Revenue (Deliverable, % Complete, and Equal Split).

Calculating with Closed Periods

This section explains how the revenue forecasts are calculated when relevant records are marked as % Complete and there are closed time periods within the project or milestone duration.

Tip:

If required, you can exclude scheduled hours in closed periods from your revenue forecast calculations for projects and milestones.For more information, see Excluding Scheduled Hours in Closed Periods (% Complete) and Revenue Forecast Setup Fields.

Including Unscheduled Hours

PSA identifies a month as having scheduled hours if it contains at least one Est Vs Actuals (EVA) record.

If there are any unscheduled hours on a project or milestone and there are months that do not contain any scheduled or actual hours, the revenue from the unscheduled hours is spread evenly across those months, with the exception of empty months that fall between months containing scheduled or actual hours.

If there are unscheduled hours on a project or milestone and all relevant months contain scheduled or actual hours, the revenue from the unscheduled hours is added to:

  • The final month within the project duration for projects.
  • The month that contains the target date or, if populated, the actual date for milestones.

If the milestone target date or, if populated, the milestone actual date falls outside the project duration, the project end date is used instead.

On projects, the following calculation is used to work out the number of unscheduled hours:

Estimated Hours at Completion - (Actual Hours on timecards + Scheduled Hours on resource requests + Scheduled Hours on assignments + Unscheduled Hours on unheld resource requests)

On milestones, the following calculation is used to work out the number of unscheduled hours:

Planned Hours - (Actual Hours on timecards + Scheduled Hours on resource requests + Scheduled Hours on assignments + Unscheduled Hours on unheld resource requests)

Unscheduled hours are displayed in the Unscheduled Hours field on revenue forecast and revenue forecast type records. The value in the Unscheduled Hours field moves into the Unfulfilled Unscheduled Hours field when unscheduled hours are not included in the forecast calculations for a given monthly time period for one of the following reasons:

  • The time period was closed for forecasting.
  • The associated project was closed.
  • The associated milestone was completed.

This enables you to track any hours that were planned but never took place in the forecasted time period.

Note:

The value in the Scheduled Hours field works in a similar way, moving into the Unfulfilled Scheduled Hours field when the time period is closed for forecasting, the associated project is closed, or the associated milestone is completed.

Calculating Accurate Mid Month Forecasts

On the active revenue forecast setup record, you can select Use Mid Month Forecast Calculations and specify a cutoff day. Revenue Forecasting then excludes the following from calculations for the current monthly time period and any previous months:

  • Past scheduled hours that are not covered by timecards.
  • Past unscheduled hours from unheld resource requests.

This means:

  • Scheduled and unscheduled work that never took place is excluded.
  • Forecast calculations exclude such scheduled work on a weekly basis instead of on a monthly basis, aligning with the typical timecard submission cadence.
  • Note:

    Forecasts are still generated monthly.

This setting brings the following benefits:

  • There is a smoother progression through the month, with no sudden change in forecasting values at month end.
  • You have a more accurate representation of the remaining planned work and the completed planned work for the current month. Forecasts run for future months are not affected.

The following rules apply:

  • If an assignment uses a daily bill rate, a day is treated as a working day if the number of hours is greater than 0. Hours to days rules are not currently respected.
  • If an assignment uses a daily bill rate and there are actual hours from timecards for that day, Revenue Forecasting includes the day in the forecast as an actual day.
  • Revenue Forecasting excludes the following hours if they fall on or before the actuals cutoff day you select:

    • Scheduled hours.
    • Unscheduled hours from unheld resource requests.
  • If the actual hours recorded for a day exceed the scheduled hours, Revenue Forecasting excludes all scheduled revenue for that day.
  • For unheld resource requests with no schedule, Revenue Forecasting excludes revenue from days before the selected actuals cutoff day. All scheduled and unscheduled hours or revenue before the cutoff day are excluded.
  • The values for any excluded hours or revenue are displayed in the fields for unfulfilled pending, scheduled, and unscheduled hours and revenue, as appropriate, on revenue forecast and revenue forecast type records.
Tip:

For even greater accuracy, you can also select Exclude Actuals After Cutoff Day if you do not want actual hours that are after the cutoff day to be included in % Complete forecast calculations.

For more information, see Configuring Mid Month Forecasting Calculations (Deliverable and % Complete).

Using Weighting

Weighting enables you to forecast based on cost rate or other attribute so that the monetary value of each hour on a project or milestone differs depending on the resource the hours are assigned to. For example, if the cost rate amount for resource A is twice the cost rate amount for resource B, an hour of resource A's time accounts for twice as much revenue as an hour of resource B's time.

Notes:

When applying weighting, only unscheduled hours from unheld resource requests are included (unscheduled hours from the remaining hours on a project or the planned hours on a milestone are not). For projects and milestones, the total hours are the sum of the following:

  • Actual hours
  • Scheduled hours
  • Unscheduled hours from unheld resource requests, where applicable

For records in different currencies, you must convert the values using the appropriate exchange rate to ensure that the relative weightings are correctly applied. For example, if resource A has a cost rate amount of 100 USD and resource B has a cost rate amount of 100 GBP and the project currency is USD, in this scenario we recommend that you create a custom formula field that converts the cost rate amount into the project currency.

You can enable this feature from the active revenue forecast setup record and can specify the fields on the Assignment and Resource Request objects that determine the relative value of the hours.

Each actual and scheduled hour a resource has on a project is multiplied by their own weighting, and then by the value per hour:
(Hours * Weighting) * Value per hour

If unscheduled hours from unheld resource requests are included in a % Complete forecast, the weighting field specified in the Unheld RR % Complete Weighting Field on the revenue forecast setup record is applied in the same way.

For more information, see Applying Weighting (% Complete).

Tip:

If you want to validate the weighted values returned in revenue forecast calculations, you can view the Actual Weighted Effort, Scheduled Weighted Effort, and Unscheduled Weighted Effort fields on the revenue forecast and revenue forecast type records for the relevant monthly time period. If the fields are not visible, ask an administrator to add them to the page layout.