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
SFDC16SFDC16 

Closed Incident when all related task is closed through trigger for custom object

Hello Developers,

I have a requirement when all incident (Incident is a custom object) related task closed to close incident automatically.

I have written below trigger for the single task when the task is closed incident close automatically.

Note: Incident and Task both are the Custom object

trigger ClostTaskRelatedIncident on BMCServiceDesk__Task__c (after  update) {
    List<BMCServiceDesk__Task__c> cse = Trigger.new;

    Set<ID> cseIds = new Set<ID>();
    System.debug('------------------->'+cseIds);
    for (BMCServiceDesk__Task__c t:cse)
    {  
      System.debug('Before If condition of t.BMCServiceDesk__Status_ID__c');
      if (t.BMCServiceDesk__FKStatus__c=='a3w0w0000000AslAAE')
      {
         cseIds.add(t.BMCServiceDesk__FKIncident__c);
      }
      System.debug('After Case IDs'+cseIds);
      for (BMCServiceDesk__Incident__c c : [select id,BMCServiceDesk__incidentDescription__c from BMCServiceDesk__Incident__c where id in :cseIds])
      {
          if(c.BMCServiceDesk__incidentDescription__c!='')
          {     
              c.BMCServiceDesk__FKStatus__c='a3w0w0000000AslAAE';
              c.BMCServiceDesk__incidentDescription__c='Trigger Fire';
              update c;
              
          }    
      }
    }

}
Regards,
SFDC16
Jay Parikh 38Jay Parikh 38
Hey sfdc16, 
Try this code and let me know it work or not ;
trigger ClostTaskRelatedIncident on BMCServiceDesk__Task__c (after update, after insert){
   set<id> taskids = new set <id>();
    for(BMCServiceDesk__Task__c tsk : trigger.new){
          if(tsk.BMCServiceDesk__FKStatus__c != null && tsk.BMCServiceDesk__FKStatus__c = 'Closed')
            taskids.add(tsk.id);
    }

    list <BMCServiceDesk__Incident__c> IncidentList = [select id ,BMCServiceDesk__incidentDescription__c ,BMCServiceDesk__Task__c
                                                                           from BMCServiceDesk__Incident__c
                                                                               where BMCServiceDesk__Task__c  in : taskids ];
    list <BMCServiceDesk__Incident__c> InclisttoUpdate = new list <BMCServiceDesk__Incident__c> ();
    for(BMCServiceDesk__Incident__c iclst  : IncidentList)   {
           if(iclst.BMCServiceDesk__incidentDescription__c != null iclst.BMCServiceDesk__Task__c != null ){
               iclst.BMCServiceDesk__incidentDescription__c = 'closed';
               InclisttoUpdate.add(iclst);
           }
    }  
    if(InclisttoUpdate != null && InclisttoUpdate.size() > 0){
        database.update(InclisttoUpdate , false );
    }                                                                 

}

 
SFDC16SFDC16
Hello Jay,
Thanks for reply

On task object, there is an incident lookup

Incident   BMCServiceDesk__FKIncident__c BMC   Lookup(Incident)

For below-highlighted line, I am getting an error.

 list IncidentList = [select id ,BMCServiceDesk__incidentDescription__c ,BMCServiceDesk__Task__c from BMCServiceDesk__Incident__c where BMCServiceDesk__Task__c


Error :

BMCServiceDesk__incidentDescription__c ,BMCServiceDesk__Task__c ^ ERROR at Row:1:Column:52 No such column 'BMCServiceDesk__Task__c' on entity 'BMCServiceDesk__Incident__c'. If you are attempting to use a custom field, be sure to append the '__c' after the custom field name. Please reference your WSDL or the describe call for the appropriate names.
SFDC16SFDC16
Hello, I have written new below trigger but still its not working. Please help me to resolve this issue. trigger ClosedLinkedTask1 on BMCServiceDesk__Task__c (after update, after insert) { set taskids = new set (); for(BMCServiceDesk__Task__c tsk : trigger.new) { if(tsk.BMCServiceDesk__FKStatus__c != null && tsk.BMCServiceDesk__FKStatus__c =='a3w0w0000000AslAAE') taskids.add(tsk.BMCServiceDesk__FKIncident__c); } list tasklist = [select id ,BMCServiceDesk__FKStatus__c,BMCServiceDesk__FKIncident__c from BMCServiceDesk__Task__c where BMCServiceDesk__FKIncident__c in : taskids ]; list InclisttoUpdate = new list (); for(BMCServiceDesk__Task__c checkcondition : tasklist) { if(checkcondition.BMCServiceDesk__FKStatus__c=='a3w0w0000000AslAAE') { BMCServiceDesk__Incident__c a =new BMCServiceDesk__Incident__c(); a.BMCServiceDesk__incidentDescription__c = 'closed'; InclisttoUpdate.add(a); } if(InclisttoUpdate != null && InclisttoUpdate.size() > 0){ database.update(InclisttoUpdate , false ); } } } Regards, SFDC16