Add Duo Core upgrade card
What does this MR do and why?
The changes introduce a new upgrade card for Duo Core users to purchase Pro seats or contact sales for Enterprise, while reorganizing the display of feature availability based on the user's tier. The interface now displays different components depending on the tier: Duo Core users see an upgrade path, while Pro and Enterprise users view seat utilization information.
This merge request is based on Adapt Duo configuration info card for Duo Core (!188625 - merged) and should only be deployed after the base merge request has been merged into the main branch. This merge request adds only the lower left card to the Duo pages and not the lower right card.
References
Resolves https://gitlab.com/gitlab-org/gitlab/-/issues/537170
Screenshots or screen recordings
| Before | After | |
|---|---|---|
| Self-Managed | ![]() |
![]() |
| GitLab.com | ![]() |
![]() |
On the current main branch, a Duo Self-Hosted model card has been added. This card is only displayed if you have made an additional Duo Enterprise add-on purchase. This is something we want to avoid locally. I opened a additional merge request for that here Extend Duo Self-Hosted models user interface co... (!189292 - merged)
How to set up and validate locally
Requirements
- Locale GitLab instance
- Applied Ultimate Self-Managed license
- Ultimate subscription for a group and remember the group ID (GROUP-ID)
- Ensure you have activated the feature flag
allow_duo_base_access
Self-Managed
-
Ensure you have a Duo Core add-on locally, and remember the ID (DUO-CORE-ID) for creating add-on purchases.
- Check if you receive an add-on with:
GitlabSubscriptions::AddOn.duo_core
- If you don't have an add-on yet, then you can create one:
GitlabSubscriptions::AddOn.create!(name: "duo_core", description: "Add-on for Gitlab Duo Core.")
- Check if you receive an add-on with:
-
Create a Self-Managed add-on purchase.
GitlabSubscriptions::AddOnPurchase.create!(subscription_add_on_id: <DUO-CORE-ID>, namespace_id: nil, quantity: 100, expires_on: 1.year.from_now, started_at: 1.year.ago, organization_id: 1, purchase_xid: "A-S2") -
Validate the screenshots above for Self-Managed with Duo Core.
GitLab.com
-
Create a GitLab.com add-on purchase for your group.
GitlabSubscriptions::AddOnPurchase.create!(subscription_add_on_id: <DUO-CORE-ID>, namespace_id: <GROUP-ID>, quantity: 100, expires_on: 1.year.from_now, started_at: 1.year.ago, organization_id: 1, purchase_xid: "A-S2") -
Validate the screenshots above for GitLab.com with Duo Core.
acceptance checklist
Evaluate this MR against the MR acceptance checklist. It helps you analyze changes to reduce risks in quality, performance, reliability, security, and maintainability.



