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
Nisar799Nisar799 

How to get "Default new user license" of Customer Portal in Apex code ?

I want to get Default new user license  of customer portal in apex code. how can i get default new user license or default new profile of the portal in apex code ?
Best Answer chosen by Nisar799
Nisar799Nisar799

I didn't get any Answer so I researched on my own and found the below solution.
Need MetadataService.cls https://github.com/financialforcedev/apex-mdapi/blob/master/apex-mdapi/src/classes/MetadataService.cls
Set up a Remote Site Setting to make authorized SOAP request. 

public void showSitesPortalProfile(){
    String siteName = 'YOUR SITE NAME'; // Your Site Name
    String portalName = '';
    String defaultUserLicenseName = '';
    String profileFullName = '';
    
    // Setup Connection
	MetadataService.MetadataPort service = new MetadataService.MetadataPort();
    service.SessionHeader = new MetadataService.SessionHeader_element();
    service.SessionHeader.sessionId = UserInfo.getSessionId();
    
    MetadataService.IReadResult resCustomSite = service.readMetaData('CustomSite', new String[] { siteName} );
    MetadataService.Metadata[] infoCustomSite = resCustomSite.getRecords();
    for(MetadataService.Metadata md : infoCustomSite){
        MetadataService.CustomSite siteInfo  = (MetadataService.CustomSite) md;
        portalName = siteInfo.portal;     
    }
    
    MetadataService.IReadResult res = service.readMetaData('Portal', new String[]{portalName});
    MetadataService.Metadata[] info = res.getRecords();
    for(MetadataService.Metadata md : info){
        MetadataService.Portal pt  = (MetadataService.Portal) md;
        System.debug(' portal.FullName = '+ pt.fullName);
        profileFullName = pt.selfRegUserDefaultProfile;     
    }
    
    MetadataService.IReadResult resProfile = service.readMetaData('Profile', new String[]{profileFullName});
    MetadataService.Metadata[] infoProfile = resProfile.getRecords();
    for(MetadataService.Metadata md : infoProfile){
        MetadataService.Profile pt  = (MetadataService.Profile) md;
        System.debug(' profile.FullName = '+ pt.fullName);
        defaultUserLicenseName = pt.userLicense;     
    }
	System.debug('###> Default User License of Site is = '+defaultUserLicenseName);
}