Salesforce Asked by Michael Canelas on December 1, 2020
We’re using what is basically the example trigger for the lead convert process. We have added a specific queue to the lead process, so if we have auto conversions that come, that have been put in the queue, it errors out. I have tried to specify an ID, or pull the current user ID that’s running the apex which is an integration user. This is my code and I’m getting " response: APEX call failed; received error message: Attempt to de-reference a null object"
I know I shouldn’t hard code a value on this, but I don’t know how to get the running user in the current class, and I’m still not sure that’s causing my error.
@RestResource(urlMapping='/Lead/*')
global with sharing class RestLeadConvert {
@HttpPost
global static String doPost() {
String result = '';
String errorMessage = '';
try{
RestRequest req = RestContext.request;
RestResponse res = RestContext.response;
String bodyJson = req.requestBody.toString();
Map<String, Object> requestContent = (Map<String, Object>)JSON.deserializeUntyped(bodyJson);
String leadId = (String)requestContent.get('leadId');
String accountId = (String)requestContent.get('accountId');
Database.LeadConvert lc = new Database.LeadConvert();
lc.setLeadId(leadId);
lc.setDoNotCreateOpportunity(True);
if (accountId != null && accountId != '') {
lc.setAccountId(accountId);
}
//Added Conditions// if (String.valueOf(lc.getOwnerId()).startsWith(’00G’)){
// lc.setOwnerId( ‘XXXXXXXXXXXXXXX’);}
LeadStatus convertStatus = [SELECT Id, MasterLabel FROM LeadStatus WHERE IsConverted=true LIMIT 1];
lc.setConvertedStatus(convertStatus.MasterLabel);
Database.LeadConvertResult lcr ;
lcr = Database.convertLead(lc);
system.debug('*****lcr.isSuccess()'+lcr.isSuccess());
result = 'success';
}
catch(exception ex){
system.debug('***NOT CONVERTED**');
result = 'failed';
errorMessage = ex.getMessage();
}
/*
JSONGenerator gen = JSON.createGenerator(false);
gen.writeStartObject();
gen.writeStringField('result', result);
gen.writeStringField('errorMessage', errorMessage);
gen.writeEndObject();
return gen.getAsString();
*/
String response = '{'result': '' + result + '', 'errorMessage': '' + errorMessage + ''}';
return response;
}
}
The Database.LeadConvert object doesn't magically get all the values from the database. You need to actually query the record.
Lead leadRecord = [SELECT OwnerId FROM Lead WHERE Id = :leadId];
if(leadRecord.OwnerId.getSObjectType() == Group.sObjectType) {
lc.setOwnerId('XXXXXXXXXXXXXXXX');
}
Correct answer by sfdcfox on December 1, 2020
Get help from others!
Recent Answers
Recent Questions
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP