Workday says she’s in “Engineering.” Which of the 47 engineering teams? Backend? Frontend? Platform? SRE? Security? Data? Machine Learning? Infrastructure? DevOps? Each team needs different access. Different repos. Different Slack channels. Different dashboards. Different tools. But the HRIS only knows “Engineering.” This is the granularity gap.Documentation Index
Fetch the complete documentation index at: https://docs.provisionr.io/llms.txt
Use this file to discover all available pages before exploring further.
What HRIS Provides vs. What RBAC Needs
Human Resources Information Systems (HRIS) like Workday, BambooHR, or ADP are designed around organizational hierarchy and employee administration. They track legal employer and cost center, high-level department, job title, manager, location, employment type, and compensation data. This information serves HR’s needs: payroll, benefits, org charts, headcount reporting. RBAC needs differ fundamentally. Provisionr asks: “What specific resources should this person access?” The answer depends on functional role, which is often more granular than anything in HRIS. Consider the difference:| HRIS knows | RBAC needs to know |
|---|---|
| Department: Engineering | Team: Platform Engineering |
| Title: Software Engineer | Specialty: Kubernetes, AWS |
| Manager: Jane Smith | Project assignments: Project Alpha, Project Beta |
| Location: San Francisco | On-call rotation: Yes |
Where the Granularity Actually Lives
If granular role information isn’t in HRIS, where does it reside?In managers' heads
Managers know which sub-team each person is on, what projects they’re working on, and what tools they need. That knowledge isn’t systematically captured anywhere.
In team wikis and docs
Somewhere there’s a Confluence page or Notion doc listing team members. It’s almost certainly out of date.
In the tools themselves
GitLab knows who has access to which repos. Slack knows who’s in which channels. But each tool only knows about itself.
In custom attributes
Some organizations add custom fields to Okta or their IdP to capture team-level information. The question of who maintains those fields rarely has a satisfying answer.
The Downstream Effects
When the source of truth lacks granularity, the effects cascade.Access becomes over-broad
If groups can only be created at the department level, everyone in Engineering gets Engineering access—even if they only need access to one sub-team’s resources. Least privilege disappears.
Access requests fill the gap
When automation can’t provision team-specific access, users request it manually. Every team-specific access need becomes a ticket.
Manual maintenance burden grows
Someone has to track team membership outside the system and manually update group membership when it changes. That someone is usually IT.
The Custom Attribute Trap
The obvious solution is custom attributes. Add a “Team” field to the IdP. Populate it with values like “Platform Engineering” or “Frontend” or “SRE.” This works, but creates new problems.Ownership becomes unclear
HR owns the HRIS. Who owns the custom attribute? IT? Managers? When ownership is unclear, data quality suffers.
Currency becomes a challenge
HRIS data updates when HR processes happen (hiring, promotions, departures). Custom attributes update when someone remembers to update them, or when a manager submits a request.
Multi-team membership creates complexity
Some people are on multiple teams. Custom attributes typically hold a single value. Multiple attributes or comma-separated lists introduce their own challenges.
Dimensions: A Different Approach
What if, instead of cramming everything into IdP custom attributes, organizations built a purpose-built layer for organizational dimensions? A Dimension is a category of organizational metadata—like “Team” or “Region” or “Management Level.” Each Dimension has Attributes, which are the specific values—like “Platform Engineering” or “EMEA” or “Director.” Here’s the key insight: Attributes can be defined by rules, not just data. Consider “Management Level.” Most HRIS systems don’t have a management level field. But it can be derived from job titles:Building Dimensions the HRIS Doesn’t Have
Let’s walk through creating a “Management Level” Dimension since it’s universally useful and almost never exists in HRIS. Step 1: Define the Dimension Dimension: Management Level Purpose: Categorize users by their position in the management hierarchy Values: Executive, Vice President, Director, Manager, Individual Contributor Step 2: Define each Attribute’s rules Attribute: ExecutiveTeam Dimensions Without HRIS Data
The same pattern works for team-level granularity. Option 1: Manager-based teams If team structure follows reporting lines:The Metadata Enrichment Strategy
Here’s the strategic approach to solving the granularity gap.Identify the Dimensions needed
What organizational structures drive access decisions? Department (from HRIS), Team (not in HRIS), Management Level (derivable), Region (from HRIS), Project (from project tools)?
For each Dimension, determine the data source
Some come from HRIS. Some are computed from other attributes. Some need to be synced from other systems. Some require manual curation (but minimized).
Build Attributes with rules
Define each Attribute using whatever conditions match users correctly. Prefer computable rules over manually maintained data.
Reference Attributes in access policies
Rulesets use Attributes, not raw data. When the underlying data changes, Attribute membership recalculates automatically.
Ready to build the Dimensions your HRIS doesn’t have? Learn how to create custom Dimensions and Attributes →