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
AwkwardAAwkwardA 

System.NullPointerException: Attempt to de-reference a null object

Every now and then I get a ___ error on this trigger (on Line #7):

trigger HandoffToISRLead on Task (after insert) {

Map<Id,Id> LeadsToUpdate = new Map<Id,Id>();


for (Task t: Trigger.new) {
    if(t.Subject.startsWith('Handoff to ISR') && t.WhoId != NULL && String.valueOf(t.WhoId).startsWith('00Q'))
    
    LeadsToUpdate.put(t.WhoId, NULL);
    }

List<Lead> LeadsToHandoff = [SELECT Id, Last_ISR_ID__c, ISR_Handoff_Counter__c, LeadSource FROM Lead where Id IN:LeadsToUpdate.keyset()];

if (LeadsToUpdate.keyset().size()>0){

for (Lead l: LeadsToHandoff) {
    l.SD_Pipeline__c = true;
    if(l.ISR_Handoff_Counter__c != NULL){
    l.ISR_Handoff_Counter__c = l.ISR_Handoff_Counter__c + 1;}
    else{l.ISR_Handoff_Counter__c = 1;}

    if(l.Last_ISR_ID__c != NULL){
    l.OwnerID = l.Last_ISR_ID__c;
    }
    else if(l.LeadSource == 'Partner/Vendor'){l.OwnerID = '00530000009b58p';}
    else{l.OwnerID = '00530000009sb4g';
}
    }
    update LeadsToHandoff;
}
}

Here is some of the recent debug code:

16:16:53.139 (139810822)|CODE_UNIT_STARTED|[EXTERNAL]|01q30000000a8Hi|HandoffToISRLead on Task trigger event AfterInsert for [00T3000002gcWfr, 00T3000002gcWfs]
16:16:53.139 (139836969)|HEAP_ALLOCATE|[EXTERNAL]|Bytes:12
16:16:53.139 (139876331)|HEAP_ALLOCATE|[EXTERNAL]|Bytes:12
16:16:53.139 (139893603)|VARIABLE_SCOPE_BEGIN|[1]|this|HandoffToISRLead|true|false
16:16:53.139 (139954648)|VARIABLE_ASSIGNMENT|[1]|this|{}|0x7e3d9e08
16:16:53.139 (139977350)|HEAP_ALLOCATE|[EXTERNAL]|Bytes:12
16:16:53.139 (139987725)|VARIABLE_SCOPE_BEGIN|[1]|this|HandoffToISRLead|true|false
16:16:53.140 (140005443)|VARIABLE_ASSIGNMENT|[1]|this|{}|0x7e3d9e08
16:16:53.140 (140012249)|STATEMENT_EXECUTE|[1]
16:16:53.140 (140015277)|STATEMENT_EXECUTE|[3]
16:16:53.140 (140025872)|HEAP_ALLOCATE|[3]|Bytes:4
16:16:53.140 (140061801)|VARIABLE_ASSIGNMENT|[3]|this.LeadsToUpdate|{"serId":1,"value":{}}|0x7e3d9e08
16:16:53.140 (140138730)|HEAP_ALLOCATE|[6]|Bytes:5
16:16:53.140 (140167629)|VARIABLE_SCOPE_BEGIN|[6]|t|Task|true|false
16:16:53.140 (140589412)|VARIABLE_ASSIGNMENT|[6]|t|{"RecordTypeId":"01230000001dnNMAAY","Event_Completed__c":false,"CurrencyIsoCode":"USD","LastModifiedById":"00530000009beV7AAI","OwnerId":"00530000009beV7AAI","LastModifiedDate":"2014-05-14T23:16:53.000Z","ActivityDate":"2014-05-14T00:00:00.000Z","IsRecurrence":false,"Priority":"Normal","IsArchived":false,"Status":"Not Started","IsClosed":false,"IsVisibleInSelfServi (2 more) ...":false,"qbdialer__SMSReminde (4 more) ...":false,"DB_Activity_Type__c":"Other","IsReminderSet":false,"SystemModstamp":"2014-05-14T23:16:53.000Z","CreatedById":"00530000009beV7AAI","CreatedDate":"2014-05-14T23:16:53.000Z","IsDeleted":false,"Id":"00T3000002gcWfrEAE","IS_Response__c":false}|0x589b05d7
16:16:53.140 (140602741)|STATEMENT_EXECUTE|[6]
16:16:53.140 (140623278)|HEAP_ALLOCATE|[7]|Bytes:14
16:16:53.140 (140738987)|HEAP_ALLOCATE|[7]|Bytes:41
16:16:53.140 (140899452)|FATAL_ERROR|System.NullPointerException: Attempt to de-reference a null object

Trigger.HandoffToISRLead: line 7, column 1
16:16:53.140 (140913883)|FATAL_ERROR|System.NullPointerException: Attempt to de-reference a null object

Trigger.HandoffToISRLead: line 7, column 1
16:16:53.140 (140989867)|CODE_UNIT_FINISHED|HandoffToISRLead on Task trigger event AfterInsert for [00T3000002gcWfr, 00T3000002gcWfs]
16:16:53.140 (140997965)|EXECUTION_FINISHED


I tried looking for the 2 tasks in the debug code, but received this error when trying to access them:

Data Not Available
The data you were trying to access could not be found. It may be due to another user deleting the data or a system error. If you know the data is not deleted but cannot access it, please look at our support page.

 

What's the best way to fix this? Feel like I'm missing something simple.

Best Answer chosen by AwkwardA
kevin lamkevin lam
Is Subject a required field in your case? If not, perhaps you need to check if it's null in your first if statement.

All Answers

kevin lamkevin lam
Is Subject a required field in your case? If not, perhaps you need to check if it's null in your first if statement.
This was selected as the best answer
AwkwardAAwkwardA
Yes, Subject is a required field.
kevin lamkevin lam
How did you insert those tasks?
AwkwardAAwkwardA
The user creates them by clicking a custom button in the activity history related list on leads.
Scott McClungScott McClung
The subject field on a Task is usually a required field when entering a Task in the standard UI layouts but it is not a required field on the object so a Task record can be inserted without a value in Subject.  Kevin is right, check for a null value on Subject before using the 'startsWith' method on it.
AwkwardAAwkwardA
Ok, I'll try it. The custom button does redirect to a page that uses the standard UI, however.
AwkwardAAwkwardA
I think you might be correct -- the user that keeps triggering this error uses a SFDC for Outlook replacement called LinkPoint which creates a lot of tasks automatically, I'm wondering if that is what's triggering this error.
AwkwardAAwkwardA
Thanks Kevin & Scott. No errors today :)