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
LaurenAkeLaurenAke 

Loop variable must be of type Id

Okay...what is staring me in the face that I'm missing here? It's saying this on line 18
 
// Send follow up notification to ERC team
trigger outpatientFollowUp on Opportunity (before insert, before update) {
  // Get Oppy record that has just changed to admitted
  Set<Id> admOpp = new Set<Id>();
  for (Opportunity oppLoop : Trigger.new) {
    if (oppLoop.StageName == 'Admitted' && oppLoop.Admission_Date__c != null) {
      admOpp.add(oppLoop.Id);
    }
  }

  // Get ERC Treatment Team Members
  Map<Id,ERC_Treatment_Member__c> ercTTsmap = new Map<Id,ERC_Treatment_Member__c>([SELECT Id, Provider_Email__c FROM ERC_Treatment_Member__c WHERE Admission__c IN:admOpp]);
    Set<Id> ercTTs = ercTTsmap.keyset();
    
  // Create a master list to hold the emails to send
  List<Messaging.SingleEmailMessage> mails = new List<Messaging.SingleEmailMessage>();
  
      for (ERC_Treatment_Member__c teamMember : ercTTs) {
    if (teamMember.Provider_Email__c != null) {

      // Create new Email
      Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage();
    
      // Set list of people who should get the email
      List<String> sendTo = new List<String>();
      sendTo.add(teamMember.Provider_Email__c);
      mail.setToAddresses(sendTo);

      // Set ID of template
      mail.setTemplateId('00X0G000001jlXV');
    
      // Set who the email is sent from
      mail.setReplyTo('lauren.ake@eatingrecovery.com');
    
      // Add email to master list
      mails.add(mail);
    }
  }
  // Send all emails
  Messaging.sendEmail(mails);
}

 
Best Answer chosen by LaurenAke
Amit Chaudhary 8Amit Chaudhary 8
You are try to use below line which is Set of ID not List of ERC_Treatment_Member__c
Set<Id> ercTTs = ercTTsmap.keyset();

Try to update your code like below (As you are not using map so converted to list)
// Send follow up notification to ERC team
trigger outpatientFollowUp on Opportunity (before insert, before update) 
{
	// Get Oppy record that has just changed to admitted
	Set<Id> admOpp = new Set<Id>();
	for (Opportunity oppLoop : Trigger.new) 
	{
		if (oppLoop.StageName == 'Admitted' && oppLoop.Admission_Date__c != null) {
			admOpp.add(oppLoop.Id);
		}
	}

	// Get ERC Treatment Team Members
	List<ERC_Treatment_Member__c> ListercTTs = [SELECT Id, Provider_Email__c FROM ERC_Treatment_Member__c WHERE Admission__c IN:admOpp] ;
	
	//Map<Id,ERC_Treatment_Member__c> ercTTsmap = new Map<Id,ERC_Treatment_Member__c>([SELECT Id, Provider_Email__c FROM ERC_Treatment_Member__c WHERE Admission__c IN:admOpp])    
	//Set<Id> ercTTs = ercTTsmap.keyset();
    
	// Create a master list to hold the emails to send
	List<Messaging.SingleEmailMessage> mails = new List<Messaging.SingleEmailMessage>();

	for(ERC_Treatment_Member__c teamMember : ListercTTs) 
	{
		if (teamMember.Provider_Email__c != null) 
		{

		  // Create new Email
		  Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage();
		
		  // Set list of people who should get the email
		  List<String> sendTo = new List<String>();
		  sendTo.add(teamMember.Provider_Email__c);
		  mail.setToAddresses(sendTo);

		  // Set ID of template
		  mail.setTemplateId('00X0G000001jlXV');
		
		  // Set who the email is sent from
		  mail.setReplyTo('lauren.ake@eatingrecovery.com');
		
		  // Add email to master list
		  mails.add(mail);
		}
	}
  // Send all emails
  Messaging.sendEmail(mails);
}

Let us know if this will help you
 

All Answers

Raj VakatiRaj Vakati
Hi, Please update the code as shown below. 
//


Map<Id,ERC_Treatment_Member__c> ercTTsmap = new Map<Id,ERC_Treatment_Member__c>([SELECT Id, Provider_Email__c FROM ERC_Treatment_Member__c WHERE Admission__c IN:admOpp]);

List<ERC_Treatment_Member__c> ercTTs = ercTTsmap.values();

 
// Send follow up notification to ERC team
trigger outpatientFollowUp on Opportunity (before insert, before update) {
  // Get Oppy record that has just changed to admitted
  Set<Id> admOpp = new Set<Id>();
  for (Opportunity oppLoop : Trigger.new) {
    if (oppLoop.StageName == 'Admitted' && oppLoop.Admission_Date__c != null) {
      admOpp.add(oppLoop.Id);
    }
  }

  // Get ERC Treatment Team Members
  Map<Id,ERC_Treatment_Member__c> ercTTsmap = new Map<Id,ERC_Treatment_Member__c>([SELECT Id, Provider_Email__c FROM ERC_Treatment_Member__c WHERE Admission__c IN:admOpp]);
    List<ERC_Treatment_Member__c> ercTTs = ercTTsmap.values();
    
  // Create a master list to hold the emails to send
  List<Messaging.SingleEmailMessage> mails = new List<Messaging.SingleEmailMessage>();
  
      for (ERC_Treatment_Member__c teamMember : ercTTs) {
    if (teamMember.Provider_Email__c != null) {

      // Create new Email
      Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage();
    
      // Set list of people who should get the email
      List<String> sendTo = new List<String>();
      sendTo.add(teamMember.Provider_Email__c);
      mail.setToAddresses(sendTo);

      // Set ID of template
      mail.setTemplateId('00X0G000001jlXV');
    
      // Set who the email is sent from
      mail.setReplyTo('lauren.ake@eatingrecovery.com');
    
      // Add email to master list
      mails.add(mail);
    }
  }
  // Send all emails
  Messaging.sendEmail(mails);
}

 
Amit Chaudhary 8Amit Chaudhary 8
You are try to use below line which is Set of ID not List of ERC_Treatment_Member__c
Set<Id> ercTTs = ercTTsmap.keyset();

Try to update your code like below (As you are not using map so converted to list)
// Send follow up notification to ERC team
trigger outpatientFollowUp on Opportunity (before insert, before update) 
{
	// Get Oppy record that has just changed to admitted
	Set<Id> admOpp = new Set<Id>();
	for (Opportunity oppLoop : Trigger.new) 
	{
		if (oppLoop.StageName == 'Admitted' && oppLoop.Admission_Date__c != null) {
			admOpp.add(oppLoop.Id);
		}
	}

	// Get ERC Treatment Team Members
	List<ERC_Treatment_Member__c> ListercTTs = [SELECT Id, Provider_Email__c FROM ERC_Treatment_Member__c WHERE Admission__c IN:admOpp] ;
	
	//Map<Id,ERC_Treatment_Member__c> ercTTsmap = new Map<Id,ERC_Treatment_Member__c>([SELECT Id, Provider_Email__c FROM ERC_Treatment_Member__c WHERE Admission__c IN:admOpp])    
	//Set<Id> ercTTs = ercTTsmap.keyset();
    
	// Create a master list to hold the emails to send
	List<Messaging.SingleEmailMessage> mails = new List<Messaging.SingleEmailMessage>();

	for(ERC_Treatment_Member__c teamMember : ListercTTs) 
	{
		if (teamMember.Provider_Email__c != null) 
		{

		  // Create new Email
		  Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage();
		
		  // Set list of people who should get the email
		  List<String> sendTo = new List<String>();
		  sendTo.add(teamMember.Provider_Email__c);
		  mail.setToAddresses(sendTo);

		  // Set ID of template
		  mail.setTemplateId('00X0G000001jlXV');
		
		  // Set who the email is sent from
		  mail.setReplyTo('lauren.ake@eatingrecovery.com');
		
		  // Add email to master list
		  mails.add(mail);
		}
	}
  // Send all emails
  Messaging.sendEmail(mails);
}

Let us know if this will help you
 
This was selected as the best answer