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

View all the Fabric Data Days sessions on demand. View schedule

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
November Power BI Update Carousel

Power BI Monthly Update - November 2025

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

Fabric Data Days Carousel

Fabric Data Days

Advance your Data & AI career with 50 days of live learning, contests, hands-on challenges, study groups & certifications and more!

FabCon Atlanta 2026 carousel

FabCon Atlanta 2026

Join us at FabCon Atlanta, March 16-20, for the ultimate Fabric, Power BI, AI and SQL community-led event. Save $200 with code FABCOMM.

Top Solution Authors