Query a User to see which Permission Set(s), Public Group(s), and Queue(s) he/she belongs to query a Permission Set, Public Group, or Queue to see a list of its members. It leverages 3 hidden multi-picklists on the User record that track Permission Set(s), Public Group(s), and Queue(s) and a batch that runs nightly to update these fields with any changes in membership.
- A Visualforce page to query a User to see which Permission Set(s), Public Group(s), and Queue(s) he/she belongs to;
- 3 Visualforce pages, one each to query a Permission Set, Public Group, and Queue to see a list of their respective members;
- A component on a Salesforce System Case to automatically query the Profile, Permission Sets, Public Groups, and Queues of the Case Contact reporting on the 3 hidden multi picklists
Version 2 will replace the 3 multi picklists with a Custom Object and Related List that tracks "SObjects", including Permission Set(s), Public Group(s), and Queue(s). This will actually require a Junction Object since the relationships are many-to-many. It will be linked to the SObjects in Application Inventory.
- readme.md – describes core functions
- src – source folder created using eclipse on checkout from a dev org; may be used to deploy to another org.
Alternative to using eclipse or Ant—simply copy+paste apex code into salesforce using the SF text editor.
Required fields on User object:

To create Links:
Go to Setup > Build > Customize > Cases > Buttons,Links, and Actions

Add above Links to the Case Page Layout Custom Links by dragging …

Go to Cases … Page Layouts, and select/edit the desired Page Layout.

Create a New Section by dragging the Section icon/button to the page and label it 'Profile and Permission Sets'.

Then Drag the VF “caseContactPS” to the newly created section.

To Schedule nightly job: fasUserRelatedGroupingsScheduler, run on DeveloperConsole the following script:
fasUserRelatedGroupingsScheduler sh1 = new fasUserRelatedGroupingsScheduler();
String sch = '0 45 22 ? * MON-FRI'; // 10:00PM Monday thru Friday
String JobId = system.schedule('CEO User Related Groupings Batch Update', sch, sh1);







