Menu Close

XRMTOOLBOX SQL 4 CDS to get logged in users, Users with security roles in Dynamics 365

Hello Everyone,

Today i am going to show the XRMTOOLBOX tool SQL 4 CDS which allows you to use standard SQL syntax to query and manipulate your data and metadata in Dataverse and Dynamics 365.

Let’s gets started.

Here is the link for sql 4 cds

SQL 4 CDS tool Capabilities:

First of all many thanks to creator of this tool Mark Carrington.

As per the release notes:

Add support for XML data type and FOR XML clause.

Add support for Elastic tables

Add support for Stuff function

Add option to bypass plugins for SELECT statements

Improved error reporting for duplicated table/alias names

Improved error reporting for plugin errors

Improved efficiency of joins that can’t be translated to FetchXML

Improved error handling during bulk DML Operations

Fixed querying audit table

Fixed Collation label for metadata and virtual columns

Fixed hash joins on different collations

Fixed filtering on outer-joined solution table

Fixed multi threading error with partitioned aggregations

Fixed copying results with headers but no data rows.

I have used this tool for find out the users with role, below is the script:

SELECT identityid,
systemuser.internalemailaddress,
systemuser.fullname,
systemuser.title,
systemuser.systemuserid,
systemuser.isdisabled,
systemuser.islicensed,
account.name,
businessunit.name,
role.roleid,
businessunit.name,
role.name
FROM systemuserroles
INNER JOIN
systemuser AS systemuser
ON systemuser.systemuserid = systemuserroles.systemuserid
AND (systemuser.isdisabled = 0
AND systemuser.accessmode = 0)
LEFT OUTER JOIN
account AS account
ON account.accountid = systemuser.gmr_opcoid
INNER JOIN
businessunit AS businessunit
ON businessunit.businessunitid = systemuser.businessunitid
INNER JOIN
role AS role
ON role.roleid = systemuserroles.roleid
AND (role.name = ‘ Admin All’
OR role.name = ‘ Admin Owned’
OR role.name = ‘ Admin Project’
OR role.name = ‘ Analytics’
OR role.name = ‘ Basic ‘
OR role.name = ‘ Basic Client’
OR role.name = ‘ BI Integration’
OR role.name = ‘ Embedded Power BI Report’
OR role.name = ‘ Embedded Reports OC’
OR role.name = ‘ Financial Controller’
OR role.name = ‘ Import/Export’
OR role.name = ‘Integration’
OR role.name = ‘ Admin’
OR role.name = ‘ Manager’
OR role.name = ‘ Integration’
OR role.name = ‘ Service Account’);

Also for last logged in users:

SELECT a.actionname,
a.objectid AS systemuserid,
s.fullname,
s.domainname,
(SELECT TOP 1 c.createdon
FROM audit AS c
INNER JOIN
systemuser AS systemuser
ON systemuser.systemuserid = c.objectid
AND c.action = 64
AND c.createdon >= dateadd(month, -6, GETDATE())
WHERE c.objectid = a.objectid
ORDER BY c.createdon DESC) AS lastloginutc
FROM audit AS a
JOIN
systemuser AS s
ON a.objectid = s.systemuserid
AND a.action = 64
AND a.createdon >= dateadd(month, -6, GETDATE())
RIGHT OUTER JOIN
systemuserroles AS systemuserroles
ON systemuserroles.systemuserid = s.systemuserid
RIGHT OUTER JOIN
role AS role
ON role.roleid = systemuserroles.roleid
AND role.name LIKE ‘GMR SEC%’
GROUP BY a.actionname, a.objectid, s.fullname, s.domainname, s.internalemailaddress
ORDER BY lastloginutc DESC;

That’s it for today

I hope this helps.
Malla Reddy(@UK365GUY)
#365BlogPostsin365Days

Share this:
Posted in Blog

Related Posts