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:
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.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>')
For Root Cause 1 (CurrencyIsoCode):
BundleBasedAdjustment record.CurrencyIsoCode to match the currency used on the Quote.CurrencyIsoCode as an output field in the Pricing Procedure so it is passed correctly during evaluation.For Root Cause 2 (Missing ProductSellingModelId):
ProductSellingModelId is populated on the QuoteLineItem.For Root Cause 3 (Missing permissions):
BundleBasedAdjustment object.005385629

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.