Seats usage tracking and reporting
(Note: updated from `Seat Usage Vision` to `Seats usage tracking and reporting` on 2023-01-26)
## Problem to solve
Customers struggle to easily understand who they are being charged for, how users have been added to their instance/namespace, and identify unusual user activity (spikes in user additions, dips in user activity).
As a result, customers, sales and support cobble this information together from various in-app resources, api scripts, and audit event logs.
## Personas
1. [Dakota - the Application Development Director](https://about.gitlab.com/handbook/marketing/strategic-marketing/roles-personas/buyer-persona/#dakota---the-application-development-director)
- _She is often balancing budget across the business and different levels, where she is creating jutification between spending on new tools or people from the same budget._
2. [Erin - the Application Development Executive (VP, etc.)](https://about.gitlab.com/handbook/marketing/strategic-marketing/roles-personas/buyer-persona/#erin---the-application-development-executive-vp-etc)
- _Her top goal is predictable Business Results._
- _She is removed from the day to day work her teams do, and visibility is a major challenge. She relies on status reports, dashboards, and other updates to get insight into how things are going, and too often learns of problems too late._
## User Needs
1. Understand my bill.
1. Reconcile who I'm being charged for.
2. Identify users who are taking up a seat and haven't used the system.
3. Easily remove users from my namespace/instance if they shouldn't be added.
4. Identify how users were added.
2. Have ability to add users without having to navigate off the page.
3. Identify spikes/dips in usage.
4. Predict my future bill.
## Proposal
Create a single, detailed view of billable seats usage within the Self-Managed instance and SaaS namespace.

## Why not use the existing Users/Members pages?
1. Different personas and JTBD
2. Users will begin to focus more on granular permissions by user
3. While some of the information on the Seats page is also viewable in Users and Members page, this single Seats usage page also provides graphing of data and in future iterations, we want to add a predictive analytics component
4. By clustering the "detail behind the bill" under `Usage Quotas` a customer who is attempting to understand their instance's/namespace's usage, can find the information all in one place. (Seats, CI Minutes, Storage). As we continue to identify consumable services, we can build our more tabs and utilize a common page layout with plug-and-play components.
## Notes
1. Where possible, we should use common table and filter components to the SaaS members page and SM Users page
2. We should validate whether we can develop a common page layout with reusable components for Seats, CI Minutes and Storage
3. The Utilization chart should be dynamic and update the data based on the filtered list
4. The export file should provide the user the option to export the entire Seats list or the filtered version
5. The data presented on this page will be read-only except for providing the customer with the option to Remove users from the instance/namespace
6. The data presented on this page can be as of the last daily database entry and does not have to load real-time user data
7. The placement of the page in this image is for SaaS. The page will be identical for Self-Managed but will be placed in Admin>Usage Quotas
## Possible future iterations
1. Add a component for predictive analytics - expected growth/spend based on history
2. Drill-down into graph to identify users occupying seats by date
## Roadmap to Vision
1. [x] Move `Seat Usage` page from Billing directory to Usage Quotas https://gitlab.com/gitlab-org/gitlab/-/issues/334861
2. [x] Visualization of user counts over time
1. [x] UX: https://gitlab.com/gitlab-org/gitlab/-/issues/321933
2. [x] BE: https://gitlab.com/gitlab-org/gitlab/-/issues/290202
3. [x] FE: https://gitlab.com/gitlab-org/gitlab/-/issues/334689
3. [ ] Create usage summary components (top of page)
4. [ ] Dynamically filter graph (v2)
5. [ ] Make user data over time available for internal users via CustomersDot admin (license team) https://gitlab.com/gitlab-org/customers-gitlab-com/-/issues/3679
---
**Support Priority Score:** 19
_As of 2023-05-26, this epic's Support Priority is "See Epic," which in this situation refers to one of its child epics, &5698._
epic