Milestone Billing and Revenue Recognition
Define milestones once and track them across the entire lifecycle, from contract definition, to work planning, and ultimately to billing, revenue recognition, or both.
What's a milestone
- May represent a contractual obligation with a client
- May be used in project plans for scheduling purposes
- May have associated deliverables
- May be used in project plans for initiating invoicing and revenue recognition
- Can't incur costs directly
- Has a status which easily tracks the completion progress
- May require a review and approval before completion
Although any financial task can be marked as a milestone, only milestones at the lowest level in the project plan with zero duration are recognized as milestones for milestone-based billing and revenue recognition. Moreover, for milestone billing and revenue recognition, only milestones that are billable are considered.
Points to remember
- You can't define a milestone on an Intercompany contract.
- Milestone amounts can only be entered in contract currency.
- Event Types with the Allow Item option enabled on them can't be used for milestones.
Let's try to understand each step involved in the milestone billing and revenue recognition process in detail through an example.
Example of Milestone Billing
Let's look at this example where a company has entered into an agreement with a customer to deliver a software implementation project. In this agreement, the customer is invoiced a fixed fee upon completion of each phase of the project. The phases of the project are Analysis, Design, Build, Test, and Rollout. These phases are represented in the project plan as top-level tasks. Milestones are used to track the completion of each phase and for billing. Revenue, however, is recognized using the percent spent method for this engagement.
In this example, the total value of the contract is $1,000,000. Based on the negotiations with the customer, billing happens upon completion of each milestone, and the amount to bill for each milestone is predetermined.
Define Milestones
In this step, the contract administrator creates a contract and contract line, associates one or more projects to the contract line, and then enters the milestone details for the associated projects in the Milestones tab on the contract line. Milestones defined on a contract line are always in the context of a project that's associated with the contract line in an active status as defined in the Associated Projects tab. In this example, the contract administrator has associated the Fox Stores HCM Implementation project to the contract line. The association is at the project level. Optionally, if milestones already exist in the associated project, they can be added to the contract line using the Add from Project Plan option.
- It's not already associated with a contract line.
- It has a zero duration.
- It's a billable milestone.
- It's status is not Complete.
The Allow milestone date changes in the project plan checkbox in the Milestones tab is used to control whether a project manager can update the planned finish date to a later date for a milestone once it is created in the project plan. For example, if the customer agreement specifies that a milestone must be completed by a given date to be invoiced in full, then this checkbox can be disabled. The project manager can complete the milestone only on or before the specified planned finish date. If a milestone completion can't be met by the planned finish date, then a new planned finish date and perhaps a change in the bill amount can be entered through a contract amendment.
By default, the checkbox is enabled, but the option can be disabled while creating milestones on a draft contract. It's important to note that this option applies to all of the milestones defined for a contract line. Once the contract is approved, this option can only be changed through a contract amendment.
In this example, the milestone completion dates are not contractual, so the Allow milestone date changes in the project plan checkbox is enabled. If the project manager revises the planned finish date for a milestone after it's created in the project plan, this new date is reflected in the Milestones tab.
The contract administrator defines the following milestones in this example.
Milestone Name | Amount (USD) | Project Name | Parent Task Name | Planned Finish Date | Event Type | Event Description | Status | Eligible for Invoicing | Recognize Revenue |
---|---|---|---|---|---|---|---|---|---|
Analysis Completion | 100,000 |
Fox Stores HCM Implementation |
Analysis | 1/31/24 | Milestone Invoice Fee | Analysis Completion Milsetone Fee | Not Started | Yes | No |
Design Completion | 100,000 |
Fox Stores HCM Implementation |
Design | 5/2/24 | Milestone Invoice Fee | Design Completion Milsetone Fee | Not Started | Yes | No |
Build Completion | 250,000 |
Fox Stores HCM Implementation |
Build | 7/3/24 | Milestone Invoice Fee | Build Completion Milsetone Fee | Not Started | Yes | No |
Test Completion | 250,000 |
Fox Stores HCM Implementation |
Test | 8/30/24 | Milestone Invoice Fee | Test Completion Milsetone Fee | Not Started | Yes | No |
Go Live | 300,000 |
Fox Stores HCM Implementation |
Rollout | 11/29/24 | Milestone Invoice Fee | Go Live Milsetone Fee | Not Started | Yes | No |
Based on the example let's understand the following fields in detail:
Field | Type | Description |
---|---|---|
Milestone Name | Mandatory | For a milestone defined manually on a contract line, this value
is used when creating the milestone in the project plan. For
existing project plan milestones added to the contract line, this
value is populated automatically using the project plan milestone
name. A project manager can change the milestone name at any time once it's created in the project plan. Any changes made by the project manager are reflected when viewing the milestones on the contract line. |
Amount | Mandatory | The milestone amount in contract currency to be used for billing, revenue recognition, or both. Note that there's no validation for the sum of milestone amounts defined on a contract line with the contract line amount or project funded amount. |
Project Name | Mandatory | The available projects for creating a milestone on a contract line are limited to those projects which have been associated to the contract line with an active status. |
Parent Task Name | Conditionally mandatory | If a project is associated to a contract line at a task level,
then this field is mandatory. A milestone can be created under any
summary task on or below the task specified in the project
association. If a project is associated to a contract line at the project level, then this field is optional. Note that the same business rules apply when creating a milestone under a parent task as for creating subtasks. That is, if you define a milestone under an existing lowest level task in the project plan then that task becomes a summary task and can no longer incur costs. A project manager can change the parent task of a milestone in the project plan after initial creation, provided the changed parent is still within the hierarchy determined by the level of project association to the contract line. Any change performed by a project manager is reflected in the Milestones tab on the contract line. |
Planned Finish Date | Mandatory | While manually creating a milestone, the planned finish date
defaults to the later of the milestone's parent start date, which
can be either the project or a summary task within the project, or
the contract line start date. The planned finish date must be within the start and end dates of the milestone's parent, which can be either the project or a summary task within the project. The planned finish date must also be within the effective dates of the contract line. If the milestone is defined for a sponsored project, then the preaward and close dates are also considered; that is, the milestone's planned finish date must be on or after the earlier of the preaward or contract line start date and on or before the later of the close or contract line end date. When adding an existing project plan milestone to a contract line, this field is populated automatically with the planned finish date of the project plan milestone. If the Allow milestone date changes in the project plan checkbox is enabled, then the contract administrator can't update the planned finish date. |
Event Type | Mandatory | The event type chosen for a milestone is used for the initial
creation of the corresponding billing event, and it determines
whether the milestone billing event is used for billing, revenue
recognition, or both. After the milestone billing event is created upon contract approval, a project billing specialist can change the event type on the billing event. Any change to the event type on the billing event is reflected in the Milestones tab. |
Eligible for Invoicing | Display only | Displays the invoice eligibility flag for the event type chosen for the milestone. |
Recognize Revenue | Display only | Displays the revenue recognition eligibility flag for the event type chosen for the milestone. |
Event Description | Mandatory | This field is populated initially with the Milestone Name and can be updated. The value entered is used upon the initial creation of the billing event for the milestone. A project billing specialist can update the event description on the billing event. Any change on the billing event Event Description value is reflected in the Milestones tab. |
Status | Display only | This field displays the status of the billable milestone in the
project plan. For milestones defined manually on the contract line,
the status is initially Not Started. For
billable milestones added from the project plan to the contract
line, the status of the project plan milestone is displayed. Any change to the status of a project plan milestone, for example changing from Not Started to In Progress, is reflected in the Milestones tab. |
Approve Contract
Task Number | Task Name | Milestone | Status | Planned Start Date | Planned Finish Date |
---|---|---|---|---|---|
FOXIMPL101 | Fox Stores HCM Implementation | 1/1/24 | 11/29/24 | ||
1.0 | Analysis | 1/1/24 | 1/31/24 | ||
1.1 | Requirements Gathering | 1/1/24 | 1/19/24 | ||
1.2 | Conference Room Pilot | 1/22/24 | 1/30/24 | ||
1.3 | Analysis Completion | Yes | Not Started | 1/31/24 | 1/31/24 |
2.0 | Design | 2/1/24 | 5/2/24 | ||
3.0 | Build | 5/2/24 | 7/3/24 | ||
4.0 | Test | 6/3/24 | 8/30/24 | ||
5.0 | Rollout | 8/31/24 | 11/29/24 |
You can view the task details on the Manage Financial Project Plan page.
In addition to the creation of milestones in the project plan, upon contract approval the application also creates a corresponding billing event for each milestone. The amount, completion date, and associated project and task values can't be changed on the billing event.
If the milestone billing event is used for invoicing, as determined by the Event Type, the billing event is created with a Hold Invoice Status of Milestone Incomplete. This is a system hold which can't be manually removed. Upon completion of the milestone in the project plan, this system hold is automatically removed. Similarly, if the milestone billing event is used for revenue recognition, it's created with a Hold Revenue Status of Milestone Incomplete. This system hold is also automatically removed when the corresponding milestone's status is Complete.
The Completion Date of the billing event is automatically updated to the Actual Finish Date of the milestone upon milestone completion.
A project billing specialist can view the milestone-based events on the Manage Events page.
Complete Milestones and Perform Billing and Revenue Recognition
After a milestone is achieved, the project manager updates the project plan milestone's status to Complete or initiates the milestone completion approval workflow process, if it's required.
When a milestone's status is successfully updated to Complete, the Milestone Incomplete invoice and revenue hold statuses on the corresponding billing event are automatically removed, and the Completion Date of the billing event is updated to the actual finish date of the project plan milestone. The milestone-based billing event is now eligible to be invoiced, recognized for revenue, or both.