LET'S LEARN TOGETHER. THE BEAUTIFUL THING ABOUT LEARNING IS NOBODY CAN TAKE IT AWAY FROM YOU.

Salesforce Integration with SOAP API - Part 8 - Update Account records with Java program

Preface - This post is part of "Salesforce Integration with SOAP API" series.

In today's post, we will go through the code to understand how we can update records using SOAP API and Java program. Before going into the Java program, I would request you guys to check the documentation @
Update core call with SOAP API
Note: I have written a helper class ConnectionHelper.java which I am using to connect to Salesforce using Enterprise WSDL. To know more about that, please refer my previous post @ 
Now below code will update Account record - 
import com.sforce.soap.enterprise.EnterpriseConnection;
import com.sforce.soap.enterprise.Error;
import com.sforce.soap.enterprise.SaveResult;
import com.sforce.soap.enterprise.sobject.Account;
import com.sforce.ws.ConnectionException;


public class UpdateAccount {
    private EnterpriseConnection enterpriseConnection;
    
    private UpdateAccount(){
        setEnterpriseConnection(ConnectionHelper.doConnect());
    }
    
    public static void main(String[] args){
        UpdateAccount updateAccount = new UpdateAccount();
        //Here you need to provide Account ID here
        updateAccount.doUpdateAccount(new String[]{"0019000001ByhBI","0019000000tvEQo"});
    }
    
    private void doUpdateAccount(String[] ids){
        Account[] toBeUpdatedAccount = new Account[ids.length];
        
        for(int i = 0 ; i < ids.length ; i++){
            Account tempAccount = new Account();
            tempAccount.setId(ids[i]);
            tempAccount.setRating("Hot");
            toBeUpdatedAccount[i] = tempAccount;
        }
        
        //Update the account
        try{
            SaveResult[] results = getEnterpriseConnection().update(toBeUpdatedAccount);
            for(SaveResult eachResult : results){
                if(eachResult.isSuccess()){
                    System.out.println("Account updated with ID: " + eachResult.getId());
                }else{
                    for(Error eachError : eachResult.getErrors()){
                        System.out.println("Error message is: " + eachError.getMessage());
                    }
                }
            }
        }catch(ConnectionException e){
            e.printStackTrace();
        }
    }

    public EnterpriseConnection getEnterpriseConnection() {
        return enterpriseConnection;
    }

    public void setEnterpriseConnection(EnterpriseConnection enterpriseConnection) {
        this.enterpriseConnection = enterpriseConnection;
    }
}


Now in the below post, I would like to add an existing account to an existing opportunity. I can do that with update() method by passing the opportunity ID and the External ID value of the account record. Important: Keep in mind you need to pass the External ID value of the account record. In my Org, I have setup a custom field Account_External_ID__c and marked that as External ID.
Below code will help you to understand how you can achieve the above requirement -
import com.sforce.soap.enterprise.EnterpriseConnection;
import com.sforce.soap.enterprise.Error;
import com.sforce.soap.enterprise.SaveResult;
import com.sforce.soap.enterprise.sobject.Account;
import com.sforce.soap.enterprise.sobject.Opportunity;
import com.sforce.soap.enterprise.sobject.SObject;
import com.sforce.ws.ConnectionException;


public class UpdateOpportunityAccount {
    private EnterpriseConnection enterpriseConnection;
    
    private UpdateOpportunityAccount(){
        setEnterpriseConnection(ConnectionHelper.doConnect());
    }
    
    public static void main(String[] args) {
        UpdateOpportunityAccount updateOpportunityAccount = new UpdateOpportunityAccount();
        updateOpportunityAccount.doUpdateOpportunityAccount("0069000000ReDgi","EXID1111");
    }
    
    private void doUpdateOpportunityAccount(String opportunityId, String accountExternalId){
        try{
            //Link an existing opportunity
            Opportunity toBeUpdatedOpportunity = new Opportunity();
            toBeUpdatedOpportunity.setId(opportunityId);
            
            //Link an existing account
            Account toBeLinkedAccount = new Account();
            toBeLinkedAccount.setAccount_External_ID__c(accountExternalId);
            
            //Link Opportunity with Account
            toBeUpdatedOpportunity.setAccount(toBeLinkedAccount);
            
            SaveResult[] results = getEnterpriseConnection().update(new SObject[]{toBeUpdatedOpportunity});
            for(SaveResult eachResult : results){
                if(eachResult.isSuccess()){
                    System.out.println("Created succesfully with ID: " + eachResult.getId());
                }else{
                    for(Error eachError : eachResult.getErrors()){
                        System.out.println("Error message is: " + eachError.getMessage());
                    }
                }
            }
        }catch(ConnectionException e){
            e.printStackTrace();
        }
    }
    
    public EnterpriseConnection getEnterpriseConnection() {
        return enterpriseConnection;
    }
    
    public void setEnterpriseConnection(EnterpriseConnection enterpriseConnection) {
        this.enterpriseConnection = enterpriseConnection;
    }

}


Appreciate your feedback. Thanks.

In my next post, I will explain the upsert operation. Till then keep learning Salesforce.
Share:

No comments:

Post a Comment

Never miss a post. Subscribe to get latest blog posts, right into your email box.

* indicates required

Labels

Salesforce (105) Apex (51) admin (28) visualforce (21) ADM (20) dev 501 (19) lightning (19) integration (18) learn salesforce (18) 501 (16) javascript (14) SOAP (13) tutorial (11) Certification. (10) Advanced Apex (9) Kitchener Developer Group (8) test class (8) Certification (7) Trigger (7) flow (7) security (7) unit testing (7) Advanced Admin (6) Lightning Experience (6) Sharing and Visibility (6) design pattern (6) developer (6) report (6) salesforce release (6) service cloud (6) trailhead (6) use case (6) Lightning Feature (5) New Features (5) SOQL (5) css (5) dashboard (5) debug (5) formula (5) mobile (5) solution management (5) JSON (4) Kitchener User Group (4) Lightning Web Component (4) New Feature (4) Sales Cloud (4) Salesforce DX (4) Tips (4) WebSphere (4) best practice (4) cast iron (4) component (4) deployment (4) event (4) github (4) html (4) map (4) polymer (4) profiles (4) release (4) responsive (4) tdd (4) ui (4) visual studio code (4) Architect (3) Live Chat (3) Online Event (3) Opportunity (3) Performance (3) Products (3) REST (3) Role (3) Salesforce Certification (3) Scratch Org (3) Spring 20 (3) Study Notes. (3) Summer15 (3) VS Code (3) Web Technology (3) Winter21 (3) automation tool (3) configuration (3) dynamic apex (3) license (3) mapbox (3) singleton (3) version controlling (3) AppExchange (2) Article (2) Asynchronous Apex (2) Asynchronous callout (2) Aura Framework (2) Bulkify (2) Community (2) Data Architecture and Management Certification (2) Devops (2) Distributed Version Controlling (2) ES6 (2) Eclipse (2) Einstein (2) Enhancement (2) Enterprise Territory Management (2) Financial Services Cloud (2) Force.com IDE (2) Governor Limit (2) Groups (2) IBM (2) Implicit Sharing (2) JourneyToCTA (2) Knowledge Management (2) LWC (2) Lightning Design System (2) Live Agent (2) Metadata (2) PD II (2) Price Book (2) Queueable (2) SFDX (2) SOSL (2) Sharing (2) Spring 15 (2) Summer17 (2) Territory (2) Virtual Event (2) ant (2) basic (2) chatter (2) code coverage (2) coding (2) communication (2) console (2) controller (2) documentation (2) dreamforce (2) git (2) jquery (2) logging (2) object (2) permission (2) process builder (2) salesforce1 (2) strategy (2) visual workflow (2) xml (2) Action Plan (1) Action Plan Template (1) Activity Timeline (1) Advanced Currency (1) Agent Productivity (1) Analytics (1) Apex Sharing (1) Arrow (1) Batch (1) Bots (1) Browser (1) Bulk data load (1) CTA (1) Calendar (1) Canon (1) Case Management (1) Celebration (1) Cheat Sheet (1) Classic (1) Compare (1) Confetti (1) Constructor (1) Contact Center (1) Continuation (1) Continuous Integration (1) Convert (1) Cookie (1) CumulusCI (1) Custom Metadata (1) Custom Object (1) Custom Permission (1) Customer (1) Data Model (1) DataGrid (1) DataTable (1) Dated Exchange Rate (1) Decorator Design Pattern (1) Dev Hub (1) Development (1) Diwali (1) EDA (1) ESLint (1) Education Cloud (1) Email (1) FSC (1) Function (1) Future (1) Global Gathering (1) Goals (1) Guest Access (1) Guest Profile (1) Guest User Sharing Rule (1) Guide (1) HEDA (1) Higher Education (1) Household (1) Husky (1) IDE (1) Ideas (1) Improvement (1) Invocable (1) KPIs (1) Large Data Volume (1) LastModifiedDate (1) Manage Currencies (1) Manual Sharing (1) Metrics (1) Multi Currency (1) New (1) OOPS (1) OWD (1) Omni-Channel (1) Optimize (1) Partner (1) Permission Set (1) Person Account (1) Photo (1) Pipeline (1) Platform Developer I (1) Platform Developer II (1) Presentation (1) Prettier (1) Product Schedule (1) Profile (1) Promise (1) Prototype (1) Public Site (1) Query Plan (1) QuickReference (1) Related records (1) Reports (1) Retrieve (1) Role Hierarchy (1) SAL (1) Salesfor (1) Salesforce Advisor Link (1) Salesforce Labs (1) Salesforce Optimizer (1) SalesforceDx (1) Schedule (1) Session (1) Sharing Rule (1) Sharing Sets (1) Site (1) Skills (1) Snap-ins (1) Spring 17 (1) Summer14 (1) Summer16 (1) Summer19 (1) Switch (1) SystemModStamp (1) Tile (1) Timeline (1) Unauthorized Access (1) User License (1) Users (1) Validation Rule (1) Web (1) Webservice (1) Winter'15 (1) Winter'17 (1) access (1) actionFunction (1) actionPoller (1) actionRegion (1) actionSupport (1) agile (1) app (1) approval process (1) aura (1) awesome (1) backup (1) bitbucket (1) book (1) campaign (1) change set (1) cli (1) code (1) csv (1) custom button (1) custom settings (1) customization (1) data loader (1) database (1) delegate Admin (1) describe (1) dom (1) duplicate (1) dynamic (1) dynamic form (1) email template (1) email-to-case (1) equals (1) error (1) field-level security (1) folder (1) ftp (1) generic (1) gift (1) global describe (1) hashcode (1) import wizard (1) jenkins (1) keynote (1) long running requests (1) monitoring (1) mysql (1) page layout (1) personal (1) power of one (1) record type (1) relationship (1) request (1) review (1) solution (1) sub-tab (1) survey (1) tab (1) username (1) workflow (1)

Popular Posts

Total Pageviews

Contact Me

Name

Email *

Message *