Enterprise Permissions
Redesigning how 150K+ T-Mobile employees get access to internal tools, owned end-to-end by content teams instead of IT tickets.
One intranet for 150,000+ employees, permissions owned by content teams.
Three platforms into one intranet for 150K+ employees. Permissions had to ship with launch, owned by content teams, not an IT queue. I was sole designer and one of two business owners across requirements, the group model, both surfaces, a11y, QA, and onboarding.
Grounding the model in how permissions already work, and who would run this one.
Cross-market analysis (SharePoint, Azure, Airtable) plus interviews with admins, content owners, and compliance, then four constraints that shaped the model:
Four group types, each with explicit ownership and expiration, so groups can’t sprawl.
Dynamic and exception groups shipped at launch; bulk dynamic and nested groups followed later, by request.
- Dynamic Launch · defaultMembership from attribute rules, e.g. all People Managers. Updates save immediately, membership syncs overnight.
- Exception Launch · expiringManual members for contractors and short-lived needs. Must renew to meet cyber policy. Owners get notified as the date nears.
- Bulk dynamic Later · at scaleOne rule set, many groups: a group for every value of an attribute (e.g. each store, or HR in each state), instead of building them one by one.
- Nested Later · reuseCompose groups and individuals into one audience. Reuse dynamics without rewriting rules.
Four types · one governance contract · launch vs later
Ownership is required at creation, not discovered later in an audit.
Every group names its owners up front. That made accountability visible from day one and gave content teams a clear person to ask when access needed to change.
Exception groups escalate, then lock, so temporary access cannot quietly stick around.
Renewal prompts appear as the deadline nears. Past the deadline, the group requires review before it can keep granting access.
One loop from group definition to page access, with governance at every step.
Admins define reusable audiences. Authors apply them when content ships. Inheritance and expiration keep the system honest after launch.
The same group model, shown where each role needs it.
Admins start in Group Management: find a group, open details, manage membership and rules. Authors work in Apply Permissions at publish time, with publish and permission status side by side before go-live. The hero above is Group Management in motion.
Familiar patterns, safer defaults, and errors caught at the moment of entry.
The platform had no established patterns for search, tables, filtering, or inline validation. I designed them to align with the new design system’s semantic tokens and interaction patterns. Purpose-built for Permissions, reviewed with the DS team and a11y partner, and signed off before ship.
A rule builder for two audiences: visual for most, syntax for the advanced.
I renamed cryptic HR attributes for non-technical authors and cut the default list by more than half. The live syntax view validates complex logic as it’s built.
People_manager_flag People Manager Leader_2 Employee Level Wrk_loc_cd Work Location
Automatic inheritance wasn’t technically feasible at migration scale, and most alternatives were too complex to build or too opaque for authors. Instead, authors choose when parent access flows to child pages, with clear control over which groups apply. Visible, reversible, auditable. A later enhancement let pages inherit from already-permissioned parents, cutting effort further.
Model held months after launch. I did deep manual validation against real HR data (SQL, Postman, cron behavior) before builds were finished. That work surfaced overnight sync, mismatched attribute labels, and other gaps the spec never mentioned. I wrote the admin/author guides and a failsafe BRD, and onboarded content teams before platform go live.
- 01 Governance works when it’s built into the model, not a policy doc.
- 02 Design for the least-technical owner. Safer for everyone, including admins.
- 03 The constraints that mattered most (overnight sync, opaque HR attributes, UI terms that didn’t match the system) I found by testing, not by spec.