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 !!
One thought on “Sample code to update Access Mode of System User in C# (CRM 2016 or earlier)”