Project Budget Expiration and Cancellation
Highlights
Project Budget Expiration and Cancellation — Project Budgets can now be marked as Expired or Cancelled to reflect their lifecycle more accurately. Expired budgets naturally end when their usage window passes, while cancelled budgets represent work stopped early. Both statuses are excluded from rollups, ensuring cleaner reporting and governance.
Learn more about Project Budgets.
What Changed
- Introduced structured support for Project Budget expiration and cancellation.
- New fields added to Project Budget: Expiration Date, Expired (checkbox), Expired Hours, Expired Days.
- Project Budget Status picklist now includes "Expired" and "Cancelled" values.
- When a Project Budget is expired or cancelled, Remaining Hours/Days are set to zero and moved to Expired Hours/Days.
- Cancelled Project Budgets are excluded from Phase-level Budget in Fees/Hours/Days rollups.
- A nightly scheduled job automatically expires Project Budgets when their Expiration Date has passed.
- Project Budget page layout updated with new "Budget Expiration" section and reorganised "Budget Details" section.
- Timesheet Entries Related List added to Project Budget page layout.
How It Works
- Setting an Expiration Date: Assign an Expiration Date to a Project Budget. When the date passes, the nightly job will automatically set Status to "Expired" and move Remaining Hours/Days to Expired Hours/Days.
- Manual Expiration: Set the Expired checkbox to TRUE or change Status to "Expired". The system will set Expiration Date to today (if not already set) and calculate Expired Hours/Days.
- Cancellation: Change Status to "Cancelled". The system marks the budget as expired and excludes it from Phase-level rollups.
- Reopening: To reopen an expired budget, set Expired to FALSE and adjust the Expiration Date to a future date. The nightly job will re-expire it when that date passes.
Expired vs Cancelled:
- Expired: The budget ended because its hours or days weren't used within the allowed time. This usually happens automatically based on the expiration date.
- Cancelled: The budget was stopped early or completely removed — for example, if the work was no longer needed or the project changed.
Enablement Guidance
Precursive HQ Tile: "Mark Expired Budgets" — This nightly job identifies and tags Project Budgets as Expired once they reach their Expiration Date.
Post-Install Layout Changes:
- Project Budget page layout is updated automatically with new fields and sections.
- Review the updated Project Budget layout and adjust if needed for your organisation.
Configuration Steps:
- Review existing Project Budgets that may need Expiration Dates assigned.
- Update Project and Phase Related Lists to include new Budget fields (Start Date, End Date, Status, Remaining Hours).
- Consider creating reports to track expired and cancelled budgets.
Note: When a Project Budget is cancelled, you must manually clear the Expired Hours/Days fields if you want those values excluded from Phase-level Remaining Time calculations. This can be done in an automated way, with User Flow.
Enhanced Project Automation by Categories
Highlights
Enhanced Project Automation by Categories — Projects and Phases can now be automatically created and grouped from Opportunity Products at two levels. Projects can be split by Product or Project Category, and Phases can be grouped by Product or Phase Category. This enables, for example, a single Opportunity containing both Implementation and Managed Services to generate two separate Projects, each with its own Phase structure for delivery tracking and reporting.
Learn more about Project Budgets.
What Changed
- Projects can now be grouped by Product or Project Category.
- Phases can now be grouped by Product or Phase Category.
- Project naming follows pattern: "{Account Name} - {Project Category}" or "{Account Name} - {Product/Budget Name}".
- Task Templates are imported based on Product configuration.
- Backward compatibility maintained — existing invocable method continues to work.
How It Works
- Configure Products: On each Product that should create Project Budgets:
- Set "Enable as Project Budget" = TRUE
- Choose "Group Project By" (Product or Project Category)
- Choose "Group Phases By" (Product or Phase Category)
- Assign Project Category and Phase Category as needed
- Optionally set Budget Name for shorter display names
- Trigger Automation: Use Flow or Process Builder to call the new invocable action when an Opportunity closes (or your preferred trigger).
- Automatic Structure Creation: The system will:
- Create Projects grouped by your configuration
- Create Phases within each Project
- Create Project Budgets linked to the appropriate Phase
- Import Task Templates where configured
- Link everything to the Account and Opportunity
Example: An Opportunity with Implementation, Managed Services, and Consulting products (each with different Project Categories) will automatically create separate Projects for each service line, with Phases and Budgets organised according to your configuration.
Enablement Guidance
New Permission Set: "Precursive Project Budget Product Admin" — Assign this to Users who need to configure Product2 fields for Project Budget automation.
Post-Install Migration: Values from Project Category field are automatically migrated to Phase Category field for existing configured Products.
Configuration Steps:
- Assign the "Precursive Project Budget Product Admin" permission set to relevant administrators.
- Review and update Product2 records with the new grouping fields.
- Update your Flow/Process Builder to use the new invocable action (if you want enhanced grouping).
- Test with a sample Opportunity before rolling out to production.
Validation Rules on Product:
- When "Enable as Project Budget" is TRUE, at least "Group Phases By" and "Phase Category" must be provided.
- "Group Project By" requires "Project Category" and vice versa.
- "Group Phase By" requires "Phase Category" and vice versa.
Simplified Phase Lifecycle Setup
Highlights
Simplified Phase Lifecycle Setup — Stage Process now uses Salesforce-native configuration. Phases follow defined Record Types and Paths, making it easier to set up and manage delivery lifecycles while providing teams with clearer guidance and more consistent reporting. Learn more on How to build a Phase Stage Path?
What Changed
- Phase Stages are now managed using Salesforce Record Types and Paths.
- Phase Stage automatically progresses when Tasks with Stages become Active or Completed.
- Path Component added to Phase Record Page for visual stage progression.
- Phase Stage History now uses a text field for Status (replacing the deprecated picklist).
- New field on Project Category: Phase Record Type — specifies which Record Type to assign to Phases.
- Stage Process and Stage Process Items objects are deprecated.
How It Works
- Create Record Types: In Salesforce Setup, create Record Types on the Phase object for each delivery process (e.g., Implementation, Onboarding, Managed Services).
- Configure Picklist Values: For each Record Type, select which Stage picklist values are available and set the default.
- Create Paths: In Path Settings, create a Path for each Record Type to define the visual progression and guidance for each stage.
- Link to Project Category: On each Project Category, set the Phase Record Type field to the developer name of the appropriate Record Type.
- Automatic Assignment: When a Phase is created with a Project Category, it automatically receives the configured Record Type.
- Stage Progression: When a Task with a Stage becomes Active or Completed, the Phase Stage automatically advances if the Task Stage is further along in the path.
Enablement Guidance
Enablement guidance is described in this article: How to build a Phase Stage Path?
Plan to Complete Enhanced
Highlights
The definition of Plan to Complete fields has been updated to combine actuals from Timesheets with future planned work. This provides a forward-looking view of remaining budget and effort, giving Project Managers clearer forecasting and earlier signals for corrective action. Understanding Plan to Complete article is a guide that explains how the metric is calculated and how to configure it in your Project and Phase views.
What Changed
- Plan to Complete fields now calculate: Actuals from Timesheets in specified statuses + Planned from Timesheets in other statuses (excluding Rejected).
- The calculation is controlled by the setting "Actual Time Statuses To Calculate Budget" in Precursive Settings.
- Fields updated on Project Budget, Project, Phase, and Participant objects.
- Provides a true "Estimated Actual Complete" view combining what has been done with what is left.
How It Works
Previous Behaviour: Plan to Complete summed planned work happening after the current date, which caused mid-week gaps when Timesheets weren't yet submitted.
New Behaviour: Plan to Complete = Actuals (based on “Actual Time Statuses To Calculate Budget” setting, default: Submitted/Approved Timesheets) + Planned (all other Statuses, except Rejected)
Example:
- Participant has Bookings for 4 weeks (160 hours total)
- Week 1: 10 hours logged and Timesheet Submitted
- Weeks 2-4: 152 hours still planned
- Plan to Complete = 10h (Actual) + 152h (Planned) = 162 hours
This gives Project Managers a forward-looking view that accounts for both completed work and remaining plan.
Configuration: The "Actual Time Statuses To Calculate Budget" setting (Precursive HQ > Precursive Settings > Global Settings) determines which Timesheet statuses count as "Actuals" vs "Planned".
Enablement Guidance
No configuration required — the enhanced calculation is automatically active after upgrade.
For Archived Projects: To apply updated Plan to Complete values on Archived Projects:
- Temporarily disable validation rules that prevent updates to archived Projects.
- Run the "Calculate Budget" batch from Precursive HQ.
- Re-enable validation rules.
- Contact Support if you need assistance with this process.
Documentation: Review the Understanding Plan to Complete article for detailed explanation of the calculation and configuration options.
Project Budget Planned, Actual and Remaining Hours
Highlights
Project Budgets in Hours/Days now include rollups of Planned, Actuals, and Remaining values. Rollups also extend to Fees/Hours/Days at the Phase level, providing better visibility into financials across scope and managed services budgets.
What Changed
- New rollup fields on Project Budget: Planned Hours, Planned Days, Planned Hours - Billable, Planned Days - Billable, Actual Hours, Actual Days, Actual Hours - Billable, Actual Days - Billable, Remaining Hours, Remaining Days.
- Phase-level Budget in Fees/Hours/Days now rolls up from Project Budgets.
- Project Budget rollups are calculated from linked Timesheet Entries.
- Rollups refresh every 15 minutes via budget scheduler or on manual refresh.
How It Works
- Timesheet Entry Linking: Timesheet Entries are linked to Project Budgets (either through Bookings or Tasks).
- Automatic Rollups: The budget scheduler calculates Planned, Actual, and Remaining values every 15 minutes.
- Manual Refresh: Click the refresh button on the Budget Component to recalculate immediately.
- Phase Rollups: Budget in Fees/Hours/Days on Phase is calculated from all linked Project Budgets.
Enablement Guidance
Post-Install Layout Changes: Make sure that Project Budget page layout is updated to meet your expectations with new "Budget Details" sections displaying all rollup fields.
No additional configuration required — rollup calculations are automatically active after upgrade.
Data Model
Precursive 2.13 - Data Model changes
Review all Release Notes.