Skip to main content
Hi,

We are using Talend middleware to integrate and exchange data between our internal systems and SF using SF API. The SF CRM is acting as a 'slave' while our system database is a master.  So, almost every object in SF has an external ID that maches the record in our DB. 

All our 'upserts' works fine when matched on External ID. But in this case, we need to update - not upsert - the record in SF using External ID, which is marked as unique in SF. 

But, when runing the code this is the error: MISSING_ARGUMENT:Id not specified in an update call - for every single record regardles if the External ID already exist in SF or not.

So, my question is - can update be done on External ID or it must be the SF Id ?

Thanks

 
8 respuestas
  1. 15 mar 2016, 22:26
    So you have a collection of records that you want to send updates to Salesforce for. Some of them may exist in Salesforce already with the External ID field set. Some of them won't?

    If, as you say, you don't have the Salesforce ID or another way in you local system to identify which records are already in Salesforce, you would need to do a SOQL query first to identifiy which External Ids existing in Salesforce.

    I.e.

    1. Get the list of all the External IDs you want to update
    2. Do a SOQL query to Salesforce to see which of those records exist in Salesforce already
    3. Only do the upsert for the records that are already in Salesforce (by this stage you could also do an update() as the SOQL query could bring back the Salesforce ID)

    Again, as you say, if you can add the Salesforce ID to the local system or otherwise keep track of which records are already in Salesforce it would be more efficent in terms of Salesforce API calls.

0/9000