public async Task <HashSet <string> > Groups()
        {
            try
            {
                var groupsCollectionPage = await GraphServiceHelper.GetGroupsAsync(_graphClient, _httpContext);

                var groups = new HashSet <string>();
                await groupsCollectionPage.ForEachAsync(async _ =>
                {
                    var groupOwner     = await GraphServiceHelper.GetGroupOwnersAsync(_graphClient, _httpContext, _.Id);
                    var groupOwnership = BloodHoundHelper.BuildGroupOwnership(groupOwner);

                    var groupMembersList = await GraphServiceHelper.GetGroupMembers(_graphClient, _httpContext, _.Id);
                    var groupMembers     = BloodHoundHelper.BuildGroupMembersList(groupMembersList);
                    BloodHoundHelper.GroupMembership(_, groupMembers);
                    if (Startup.IsCosmosDbGraphEnabled)
                    {
                        CosmosDbGraphHelper.GroupMembership(_, groupMembers);
                        CosmosDbGraphHelper.GroupMembership(_, groupOwnership);
                    }
                    groups.Add(_.DisplayName);
                });

                return(groups);
            }
            catch (Exception ex)
            {
                _logger.Error(ex, $"{nameof(Groups)} {ex.Message} {ex.InnerException}");
                return(null);
            }
        }