How Billing Forecasting Calculations Work
A billing forecast calculation has two main objects:
- Billing Forecast Summary
- Billing Forecast Detail
It requires the backlog process to be run in order to generate the information that it needs. When a billing forecast calculation is run, it first initiates the backlog process automatically.
The calculated values are achieved as follows:
Field |
Type |
From |
Process |
Multiplier Factor from Forecast Setup |
---|---|---|---|---|
Billings_Timecards__c plus Billings_Milestones__c plus Billings_Misc_Adjustments__c |
Actuals | Billing Forecast Detail object | Forecast | Billings |
Billings_Expenses__c | Actuals | Billing Forecast object | Forecast | Expenses |
Scheduled_Assignments__c | Backlog | Billing Forecast object | Backlog | Scheduled Assignments |
Scheduled_Held_Resource_Requests__c | Backlog | Billing Forecast Detail object | Backlog | Held Resource Requests |
Scheduled_Unheld_Resource_Requests__c | Backlog | Billing Forecast Detail object | Backlog | Unheld Resource Requests |
Scheduled_Milestones__c | Backlog | Billing Forecast Detail object | Backlog | Scheduled Milestones |
Unscheduled_Revenue__c minus Held_Resource_Request_Revenue__c minus Unheld_Resource_Request_Revenue__c |
Backlog | Billing Forecast Detail record | Backlog | Unscheduled Backlog1 |
Opportunities | Backlog | Billing Forecast Detail object | Forecast | Opportunities2 |
Billing Forecast Summary
Contains the summary of projects and opportunities for each RPG Abbreviation of region, practice, group. level they relate to.
Billing Forecast Detail
The records in here are calculated by the following processes:
Backlog
Scheduled_Assignments__c
Where:
- End date is after the end of last week
- Falls within the range of the time period being run, or the perpetual time period (the calculation will ignore any assignments that fall outside the forecast time period if the end date is before the start date of the forecast period, or if the start date of the assignment is after the end date of the forecast period)
- It is billable
- Related project is active
- Related project is not marked as exclude from backlog
- Related project is linked to RPG or sublevel
Scheduled Hours are calculated with a start date using the latest of:
- Billing forecast calculation start date (end of last week according to common settings in PSA)
- Time period start date
- Assignment start date
Scheduled Hours are calculated with an end date using the earliest of:
- Billing forecast calculation end date
- Time period end date
- Assignment end date
Revenue is calculated based on scheduled hours or days, using the assignment bill rate to get the value for the Scheduled Assignments (Hours/Days * Bill Rate = Scheduled Assignment Revenue).
Scheduled_Held_Resource_Requests__c
Where:
- End date is after end of last week
- Falls within the range of the time period being run or perpetual time period (the calculation will ignore any assignments that fall outside the forecast time period if the end date is before the start date of the forecast period, or if the start date of the assignment is after the end date of the forecast period)
- Related project is active
- Related project is not marked as exclude from backlog
- Related project is linked to RPG or sublevel
- No related assignment
- It is a held request
Scheduled Hours are calculated with a start date using the latest of:
- Billing forecast calculation start date (end of last week according to common settings in PSA)
- Time period start date
- Resource request start date
Scheduled Hours are calculated with an end date using the earliest of:
- Calculation end date
- Time period end date
- Resource request end date
Bill rate is obtained from a defined bill rate field from the backlog calculation, suggested bill rate from resource request, requested bill rate from resource request or 0, whichever has a value evaluated in that order.
Revenue is calculated based on scheduled hours or days, using bill rate to get the value for the Scheduled Held Resource Requests (Hours/Days * Bill Rate = Scheduled Held Resource Request).
Scheduled_Unheld_Resource_Requests__c
Where:
- End date is after end of last week
- Falls within the range of the time period being run or perpetual time period (the calculation will ignore any assignments that fall outside the forecast time period if the end date is before the start date of the forecast period or if the start date of the assignment is after the end date of the forecast period)
- Related project is active
- Related project is not marked as exclude from backlog
- Related project is linked to RPG or sublevel
- No related assignment
- It is not a held resource
Scheduled Hours are calculated with a start date using the latest of:
- Billing forecast calculation start date (end of last week according to common settings in PSA)
- Time period start date
- Resource request start date
Scheduled Hours are calculated with an end date using the earliest of:
- Calculation end date
- Time period end date
- Resource request end date
Bill rate is obtained from a defined bill rate field from the backlog calculation, suggested bill rate from resource request, requested bill rate from resource request or 0, whichever has a value evaluated in that order.
Revenue is calculated based on scheduled hours or days, using bill rate to get the value for the Scheduled Unheld Resource Requests (Hours/Days * Bill Rate = Scheduled Unheld Resource Request).
Scheduled_Milestones__c
Where:
- Uses the Milestone amount (from Milestone__c)
- For a milestone which has a status of ‘Open' or ‘Planned', or will use the backlog custom setting field ‘Milestone Statuses' if set
- Target date is after the end of last week and within the range of the time period
- Include in Financials flag is set to false
- Related project is active
- Linked to the RPG or a sublevel
- Exclude from Backlog flag is set to false
Unscheduled Backlog
Backlog Detail records are created for projects for the forecast time period and also the perpetual time period. The perpetual time periods are used to generate the Unscheduled Backlog amounts.
This is equal to Unscheduled_Revenue__c minus Held_Resource_Request_Revenue__c minus Unheld_Resource_Request_Revenue__c.
Before being passed into the multipliers, the billing forecast curve is applied. For an example of how billing forecast curves work, see Applying a Billing Forecast Curve to a Project.
Unscheduled_Revenue__c
Where:
- Project Actuals are linked to the Perpetual Time Period
- Project Actuals are not deleted
- Project is active
- Project is not marked as Exclude from Backlog
- Project is linked to RPG or sublevel
The Backlog detail is populated as follows:
Detail Field |
Populated From |
---|---|
Bookings__c | Project_Actuals__r.Bookings__c |
Billings__c | Project_Actuals__r.Billings__c |
Inactive_Project_Backlog__c | Project__c.Inactive_Project_Backlog__c |
Unscheduled_Revenue__c | detail.Bookings__c minus detail.Billings__c minus detail.TimeRevenue__c minus detail.Milestone_Revenue__c minus detail.Inactive_Project_Backlog__c |
Held_Resource_Request_Revenue__c
As calculated in Scheduled_Held_Resource_Requests__c.
Unheld_Resource_Request_Revenue__c
As calculated in Scheduled_Unheld_Resource_Requests__c.
Billing Forecast Curves
Billing forecast curves are applied to the following items only:
- Opportunities
- Projects: for the unscheduled backlog calculation
For opportunities, the relevant billing forecast curve is applied before being passed into the multipliers.
For projects, the unscheduled backlog value is retrieved from the backlog detail record for the project and the perpetual time period. The relevant billing forecast curve is applied before being passed into the multipliers.
The way a billing forecast is applied is by looking at the details on the curve (either the one assigned to an individual project or opportunity, or the ones set as defaults on the Billing Forecast Setup page) to ascertain the following:
- The number of days of the curve that fit into the forecast time period (the Overlap).
- The percentage amount to spread the value over.
The calculation is the Amount multiplied by Percentage on the Billing Forecast Curve Detail multiplied by Overlap.
For examples of how billing forecast curves work on projects and opportunities, see About Billing Forecast Curves.
Project Values
For a billing forecast calculation, projects are included with the following rules:
- Include In Forecasting checkbox is selected
- Must be Active or have started and ended in the time period for the forecast
These project values are used to calculate the following factors on a forecast:
Billings_Timecards__c
Timecards total billing amount where:
- End date is within the time period for the forecast and is before the end of last week
- Related to a project we are interested in
- Billable and Include in Financials checkboxes selected
Billings_Milestones__c
Milestones amount (from Milestones__c) where:
- Actual date is within the time period for the forecast.
- Related to a project we are interested in
- Include in Financials checkbox selected
Billings_Misc_Adjustments__c
Where:
- Transaction Category is equal to ‘Pass-Through Ready-to-Bill Revenue' or ‘Ready-to-Bill Revenue' (can override this value by setting the config ‘asm-billing'/'miscellaneousAdjustmentCategories')
- Effective date is within the time period for the forecast
- Related to a project we are interested in, and have the Include in Financials checkbox selected
Billings_Expenses__c
Expenses billable amount where:
- Expense date is within the time period for the forecast
- Must also be related to a project we are interested in, and have the Include in Financials checkbox selected
Billings Budgets
This is calculated by the Billing Forecast process but isn't actually used by the calculation. For every budget, the related project's detail record is updated to add the budget's pre billed amount to Perpetual_Billings_Budgets_c and the budget's amount to Perpetual_Backlog_Budgets_c. (see Perpetual Fields).
Pre-billed amount on a budget where:
- Effective date is within the time period for the forecast
- Related to a project we are interested in, and have the Include in Financials checkbox selected
- The forecast adds the budget's pre billed amount to Billings_Budgets_c
Opportunities
Where:
- Related to RPG or sublevel
- Probability > 0
- No related projects set to Include In Forecasting
- Close date after time period start date - Max_Forecast_Period__c from Billing Forecast Curve related to the opportunity (Max_Forecast_Period__c = Lag days + Sum(ForecastDetails.Period__c))
- Close date on or before time period end date - Lag days from forecast curve related to the opportunity
- The lines included if Billing Forecast Setup Use_Is_Services_Product_On_Opp_Product__c is set to Opportunity Product and line is a services line
- The lines included if Billing Forecast Setup Use_Is_Services_Product_On_Opp_Product__c is set to Product and line has a product or the related product is a services product
The opportunity value is determined by the following:
- The options selected on the Billing Forecast Setup page
- Whether or not the opportunity has Opportunity Products with associated line items
The opportunity value can be calculated in the following ways:
- If an opportunity has Opportunity Products and Opportunity Product is selected on the Billing Forecast Setup page, then the opportunity value is the sum of all Opportunity Product line items where the Is Services Product Line checkbox is selected.
- If an opportunity has Opportunity Products and Product is selected on the Forecast Setup page, then the opportunity value is the sum of all Opportunity Product line items where the associated Product record has the Is Services Product checkbox selected.
- If an opportunity has no associated Opportunity Products and the Is Services Opportunity checkbox is selected, then the opportunity value is taken from the Amount field on the opportunity record.
This flowchart shows how the opportunity value is calculated.
The calculated billing forecast value is the opportunity value multiplied by the opportunity probability, and then the billing forecast curve applied.
When applying the billing forecast curve:
- If the calculated forecast value is taken from the sum of the Opportunity Product line items, and there is a billing forecast curve specified on the product record, then the curve specified on the Product record is used. If no billing forecast curve exists on the product record, then the Default Opportunity Curve from the Billing Forecast Setup page is used.
- If the calculated billing forecast value is taken from the Amount field on the opportunity, and there is a billing forecast curve specified on the opportunity record, then the curve specified on the opportunity record is used. If no billing forecast curve exists on the opportunity record, then the Default Opportunity Curve from the Billing Forecast Setup page is used.
If the opportunity value with the billing forecast curve applied is greater than zero, it is multiplied by the category Opportunity multipliers and stored in the appropriate category values.
Example
Opportunity value = $62,500 with 100% probability, close date of May 31 , with a forecast period of June 1 to 30 with no lag and a max forecast period = 30, therefore in the forecast it should be 29/30
62,500 * 29/30 * weighting amount:
Expected (1.00) = $60,416.67
Best Case (1.20) = $72,500
Worst Case (0.75) = $45,312.50
Opportunity value = $62,500 with 50% probability, close date of May 25, with a forecast period of June 1 to 30 with no lag and a max forecast period = 30, therefore in the forecast it should be 24/30 (6 days being outside the forecast period)
31,250 * 24/30 * weighting amount:
Expected (1.00) = $25,000
Perpetual Fields
The following fields are created on the Billing Forecast Detail record, however, they are not used in a billing forecast or billing forecast forecast calculation and are created by the Forecast process:
Field |
Description |
Further Information |
---|---|---|
Perpetual_Billings_Timecards__c | Timecards total billing amount | Where the end date is before the end date of the forecast period and the end date is before the end of last week. Must also be related to a project we are interested in, and have the Billable and Include in Financials checkboxes selected. |
Perpetual_Billings_Milestones__c | Milestones amount | For a milestone whose actual date is before the end date of the time period for the billing forecast. Must also be related to a project we are interested in, and have the Include in Financials checkbox selected. |
Perpetual_Billings_Misc_Adjustments__c | Miscellaneous adjustment amount | For a miscellaneous adjustment whose effective date is before the end date of the time period for the billing forecast. Must also be related to a project we are interested in, and have the Include in Financials checkbox selected. Transaction Category must be equal to Pass-Through Ready-to-Bill Revenue or Ready-to-Bill Revenue. You can override this value by setting the config ‘asm-billing'/'miscellaneousAdjustmentCategories'. |
Perpetual_Billings_Budgets__c | Budgets prebilled amount | For a budget whose effective date is before the end date of the time period for the billing forecast. Must also be related to a project we are interested in, and have the Include in Financials checkbox selected. |
Perpetual_Billings_Expenses__c | Expenses billable amount | For an expense whose expense date is before the end date of the time period for the billing forecast. Must also be related to a project we are interested in, and have the Include in Financials checkbox selected. |