When a Standard Price Book Entry with ProductSellingModel = X is updated to ProductSellingModel = Y, any existing custom Price Book Entries that still reference ProductSellingModel = X become orphaned. The platform's validation logic requires a Standard Price Book Entry with a matching PSM value before allowing updates to custom Price Book Entries. Because no Standard Price Book Entry with PSM = X exists after the update, any attempt to modify those orphaned custom Price Book Entries fails with INVALID_CROSS_REFERENCE_KEY.
Affected configuration:
- Pilot permission enabled: Salesforce Pricing: Update PSM Pilot Feature (PricingUpdtPSMPilot)
- Object: PricebookEntry (Standard and custom Price Books)
- Symptom: Updates to custom Price Book Entry records fail with INVALID_CROSS_REFERENCE_KEY after the PSM value on the corresponding Standard Price Book Entry has been changed
This permission is provided exclusively by Salesforce Product to assist customers migrating existing pricing records to Revenue Cloud. It is a pilot permission with limited support, must be tested in a sandbox before production use, and must be reverted once migration is complete.
The following options restore a valid Standard Price Book Entry reference so orphaned custom Price Book Entries can be updated successfully. Choose the option that best fits your record volume and migration approach.
Option 1: Recreate the Matching Standard Price Book Entry
Use this option when you need to update orphaned custom Price Book Entries without deleting them.
1. Identify the PSM value (for example, PSM = X) that orphaned custom Price Book Entries still reference.
2. Create a new Standard Price Book Entry with ProductSellingModel = X to restore the required reference.
3. Retry the update on the affected custom Price Book Entries. Validation will now find a matching Standard Price Book Entry and allow the update to proceed.
Option 2: Delete and Recreate Affected Custom Price Book Entries
Use this option when orphaned records are no longer needed in their current state.
1. Export and note the field values of all affected custom Price Book Entries before deletion.
2. Delete the orphaned custom Price Book Entries.
3. Confirm the Standard Price Book Entry has been updated to the target PSM value.
4. Recreate the custom Price Book Entries referencing the updated PSM value.
Option 3: Apex Bulk Script for Large Record Volumes
Use this option when a high volume of orphaned records makes manual correction impractical.
1. Write an Apex class that queries all custom Price Book Entries where ProductSellingModel does not match any existing Standard Price Book Entry PSM value.
2. For each orphaned record, apply the corrected PSM value or handle deletion and recreation as required by your migration design.
3. Execute updates using Bulk API to stay within governor limits and handle large data volumes efficiently.
Example query to identify orphaned records:
SELECT Id, ProductSellingModelId, Pricebook2Id
FROM PricebookEntry
WHERE Pricebook2.IsStandard = false
AND ProductSellingModelId NOT IN (
SELECT ProductSellingModelId
FROM PricebookEntry
WHERE Pricebook2.IsStandard = true
)
This query returns all custom Price Book Entries whose PSM value no longer has a corresponding Standard Price Book Entry, confirming which records are orphaned and need remediation.
General Guidance for PricingUpdtPSMPilot Permission:
- This permission is enabled by Salesforce PM only to support migration of existing records to Revenue Cloud.
- Because it is a pilot permission, support for issues encountered during its use is limited.
- Thoroughly test all migration steps in a sandbox environment before executing in production.
- Revert the permission immediately after migration is complete.
005388487

We use three kinds of cookies on our websites: required, functional, and advertising. You can choose whether functional and advertising cookies apply. Click on the different cookie categories to find out more about each category and to change the default settings.
Privacy Statement
Required cookies are necessary for basic website functionality. Some examples include: session cookies needed to transmit the website, authentication cookies, and security cookies.
Functional cookies enhance functions, performance, and services on the website. Some examples include: cookies used to analyze site traffic, cookies used for market research, and cookies used to display advertising that is not directed to a particular individual.
Advertising cookies track activity across websites in order to understand a viewer’s interests, and direct them specific marketing. Some examples include: cookies used for remarketing, or interest-based advertising.