---
schema_version: "1"
id: 3e0ff7f12f5e5b3de880821f054dd15e8f447dc1ec7c0d64b33d5e8cb9626405
title: Pricing, Promotion, and Discount Design
collection: admin
version: current
locale: en-us
portal_url: https://docs.salesforce.com/admin/current/en-us/ind/264-0-0/comms_pricing_promotion_and_discount_design.md
canonical_url: https://help.salesforce.com/s/articleView?id=ind.comms_pricing_promotion_and_discount_design.htm&release=264.0.0&type=5
source_site: help.salesforce.com
content_type: documentation
content_hash: ce845026e4d6f976d9ca1ecff8fb55a2f1a5da9099cb418a33f834ed3f979f90
description: 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.
products:
  - Communications
  - Media
  - Energy and Utilities
release: "264"
---
# 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

<table class="slds-table slds-table_bordered slds-max-medium-table_stacked slds-m-bottom_small edition"><colgroup><col></colgroup><tbody><tr class=""><td class="slds-cell-wrap" style="vertical-align:top;">Available in: Classic and Lightning Experience</td></tr><tr class=""><td class="slds-cell-wrap" style="vertical-align:top;">Available in: <strong>Enterprise</strong>, <strong>Unlimited</strong>, and <strong>Developer</strong> Edition</td></tr></tbody></table>

## 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).