Implementation of BillingAccountContact

Related to #6012 (closed)

This issue is part of the creation and implementation of the BillingAccountContact model to cache the "Bill to" and "Sold to" Zuora contacts:

  1. Rename current BillingAccountContact helper class (closed)
  2. Creation of the BillingAccountContact model (closed)
  3. Implementation of BillingAccountContact 👈 You are here
  4. Mechanism to keep BillingAccountContact data in sync with Zuora
  5. Data backfill for existing BillingAccount objects

Proposal

This issue tracks work done towards the implementation of the new BillingAccountContact model. As we won't want to stop calling the Zuora::Contact API right away, this implementation should be done behind a new feature flag.

  • Proposed feature flag: billing_account_contact_cache: https://gitlab.com/gitlab-org/customers-gitlab-com/-/feature_flags/207/edit

Work here includes the following items (not exclusively):

  • Implementation of BillingAccountContact in BillingAccount#contact.
  • The removal of the use of zuora_sold_to_contact in BillingAccount and elsewhere.
  • "Bill to" and "Sold to" objects in Rails Admin will also have to be retrieved locally.
  • Implement the use of BillingAccountContact details as a replacement for contact details present in Customer.

Once we have this functionality, we may want to revisit the docs for adding/changing subscription contacts and changing CDot account owner information.

Result

With the new feature flag turned on, we should be able to update Bill to and Sold to contacts for a given account on Zuora and see these changes reflected locally.

Edited May 05, 2023 by Tyler Amos
Assignee Loading
Time tracking Loading