How to auto assign topics to records in Salesforce?

How to auto assign topics to records in Salesforce?

Sample Code:

trigger AccountTrigger on Account ( after insert ) {  
  
    Set < String > setBillCountries = new Set < String >();  
      
    for( Account acc : trigger.new ) {  
      
        if ( acc.BillingCountry != null )   
            setBillCountries.add( acc.BillingCountry );  
      
    }  
      
    if ( setBillCountries.size() > 0 ) {  
      
        Map < String, String > mapTopicNameId = new Map < String, String >();  
          
        for ( Topic objTopic : [ SELECT Id, Name FROM Topic WHERE Name IN: setBillCountries ] )  
            mapTopicNameId.put( objTopic.Name, objTopic.Id );  
  
        for( Account acc : trigger.new ) {  
          
            if ( acc.BillingCountry != null && mapTopicNameId.containsKey( acc.BillingCountry ) )  {  
                        
                ConnectAPI.Topic objTopic = ConnectAPI.Topics.assignTopic( null, String.valueOf( acc.Id ), mapTopicNameId.get( acc.BillingCountry ) );  
                  
            }  
              
        }  
      
    }  
  
} 
Note: 
Each assignTopic() counts against DML limit. 
Use assignTopicByName() to avoid SOQL and use Topic Name instead of Id.

Leave a Reply