Loading
Ongoing maintenance for Salesforce HelpRead More

Revenue Cloud: BundleBasedAdjustment Not Triggering — "Adjustment Type Must Be Set to Override" Error or Bundle Discount Not Applied

Publish Date: May 29, 2026
Description

When a bundle product is added to a Quote and a BundleBasedAdjustment is configured on a Price Adjustment Schedule, one or more of the following symptoms occur:

  • Error: "Adjustment type for this line item must be set to Override."
  • The bundle-based discount is not applied — Net Price of child products remains unchanged.
  • Changing CurrencyIsoCode on the BundleBasedAdjustment record from the customer's currency (e.g., DKK) to USD removes the error, but the discount is not applied correctly.
  • Child product Net Price is not overridden to zero even though Bundle-Based Adjustment is configured to do so.
Resolution

There are three known root causes — check each one systematically:

Root Cause 1: CurrencyIsoCode blank or mismatched on BundleBasedAdjustment record
The BundleBasedAdjustment record's CurrencyIsoCode field is blank or set to a different currency than the Quote. The Bundle-Based Adjustment decision table evaluates currency as part of its condition matching. When the currency is blank or mismatched, the table either fails to match (error) or matches incorrectly (discount not applied).

Root Cause 2: ProductSellingModelId missing on Quote Line Item
The Bundle-Based Adjustment Entries decision table requires ProductSellingModelId, ParentProductSellingModelId, RootProductSellingModelId, ParentProductId, and RootBundleId as input fields. If these values are missing on the QuoteLineItem, the bundle-based adjustment is not triggered.
This occurs when the Pricebook Entry is created before the Product Selling Model.

Root Cause 3: Missing permissions on BundleBasedAdjustment object for the pricing context user
The user running pricing does not have Read access to the BundleBasedAdjustment object. The decision table silently fails to evaluate.

Query to be used:

-- Check ProductSellingModelId on QuoteLineItem
SELECT Id, ProductSellingModelId, PricingTerm, PricingTermUnit
FROM QuoteLineItem WHERE QuoteId = '<QuoteId>'

-- Check BundleBasedAdjustment currency
SELECT Id, CurrencyIsoCode, AdjustmentType, AdjustmentValue
FROM BundleBasedAdjustment WHERE PriceAdjustmentScheduleId = '<ScheduleId>'

-- Check user access to BundleBasedAdjustment
SELECT RecordId, HasReadAccess, MaxAccessLevel
FROM UserRecordAccess
WHERE UserId = '<UserId>' AND RecordId IN ('<BundleBasedAdjustmentId>')

 

Resolution

For Root Cause 1 (CurrencyIsoCode):

  • Navigate to the BundleBasedAdjustment record.
  • Set CurrencyIsoCode to match the currency used on the Quote.
  • Add CurrencyIsoCode as an output field in the Pricing Procedure so it is passed correctly during evaluation.

For Root Cause 2 (Missing ProductSellingModelId):

  • Delete the existing Pricebook Entry and Product Selling Model Override records.
  • Recreate them in the correct order: create the Product Selling Model first, then create the Pricebook Entry.
  • Re-add the product to the Quote and verify ProductSellingModelId is populated on the QuoteLineItem.

For Root Cause 3 (Missing permissions):

  • Create a custom Permission Set granting Read (and Edit if needed) access to the BundleBasedAdjustment object.
  • Assign it to the user(s) or integration users used in the pricing context.
Knowledge Article Number

005385629

 
Loading
Salesforce Help | Article