Research: Licenses should not "work" before subscription start date
Issue Summary
When a self-managed customer renews their subscription, the license which is generated should not provide access to the entitlements prior to the start date of the license/subscription.
The solution created must be low-barrier for the customer.
This is an engineering research issue to:
- investigate the proposed solution
- identify if there is a less complex implementation
- break the work into smaller chunks and create corresponding issues
Summary of Change Work
In GitLab self-managed instance, when a license is loaded:
- Check the start date of the license, if the start date is in the future, load the license (making it viewable in "License History" (see Tim's design here), but do not activate the entitlements
- At midnight UTC of the license start date, the GitLab instance should activate the entitlements
- During the license check routine on the activation of the entitlements, we need to modify the code to allow for true-up inconsistencies
Example
- Existing subscription term: 2019/04/01 - 2020/03/31
- Existing license user count:
100 - On 2020/03/01 the user renews with term 2020/04/01 - 2021/03/31
- At the time of renewal, the instance user counts are:
- Active Users:
120 - Max Users:
130
- Active Users:
- The renewal license is generated as:
- Users count:
120 - Previous users count:
100 - True-up count:
30
- Users count:
- On 2020/03/05 the user loads the renewal license.
- The system checks the date of the license. Since the start date is in the future, the license is accepted but the entitlements (user count / tier) are not provisioned.
- The license is displayed the License History section of the License page.
- On 2020/04/01, the instance user counts are:
- Active Users:
125 - Max Users:
135
- Active Users:
- On 2020/04/01, the start date of the license,
- During the license check routine, the system disregards the Active User and Max User counts and loads the license without error.
- The overage in users is carried over into the new term and will be handled at the quarterly reconciliation process.