Overview
Contracts in BMS can be created with or without an expiry date. The expiry date controls when BMS considers the contract to have ended its fixed term, and determines how the contract transitions through its lifecycle states.
Contracts Without an Expiry Date
If a contract is created without an expiry date, it will transition to Ongoing status immediately after it is activated. Ongoing contracts continue to bill and operate indefinitely until manually ended.
Contracts With an Expiry Date
When an expiry date is set on a contract, BMS monitors the contract's billing periods against that date. A contract will automatically transition to Ongoing status when its latest open billing period moves past the expiry date minus the configured termination period.
The termination period is a buffer β a number of days before the expiry date at which point BMS treats the contract as having run its course. This allows the final billing period to be processed cleanly before the contract formally ends.
How Status Transitions Work
BMS handles contract expiry through a nightly automated process. The system evaluates all active contracts and transitions any that meet the expiry criteria to Ongoing status. This includes:
Contracts without an expiry date that have been activated but not yet transitioned
Contracts whose latest open billing period has passed the expiry date minus the termination period
Any contracts that were previously set to Active incorrectly and should already be Ongoing
Managing Contracts Approaching Expiry
It is good practice to review contracts ahead of their expiry date β either to renew them with a new term, adjust the expiry date, or allow them to lapse into Ongoing status as expected. This can be done from the contract record in the Billing module by updating the expiry date field before the termination period is reached.Contracts that are created without an expiry date should switch to ongoing immediately after being activated
Contracts will transition to ongoing when their latest open billing period exceeds the expiry date minus the default termination period
Any contracts that get left behind by the above 2 points (should be all of them) or where previously incorrectly set to Active will transition to ongoing when the 'generate pending billings' background task runs.
To prevent transitioning to ongoing, Contracts should have a termination scheduled before expiry date is within the default termination period from now.
β