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.

A contract administrator creates milestones and corresponding bill amounts in milestone based fixed price contracts. After the contract is approved, the milestones defined on the contract automatically appear in the project plan. A project manager then creates detailed plans, tracks deliverables, and monitors progress for the milestones. When the milestone is achieved, the project manager submits it for stakeholder approval. Upon approval, the application automatically enables the associated billing event for invoicing or revenue recognition, or both.
Note: While the primary use case for milestones is for fixed price contracts, milestones can be created for any billing method. For example, a time and material based contract could have a performance bonus that can be billed if the project is delivered ahead of schedule. This can be achieved using a milestone.

What's a milestone

A milestone is a significant, single point-in-time event which
  • 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.

You can add an existing project plan milestone to a contract line only if:
  • 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.

Contract Line Milestone Details

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:

Fields and Descriptions

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

After entering the milestone details, the contract administrator submits the contract for approval. Upon contract approval, the application automatically creates the milestones in the associated project plan, if they didn't already exist.
Note: When canceling a draft contract, first delete any milestones that you’ve added from existing project plans if you want those milestones to be associated to a contract line on another contract.

Milestone Details

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.

Note: If a milestone defined on the contract line can't be created in the project plan upon contract approval, an exceptions icon displays for the milestone in the contract line Milestones tab. After resolving the cause of the exception, you can initiate the creation of the project plan milestone again by using the Maintain Project Plan Milestones and Events action in the contract line Milestones tab. Initiating this action doesn't require an amendment to the contract.

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.