Rise to distinction

Time & tide wait for none

Category Archives: PrincipalObjectAccess

Search shared data across CRM entities

In one of recent project requirements, I implemented a solution to share Personal Email Templates. Requirement was to allow super users to share specific templates with users/teams in readonly or write permissions. Though language filter provides a way to limit templates for specific users, it is still possible for users to see organization visible templates. What we needed was to have personal templates that could be further shared, specially when defined by users, in higher businessunits, that shall be visible for usage to users below.

CRM SDK allows templates to be owned by users / teams, and / or can also be shared, however the templates lists / views interface is not as intuitive as compared to commonly used entities. My solution comprised of a CRM dialog combining with workflow activity code, to implement very specific business logic as per requirements. Implementing this solution was not a big trick, however the more surprising part came later, when it was time to verify whether the specific templates were shared with required users. One way was to login in multiple browsers with different users and other was to somehow query CRM. Honestly, i did not like either of those approaches. So i looked into our favorite: XrmToolBox. There is a nice plugin named “Access Checker”, but I still could not see a list of all records shared with with users & teams. And there I got the idea “why not build one such plugin myself”. So folks, I wrote my first plugin for XrmToolBox, (hopefully not the last).

You can find it here:

Search shared CRM entity records (data across PrincipalObjectAccess)

I am using POA (PrincipalObjectAccess) entity here, but of course there is no direct querying of CRM database to read from this table. If you are not aware of POA => It is one central entity / table where CRM maintains which entity’s which record is shared with which user / team in which access mode.

In order to access this plugin, make sure you are using latest version of XrmToolBox (i am using 1.2018.10.29). In Plugin Store, look for “Search data in PrincipalObjectAccess (POA)”. Select the plugin and install

Search Shared Data in CRM Plugin in Plugin Store

Once installed, the plugin shall show (as below) in the main screen of XrmToolBox.Search POA Landscape

Open the plugin and explore, i hope you will find it interesting and helpful.

Search POA Landscape Plugin in Usage

Note: once i started working on this plugin, I thought of a number of additional features to implement in this interface. I will keep working on improvements, however your suggestions / comments / critics will be extremely helpful in improving this