Benjamin Leetmaa
Benjamin Leetmaa

Reputation: 21

Azure Graph api client remove member from group

I have trouble to remove user from group. I have no problem with adding a user. I do not recieve any error from myGroup.Members.Remove(user as DirectoryObject);. Is it a bug?

ActiveDirectoryClient client = AuthenticationHelper.GetActiveDirectoryClient();
        User user = (User)await client.Users.GetByObjectId(userID).ExecuteAsync();
        IGroup myIGroup = await client.Groups.GetByObjectId(objectId).ExecuteAsync();
        Group myGroup = (Group)myIGroup;
        if (myGroup != null && user != null)
        {
            try
            {
                switch (myAction)
                {
                    case "Delete":                            
                        myGroup.Members.Remove(user as DirectoryObject);
                        break;
                    case "Add":
                        myGroup.Members.Add(user as DirectoryObject);
                        break;
                }
                await myGroup.UpdateAsync();

Upvotes: 1

Views: 1183

Answers (1)

Sergey Morozenko
Sergey Morozenko

Reputation: 171

Try to add Expand(x => x.Members) while getting group. I've tried the following:

public async Task<Result> RemoveFromGroup(string upn, string groupId)
{
    try
    {
        var group = (AD.Group) await ADClient.Groups
            .Where(x => x.ObjectId == groupId)
            .Expand(x => x.Members)
            .ExecuteSingleAsync();

        var user = (AD.User) await ADClient.Users
            .Where(x => x.UserPrincipalName == upn)
            .ExecuteSingleAsync();

        group.Members.Remove(user);
        await group.UpdateAsync();
        return Result.Ok();
    }
    catch (Exception ex)
    {
        return Result.Fail(new Error(ex.Message, null, ex));
    }
}

It works. The only difference - I get user by its principal name but it doesn't matter in that case.

Upvotes: 2

Related Questions