Recently had a requirement to set Access Mode of around 500 users to Administrative from Read – Write. We wrote an on demand workflow for that. However, running that workflow on those 500 records in a batch of 100 records was causing them to stuck in waiting stage and we had to then manually resume those workflow instance. So we ended up writing a Console Application for that.
QueryExpression queryExpression = new QueryExpression();
queryExpression.EntityName = "systemuser";
queryExpression.ColumnSet = new ColumnSet();
queryExpression.ColumnSet.AddColumn("fullname");
ConditionExpression conditionExpression1 = new ConditionExpression();
conditionExpression1.AttributeName = "tk_businessarea";
conditionExpression1.Values.Add("EE286698-AF08-E311-B55E-1CC1DE6DAA0B");
conditionExpression1.Operator = ConditionOperator.Equal;
ConditionExpression conditionExpression2 = new ConditionExpression();
conditionExpression2.AttributeName = "isdisabled";
conditionExpression2.Values.Add(false);
conditionExpression2.Operator = ConditionOperator.Equal;
// access mode ==> 0 --> Read Write and 1 --> Adminstrative
ConditionExpression conditionExpression3 = new ConditionExpression();
conditionExpression3.AttributeName = "accessmode";
conditionExpression3.Values.Add(1);
conditionExpression3.Operator = ConditionOperator.Equal;
queryExpression.Criteria.AddCondition(conditionExpression1);
queryExpression.Criteria.AddCondition(conditionExpression2);
queryExpression.Criteria.AddCondition(conditionExpression3);
queryExpression.Criteria.FilterOperator = LogicalOperator.And;
EntityCollection entityColl = organizationProxy.RetrieveMultiple(queryExpression);
foreach(var entity in entityColl.Entities)
{
Entity userEntity = new Entity("systemuser");
userEntity.Id = entity.Id;
userEntity.Attributes["accessmode"] = new OptionSetValue(0);
organizationProxy.Update(userEntity);
}
Hope it helps !!
Discover more from Nishant Rana's Weblog
Subscribe to get the latest posts sent to your email.

One thought on “Sample code to update Access Mode of System User in C# (CRM 2016 or earlier)”