Security Roles are associated with Users via N:N relationship (relationship name: systemuserroles_association). So now in CRM 2011 we can use DisassociateRequest to remove programmatically user assigned security roles .
[C# Code]:
The c # code below can be used in to remove the User assigned Security Role. public void RemoveUserSecurityRole(Guid prmUserId, Guid prmSecurityRoleId, IOrganizationService prmCrmWebService) |
{ |
// Create new Disassociate Request object for creating a N:N link between User and Security |
DisassociateRequest wod_DisassociateRequest = new DisassociateRequest (); |
// Create related entity reference object for associating relationship |
// we will pass (SystemUser) record reference of user for which the role is required to be removed |
wod_DisassociateRequest.RelatedEntities = new EntityReferenceCollection(); |
wod_DisassociateRequest.RelatedEntities.Add(new EntityReference("systemuser", prmUserId)); |
// Create new Relationship object for System User & Security Role entity schema and assigning it |
// to request relationship property |
wod_DisassociateRequest.Relationship = new Relationship("systemuserroles_association"); |
// Create target entity reference object for associating relationship |
wod_DisassociateRequest.Target = new EntityReference("role", prmSecurityRoleId); |
// Passing DisassociateRequest object to Crm Service Execute method for removing Security Role to User |
prmCrmWebService.Execute(wod_DisassociateRequest); |
} |