Skip to main content
Back to Blog
team-sharing salesforce-apps enterprise-architecture

Salesforce Sharing Model Decisions: Teams, Roles, and Beyond [Framework]

Michał Bajdek
5 min read
On This Page

Salesforce Team Sharing is a permission model that extends record access beyond ownership and role hierarchy. It enables cross-functional collaboration by allowing record owners or administrators to share specific records with teams, public groups, or individual users without modifying org-wide defaults or restructuring your role hierarchy.

How Does Team Sharing Actually Work?

Team sharing operates through sharing rules that grant access to specific records based on team membership rather than organizational hierarchy. When a user is added to a team, they automatically gain access to records shared with that team.

The key mechanisms include:

  • Manual sharing: Record owners share individual records
  • Sharing rules: Administrators create criteria-based sharing
  • Apex managed sharing: Programmatic sharing for complex scenarios
  • Teams: Account Teams, Opportunity Teams, Case Teams

Implementation Note

Team sharing rules are evaluated at runtime. Changes to team membership take effect immediately without requiring a full sharing recalculation.

Sharing recalculation time is the metric that catches most orgs off guard. I’ve seen implementations where adding one more criteria-based rule pushed recalc from minutes to hours. The orgs that manage this well treat sharing rules like technical debt: they review them periodically, remove unused ones, and consolidate overlapping criteria before performance becomes a problem.

What Problems Does Team Sharing Solve?

Traditional role hierarchy works vertically: managers see what their direct reports see. But modern organizations don’t operate purely vertically.

Common challenges team sharing addresses:

  1. Cross-functional deal teams: Sales, legal, and finance need to collaborate on the same opportunity without being in the same reporting line
  2. Regional specialists: A product expert needs visibility into accounts across multiple territories
  3. Project-based access: Temporary access for initiative-specific collaboration
  4. Partner collaboration: External partners need limited access to specific records

The scenario I encounter most often: teams need to collaborate on custom objects (Projects, Engagements, client-specific records) but standard sharing doesn’t fit. Before, this meant either complex Apex sharing code that nobody wants to maintain, or admin-managed sharing records that fall out of sync within weeks. The orgs that move to team-based sharing on custom objects usually report two things: less admin overhead and fewer “I can’t see this record” support tickets.

When Should You Choose Team vs. Role-Based Sharing?

The decision depends on your access pattern:

ScenarioRecommended Approach
Manager needs visibility to team’s recordsRole Hierarchy
Cross-department collaboration on specific recordsTeam Sharing
Executive dashboards across orgRole Hierarchy
Project-based temporary accessTeam Sharing
Compliance-based access restrictionsSharing Rules + Teams

Performance Consideration

Excessive sharing rules can impact query performance at scale. Test with production-like data volumes before deploying.

How Do You Implement Team Sharing in Your Org?

Step 1: Define Your Sharing Model

Start by mapping your collaboration patterns:

  • Who needs to share records with whom?
  • Is the access pattern temporary or permanent?
  • What level of access is required (Read, Edit)?

Step 2: Configure Teams and Groups

For standard Salesforce team sharing:

Setup → Users → Public Groups → New Group
Setup → Accounts → Account Teams → Enable

For flexible team structures, consider Flexible Teams Share which extends native team functionality to any object.

Step 3: Create Sharing Rules

Navigate to Setup → Sharing Settings and create criteria-based or owner-based sharing rules that reference your teams.

Step 4: Test and Validate

Use the Sharing Hierarchy button on records to verify access grants are working as expected.

Every sharing model I’ve implemented gets the same test: I create users for each role and profile combination, then systematically check what they can and can’t access. Can they see the record? Edit it? See related records? It’s tedious, but skipping this step is how sharing bugs make it to production. The bugs are always the same: someone assumed access would cascade, or a permission set grants more than expected. Testing catches these before users do.

What Are Common Team Sharing Pitfalls?

1. Over-Sharing

Opening access too broadly defeats the purpose of your security model. Start restrictive and expand based on demonstrated need.

2. Orphaned Sharing Records

When users leave teams, their manual sharing records may persist. Implement cleanup routines.

3. Performance at Scale

Large numbers of sharing rules require careful indexing and query optimization. Monitor SOQL query performance.

4. Inconsistent Patterns

Different teams implementing sharing differently creates confusion. Document and standardize your approach.

Architecture Decision Record

Document your sharing model decisions in ADRs. Future administrators will thank you.

Key Takeaways

  • Team sharing extends, not replaces, role hierarchy: use it for horizontal collaboration patterns
  • Start with clear requirements before implementing. Map who needs access to what
  • Test at scale with production-like data volumes before deployment
  • Document your decisions in architectural decision records for maintainability
  • Consider managed packages like Flexible Teams Share for complex team structures
Michał Bajdek

Written by

Michał Bajdek

Application & System Architect

Salesforce System & Application Architect with 12+ years experience. 50+ enterprise projects across Accenture, PwC, IBM. Clean architecture that teams can extend.

Looking for Salesforce Solutions?

Explore our AppExchange apps or learn about our custom development services. We help enterprises build better Salesforce solutions.