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
lawlaw 

How to Map a subset of the Contact Object

I would like to not Map the whole contact object, but only map contacts where the RecordType = 'ID'.  Any help would be greatly appreciated.
Method is below.

      public void doAutoSubscribe(Map<Id, Contact> contactMap) {
     
        List<Subscription__c> existingSubs;       
        Set<ID> advisorIDs = contactMap.keySet();

    
        Map<Id,Set<Id>> alreadySubscribed = new Map<Id,Set<Id>>();
        List<Subscription__c> newSubs = new List<Subscription__c>();
        
        existingSubs =  [SELECT Advisor__c, Publication__c, Id FROM Subscription__c where Advisor__c in :advisorIDs and Publication__r.Subscribe_On_Advisor_Create__c = true];

    for(Id id: advisorIds) {
      alreadySubscribed.put(id, new Set<id>());
    }
    
    for(Subscription__c sub : existingSubs) {
      Set<id> currentSubcriptions = new Set<id>();
      if (alreadySubscribed.containsKey(sub.Advisor__c)) {
        currentSubcriptions = alreadySubscribed.get(sub.Advisor__c);        
      }
      currentSubcriptions.add(sub.Publication__c);
      alreadySubscribed.put(sub.Advisor__c, currentSubcriptions);          
    }
   
    List<Publication__c> pubs;
    pubs = [ Select id from Publication__c where Subscribe_On_Advisor_Create__c = true ] ;
          
       for(Publication__c p : pubs) {
         for(Id id : advisorIds) {
           Set<id> currentSubscriptions = alreadySubscribed.get(id);
           System.debug('THIS IS THE RECORDTYPE NAME 2----->'+RTName);
           //if (!currentSubscriptions.contains(p.id) ) {  
           
 
           if (RTName == 'ID' && !currentSubscriptions.contains(p.id)) {   // Add check for ID RecordType  Lreed 09/23/2014
             System.debug('Advisor Record TypeName 3----->'+ RTName);
             Subscription__c sub = new Subscription__c();
             sub.Advisor__c = id;
             sub.Publication__c = p.id;
             sub.Subscribed__c = true;
             newSubs.add(sub);
           }
         }
       }
       System.debug('NEW SUBS --------- >' + newSubs.size());
       System.debug('NEW SUBS EMPTY --------- >' + newSubs.isEmpty());
       if (!newSubs.isEmpty())  {
            System.debug('INSERT NEW SUBS --------- >');   
         insert newSubs; 
       }
       
     }
Balaji BondarBalaji Bondar
Hi Law,

Please refer below code and update it as per your metadata :
Map<Id, Contact> ReordTypecontactMap = new  Map<Id, Contact>();

RecordType recordTypeObj = [SELECT Id FROM RecordType WHERE SObjectType='Contact' AND Name='RECORDTYPE_NAME_HERE' LIMIT 1];

for(Id contactId : contactMap.Keyset() ){
	if(contactMap.get(contactId).recordtypeId == recordTypeObj.Id)
		ReordTypecontactMap.put(contactId , contactMap.get(contactId));
}

  Set<ID> advisorIDs = ReordTypecontactMap.keySet();
Important :
If this is what you were looking for then please mark it as a "SOLUTION" or You can Click on the "Like" Button if this was beneficial for you.