Microsoft Dynamics CRM

{Code Tip} Control Activate/Deactivate Privilege on CRM entities

Requirement: Client wants the ability to control Activate/Deactivate privilege on CRM entities.

Solution: Out of box, there is no ability to control Activate/Deactivate privilege. This is one of the classical CRM problems.So this one will require a little code solution.

image

In the proposed solution, I suggest two approaches:

· Create Additional Configuration entity to collect the permissions by role at Entity level and then allow/disallow Activate/Deactivate

· Create a Team for users : If user is part of the team user has privileges to Activate/Deactivate the record, else doesn’t have the privilege

Thereafter Plugin will read the configuration or team information and then allow/disallow Activate or Deactivate.

Finally, A decision was made to choose the team approach.

Here is the code to be used in the plugin then

using (var serviceContext = new OrganizationServiceContext(service))

{

if (context.InputParameters.Contains(“Target”) && context.InputParameters[“Target”] is Entity)

{

Entity entity = (Entity)context.InputParameters[“Target”];

if (!IsTeamMember(new Guid(“Team Guid”), context.UserId, service))

{

throw new InvalidPluginExecutionException(“You do not have permission to Activate/Deactivate. Please contact System Administrator”);

}

}

}

Here is the IsTeamMember method code:

public static bool IsTeamMember(Guid teamID, Guid userID, IOrganizationService service)

{

QueryExpression query = new QueryExpression(“team”);

query.ColumnSet = new ColumnSet(true);

query.Criteria.AddCondition(new ConditionExpression(“teamid”, ConditionOperator.Equal, teamID));

LinkEntity link = query.AddLink(“teammembership”, “teamid”, “teamid”);

link.LinkCriteria.AddCondition(new ConditionExpression(“systemuserid”, ConditionOperator.Equal, userID));

var results = service.RetrieveMultiple(query);

if (results.Entities.Count > 0)

{

return true;

}

else

{

return false;

}

}

Next, register this on Update of status field:

clip_image002

Now until the users are added to the Team, they will not be able to Activate/Deactivate record.

Hope it helps and Happy CRMing!

If you want to know more on Dynamics CRM, just get in touch.

Do not forget to share! Sharing knowledge is true power!


Check this out

Twitter: https://twitter.com/msdynamicsblog
LinkedIn: https://www.linkedin.com/in/deepesh-somani-00296932

Google Play Store:

https://play.google.com/store/apps/details?id=com.dynamicsofdynamicscrm.msdynamicsblog&hl=en

Advertisements

2 thoughts on “{Code Tip} Control Activate/Deactivate Privilege on CRM entities”

  1. I’ve seen similar scenarios as this where flag roles where used. A flag role is a security role where it may not actually have an privileges, but the system changes behavior for a user or team that has that role assigned.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s