It is a fact that sharing in Dynamics CRM don’t scale well, but sometimes sharing still can be a preferred way of solving a problem. The main reason behind the scaling problem is that CRM have to check the PrincipleObjectAccess table for permission, and ( at least in earlier versions ) this table had a tendency to be large.
In a recent requirement we wanted to share some records with a team that contains 1000+ users, and had worries on how this would affect the POA table. We did som experiments, and here is the result:
Added one record A to entity B
As expected the PrincipalObjectAccess table did not grow.
Shared record A with one user
The PrincipalObjectAccess table grew with one row.
Sharerd record a with a team with 5 users
The PrinicpalObjectAcces table grew with one row. ( not 5, phew… )
Added a user to the team used for sharing
The PrincipalObjectAccess table did not grow.
Luckily only one row is added to the POA table when sharing with a team. The PrincipalTypeCode column also points to a different entity type.