Zuora Ramps: Automated Provisioning for Ramp Deals
[[_TOC_]]
## Summary
This epic tracks the provisioning work associated with the launch of the Zuora Ramps project: https://gitlab.com/groups/gitlab-org/-/epics/7099+
The ~"group::provision" work scope in this project involves automating the provisioning for each year of a MY Ramp deal for both SaaS and Self-Managed subscriptions to work with Zuora Ramps. Once completed, Ramp deals will no longer require multiple subscriptions or manual intervention for provisioning.
## Status of Work Items
_Updated as of April 3, 2023_
- [x] **Self-Managed:** [Update current license logic to generate ramp subscription licenses using subscription term end date as license end date](https://gitlab.com/gitlab-org/customers-gitlab-com/-/merge_requests/4879) - _completed, pending implementation of feature flag `zuora_ramp_deals`. (DRI: `@tyleramos`)_
- [x] **Self-Managed:** [Introduce ramp aware Subscription.build method for CustomersDot distinction](https://gitlab.com/gitlab-org/customers-gitlab-com/-/merge_requests/4884) - _completed, pending implementation of feature flag `zuora_ramp_deals`. (DRI: `@tyleramos`)_
- [x] [Build custom Zuora workflow to send callouts to CDot for quantity changes at the start of successive ramp years](https://gitlab.com/gitlab-com/business-technology/enterprise-apps/financeops/finance-systems/-/issues/698) - _workflow completed by EntApps. (DRI: `@jesssalcido`)_
- [x] [Test Zuora workflow to determine changes or additional work needed for successful provisioning of both SaaS & SM](https://gitlab.com/gitlab-org/customers-gitlab-com/-/issues/4295) - _initial dev testing completed; Staging/production verification will need to be delayed to post-launch given short UAT window. See https://gitlab.com/groups/gitlab-org/-/epics/8793+ for latest. (DRI: `@jesssalcido` & `@cwiesner`)_
- [x] Implement changes identified as needed as a result of workflow testing _(DRI: `@cwiesner`)_
- [x] **Self-Managed:** [Suppress notification to customers when callout is received for quantity change only](https://gitlab.com/gitlab-org/customers-gitlab-com/-/issues/5242) - _completed_
- [x] **Self-Managed:** [Use term end date for all ramp enabled subscriptions](https://gitlab.com/gitlab-org/customers-gitlab-com/-/issues/5247) - _completed_
- [x] **Self-Managed:** [Downloading license for ramp subscriptions generates license with incorrect quantity](https://gitlab.com/gitlab-org/customers-gitlab-com/-/issues/4455) - _completed_
- [x] [UAT of all provisioning scenarios](https://gitlab.com/gitlab-org/customers-gitlab-com/-/issues/5468). This will be led by EntApps but will require participation from ~"group::provision". - _All test scenarios completed in Dev & UAT. (DRI: `@cwiesner`)_
- [x] [Provision Testing in Dev](https://gitlab.com/gitlab-org/customers-gitlab-com/-/issues/5468) - _complete with all test scenarios passing, detailed update [here](https://gitlab.com/gitlab-org/customers-gitlab-com/-/issues/5468#note_1290476927)._
- [x] [Provision Testing in Staging](https://gitlab.com/gitlab-org/customers-gitlab-com/-/issues/5742) - _Fulfillment UAT of all test scenarios completed on 2023-03-29_
- [x] [UAT Follow-up work as a result of testing](https://gitlab.com/groups/gitlab-org/-/epics/9934) - _2 bugs identified and resolved_
- [x] https://gitlab.com/gitlab-org/customers-gitlab-com/-/issues/5800+ - _completed 2023-02-23_
- [x] https://gitlab.com/gitlab-org/customers-gitlab-com/-/issues/5801+ - _completed 2023-03-01_
- [x] https://gitlab.com/gitlab-org/customers-gitlab-com/-/issues/6102+ - _completed 2023-04-03_
- [x] [[Enablement] Create content documenting ramps provisioning & display](https://gitlab.com/gitlab-org/fulfillment-meta/-/issues/1028) - _provisioning & customer portal experience documented in [this deck](https://docs.google.com/presentation/d/1WpO12CUEw5xWosWkkBg6r_LWaj9mGL1ZG9GeuxfAFac/edit?usp=sharing) (DRI: `@courtmeddaugh`)_
- [x] [Enable `zuora_ramp_deals` feature flag](https://gitlab.com/gitlab-org/customers-gitlab-com/-/issues/4387) - _Feature flag enabled on 2023-04-03 alongside production launch. (DRI: `@cwiesner`)_
### Future Work Items
_The following items are iterations on Ramp provisioning behavior, not expected by MVP launch._
1. [Provisioning email updates for Ramp subscriptions](https://gitlab.com/groups/gitlab-org/-/epics/9575)
## Provisioning Proposals
This section outlines how the customer experience given the current proposal on how we will automate provisioning for SaaS and Self-Managed ramp subscriptions. See [this overview deck](https://docs.google.com/presentation/d/1WpO12CUEw5xWosWkkBg6r_LWaj9mGL1ZG9GeuxfAFac/edit) for details on the customer experience.
### SaaS Provisioning Experience
**https://gitlab.com/gitlab-org/customers-gitlab-com/-/issues/3970+**
1. At the start of the ramp subscription, the customer will be issued a license for the first ramp interval's quantity of seats, **for the entire duration of the subscription term**.
1. For each successive ramp interval, a [new Zuora workflow](https://gitlab.com/gitlab-com/business-technology/enterprise-apps/financeops/finance-systems/-/issues/698) will send a callout to CustomersDot with the change in seat quantity on the day the ramp interval begins. The seat quantity update will sync to the customer's instance automatically (no customer action needed).
### Self-Managed Provisioning Experience
**https://gitlab.com/gitlab-org/customers-gitlab-com/-/issues/3969+**
1. At the start of the ramp subscription, the customer will be issued a license for the first ramp interval's quantity of seats, **for the entire duration of the subscription term**.
1. For each successive ramp interval, a [new Zuora workflow](https://gitlab.com/gitlab-com/business-technology/enterprise-apps/financeops/finance-systems/-/issues/698) will send a callout to CustomersDot with the change in seat quantity on the day the ramp interval begins.
1. For cloud license enabled subscriptions, the quantity change will sync to the customer's instance automatically (no customer action needed).
1. For non-cloud license enabled (offline or legacy) subscriptions, the customer will receive an email with a new license key to upload to their instance in order to gain access to the additional seats.
epic