0 votes
1 view
in Salesforce by (11.9k points)

I have a simple trigger which pulls data from the lead object and places it into a custom "Finance" object when the lead is created or updated. For some reason, the Trigger.new[i].Id is returning NULL in the trigger which fires before insert.

I'm going crazy because I can't see any reason why the Id would be NULL... Here's my code:

trigger FinanceNew on Lead (before insert) {

Map<String,User> userList = new Map<String,User>{};

// Places each returned user into a map with their sfID as the key

for(User tmp : [SELECT Id,Name,Email,Phone FROM User]){

  userList.put(tmp.Id,tmp);

}

for(integer i = 0; i<Trigger.new.size(); i++){

    string leadName = null;

    if(Trigger.new[i].FirstName != ''){

        leadName = Trigger.new[i].FirstName + ' ' + Trigger.new[i].LastName;

    }else{

        leadName = Trigger.new[i].LastName;

    }

    User ownerInfo = userList.get(Trigger.new[i].OwnerId);

    ID leadId = Trigger.new[i].Id; // THIS IS RETURNING NULL!!

    Finance__c financeRecord = new Finance__c(

        Name = leadName,

        Lead__c = leadId,

        Lead_Email__c = Trigger.new[i].Email,

        Lead_Phone__c = Trigger.new[i].Phone,

        Lead_Owner_Name__c  = ownerInfo.Name,

        Lead_Owner_Email__c = ownerInfo.Email,

        Lead_Owner_Phone__c = ownerInfo.Phone

    );

    insert financeRecord;

    }

}

Thank you in advance for any help given!

1 Answer

0 votes
by (31.8k points)
Well, since you are talking about the Trigger.new[i].Id being returned as NULL in the trigger which actually fires before insert, the main reason here is that the Salesforce records don't have ID's before they are inserted. When the process of insertion is done, an ID is created. You would want to probably use this after insert.
Welcome to Intellipaat Community. Get your technical queries answered by top developers !


Categories

...