private void RevertPostConfig(msdyn_PostConfig originalConfig, msdyn_PostConfig newConfig) { if (originalConfig != null) { // Revert the rule configs. foreach (var rule in _postRuleConfigs.Where( x => x.msdyn_PostConfigId.Id == newConfig.msdyn_PostConfigId)) { // Set the state to the original value. _serviceProxy.Execute(new SetStateRequest { EntityMoniker = rule.ToEntityReference(), State = new OptionSetValue((int)rule.statecode), Status = rule.statuscode }); } // Update the config to the values from the original config. // Make sure the context is not tracking the new config and is tracking // the original config. if (!_serviceContext.IsAttached(originalConfig)) { if (_serviceContext.IsAttached(newConfig)) { _serviceContext.Detach(newConfig); } _serviceContext.Attach(originalConfig); } _serviceContext.UpdateObject(originalConfig); _serviceContext.SaveChanges(); Console.WriteLine( " The {0} activity feed configuration was reverted.", originalConfig.msdyn_EntityName); } else { _serviceProxy.Delete(newConfig.LogicalName, newConfig.Id); Console.WriteLine( " The {0} activity feed configuration was deleted.", newConfig.msdyn_EntityName); } }