Loading

Salesforce CPQ: Post-install script fails with UNABLE_TO_LOCK_ROW on SBQQ__SearchIndex__c after package upgrade

Publish Date: May 28, 2026
Description

This issue occurs when the Salesforce CPQ post-install batch job tries to update SBQQ__SearchIndex__c records during a package upgrade while another process is updating the same records.

As a result, the post-install script fails with a row lock error such as:

"UNABLE_TO_LOCK_ROW, unable to obtain exclusive access to this record"

The failure is commonly caused by concurrent automation running during the upgrade, including:

  • Custom Apex triggers
  • Flows or Process Builder automation
  • Third-party package automation
  • Parallel CPQ batch jobs

The issue is most commonly seen during execution of the SBQQ.InstallProcessorBatchLocalizationIndex batch job after a CPQ package upgrade.

Resolution

The post-install script must be re-run by a System Administrator who is also the Salesforce CPQ License Manager user.

Before retrying the script:

  • Go to Setup > Apex Jobs

  • Locate the failed SBQQ.InstallProcessorBatchLocalizationIndex job

  • Review the Extended Status details and confirm the failure is related to UNABLE_TO_LOCK_ROW

Temporarily disable automation that may update CPQ records during the post-install process.

Disable automation

Deactivate the following if they exist on Product, Quote, Quote Line, Asset, or Contract objects:

  • Apex triggers

  • Record-triggered Flows

  • Process Builder processes

  • Validation rules

Also verify that no other CPQ batch jobs are currently running.

Disable CPQ managed triggers

  1. Navigate to:
    Installed Packages > Salesforce CPQ > Configure > Additional Settings

  2. Enable:
    Triggers Disabled

Re-run the post-install script

From the same CPQ Additional Settings page, click Execute to run the post-install script again.

After the script completes successfully, re-enable the automation and CPQ triggers.

Knowledge Article Number

005385149

 
Loading
Salesforce Help | Article