ERR_SF_ROW_LOCK on Salesforce: Salesforce Bulk Update Fails with UNABLE_TO_LOCK_ROW Error. Root cause: Salesforce record is locked due to concurrent updates from multiple sources. Common causes: simultaneous updates from integration and user, multiple integrations updating same record, workflow/process builder running concurrently, approval process locking record, database lock timeout exceeded. Step 1: Identify Concurrent Processes. In Salesforce Setup, check Apex Jobs and Scheduled Jobs for overlapping execution windows. Use the Debug Log to identify which processes are competing for the same records at the same time. Step 2: Stagger Batch Job Execution. Schedule competing batch jobs at different times (minimum 15-minute separation). If both jobs must run simultaneously, partition the data so they operate on non-overlapping record sets. Step 3: Implement Retry Logic in Apex. In your Apex code, catch the UNABLE_TO_LOCK_ROW DMLException and implement a retry with exponential backoff. Retry up to 3 times with 1-second, 2-second, and 4-second delays before failing permanently. Step 4: Optimise Trigger and Workflow Order. Review your trigger execution order and workflow rules. Consolidate multiple triggers on the same object into a single trigger handler class to reduce the number of DML operations competing for locks on the same records.