private static void RemoveRuleGroup(ManagementService managementService, string ruleGroupName)
        {
            Guard.NotNullOrEmpty(() => ruleGroupName, ruleGroupName);

            var rgToRemove = managementService.RuleGroups.Where(
                rg => rg.Name.Equals(ruleGroupName)).Single();

            managementService.DeleteObject(rgToRemove);
        }
        private void RemoveRelatedKeys(RelyingParty rpToRemove, ManagementService client, Action<LogInfo> logAction)
        {
            var pendingChanges = false;

            foreach (var key in rpToRemove.RelyingPartyKeys)
            {
                RelyingPartyKey keyLocal = key;
                var keyToRemove = client.RelyingPartyKeys.Where(
                    k => k.DisplayName.Equals(keyLocal.DisplayName)).Single();

                this.LogMessage(logAction, string.Format("Removing Key '{0}'", keyLocal.DisplayName));
                client.DeleteObject(keyToRemove);

                pendingChanges = true;
            }

            if (pendingChanges)
            {
                client.SaveChanges(SaveChangesOptions.Batch);
                this.LogSavingChangesMessage(logAction);
            }
        }