PARENT ISSUE: Create Dynamic "Seats Currently in Use Members List" for GitLab.com
Problem to solve
Users, particularly customers, often ask how they can see/count the number of unique members and see a list of them.
Target audience
Finance/Billing, Group owner
Further details
Particularly in the context of GitLab.com, two main reasons they ask for this:
- align with subscription licensing number
- access management
Currently, support will pull a report for customers upon request using a rails script. This is also not currently possible with a single API call.
Proposal
On the billing page, beneath the current subscription table, create a collapsible list of members who tie to the Seats currently in use value
.
In the table include:
- Member Name - being address in MVC
- Username - being address in MVC
- Email address - being address in MVC - only if the email address is publicly available, otherwise display
private
-
IP address- not available per legal - Role
- Highest Membership Location: The Group/Subgroup/Project where they were added.
- Ideally, this value is linkable and takes the user to the members page for that Group/Subgroup/Project.
Rules
- Where a user appears as a member in multiple Groups/Subgroups/Projects:
- Link/display the location where the member has the highest role (where Guest = lowest, Owner = highest)
- If the member's role is the same across multiple Groups/Subgroups/Projects, link/display the highest location in the hierarchy (where Project = lowest, Group = highest)
- The data should be updated dynamically as changes to the members in the instance are made. If this is too draining, let's update once a day and include a hover text which states that the table is updated at xx:xx time daily (including the timezone).
- Can we give the user the the ability to manually refresh list with a rate limit?
Example:
Group X: Members = Red (role: developer), Yellow (role: developer)
- Subgroup 1: Members = Red (role: developer), Yellow (role: developer), Green (owner)
- Subgroup 2: Members = Red (role: owner), Yellow (role: developer)
- Project 000: Members = Red (role: maintainer), Yellow (role: developer), Purple (maintainer)
- Project YYY: Members = Red (role: developer), Yellow (role: developer), Blue (reporter)
Expected Seats Currently in Use Members List
Member Name | Role | Highest Membership location |
---|---|---|
Red | Owner | Subgroup 2 |
Yellow | Developer | Group X |
Green | Owner | Subgroup 1 |
Purple | Maintainer | Project 000 |
Blue | Reporter | Project YYY |
Permissions and Security
This is consistent with what group Owners can already do, but it requires viewing every project members list, or similar calls to the API.
Documentation
Would need to update:
- Groups docs, currently has nothing on Members list in general, only adding users to group
- Groups and projects members API
What does success look like, and how can we measure that?
- Group owners can match their subscription user count to the group members list via UI or API.
- Group owners can view which members are part of specific subgroups and projects.
Workarounds
Links / references
- Most recent customer inquiry (internal): https://gitlab.zendesk.com/agent/tickets/115328
- Internal request for report