web
You’re offline. This is a read only version of the page.
close
Skip to main content
Community site session details

Community site session details

Session Id :

Retrieve User assigned Roles with user information using Query Expression , C# in Dynamics 365.

gdas Profile Picture gdas 50,091 Moderator

Sometimes we may need to retrieve login user security roles with user details using Query Expression. Here is simple Query Expression to retrieve user information with all assigned security roles by user GUID.

                // Pass user GUID
                Guid userid = new Guid("55A0BCC3-6DC2-4B75-B00F-200B2C7A8EF6");
                QueryExpression qe = new QueryExpression("systemuserroles");
                qe.ColumnSet.AddColumns("systemuserid");
                qe.Criteria.AddCondition("systemuserid", ConditionOperator.Equal, userid);

                LinkEntity link1 = qe.AddLink("systemuser", "systemuserid", "systemuserid", JoinOperator.Inner);
                link1.Columns.AddColumns("fullname", "internalemailaddress");
                LinkEntity link = qe.AddLink("role", "roleid", "roleid", JoinOperator.Inner);
                link.Columns.AddColumns("roleid", "name");
                EntityCollection results = organizationService.RetrieveMultiple(qe);
                foreach (Entity Userrole in results.Entities)
                {
                    if (Userrole.Attributes.Contains("systemuser1.fullname"))
                    {
                        Console.WriteLine("User Name : - " + (Userrole.Attributes["systemuser1.fullname"] as AliasedValue).Value.ToString());
                    }
                    if (Userrole.Attributes.Contains("systemuser1.internalemailaddress"))
                    {
                        Console.WriteLine("Email : - " + (Userrole.Attributes["systemuser1.internalemailaddress"] as AliasedValue).Value.ToString());
                    }
                    if (Userrole.Attributes.Contains("role2.roleid"))
                    {
                        Console.WriteLine("RoleId : - " + (Userrole.Attributes["role2.roleid"] as AliasedValue).Value.ToString());
                    }
                    if (Userrole.Attributes.Contains("role2.name"))
                    {
                        Console.WriteLine("Role Name : - " + (Userrole.Attributes["role2.name"] as AliasedValue).Value.ToString());
                    }

                }

 

Here is the results.

2019-01-26_23-29-29_roles

I have answered similar requirement here  in D365 community.

Hope this helps.


This was originally posted here.

Comments

*This post is locked for comments