Handle startup program subscription renewal
Problem
Currently, for a start up subscription that's expiring soon, when clicked on Renew subscription
CTA on the renewal banner, the user gets redirected to the subscriptions page on Customers Dot with a message saying No subscription was found for the given namespace
since start up programs are not eligible for (free) renewal like EDU or OSS Ultimate plans.
Proposal
As an MVC, we could just change the banner copy and direct the user to reach out to sales if they want to purchase a new subscription (I know that
@tgolubeva
said that the number of startup subscriptions is fairly low anyway). We could track how many start up subscriptions actually turn into paid subscriptions to determine if we want to invest in the work to make startup subscriptions renewable into paid subscriptions.
Banner copy:
Your subscription will expire in [XX] days.
Your GitLab Ultimate subscription for [group name] will expire on [date]. After it expires, you can't use merge approvals, epics, or many security features.
The GitLab for Startups offer is limited to 12 months, so you will need to purchase a new subscription.
CTAs:
Contact Sales
&That's OK, I don't want to renew
Original discussion:
Implementation plan
We're going to convert the existing HAML banner to be a Vue component so we don't block the page load while we get the information needed to show this banner for various use cases. This would also resolve GitLab downtime when we get unexpected errors from Customers Portal and will be easier to extend this banner for other use cases in the future.
For this issue, we would need a new field called plan_type
from Customers Portal in SubscriptionType
that indicates whether the plan is a startup one or not which we can use to show the proposed banner content. We want to get this info in the same API call we make to get enable_renew_from
so to avoid making multiple API calls.
This is also dependent on Show renewal alert 3 months prior to expiration... (#363440) which will convert the HAML banner to Vue component. Marking this as blocked until Show renewal alert 3 months prior to expiration... (#363440) is implemented.
More details on implementation proposal in this thread.