The ultimate Microsoft Fabric, Power BI, Azure AI, and SQL learning event! Join us in Stockholm, Sweden from September 24-27, 2024.
2-for-1 sale on June 20 only!
Find everything you need to get certified on Fabric—skills challenges, live sessions, exam prep, role guidance, and more. Get started
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.
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.
Has anyone had the same problem?
Regards,
Arber
Solved! Go to Solution.
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
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
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
Join the community in Stockholm for expert Microsoft Fabric learning including a very exciting keynote from Arun Ulag, Corporate Vice President, Azure Data.
Check out the June 2024 Power BI update to learn about new features.
User | Count |
---|---|
55 | |
42 | |
24 | |
23 | |
14 |