Overview
Within a project, you often need to model organizational structures: departments, teams, divisions, and reporting hierarchies. This guide shows how to represent these structures in Bedrock.These patterns are typically implemented at the Project level, where authorization is configured. The examples below assume you’re working within a project’s scope.
Common Organizational Patterns
Flat Teams
Hierarchical Departments
Matrix Organization
Approach 1: Scopes as Org Units
Model each organizational unit as a scope within your project:Pros
- Natural permission inheritance
- Clear hierarchy
- Easy to query
Cons
- Deep hierarchies can be complex
- Harder to model matrix organizations
Approach 2: Tags for Org Classification
Use tags to classify users and resources by org unit:Pros
- Flexible many-to-many relationships
- Easy to model matrix orgs
- Users can belong to multiple teams
Cons
- Requires conditional permissions
- Less intuitive hierarchy
Approach 3: Hybrid (Recommended)
Combine scopes for major boundaries and tags for classification:Role Patterns
Department-Level Roles
Team-Specific Roles
Cross-Functional Roles
Permission Patterns
Department Access
Tag-Based Team Access
Matrix Organization Example
For organizations where people belong to both functional teams and cross-functional initiatives:Reporting Hierarchies
For manager → report relationships:Best Practices
Use scopes for permission boundaries
Use scopes for permission boundaries
Create scopes where you need distinct permission sets or inheritance breaks.
Keep hierarchy depth reasonable
Keep hierarchy depth reasonable
Very deep hierarchies are hard to manage. Consider flattening with tags.
Plan for reorganization
Plan for reorganization
Organizations change. Design for easy restructuring.
Next Steps
Row-Level Access
Fine-grained resource permissions
Tag-Based Access
More tag-based patterns