public static bool RenameMemberGroupRoleRules(this IPublicAccessService publicAccessService, string?oldRolename, string?newRolename)
    {
        var hasChange = false;

        if (oldRolename == newRolename)
        {
            return(false);
        }

        IEnumerable <PublicAccessEntry> allEntries = publicAccessService.GetAll();

        foreach (PublicAccessEntry entry in allEntries)
        {
            // get rules that match
            IEnumerable <PublicAccessRule> roleRules = entry.Rules
                                                       .Where(x => x.RuleType == Constants.Conventions.PublicAccess.MemberRoleRuleType)
                                                       .Where(x => x.RuleValue == oldRolename);
            var save = false;
            foreach (PublicAccessRule roleRule in roleRules)
            {
                // a rule is being updated so flag this entry to be saved
                roleRule.RuleValue = newRolename ?? string.Empty;
                save = true;
            }

            if (save)
            {
                hasChange = true;
                publicAccessService.Save(entry);
            }
        }

        return(hasChange);
    }