Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Join us for an expert-led overview of the tools and concepts you'll need to become a Certified Power BI Data Analyst and pass exam PL-300. Register now.

Reply
arberceni
Frequent Visitor

Add user to group through REST API does not work C#

Hello everyone,

 

I am trying to share a workspace with a user outside my organization by using PowerBI .NET SDK (C#).

 

I am using the following code:

 

 

 

Invitation invitation = new Invitation{
                            InvitedUserEmailAddress = "username@tenant.onmicrosoft.com",
                            InviteRedirectUrl = "<url>",
                            SendInvitationMessage = true,                            
                        };

var res = await graphClient.Invitations.Request().AddAsync(invitation);

GroupUser gu = new GroupUser("Viewer", "username@tenant.onmicrosoft.com", null, "username@tenant.onmicrosoft.com", PrincipalType.User);

await client.Groups.AddGroupUserAsync(Guid.Parse(<workspace_id>), gu);

 

 

 

No errors are thrown from this code and the guest user DOES appear in the admin portal as well as in the "access" pane of the workspace.

arberceni_0-1603998979345.png

 

However, the problem is that the user this workspace is shared with (username@tenant.onmicrosoft.com) is not able to see the workspace or the reports inside the workspace. If the same process is done through the UI it works perfectly.

arberceni_1-1603999092684.png

 

Has anyone had the same problem?

 

Regards,

Arber

1 ACCEPTED SOLUTION
arberceni
Frequent Visitor

Hello all,

 

In case someone else is looking for a solution to this problem:

When inviting a guest user with e-mail address: username@tenant.onmicrosoft.com, their username in the new new tenant will be:

username_tenant.onmicrosoft.com#EXT#@newtenant@onmicrosoft.com and this username has to be used when creating a GroupUser object. (newtenant is the tenant from where the workspace was shared). So the code becomes:

 

 

Invitation invitation = new Invitation{
                            InvitedUserEmailAddress = "username@tenant.onmicrosoft.com",
                            InviteRedirectUrl = "<url>",
                            SendInvitationMessage = true,                            
                        };

var res = await graphClient.Invitations.Request().AddAsync(invitation);

GroupUser gu = new GroupUser("Viewer", "username_tenant.onmicrosoft.com#EXT#@newtenant.onmicrosoft.com", null, "username_tenant.onmicrosoft.com#EXT#@newtenant.onmicrosoft.com", PrincipalType.User);

await client.Groups.AddGroupUserAsync(Guid.Parse(<workspace_id>), gu);

 

 

Hope this helps anyone else!

 

Regards,

Arber

View solution in original post

3 REPLIES 3
arberceni
Frequent Visitor

Hello all,

 

In case someone else is looking for a solution to this problem:

When inviting a guest user with e-mail address: username@tenant.onmicrosoft.com, their username in the new new tenant will be:

username_tenant.onmicrosoft.com#EXT#@newtenant@onmicrosoft.com and this username has to be used when creating a GroupUser object. (newtenant is the tenant from where the workspace was shared). So the code becomes:

 

 

Invitation invitation = new Invitation{
                            InvitedUserEmailAddress = "username@tenant.onmicrosoft.com",
                            InviteRedirectUrl = "<url>",
                            SendInvitationMessage = true,                            
                        };

var res = await graphClient.Invitations.Request().AddAsync(invitation);

GroupUser gu = new GroupUser("Viewer", "username_tenant.onmicrosoft.com#EXT#@newtenant.onmicrosoft.com", null, "username_tenant.onmicrosoft.com#EXT#@newtenant.onmicrosoft.com", PrincipalType.User);

await client.Groups.AddGroupUserAsync(Guid.Parse(<workspace_id>), gu);

 

 

Hope this helps anyone else!

 

Regards,

Arber

ScottStauffer
Advocate I
Advocate I

I wonder if this "How to" in Microsoft docs would help?

https://docs.microsoft.com/en-us/power-bi/admin/service-admin-azure-ad-b2b

 

Hello Scott,

 

Thank you for your reply!

The "How to" you shared describes how the sharing is done through the user interface and I can confirm that it works as expected. The problem is that when I try to perform the same steps through the REST API it doesn't work.

 

Regards,

Arber

Helpful resources

Announcements
Join our Fabric User Panel

Join our Fabric User Panel

This is your chance to engage directly with the engineering team behind Fabric and Power BI. Share your experiences and shape the future.

June 2025 Power BI Update Carousel

Power BI Monthly Update - June 2025

Check out the June 2025 Power BI update to learn about new features.

June 2025 community update carousel

Fabric Community Update - June 2025

Find out what's new and trending in the Fabric community.