Admin Tooling: Extending trial over paid plan does not extend Duo Enterprise Addon

Bug

Summary

When using the admin tooling to modify an existing SaaS trial, in the event that the plan is set to Ultimate Saas Trial Paid Customer W Duo Enterprise Trial Plan (ultimate-saas-trial-paid-customer-w-duo-enterprise-trial-plan-id), the Duo addon product does not appear to be extended in any way, leaving the original expiration date in place for Duo. The trial itself is extended.

Some slack discussion: https://gitlab.slack.com/archives/C037WQ2BUGK/p1749143070525569
mainly confirming that this is bug behavior. @aish.sub mentions that perhaps this is necessary:

I think we also need to invoke the Gitlab::AddOnPurchases::BulkSyncService

Steps to reproduce

  1. Start a standard Ultimate trial w/ Duo enterprise on a free group
  2. Modify the trial thru admin tooling /admin/saas_trial to modify the end date and set the plan type to ultimate-saas-trial-paid-customer-w-duo-enterprise-trial-plan-id
  3. The trial end date and plan are both updated on Gitlab, but the original Duo end date remains

Relevant logs and/or screenshots

Using this trial in both real world tests: https://customers.gitlab.com/admin/saas_trial/975819
For this trial order: https://customers.gitlab.com/admin/order/975819

When setting the trial to ultimate-saas-trial-paid-customer-w-duo-enterprise-trial-plan-id

Example events: https://cloudlogging.app.goo.gl/gz1x5cSfRhM12CbS9

We can see observe that during class: "Provisions::Gitlab::Namespaces::SyncRequestService", the only params supplied for duo enterprise and pro are start/end dates, inexplicably both set to 2025-06-04 (today is 2025-06-05)

duo_enterprise: [
0: {
expires_on: "2025-06-04"
started_on: "2025-06-04"
}
]
duo_pro: [
0: {
expires_on: "2025-06-04"
started_on: "2025-06-04"
}
]
}

When setting the trial to ultimate-saas-trial-w-duo-enterprise-trial-plan-id,

Example events: https://cloudlogging.app.goo.gl/jRkHf3P2nXX45shp7

Enterprise params include order, updated end date, quantity, etc

duo_enterprise: [
0: {
expires_on: "2025-07-16"
purchase_xid: "trial-object-975819-order"
quantity: 100
started_on: "2025-02-13"
trial: true
}
]
duo_pro: [
0: {
expires_on: "2025-06-04"
started_on: "2025-06-04"
}
]
}

Workarounds

  • Remain on standard trial, not "trial over paid plan"
  • $0 sales quoted "trial" subscription

Reported examples

  1. https://gitlab.zendesk.com/agent/tickets/632323
  2. https://gitlab.zendesk.com/agent/tickets/648899
  3. https://gitlab.zendesk.com/agent/tickets/644101
  4. https://gitlab.zendesk.com/agent/tickets/672705

Support Priority Score: (1, -, -, -, -, -, 3, -, 2, 2, 2) => 10

Edited by Keven Hughes