-
ChatterFeed
-
0Best Answers
-
0Likes Received
-
0Likes Given
-
3Questions
-
7Replies
Nullpointer Exception when using custom settings in Apex Class (namespace prefix exists)
Hello all,
I get a nullpointer exeption when writing an apex class for my trigger. The apex class and the trigger use Custom Settings.I the rror: "System.NullPointerException: Attempt to de-reference a null object". I guess the reason is that the Custom Setting object cannot be correctly allocated due to the namespace prefix (M2809) I have registered.
Does anybody have an idea how to put that correctly in the code or how to solve the problem?
Here is the apex class. I get the error in line 7 column 0.
1 @isTest
2 public class TaskTriggerTest {
3 static testMethod void testLastResearchActivity_v2(){
4
5 //Get custom settings
6 Research_Mailer__c settings = Research_Mailer__c.getInstance('RMS');
7 String RSM_Task_Record_Type_ID = settings.m2809__Task_Record_Type_ID__c;
8 String RSM_ChuykoId = settings.Chuyko_Owner_ID__c;
9 String RSM_GoncharovId = settings.Goncharov_Owner_ID__c;
10 String RSM_ProfileId = settings.Profile_ID__c;
//Create 3 users and insert them
List<User> userToInsert = new List<User>();
//User 1
User u1 = new user();
u1.FirstName = 'David';
u1.LastName = 'Owner 1';
...
I get a nullpointer exeption when writing an apex class for my trigger. The apex class and the trigger use Custom Settings.I the rror: "System.NullPointerException: Attempt to de-reference a null object". I guess the reason is that the Custom Setting object cannot be correctly allocated due to the namespace prefix (M2809) I have registered.
Does anybody have an idea how to put that correctly in the code or how to solve the problem?
Here is the apex class. I get the error in line 7 column 0.
1 @isTest
2 public class TaskTriggerTest {
3 static testMethod void testLastResearchActivity_v2(){
4
5 //Get custom settings
6 Research_Mailer__c settings = Research_Mailer__c.getInstance('RMS');
7 String RSM_Task_Record_Type_ID = settings.m2809__Task_Record_Type_ID__c;
8 String RSM_ChuykoId = settings.Chuyko_Owner_ID__c;
9 String RSM_GoncharovId = settings.Goncharov_Owner_ID__c;
10 String RSM_ProfileId = settings.Profile_ID__c;
//Create 3 users and insert them
List<User> userToInsert = new List<User>();
//User 1
User u1 = new user();
u1.FirstName = 'David';
u1.LastName = 'Owner 1';
...
-
- Michael Haase
- July 22, 2015
- Like
- 0
- Continue reading or reply
System.LimitException: Too many Email Invocations: 11
Dear colleagues,
could you please help? I am new to Apex and just struggeling with the "System.LimitException: Too many Email Invocations: 11" error.
I am trying to send an email to the Contact owner upon creation of a task for the contact. That works so far fine, except that I am breaking the governor limt for the number of emails to be sent.
This is my trigger:
trigger Individual_SM_Notification_v2 on Task (after insert) {
//Query for Contact
//Step 1: Create a Set of all Contacts to query
Set<String> allWhoIds = new Set<String>();
for (Task newTask : Trigger.new){
if (newTask.WhoId != null){
allWhoIds.add(newTask.WhoId);
system.debug('Step 1: ' + newTask.WhoId);
}
}
//Step 2:Query the Contact Ids from the WhoIds (from Step 1)
List <Contact> potentialContacts = [Select Id, Name, Owner.Email, Owner.LastName From Contact Where Id In :allWhoIds];
system.debug('List<Contact> Details: ' + potentialContacts);
//Step 3: Create Map to search Contacts by WhoId
Map<String, String>WhoIdToContactMap = new map<String, String>();
for (Contact c : potentialContacts){
WhoIdToContactMap.put(c.Id, c.Owner.Email);
}
// Create a master list to hold the emails we'll send
List<Messaging.SingleEmailMessage> mails = new List<Messaging.SingleEmailMessage>();
//Get the matching Contact Owner by the Contact Id
for (task newTask : Trigger.new){
String UserToUpdate = WhoIdToContactMap.get(newTask.WhoId);
System.debug('User to update: ' + UserToUpdate);
// Step 1: Create a new Email
Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage();
// Step 2: Set list of people who should get the email
List<String> sendTo = new List<String>();
sendTo.add(UserToUpdate);
mail.setToAddresses(sendTo);
System.debug('Step 2:' + sendTo);
// Step 3: Set who the email is sent from
mail.setReplyTo('SalesforceAdmin@bcsprime.com');
mail.setSenderDisplayName('BCS GMIB Research Team');
system.debug('Step 3:' + mail);
// (Optional) Set list of people who should be CC'ed
List<String> ccTo = new List<String>();
ccTo.add('mhaase@bcsprime.com');
mail.setCcAddresses(ccTo);
// Step 4. Set email contents - you can use variables!
mail.setSubject('Research Call Update');
String body = 'Date: ' + newTask.ActivityDate + '<br/>';
body += 'Caller: ' + newTask.Assigned_To_Dupe__c + '<br/>';
body += 'Company Name: ' + newTask.Account_Name_dupe__c + '<br/>';
body += 'Contact Name: ' + newTask.Client_Name__c + '<br/>';
body += 'Description: ' + newTask.Description + '<br/>';
mail.setHtmlBody(body);
// Step 5. Add your email to the master list
mails.add(mail);
// Step 6: Send all emails in the master list
Messaging.sendEmail(mails);
}
}
This is my test class:
@isTest
public class TestLastResearchActivity_v2 {
static testMethod void testLastResearchActivity_v2(){
Account acc = new Account();
acc.Name = 'ABC Investments';
acc.RecordTypeId = '012b0000000UQ0L';
insert acc;
Account acctId = [Select Id From Account Where Name = 'ABC Investments'];
Contact c = new Contact();
c.LastName = 'Meier';
c.RecordTypeId = '012b0000000USN6';
insert c;
//Lookup Contact Id
Contact taskContact = [Select ID From Contact Where LastName = 'Meier'];
//Create a list for the tasks to be updated
List<Task> taskList = new List<Task>();
//Tasks Chuyko
Task t = new Task();
t.WhatId = acctId.Id;
t.RecordTypeId = '012b0000000URMt';
t.OwnerId = '005b0000001R6YS';
t.Communication_Type__c = 'Conversation';
t.Whoid = taskContact.Id;
insert t;
//Tasks Petropavlovski
Task t2 = new Task();
t2.WhatId = acctId.Id;
t2.RecordTypeId = '012b0000000URMt';
t2.OwnerId = '005b0000001TATI';
t2.Communication_Type__c = 'Conversation';
t2.Whoid = taskContact.Id;
insert t2;
//Tasks Tikhomirov
Task t3 = new Task();
t3.WhatId = acctId.Id;
t3.RecordTypeId = '012b0000000URMt';
t3.OwnerId = '005b0000001TAgR';
t3.Communication_Type__c = 'Conversation';
t3.Whoid = taskContact.Id;
insert t3;
//Tasks Ibragimov
Task t4 = new Task();
t4.WhatId = acctId.Id;
t4.RecordTypeId = '012b0000000URMt';
t4.OwnerId = '005b0000001RKOq';
t4.Communication_Type__c = 'Conversation';
t4.Whoid = taskContact.Id;
insert t4;
//Tasks Naydennova
Task t5 = new Task();
t5.WhatId = acctId.Id;
t5.RecordTypeId = '012b0000000URMt';
t5.OwnerId = '005b0000001RKOl';
t5.Communication_Type__c = 'Conversation';
t5.Whoid = taskContact.Id;
insert t5;
//Tasks Goncharov
Task t6 = new Task();
t6.WhatId = acctId.Id;
t6.RecordTypeId = '012b0000000URMt';
t6.OwnerId = '005b0000001RKOg';
t6.Communication_Type__c = 'Conversation';
t6.Whoid = taskContact.Id;
insert t6;
//Tasks Tachennikov
Task t7 = new Task();
t7.WhatId = acctId.Id;
t7.RecordTypeId = '012b0000000URMt';
t7.OwnerId = '005b0000001TAUk';
t7.Communication_Type__c = 'Conversation';
t7.Whoid = taskContact.Id;
insert t7;
//Tasks Mitchell
Task t8 = new Task();
t8.WhatId = acctId.Id;
t8.RecordTypeId = '012b0000000URMt';
t8.OwnerId = '005b0000001RKOv';
t8.Communication_Type__c = 'Conversation';
t8.Whoid = taskContact.Id;
insert t8;
//Tasks Kotok
Task t9 = new Task();
t9.WhatId = acctId.Id;
t9.RecordTypeId = '012b0000000URMt';
t9.OwnerId = '005b0000001TAb7';
t9.Communication_Type__c = 'Conversation';
t9.Whoid = taskContact.Id;
insert t9;
}
}
Thanks in advance for your help!!!
could you please help? I am new to Apex and just struggeling with the "System.LimitException: Too many Email Invocations: 11" error.
I am trying to send an email to the Contact owner upon creation of a task for the contact. That works so far fine, except that I am breaking the governor limt for the number of emails to be sent.
This is my trigger:
trigger Individual_SM_Notification_v2 on Task (after insert) {
//Query for Contact
//Step 1: Create a Set of all Contacts to query
Set<String> allWhoIds = new Set<String>();
for (Task newTask : Trigger.new){
if (newTask.WhoId != null){
allWhoIds.add(newTask.WhoId);
system.debug('Step 1: ' + newTask.WhoId);
}
}
//Step 2:Query the Contact Ids from the WhoIds (from Step 1)
List <Contact> potentialContacts = [Select Id, Name, Owner.Email, Owner.LastName From Contact Where Id In :allWhoIds];
system.debug('List<Contact> Details: ' + potentialContacts);
//Step 3: Create Map to search Contacts by WhoId
Map<String, String>WhoIdToContactMap = new map<String, String>();
for (Contact c : potentialContacts){
WhoIdToContactMap.put(c.Id, c.Owner.Email);
}
// Create a master list to hold the emails we'll send
List<Messaging.SingleEmailMessage> mails = new List<Messaging.SingleEmailMessage>();
//Get the matching Contact Owner by the Contact Id
for (task newTask : Trigger.new){
String UserToUpdate = WhoIdToContactMap.get(newTask.WhoId);
System.debug('User to update: ' + UserToUpdate);
// Step 1: Create a new Email
Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage();
// Step 2: Set list of people who should get the email
List<String> sendTo = new List<String>();
sendTo.add(UserToUpdate);
mail.setToAddresses(sendTo);
System.debug('Step 2:' + sendTo);
// Step 3: Set who the email is sent from
mail.setReplyTo('SalesforceAdmin@bcsprime.com');
mail.setSenderDisplayName('BCS GMIB Research Team');
system.debug('Step 3:' + mail);
// (Optional) Set list of people who should be CC'ed
List<String> ccTo = new List<String>();
ccTo.add('mhaase@bcsprime.com');
mail.setCcAddresses(ccTo);
// Step 4. Set email contents - you can use variables!
mail.setSubject('Research Call Update');
String body = 'Date: ' + newTask.ActivityDate + '<br/>';
body += 'Caller: ' + newTask.Assigned_To_Dupe__c + '<br/>';
body += 'Company Name: ' + newTask.Account_Name_dupe__c + '<br/>';
body += 'Contact Name: ' + newTask.Client_Name__c + '<br/>';
body += 'Description: ' + newTask.Description + '<br/>';
mail.setHtmlBody(body);
// Step 5. Add your email to the master list
mails.add(mail);
// Step 6: Send all emails in the master list
Messaging.sendEmail(mails);
}
}
This is my test class:
@isTest
public class TestLastResearchActivity_v2 {
static testMethod void testLastResearchActivity_v2(){
Account acc = new Account();
acc.Name = 'ABC Investments';
acc.RecordTypeId = '012b0000000UQ0L';
insert acc;
Account acctId = [Select Id From Account Where Name = 'ABC Investments'];
Contact c = new Contact();
c.LastName = 'Meier';
c.RecordTypeId = '012b0000000USN6';
insert c;
//Lookup Contact Id
Contact taskContact = [Select ID From Contact Where LastName = 'Meier'];
//Create a list for the tasks to be updated
List<Task> taskList = new List<Task>();
//Tasks Chuyko
Task t = new Task();
t.WhatId = acctId.Id;
t.RecordTypeId = '012b0000000URMt';
t.OwnerId = '005b0000001R6YS';
t.Communication_Type__c = 'Conversation';
t.Whoid = taskContact.Id;
insert t;
//Tasks Petropavlovski
Task t2 = new Task();
t2.WhatId = acctId.Id;
t2.RecordTypeId = '012b0000000URMt';
t2.OwnerId = '005b0000001TATI';
t2.Communication_Type__c = 'Conversation';
t2.Whoid = taskContact.Id;
insert t2;
//Tasks Tikhomirov
Task t3 = new Task();
t3.WhatId = acctId.Id;
t3.RecordTypeId = '012b0000000URMt';
t3.OwnerId = '005b0000001TAgR';
t3.Communication_Type__c = 'Conversation';
t3.Whoid = taskContact.Id;
insert t3;
//Tasks Ibragimov
Task t4 = new Task();
t4.WhatId = acctId.Id;
t4.RecordTypeId = '012b0000000URMt';
t4.OwnerId = '005b0000001RKOq';
t4.Communication_Type__c = 'Conversation';
t4.Whoid = taskContact.Id;
insert t4;
//Tasks Naydennova
Task t5 = new Task();
t5.WhatId = acctId.Id;
t5.RecordTypeId = '012b0000000URMt';
t5.OwnerId = '005b0000001RKOl';
t5.Communication_Type__c = 'Conversation';
t5.Whoid = taskContact.Id;
insert t5;
//Tasks Goncharov
Task t6 = new Task();
t6.WhatId = acctId.Id;
t6.RecordTypeId = '012b0000000URMt';
t6.OwnerId = '005b0000001RKOg';
t6.Communication_Type__c = 'Conversation';
t6.Whoid = taskContact.Id;
insert t6;
//Tasks Tachennikov
Task t7 = new Task();
t7.WhatId = acctId.Id;
t7.RecordTypeId = '012b0000000URMt';
t7.OwnerId = '005b0000001TAUk';
t7.Communication_Type__c = 'Conversation';
t7.Whoid = taskContact.Id;
insert t7;
//Tasks Mitchell
Task t8 = new Task();
t8.WhatId = acctId.Id;
t8.RecordTypeId = '012b0000000URMt';
t8.OwnerId = '005b0000001RKOv';
t8.Communication_Type__c = 'Conversation';
t8.Whoid = taskContact.Id;
insert t8;
//Tasks Kotok
Task t9 = new Task();
t9.WhatId = acctId.Id;
t9.RecordTypeId = '012b0000000URMt';
t9.OwnerId = '005b0000001TAb7';
t9.Communication_Type__c = 'Conversation';
t9.Whoid = taskContact.Id;
insert t9;
}
}
Thanks in advance for your help!!!
-
- Michael Haase
- May 13, 2015
- Like
- 0
- Continue reading or reply
Field update on Contact record when new activity with Record Type 'Log Call' was created
Hi everyone. I am new to APEX and need some help.
I need to update the date field "Last_Reseach_Call__c) on the contact record always when a new task with record type "Log Call" was created. This field update cannot be done via workflow, therefore I am trying to solve the problem with an Apex trigger.
Here is the code I have so far:
trigger UpdateContactLastActivity on Task (after insert, after update)
{
// The set used to hold the Ids of the Contacts that need to be updated
Set <Id> ContactIds = new Set <Id> ();
// The actual Contacts to save
List <Contact> ContactsToUpdate = new List <Contact> ();
// Now we go through and if we find Tasks that are marked as Research Call, then update the Contact with "Last Research Contact" date
for (Task t : Trigger.new)
{
if (t.RecordType)
{
ContactIds.add (t.Contact);
}
}
// Now have the list of Contacts, fetch the associated Contact records and updatethem
if (!ContactIds.isEmpty () )
{
for (Contact c : [select Id, LastName from Contact where Id in :ContactIds])
{
contact.Last_Research_Contact__c = Today();
ContactsToUpdate.add (c);
}
update ContactsToUpdate;
}
}
I currently cannot save the code as I get an error ЭCompile Error: Invalid field Contact for SObject Task at line 15 column 17".
Could please someone advise where the problem is and how the correct code should look like?
Thanks an advance!
I need to update the date field "Last_Reseach_Call__c) on the contact record always when a new task with record type "Log Call" was created. This field update cannot be done via workflow, therefore I am trying to solve the problem with an Apex trigger.
Here is the code I have so far:
trigger UpdateContactLastActivity on Task (after insert, after update)
{
// The set used to hold the Ids of the Contacts that need to be updated
Set <Id> ContactIds = new Set <Id> ();
// The actual Contacts to save
List <Contact> ContactsToUpdate = new List <Contact> ();
// Now we go through and if we find Tasks that are marked as Research Call, then update the Contact with "Last Research Contact" date
for (Task t : Trigger.new)
{
if (t.RecordType)
{
ContactIds.add (t.Contact);
}
}
// Now have the list of Contacts, fetch the associated Contact records and updatethem
if (!ContactIds.isEmpty () )
{
for (Contact c : [select Id, LastName from Contact where Id in :ContactIds])
{
contact.Last_Research_Contact__c = Today();
ContactsToUpdate.add (c);
}
update ContactsToUpdate;
}
}
I currently cannot save the code as I get an error ЭCompile Error: Invalid field Contact for SObject Task at line 15 column 17".
Could please someone advise where the problem is and how the correct code should look like?
Thanks an advance!
-
- Michael Haase
- January 16, 2015
- Like
- 0
- Continue reading or reply
Nullpointer Exception when using custom settings in Apex Class (namespace prefix exists)
Hello all,
I get a nullpointer exeption when writing an apex class for my trigger. The apex class and the trigger use Custom Settings.I the rror: "System.NullPointerException: Attempt to de-reference a null object". I guess the reason is that the Custom Setting object cannot be correctly allocated due to the namespace prefix (M2809) I have registered.
Does anybody have an idea how to put that correctly in the code or how to solve the problem?
Here is the apex class. I get the error in line 7 column 0.
1 @isTest
2 public class TaskTriggerTest {
3 static testMethod void testLastResearchActivity_v2(){
4
5 //Get custom settings
6 Research_Mailer__c settings = Research_Mailer__c.getInstance('RMS');
7 String RSM_Task_Record_Type_ID = settings.m2809__Task_Record_Type_ID__c;
8 String RSM_ChuykoId = settings.Chuyko_Owner_ID__c;
9 String RSM_GoncharovId = settings.Goncharov_Owner_ID__c;
10 String RSM_ProfileId = settings.Profile_ID__c;
//Create 3 users and insert them
List<User> userToInsert = new List<User>();
//User 1
User u1 = new user();
u1.FirstName = 'David';
u1.LastName = 'Owner 1';
...
I get a nullpointer exeption when writing an apex class for my trigger. The apex class and the trigger use Custom Settings.I the rror: "System.NullPointerException: Attempt to de-reference a null object". I guess the reason is that the Custom Setting object cannot be correctly allocated due to the namespace prefix (M2809) I have registered.
Does anybody have an idea how to put that correctly in the code or how to solve the problem?
Here is the apex class. I get the error in line 7 column 0.
1 @isTest
2 public class TaskTriggerTest {
3 static testMethod void testLastResearchActivity_v2(){
4
5 //Get custom settings
6 Research_Mailer__c settings = Research_Mailer__c.getInstance('RMS');
7 String RSM_Task_Record_Type_ID = settings.m2809__Task_Record_Type_ID__c;
8 String RSM_ChuykoId = settings.Chuyko_Owner_ID__c;
9 String RSM_GoncharovId = settings.Goncharov_Owner_ID__c;
10 String RSM_ProfileId = settings.Profile_ID__c;
//Create 3 users and insert them
List<User> userToInsert = new List<User>();
//User 1
User u1 = new user();
u1.FirstName = 'David';
u1.LastName = 'Owner 1';
...
- Michael Haase
- July 22, 2015
- Like
- 0
- Continue reading or reply
System.LimitException: Too many Email Invocations: 11
Dear colleagues,
could you please help? I am new to Apex and just struggeling with the "System.LimitException: Too many Email Invocations: 11" error.
I am trying to send an email to the Contact owner upon creation of a task for the contact. That works so far fine, except that I am breaking the governor limt for the number of emails to be sent.
This is my trigger:
trigger Individual_SM_Notification_v2 on Task (after insert) {
//Query for Contact
//Step 1: Create a Set of all Contacts to query
Set<String> allWhoIds = new Set<String>();
for (Task newTask : Trigger.new){
if (newTask.WhoId != null){
allWhoIds.add(newTask.WhoId);
system.debug('Step 1: ' + newTask.WhoId);
}
}
//Step 2:Query the Contact Ids from the WhoIds (from Step 1)
List <Contact> potentialContacts = [Select Id, Name, Owner.Email, Owner.LastName From Contact Where Id In :allWhoIds];
system.debug('List<Contact> Details: ' + potentialContacts);
//Step 3: Create Map to search Contacts by WhoId
Map<String, String>WhoIdToContactMap = new map<String, String>();
for (Contact c : potentialContacts){
WhoIdToContactMap.put(c.Id, c.Owner.Email);
}
// Create a master list to hold the emails we'll send
List<Messaging.SingleEmailMessage> mails = new List<Messaging.SingleEmailMessage>();
//Get the matching Contact Owner by the Contact Id
for (task newTask : Trigger.new){
String UserToUpdate = WhoIdToContactMap.get(newTask.WhoId);
System.debug('User to update: ' + UserToUpdate);
// Step 1: Create a new Email
Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage();
// Step 2: Set list of people who should get the email
List<String> sendTo = new List<String>();
sendTo.add(UserToUpdate);
mail.setToAddresses(sendTo);
System.debug('Step 2:' + sendTo);
// Step 3: Set who the email is sent from
mail.setReplyTo('SalesforceAdmin@bcsprime.com');
mail.setSenderDisplayName('BCS GMIB Research Team');
system.debug('Step 3:' + mail);
// (Optional) Set list of people who should be CC'ed
List<String> ccTo = new List<String>();
ccTo.add('mhaase@bcsprime.com');
mail.setCcAddresses(ccTo);
// Step 4. Set email contents - you can use variables!
mail.setSubject('Research Call Update');
String body = 'Date: ' + newTask.ActivityDate + '<br/>';
body += 'Caller: ' + newTask.Assigned_To_Dupe__c + '<br/>';
body += 'Company Name: ' + newTask.Account_Name_dupe__c + '<br/>';
body += 'Contact Name: ' + newTask.Client_Name__c + '<br/>';
body += 'Description: ' + newTask.Description + '<br/>';
mail.setHtmlBody(body);
// Step 5. Add your email to the master list
mails.add(mail);
// Step 6: Send all emails in the master list
Messaging.sendEmail(mails);
}
}
This is my test class:
@isTest
public class TestLastResearchActivity_v2 {
static testMethod void testLastResearchActivity_v2(){
Account acc = new Account();
acc.Name = 'ABC Investments';
acc.RecordTypeId = '012b0000000UQ0L';
insert acc;
Account acctId = [Select Id From Account Where Name = 'ABC Investments'];
Contact c = new Contact();
c.LastName = 'Meier';
c.RecordTypeId = '012b0000000USN6';
insert c;
//Lookup Contact Id
Contact taskContact = [Select ID From Contact Where LastName = 'Meier'];
//Create a list for the tasks to be updated
List<Task> taskList = new List<Task>();
//Tasks Chuyko
Task t = new Task();
t.WhatId = acctId.Id;
t.RecordTypeId = '012b0000000URMt';
t.OwnerId = '005b0000001R6YS';
t.Communication_Type__c = 'Conversation';
t.Whoid = taskContact.Id;
insert t;
//Tasks Petropavlovski
Task t2 = new Task();
t2.WhatId = acctId.Id;
t2.RecordTypeId = '012b0000000URMt';
t2.OwnerId = '005b0000001TATI';
t2.Communication_Type__c = 'Conversation';
t2.Whoid = taskContact.Id;
insert t2;
//Tasks Tikhomirov
Task t3 = new Task();
t3.WhatId = acctId.Id;
t3.RecordTypeId = '012b0000000URMt';
t3.OwnerId = '005b0000001TAgR';
t3.Communication_Type__c = 'Conversation';
t3.Whoid = taskContact.Id;
insert t3;
//Tasks Ibragimov
Task t4 = new Task();
t4.WhatId = acctId.Id;
t4.RecordTypeId = '012b0000000URMt';
t4.OwnerId = '005b0000001RKOq';
t4.Communication_Type__c = 'Conversation';
t4.Whoid = taskContact.Id;
insert t4;
//Tasks Naydennova
Task t5 = new Task();
t5.WhatId = acctId.Id;
t5.RecordTypeId = '012b0000000URMt';
t5.OwnerId = '005b0000001RKOl';
t5.Communication_Type__c = 'Conversation';
t5.Whoid = taskContact.Id;
insert t5;
//Tasks Goncharov
Task t6 = new Task();
t6.WhatId = acctId.Id;
t6.RecordTypeId = '012b0000000URMt';
t6.OwnerId = '005b0000001RKOg';
t6.Communication_Type__c = 'Conversation';
t6.Whoid = taskContact.Id;
insert t6;
//Tasks Tachennikov
Task t7 = new Task();
t7.WhatId = acctId.Id;
t7.RecordTypeId = '012b0000000URMt';
t7.OwnerId = '005b0000001TAUk';
t7.Communication_Type__c = 'Conversation';
t7.Whoid = taskContact.Id;
insert t7;
//Tasks Mitchell
Task t8 = new Task();
t8.WhatId = acctId.Id;
t8.RecordTypeId = '012b0000000URMt';
t8.OwnerId = '005b0000001RKOv';
t8.Communication_Type__c = 'Conversation';
t8.Whoid = taskContact.Id;
insert t8;
//Tasks Kotok
Task t9 = new Task();
t9.WhatId = acctId.Id;
t9.RecordTypeId = '012b0000000URMt';
t9.OwnerId = '005b0000001TAb7';
t9.Communication_Type__c = 'Conversation';
t9.Whoid = taskContact.Id;
insert t9;
}
}
Thanks in advance for your help!!!
could you please help? I am new to Apex and just struggeling with the "System.LimitException: Too many Email Invocations: 11" error.
I am trying to send an email to the Contact owner upon creation of a task for the contact. That works so far fine, except that I am breaking the governor limt for the number of emails to be sent.
This is my trigger:
trigger Individual_SM_Notification_v2 on Task (after insert) {
//Query for Contact
//Step 1: Create a Set of all Contacts to query
Set<String> allWhoIds = new Set<String>();
for (Task newTask : Trigger.new){
if (newTask.WhoId != null){
allWhoIds.add(newTask.WhoId);
system.debug('Step 1: ' + newTask.WhoId);
}
}
//Step 2:Query the Contact Ids from the WhoIds (from Step 1)
List <Contact> potentialContacts = [Select Id, Name, Owner.Email, Owner.LastName From Contact Where Id In :allWhoIds];
system.debug('List<Contact> Details: ' + potentialContacts);
//Step 3: Create Map to search Contacts by WhoId
Map<String, String>WhoIdToContactMap = new map<String, String>();
for (Contact c : potentialContacts){
WhoIdToContactMap.put(c.Id, c.Owner.Email);
}
// Create a master list to hold the emails we'll send
List<Messaging.SingleEmailMessage> mails = new List<Messaging.SingleEmailMessage>();
//Get the matching Contact Owner by the Contact Id
for (task newTask : Trigger.new){
String UserToUpdate = WhoIdToContactMap.get(newTask.WhoId);
System.debug('User to update: ' + UserToUpdate);
// Step 1: Create a new Email
Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage();
// Step 2: Set list of people who should get the email
List<String> sendTo = new List<String>();
sendTo.add(UserToUpdate);
mail.setToAddresses(sendTo);
System.debug('Step 2:' + sendTo);
// Step 3: Set who the email is sent from
mail.setReplyTo('SalesforceAdmin@bcsprime.com');
mail.setSenderDisplayName('BCS GMIB Research Team');
system.debug('Step 3:' + mail);
// (Optional) Set list of people who should be CC'ed
List<String> ccTo = new List<String>();
ccTo.add('mhaase@bcsprime.com');
mail.setCcAddresses(ccTo);
// Step 4. Set email contents - you can use variables!
mail.setSubject('Research Call Update');
String body = 'Date: ' + newTask.ActivityDate + '<br/>';
body += 'Caller: ' + newTask.Assigned_To_Dupe__c + '<br/>';
body += 'Company Name: ' + newTask.Account_Name_dupe__c + '<br/>';
body += 'Contact Name: ' + newTask.Client_Name__c + '<br/>';
body += 'Description: ' + newTask.Description + '<br/>';
mail.setHtmlBody(body);
// Step 5. Add your email to the master list
mails.add(mail);
// Step 6: Send all emails in the master list
Messaging.sendEmail(mails);
}
}
This is my test class:
@isTest
public class TestLastResearchActivity_v2 {
static testMethod void testLastResearchActivity_v2(){
Account acc = new Account();
acc.Name = 'ABC Investments';
acc.RecordTypeId = '012b0000000UQ0L';
insert acc;
Account acctId = [Select Id From Account Where Name = 'ABC Investments'];
Contact c = new Contact();
c.LastName = 'Meier';
c.RecordTypeId = '012b0000000USN6';
insert c;
//Lookup Contact Id
Contact taskContact = [Select ID From Contact Where LastName = 'Meier'];
//Create a list for the tasks to be updated
List<Task> taskList = new List<Task>();
//Tasks Chuyko
Task t = new Task();
t.WhatId = acctId.Id;
t.RecordTypeId = '012b0000000URMt';
t.OwnerId = '005b0000001R6YS';
t.Communication_Type__c = 'Conversation';
t.Whoid = taskContact.Id;
insert t;
//Tasks Petropavlovski
Task t2 = new Task();
t2.WhatId = acctId.Id;
t2.RecordTypeId = '012b0000000URMt';
t2.OwnerId = '005b0000001TATI';
t2.Communication_Type__c = 'Conversation';
t2.Whoid = taskContact.Id;
insert t2;
//Tasks Tikhomirov
Task t3 = new Task();
t3.WhatId = acctId.Id;
t3.RecordTypeId = '012b0000000URMt';
t3.OwnerId = '005b0000001TAgR';
t3.Communication_Type__c = 'Conversation';
t3.Whoid = taskContact.Id;
insert t3;
//Tasks Ibragimov
Task t4 = new Task();
t4.WhatId = acctId.Id;
t4.RecordTypeId = '012b0000000URMt';
t4.OwnerId = '005b0000001RKOq';
t4.Communication_Type__c = 'Conversation';
t4.Whoid = taskContact.Id;
insert t4;
//Tasks Naydennova
Task t5 = new Task();
t5.WhatId = acctId.Id;
t5.RecordTypeId = '012b0000000URMt';
t5.OwnerId = '005b0000001RKOl';
t5.Communication_Type__c = 'Conversation';
t5.Whoid = taskContact.Id;
insert t5;
//Tasks Goncharov
Task t6 = new Task();
t6.WhatId = acctId.Id;
t6.RecordTypeId = '012b0000000URMt';
t6.OwnerId = '005b0000001RKOg';
t6.Communication_Type__c = 'Conversation';
t6.Whoid = taskContact.Id;
insert t6;
//Tasks Tachennikov
Task t7 = new Task();
t7.WhatId = acctId.Id;
t7.RecordTypeId = '012b0000000URMt';
t7.OwnerId = '005b0000001TAUk';
t7.Communication_Type__c = 'Conversation';
t7.Whoid = taskContact.Id;
insert t7;
//Tasks Mitchell
Task t8 = new Task();
t8.WhatId = acctId.Id;
t8.RecordTypeId = '012b0000000URMt';
t8.OwnerId = '005b0000001RKOv';
t8.Communication_Type__c = 'Conversation';
t8.Whoid = taskContact.Id;
insert t8;
//Tasks Kotok
Task t9 = new Task();
t9.WhatId = acctId.Id;
t9.RecordTypeId = '012b0000000URMt';
t9.OwnerId = '005b0000001TAb7';
t9.Communication_Type__c = 'Conversation';
t9.Whoid = taskContact.Id;
insert t9;
}
}
Thanks in advance for your help!!!
- Michael Haase
- May 13, 2015
- Like
- 0
- Continue reading or reply
How to hide New Event button from Home Page?
Hi,
Is there any possibility to remove/hide "New Event" button from Home Page?

Thanks.
Is there any possibility to remove/hide "New Event" button from Home Page?
Thanks.
- JayaJaya
- April 14, 2015
- Like
- 0
- Continue reading or reply
Test Class Error: CANNOT_EXECUTE_FLOW_TRIGGER
Hi, I receive the following error in a test class but have not been able to repeat them in non test running scenarios.
"System.DmlException: Insert failed. First exception on row 0; first error: CANNOT_EXECUTE_FLOW_TRIGGER, The record couldn’t be saved because it failed to trigger a flow.
A flow trigger failed to execute the flow with version ID 301O00000008hM6.
Contact your administrator for help.: []"
Does anyone know if there could be an issue running flows in test class contexts but not otherwise?
Thanks.
"System.DmlException: Insert failed. First exception on row 0; first error: CANNOT_EXECUTE_FLOW_TRIGGER, The record couldn’t be saved because it failed to trigger a flow.
A flow trigger failed to execute the flow with version ID 301O00000008hM6.
Contact your administrator for help.: []"
Does anyone know if there could be an issue running flows in test class contexts but not otherwise?
Thanks.
- SalesRed
- January 22, 2015
- Like
- 1
- Continue reading or reply
Field update on Contact record when new activity with Record Type 'Log Call' was created
Hi everyone. I am new to APEX and need some help.
I need to update the date field "Last_Reseach_Call__c) on the contact record always when a new task with record type "Log Call" was created. This field update cannot be done via workflow, therefore I am trying to solve the problem with an Apex trigger.
Here is the code I have so far:
trigger UpdateContactLastActivity on Task (after insert, after update)
{
// The set used to hold the Ids of the Contacts that need to be updated
Set <Id> ContactIds = new Set <Id> ();
// The actual Contacts to save
List <Contact> ContactsToUpdate = new List <Contact> ();
// Now we go through and if we find Tasks that are marked as Research Call, then update the Contact with "Last Research Contact" date
for (Task t : Trigger.new)
{
if (t.RecordType)
{
ContactIds.add (t.Contact);
}
}
// Now have the list of Contacts, fetch the associated Contact records and updatethem
if (!ContactIds.isEmpty () )
{
for (Contact c : [select Id, LastName from Contact where Id in :ContactIds])
{
contact.Last_Research_Contact__c = Today();
ContactsToUpdate.add (c);
}
update ContactsToUpdate;
}
}
I currently cannot save the code as I get an error ЭCompile Error: Invalid field Contact for SObject Task at line 15 column 17".
Could please someone advise where the problem is and how the correct code should look like?
Thanks an advance!
I need to update the date field "Last_Reseach_Call__c) on the contact record always when a new task with record type "Log Call" was created. This field update cannot be done via workflow, therefore I am trying to solve the problem with an Apex trigger.
Here is the code I have so far:
trigger UpdateContactLastActivity on Task (after insert, after update)
{
// The set used to hold the Ids of the Contacts that need to be updated
Set <Id> ContactIds = new Set <Id> ();
// The actual Contacts to save
List <Contact> ContactsToUpdate = new List <Contact> ();
// Now we go through and if we find Tasks that are marked as Research Call, then update the Contact with "Last Research Contact" date
for (Task t : Trigger.new)
{
if (t.RecordType)
{
ContactIds.add (t.Contact);
}
}
// Now have the list of Contacts, fetch the associated Contact records and updatethem
if (!ContactIds.isEmpty () )
{
for (Contact c : [select Id, LastName from Contact where Id in :ContactIds])
{
contact.Last_Research_Contact__c = Today();
ContactsToUpdate.add (c);
}
update ContactsToUpdate;
}
}
I currently cannot save the code as I get an error ЭCompile Error: Invalid field Contact for SObject Task at line 15 column 17".
Could please someone advise where the problem is and how the correct code should look like?
Thanks an advance!
- Michael Haase
- January 16, 2015
- Like
- 0
- Continue reading or reply