Sales Scenario and Data Flow Overview - mvanderlans/mvanderlans GitHub Wiki
High-Level Sales Process Overview
Sales & Billing Systems Overview
- github.com (.Com)
- Self-Serve Transactions will originate on .Com and flow to downstream systems
- Self-Serve customers typically pay via credit card.
- This is the same web/cloud based GitHub platform that developers use for their work on a daily basis
- Nimbus
- This is the intermediary app between GitHub.com and SFDC.
- Events are published via .Com for Nimbus to consume and publish to Salesforce
- Nimbus consumes transactions in Salesforce and publish to .Com
- Salesforce
- Sales-Serve Order/Renewal/Amendments will originate in SFDC and be worked manually by Sales Rep
- Customer Quotes being processed by Sales within CPQ see customers typically requesting discounts which can't be done via Self-Serve
- For enterprise customers, it is expected that data including Licenses, Seats, Expiration Dates, etc. is a 1:1:1 match between Salesforce, Zuora, and StaffTools
- Zuora
- All billing for GitHub is done through Zuora. It will receive Contract and Account information via SFDC.
- Connection exists from CPQ Contract & Subscription to Zuora Subscription & Rate Charge
- The only billing not processed through Zuora is for MSFT customers. This is sent to and billed out of Azure. If any Account has an Azure Billing Id populated, that Account is billed via Azure. Azure billing takes priority over any Zuora Id populated if both are not null.
- GitHub Customers Billed out of Azure still have their account and usage details visible in StaffTools.
- If the CRM Account Id is populated in Zuora, that is the Salesforce Account record for the customer. These are Enterprise Customers.
- If CRM Account Id is null in Zuora, this is typically for Individual Users / Non-Enterprise Customers. This means they are not in Salesforce and are not quoted out of CPQ.
- StaffTools
- All provisioning is done through StaffTools to dictate the services assigned to an Account. This data is received via API Callout from Zuora
- This is a backend admin view to github.com. Details in StaffTools are received from Zuora.
- All customer data can be seen in StaffTools including Seats, Licenses, Expiration Dates, Usage Data, etc. This is where all customer Accounts, Repos, etc. are managed from. This includes both Enterprise and Individual users.
- VNext
- VNext is used to track all customer usage data. This usage data is passed to Zuora through the Data Warehouse and StaffTools monthly for billing
- This usage data is used to determine Customer invoicing for Metered / Usage-Based Products
- VNext replaced 'Muse', the prior usage tracking system in 2024
Usage Based Sales/Billing Data Flow
Sales for Metered Products are performed out of Salesforce via Sales Rep manual actions. Self-Service for Metered Products is not currently enabled. Quotes with Metered Products in CPQ are flagged in the system. This flag is passed to the resulting Salesforce Contract, then to Zuora via Integration.
All Metered Products are billed out of Zuora for GitHub customers. Metered Subscriptions in Zuora are never renewed, they are instead treated as 'Evergreen' and the End Date is pushed out 10 years from the Salesforce End Date.
Usage Based Products
-
Metered Products List:
- Microsoft Metered Usage
- GitHub Metered Products Pre-Purchase
- Metered Billing Overage True Up
- GHAE Commercial Cloud
- GHAE Government Cloud
- Codespaces
- Metered Products -- Self-Service
-
Metered Forecasting Products List
- GHAS for AzDO
- GitHub Actions
- GitHub Copilot for Business
- GHAS Metered
- GHEC Metered
- GitHub Copilot Enterprise
- Copilot Business for Non-GHE Customers
- Forecasted Metered Spend
- Secret Protection for GHE Metered
- Code Security for GHE Metered
- Secret Protection for AzDO
- Code Security for AzDO
- Copilot Premium Requests
Self-Service Data Flow Overview
- No Orders (net new Contracts / Services) are originated out of self-service deals.
- Self-Service Renewals and Amendments are available to existing enterprise customers only. This means all Self-Serve customers will have an Account and Contact in Salesforce before the time of sale.
- Existing enterprise customers have the option to upgrade existing services to include GHAS through self serve.
- In bound Self-Service Requests from customers may be for GitHub Enterprise, GitHub Enterprise Cloud, or GitHub Advanced Security
- In order to be eligible for in product self service they must have an existing Account and Contract in Salesforce. Only volumed enterprise customers that meet the below requirements:
- Account
- If Business Segment = SMB, Max Discount across current subscriptions must be <= 15% AND Contract License ARR + Contract Support ARR) <= 20,000
- If Account Owner = Digital Sales, Max Discount across current subscriptions must be <= 25%
- Trade Screen Status = No Hit
- Requires PO = Not Required (Not Checked)
- Governing Terms ≠ No Terms
- Involvement = GitHub Order - No Microsoft (Involvement field on Account will be in sync with Involvement field on Opp)
- Quote
- Partner: null
- Distributor: null
- Contract
- Contract Length: ≤ 12 months
- Agreement Dates: null
- SKU (Product Codes in Salesforce): ('GHE-ADV-SEC', 'GEC-ADV-SEC', 'GHE', 'GHE-NONPROFIT', 'GEC', 'GEC-NONPROFIT')
- Contract End Date >= LAST 365 DAYS
- Contract Status IN ('Active', 'Expired')
- Zuora Account Billing ID != NULL Dotcom only allows customers to self serve renew expired contracts up to 1 year after the contracts end date.
Edge Process Callouts
- Support
- When Support SKUs are sold in Salesforce CPQ, the Subscription data is not passed directly to Zuora.
- The Revenue Accounting team will instead review the Support sale before manually updating Customer Account and Subscriptions in Zuora with the Support purchased
Questions:
- License/Volume customers may go hybrid, we are going to get metered actions from them. For that, do we need to create Opportunities for them. What's the quantity for metered products that we sell for them. If it is a zero quantity, why? How do we deal with customers who want to go full metered - Renew them into full Metered Opportunity_
- What is saved in DataWarehouse from Transactions? Write DAGS against the transaction data to bring it into Salesforce - Is MSFT data in Data Warehouse?
- When MSFT vscode customers want copilot - they sell it with MSFT and bill it - then inform GitHub to provision it - Azure Id is used here. Do these transactions exist in Salesforce and/or Zuora?