Pricing, Promotion, and Discount Design

Pricing has two layers. The app-native engine objects such as priceList, priceListEntry, promotions, and discounts in CME MP. For RC they’re product selling model, adjustments, and promotions. These objects are genuinely separate objects and are isolated. You don’t need a differentiator here. Both apps (CME MP and RC) share standard objects like Pricebook and Pricebook Entry, storing their data as separate records within the same object. Therefore, you need a differentiator to distinguish the records for each app.

Required Editions

Available in: Classic and Lightning Experience
Available in: Enterprise, Unlimited, and Developer Edition

Findings

  • Pricing is one of the most app-native surfaces. Creating pricing-specific objects in their corresponding app (CME MP or RC) works as expected.
  • Promotions, discounts, and related objects are separate in each app (CME MP and RC).
  • Standard list views on Pricebook and PricebookEntry show all records in the org. A CME MP user sees RC pricebooks and entries, and an RC user sees CME MP pricebooks and entries.
  • Pricebook and PricebookEntry have no record type and no natural owning-app field.
  • The standard PricebookEntry related list inside a Pricebook can’t filter out
  • ProductSellingModel or other RC only fields.

Guidelines

  • The pricebook is the top-level container for pricing isolation. Every price list, adjustment, and promotion rolls up to a pricebook that must be classifiable to one app (CME MP or RC).
  • Avoid modeling a "shared" pricebook between CME MP and RC if possible.
  • Promotions and discounts are modeled differently in each app (CME MP and RC); replicate them manually per app if they’re logically the same.

Best Practices

  • Use only the app-specific and related apps in RC: Price Management; For CME MP: Pricing Designer.
  • Create separate Pricebook, PricebookEntry, and Product records for each app (CME MP and RC), even when they’re logically the same. These are separate records within shared objects, not separate objects.
  • Never create a PricebookEntry manually in CME MP that is auto-created when you create a PriceListEntry under a CME MP PriceList.
  • Separate pricebooks per app (CME MP and RC) are recommended for visibility and cleanliness, not as a hard functional requirement.

Solutions

  • Build per-app custom listing pages for Pricebook and PricebookEntry, each with a built-in filter, assigned to the correct Lightning app.
  • Pricebook differentiator as SourceApp__c where the stamp implies RC and blank implies CME MP.
  • PricebookEntry inherits its parent Pricebook that filters every PBE listing and reports through the parent's differentiator.

Limitations

  • Standard list views can’t be made app-aware, so the custom listing page pattern is the only reliable fix.
  • PricebookEntry can’t carry its own differentiator as every PBE filter and report must join to the parent Pricebook.
  • Global search returns pricebooks from both apps regardless of the current app (CME MP or RC).