function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
Salesforce seekarSalesforce seekar 

trigger to remove managed package licenses when user becomes inactive

The below  licenses are of manages packages assigned to a active user , On user creation page . when once user is made inactive , I want to de-activate all the manage packages  using trigger . can you please tell me how to write trigger .

trigger to remove managed package licenses when user becomes inactive
Best Answer chosen by Salesforce seekar

Please try below code. 
public void doRemoveLicense(List<id> inactiveUser) {
	if(inactiveUser != null && inactiveUser.size() > 0 ){
		Set<Id> packLicnSet = new Set<Id>();           
		//SOQL to get the package license/installed package Id
		List<PackageLicense> pckgLicenseList = [SELECT Id, NamespacePrefix FROM PackageLicense WHERE NamespacePrefix = 'TestPackage' OR NamespacePrefix = 'test'];
		system.debug('pckgLicenseList===' +pckgLicenseList);
		if(pckgLicenseList != null && pckgLicenseList.size() > 0){
            List<UserPackageLicense> uplList = new List<UserPackageLicense>([select id,PackageLicenseid,Userid from UserPackageLicense where PackageLicenseid IN :pckgLicenseList AND userId IN :inactiveUser]);
			List<UserPackageLicense> upl_removeList = new List<UserPackageLicense>();
            for(UserPackageLicense ux : uplList) {
                //Removing the license to the current user
            if(!upl_removeList.isEmpty()) {
                    delete upl_removeList; //DML operation
                }catch(Exception e){
					system.debug(' delete exception: '+ e.getStackTrace() + ' \n exception message :'+e.getMessage());
        }// end of Inactive user list

Pass on inactive user list to this method. 

Hope this will helps you.