This article provides three methods to retrieve a mapping of Salesforce Permission Set Licenses and the User IDs of the users assigned to them. A Permission Set License (PSL) grants a user access to a specific set of features beyond their base license. You can retrieve this mapping using a SOQL query in the Developer Console, using the Workbench REST Explorer, or by running Apex code in the Execute Anonymous Window to generate and email a CSV file with the results.
Open the Developer Console in Salesforce (from Salesforce Classic: click Your Name > Developer Console; from Lightning Experience: click the gear icon > Developer Console). In the Query Editor tab, run a SOQL query against the PermissionSetLicenseAssign object, selecting the PermissionSetLicense.MasterLabel field (the human-readable name of the license) and the AssigneeId field (the 15 or 18-character User ID of the assigned user). Click Execute in the lower right corner. The results show each user and their associated Permission Set License name.
SELECT PermissionSetLicense.MasterLabel, PermissionSetLicenseAssign.AssigneeId FROM PermissionSetLicenseAssign
In Workbench (workbench.developerforce.com), navigate to the Utilities tab and select REST Explorer. Send a GET request to the Salesforce Query API endpoint using the same SOQL statement, URL-encoded. For example, the query endpoint format is /services/data/vXX.0/query/?q=SELECT+PermissionSetLicense.MasterLabel,PermissionSetLicenseAssign.AssigneeId+FROM+PermissionSetLicenseAssign. Click Show Raw Response to view the JSON results, which you can copy, save, and process as needed.
/services/data/vxx.0/query/?q=SELECT+PermissionSetLicense.MasterLabel,PermissionSetLicenseAssign.AssigneeId+FROM+PermissionSetLicenseAssign
Open the Execute Anonymous Window in the Developer Console (Debug > Open Execute Anonymous Window). Paste Apex code that queries all PermissionSetLicenseAssign records, iterates through the results, builds a comma-separated string of license name and User ID pairs, attaches the resulting data as a CSV file using Messaging.EmailFileAttachment, and sends it to a specified email address using Messaging.SingleEmailMessage. Update the email address variable at the top of the code to your own email address before executing. After execution, check your inbox and download the CSV file.
string emailAddress='YOUR EMAIL ADDRESS GOES HERE';
string myRow;
string myCSVFile = '';
list<permissionsetlicenseassign> response = [SELECT PermissionSetLicense.MasterLabel,AssigneeId,PermissionSetLicense.ID FROM PermissionSetLicenseAssign];
for (permissionsetlicenseassign result:response) {
myRow = result.permissionsetlicense.masterlabel + ',' + result.AssigneeId;
system.debug (myRow);
myCSVFile += myRow + '\n';
}
Messaging.EmailFileAttachment csvAttachment = new Messaging.EmailFileAttachment();
Blob myBlob = blob.valueOf(myCSVFile);
String myName = 'UserID and Wave Permission Set License List.csv';
csvAttachment.setFileName(myName);
csvAttachment.setBody(myBlob);
Messaging.SingleEmailMessage myEmail = new Messaging.SingleEmailMessage();
String[] toAddresses = new String[]{emailAddress};
String subject = 'UserID and Wave Permission Set License List CSV';
myEmail.setSubject(subject);
myEmail.setToAddresses(toAddresses);
myEmail.setPlainTextBody('UserID and Wave Permission Set License List CSV');
myEmail.setFileAttachments(new Messaging.EmailFileAttachment[]{csvAttachment});
Messaging.SendEmailResult[] r = Messaging.sendEmail(new Messaging.SingleEmailMessage[]{myEmail});000383181

We use three kinds of cookies on our websites: required, functional, and advertising. You can choose whether functional and advertising cookies apply. Click on the different cookie categories to find out more about each category and to change the default settings.
Privacy Statement
Required cookies are necessary for basic website functionality. Some examples include: session cookies needed to transmit the website, authentication cookies, and security cookies.
Functional cookies enhance functions, performance, and services on the website. Some examples include: cookies used to analyze site traffic, cookies used for market research, and cookies used to display advertising that is not directed to a particular individual.
Advertising cookies track activity across websites in order to understand a viewer’s interests, and direct them specific marketing. Some examples include: cookies used for remarketing, or interest-based advertising.