We've just noticed that when adding the same product code multiple times to an opportunity and then producing a quotation, that the pricing for those duplicate products gets mixed up on the quote. The total value remains the same but the pricing on the quote line items moves to one of the other line items with that same product code. Usually this wouldn't be an issue as you would use quantity but we do have a system in place where we sometimes use a generic product code which would need to be added multiple times to an opportunity and would have different pricing assigned each time.

Has anyone seen this issue before and any ideas on how I can rectify this?

Thanks in advance.

Example of issue:

Opp line items

  1. PRODUCTA - Reception Building Door - £100.00
  2. PRODUCTA - Library Door - £200.00
  3. PRODUCTA - Staff Entrance Door - £300.00
  4. PRODUCTA - Canteen Door - £400.00

When a quote is produced the QLI pull through like this:

Quote line items

  1. PRODUCTA - Reception Building Door - £200.00
  2. PRODUCTA - Library Door - £400.00
  3. PRODUCTA - Staff Entrance Door - £100.00
  4. PRODUCTA - Canteen Door - £300.00

The pricing seems to get muddled as SF doesn't seem to know which line item to apply it to when the same code is applied to multiple line items?

  • So you're saying the QLI is getting a different price than was specified for it and that these "generic product codes" don't have unit prices for them, only discounts? What kind of pricebook do you have for these codes and how is it handled in your pricebook? Off hand, that would seem to be the place to look for both the cause and the solution.
    – crmprogdev
    Commented Jan 14, 2016 at 14:25
  • The generic product code has a standard price applied of £1.00 which is part of the price book. Discounts are not involved here. We use the code to represent a set of products/values which differs each time, so we would always manually update this price on the opp line item. The issue is that any product code (not just our generic code) that is added to an opportunity line item more than once is causing issues in that the price applied to the line item on the opp is getting mixed up when a quote is created. I will attach an example of what I mean to my question above.
    – SPlacchino
    Commented Jan 15, 2016 at 12:21

1 Answer 1


I don't profess to have a great deal of expertise when it comes to CPQ. Below you'll see a schema diagram of the objects involved with QLI, PriceBooks, Quotes, Pricebook Entries and Product2.

Schema of QLI, PBE, PB2, Quote and Product2

I hope you can see from the above that a Quote Line Item is dependent upon a Pricebook2 and Product2 that are joined together through a PricebookEntry. From your description, it's the PricebookEntry Id that appears to be getting misplaced in your quotes.

That having been said, your Pricebook2 needs to have these unique PricebookEntries to prevent this from occurring. At least, that's my understanding of how all of this is supposed to work unless you're using a custom CPQ solution like what's available from Apptus where they do all of this for you in the background using these objects.

I suspect that your manual updates to OLI may be part of what's causing your issues. You're in effect, overriding your PricebookEntries without applying discounts or quantity changes that reconcile the adjustments. You might think of it like an accounting ledger. The books need to balance and yours aren't balancing when you use the methods you're using. If you were to add a hidden discount field to your quotes or else a hidden quantity multiplier field of some kind where the product becomes a "bundle" with a quantity of 1 as a means of allowing you to reach your adjusted price, you'd probably be able to resolve these issues.

This approach would allow you to do it without having multiple Pricebook2's. That's important as I don't believe you can use more than one Pricebook2 on the same Quote or Opportunity.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .