You need to sign in to do that
Don't have an account?
Katie Hamberg
Trigger only working for admins
Hello,
We have the below trigger that is working for me as an admin, but it's not working for other profiles. What the trigger does is it forces the user to always have an open task until the record is completed.
trigger createNextTask on Task (before update) {
Map<Id,string> whatIds = new Map<Id,string>();
Set<Id> ECIds = new Set<Id>();
Set<Id> EPIds = new Set<Id>();
Map<Id,string> whoIds = new Map<Id,string>();
set<Id> EI2ContactIds = new Set<Id>();
set<Id> EI2ProjectIds = new Set<Id>();
List<Task> EI2tskList = new List<Task>();
Task EI2tsk;
private Id eidTaskRecordTypeId = Schema.SObjectType.Task.getRecordTypeInfosByName().get('Outreach').getRecordTypeId();
if(TriggerHandler.firstRun) {
for(task t:trigger.new){
if(t.RecordTypeId == eidTaskRecordTypeId){
string whId = t.WhoId;
if(whId!= null && whId.startsWith('003')&& !EI2ContactIds.contains(t.WhoId)){
EI2ContactIds.add(t.WhoId);
}
string whaId = t.WhatId;
// cnte sandbox id for ISEIF and EI2 Projects is a1Z
// production id for ISEIF and EI2 Projects is a0Y
if(whaId!= null && whaId.startsWith('a0Y')&& !EI2ProjectIds.contains(t.WhatId)){
EI2ProjectIds.add(t.WhatId);
}
}
}
for(contact c :[select Id,EI2_Act_on_Status__c,ARES_Status__c,Real_Time_Status__c from contact where Id IN :EI2ContactIds ]){
if( ( c.EI2_Act_on_Status__c =='Interested'|| c.EI2_Act_on_Status__c == 'Referred')||(c.ARES_Status__c == 'Interested'||c.ARES_Status__c =='Referred')
||(c.Real_Time_Status__c == 'Interested'|| c.Real_Time_Status__c == 'Referred')){
ECIds.add(c.id);
}
}
for(ISEIF_and_EI2_Projects__c p :[select Id, Project_Status__c, ARES_Status__c, EI2_Project_Status__c From ISEIF_and_EI2_Projects__c where Id IN :EI2ProjectIds ]) {
if( p.EI2_Project_Status__c=='Active' || p.EI2_Project_Status__c =='On Hold' || p.EI2_Project_Status__c=='FO Hold' ||
p.EI2_Project_Status__c=='Construction' || p.EI2_Project_Status__c=='Audit' ||
p.EI2_Project_Status__c=='QAQC' || p.EI2_Project_Status__c=='House Party Scheduled' ||
p.ARES_Status__c=='Active' || p.ARES_Status__c =='On Hold' || p.ARES_Status__c == 'FO Hold'||
p.Project_Status__c=='Active'|| p.Project_Status__c=='On Hold' || p.Project_Status__c=='FO Hold' ){
EPIds.add(p.id);
}
}
for(task ta:trigger.New){
string status = ta.TStatus__c;
string priority = ta.TPriority__c;
string program = ta.TProgram_Related_To__c;
string subj = ta.TSubject__c;
string comm = ta.TComments__c;
if( (ECIds.contains(ta.WhoId) || EPIds.contains(ta.WhatID)) && ta.Status == 'Completed'){
if(status== null){
ta.TStatus__c.adderror('The Contact or ISEIF and EI2 Project is still Open. Please Fill the Status field to create a new task');
}
if(priority == null){
ta.TPriority__c.adderror('The Contact or ISEIF and EI2 Project is still Open. Please Fill the Priority field to create a new task');
}
if(program == null){
ta.TProgram_Related_To__c.adderror('The Contact or ISEIF and EI2 Project is still Open. Please Fill the Program Related To field to create a new task');
}
if(subj== null){
ta.TSubject__c.adderror('The Contact or ISEIF and EI2 Project is still Open. Please Fill the Subject field to create a new task');
}
if(comm== null){
ta.TComments__c.adderror('The Contact or ISEIF and EI2 Project is still Open. Please Fill the Comments field to create a new task');
}
if(status!=null&&priority!=null&&program!=null&&subj!=null){
EI2tsk = new Task();
EI2tsk.Subject = ta.TSubject__c;
EI2tsk.Priority = ta.TPriority__c;
EI2tsk.Program_Related_To__c = ta.TProgram_Related_To__c;
EI2tsk.ActivityDate = ta.TDue_Date__c;
EI2tsk.OwnerId= ta.OwnerId;
EI2tsk.Status = ta.TStatus__c;
EI2tsk.Description = ta.TComments__c;
EI2tsk.WhoId = ta.WhoId;
EI2tsk.WhatId = ta.WhatId;
EI2tsk.Interaction_Result__c=ta.TInteraction_Result__c;
EI2tsk.Interaction_Source__c = ta.TInteraction_Source__c;
EI2tsk.Interaction_Type__c = ta.TInteraction_Type__c;
EI2tsk.RecordTypeId=ta.RecordTypeId;
EI2tskList.add(EI2tsk );
}
}
}
if(EI2tskList.size()>0){
database.insert(EI2tskList,false);
}
TriggerHandler.firstRun = false;
}
}
We have the below trigger that is working for me as an admin, but it's not working for other profiles. What the trigger does is it forces the user to always have an open task until the record is completed.
trigger createNextTask on Task (before update) {
Map<Id,string> whatIds = new Map<Id,string>();
Set<Id> ECIds = new Set<Id>();
Set<Id> EPIds = new Set<Id>();
Map<Id,string> whoIds = new Map<Id,string>();
set<Id> EI2ContactIds = new Set<Id>();
set<Id> EI2ProjectIds = new Set<Id>();
List<Task> EI2tskList = new List<Task>();
Task EI2tsk;
private Id eidTaskRecordTypeId = Schema.SObjectType.Task.getRecordTypeInfosByName().get('Outreach').getRecordTypeId();
if(TriggerHandler.firstRun) {
for(task t:trigger.new){
if(t.RecordTypeId == eidTaskRecordTypeId){
string whId = t.WhoId;
if(whId!= null && whId.startsWith('003')&& !EI2ContactIds.contains(t.WhoId)){
EI2ContactIds.add(t.WhoId);
}
string whaId = t.WhatId;
// cnte sandbox id for ISEIF and EI2 Projects is a1Z
// production id for ISEIF and EI2 Projects is a0Y
if(whaId!= null && whaId.startsWith('a0Y')&& !EI2ProjectIds.contains(t.WhatId)){
EI2ProjectIds.add(t.WhatId);
}
}
}
for(contact c :[select Id,EI2_Act_on_Status__c,ARES_Status__c,Real_Time_Status__c from contact where Id IN :EI2ContactIds ]){
if( ( c.EI2_Act_on_Status__c =='Interested'|| c.EI2_Act_on_Status__c == 'Referred')||(c.ARES_Status__c == 'Interested'||c.ARES_Status__c =='Referred')
||(c.Real_Time_Status__c == 'Interested'|| c.Real_Time_Status__c == 'Referred')){
ECIds.add(c.id);
}
}
for(ISEIF_and_EI2_Projects__c p :[select Id, Project_Status__c, ARES_Status__c, EI2_Project_Status__c From ISEIF_and_EI2_Projects__c where Id IN :EI2ProjectIds ]) {
if( p.EI2_Project_Status__c=='Active' || p.EI2_Project_Status__c =='On Hold' || p.EI2_Project_Status__c=='FO Hold' ||
p.EI2_Project_Status__c=='Construction' || p.EI2_Project_Status__c=='Audit' ||
p.EI2_Project_Status__c=='QAQC' || p.EI2_Project_Status__c=='House Party Scheduled' ||
p.ARES_Status__c=='Active' || p.ARES_Status__c =='On Hold' || p.ARES_Status__c == 'FO Hold'||
p.Project_Status__c=='Active'|| p.Project_Status__c=='On Hold' || p.Project_Status__c=='FO Hold' ){
EPIds.add(p.id);
}
}
for(task ta:trigger.New){
string status = ta.TStatus__c;
string priority = ta.TPriority__c;
string program = ta.TProgram_Related_To__c;
string subj = ta.TSubject__c;
string comm = ta.TComments__c;
if( (ECIds.contains(ta.WhoId) || EPIds.contains(ta.WhatID)) && ta.Status == 'Completed'){
if(status== null){
ta.TStatus__c.adderror('The Contact or ISEIF and EI2 Project is still Open. Please Fill the Status field to create a new task');
}
if(priority == null){
ta.TPriority__c.adderror('The Contact or ISEIF and EI2 Project is still Open. Please Fill the Priority field to create a new task');
}
if(program == null){
ta.TProgram_Related_To__c.adderror('The Contact or ISEIF and EI2 Project is still Open. Please Fill the Program Related To field to create a new task');
}
if(subj== null){
ta.TSubject__c.adderror('The Contact or ISEIF and EI2 Project is still Open. Please Fill the Subject field to create a new task');
}
if(comm== null){
ta.TComments__c.adderror('The Contact or ISEIF and EI2 Project is still Open. Please Fill the Comments field to create a new task');
}
if(status!=null&&priority!=null&&program!=null&&subj!=null){
EI2tsk = new Task();
EI2tsk.Subject = ta.TSubject__c;
EI2tsk.Priority = ta.TPriority__c;
EI2tsk.Program_Related_To__c = ta.TProgram_Related_To__c;
EI2tsk.ActivityDate = ta.TDue_Date__c;
EI2tsk.OwnerId= ta.OwnerId;
EI2tsk.Status = ta.TStatus__c;
EI2tsk.Description = ta.TComments__c;
EI2tsk.WhoId = ta.WhoId;
EI2tsk.WhatId = ta.WhatId;
EI2tsk.Interaction_Result__c=ta.TInteraction_Result__c;
EI2tsk.Interaction_Source__c = ta.TInteraction_Source__c;
EI2tsk.Interaction_Type__c = ta.TInteraction_Type__c;
EI2tsk.RecordTypeId=ta.RecordTypeId;
EI2tskList.add(EI2tsk );
}
}
}
if(EI2tskList.size()>0){
database.insert(EI2tskList,false);
}
TriggerHandler.firstRun = false;
}
}
Best Answer chosen by Katie Hamberg
Katie Hamberg
Nevermind, we were able to figure this out! Thanks!