// Get all the active records for a custom entity and deacitvate it
// In this case Custom Entity name is new_customentity and it has many to one relationship with contact record
// So we are finding all the active custom entity records for a particular contact
// and deactivating it
private
void DeActivateCustomRecords(string contactID, IOrganizationService _service){
// setting contact id
ConditionExpression condition1 = new ConditionExpression();
condition1.AttributeName=“new_contactid”;
condition1.Operator =ConditionOperator.Equal;
condition1.Values.Add(contactID);
// and state code =0 -> active record
ConditionExpression condition2 = new ConditionExpression();
condition2.AttributeName =“statecode”;
condition2.Operator =ConditionOperator.Equal;
condition2.Values.Add(0);
// And the condition
FilterExpression filterExpression = new FilterExpression();
filterExpression.AddCondition(condition1);
filterExpression.AddCondition(condition2);
filterExpression.FilterOperator =LogicalOperator.And;
//Create a column set to get the custom entity records id
//we need them to disable the records
ColumnSet columns = new ColumnSet(“new_customentityid”);
// Create query expression.
QueryExpression query1 = new QueryExpression();
query1.ColumnSet = columns;
query1.EntityName =“new_customentity”;
query1.Criteria = filterExpression;
try{
EntityCollection result= _service.RetrieveMultiple(query1);
foreach (Entity customEntityResult in result.Entities){
SetStateRequest setState = new SetStateRequest();
setState.EntityMoniker = new EntityReference();
setState.EntityMoniker.Id = customEntityResult.Id;
setState.EntityMoniker.Name = “new_customentity”;
setState.EntityMoniker.LogicalName = entityElgResult.LogicalName;
setState.State =new OptionSetValue();
setState.State.Value = 1;
setState.Status = new OptionSetValue();
setState.Status.Value = -1;
SetStateResponse setStateResponse = (SetStateResponse)_service.Execute(setState);
}
}
catch (Exception ex){
throw ex;
}
}
Hope it is useful !