---
schema_version: "1"
id: f2ed6a82e3723fa19e7e28c36c1108103f6c845c9946712a9fc7da75843f331e
title: Versioning Reference Dates
collection: admin
version: current
locale: en-us
portal_url: https://docs.salesforce.com/admin/current/en-us/ind/264-0-0/comms_versioning_reference_dates.md
canonical_url: https://help.salesforce.com/s/articleView?id=ind.comms_versioning_reference_dates.htm&release=264.0.0&type=5
source_site: help.salesforce.com
content_type: documentation
content_hash: 6c3d29540810939065a5df91cb29d1494b45a66cfcdd32d0f3f32cbe886deeb8
description: For versioned products, reference dates determine which product version to use and affect the product structures. The reference dates and their use vary by object and business process. The availability of products is not based solely on the Versioning Start and End dates.
products:
  - Communications
  - Media
  - Energy and Utilities
release: "264"
---
# Versioning Reference Dates

For versioned products, reference dates determine which product version to use and affect the product structures. The reference dates and their use vary by object and business process. The availability of products is not based solely on the Versioning Start and End dates.

Objects use the following fields for reference dates.

- Opportunity—Created Date
- Quote—Created Date
- Order—If available, use Order Requested Date. If not, use Order Start Date.
- All line items (Opportunity line item, Quote Line item, Order item) use a reference date on the corresponding XLI’s **Reference Time** field.

Run the Product Hierarchy Maintenance job to resolve all possible date ranges for each product. If versioning start and end dates have gaps across versions of the same product, those products might be not visible in the cart if the reference date is within the gap. For that reason, create versioning dates without gaps.

The following tables provide the details about the fields used as reference dates for the different objects and business processes.

If you need to use different reference dates, you can create a custom implementation. See DefaultResolveRefDateImplementation:getReferenceDate Method.

## Opportunities

Opportunities use the following reference dates to determine which product version to use.

<table class="slds-table slds-table_bordered slds-max-medium-table_stacked slds-m-bottom_small ">
        <colgroup>
          <col>
          <col>
          <col>
        </colgroup>
        <thead class="slds-text-title_caps ">
          <tr class="">
            <th scope="col" class="slds-cell-wrap" style="vertical-align:top;" id="d185897e99">
              <p style="margin-bottom:0;">Business Process</p>
            </th>
            <th scope="col" class="slds-cell-wrap" style="vertical-align:top;" id="d185897e105">
              <p style="margin-bottom:0;">Reference Date</p>
            </th>
            <th scope="col" class="slds-cell-wrap" style="vertical-align:top;" id="d185897e111">
              <p style="margin-bottom:0;">Use</p>
            </th>
          </tr>
        </thead>
        <tbody>
          <tr class="">
            <td data-label="Business Process" class="slds-cell-wrap" style="vertical-align:top;" headers="d185897e99 ">
              <p style="margin-bottom:0;">New Opportunity</p>
            </td>

            <td data-label="Reference Date" class="slds-cell-wrap" style="vertical-align:top;" headers="d185897e105 ">
              <p style="margin-bottom:0;">Opportunity.Created Date</p>
            </td>

            <td data-label="Use" class="slds-cell-wrap" style="vertical-align:top;" headers="d185897e111 ">
              <p style="margin-bottom:0;">To add new root products to the cart.</p>
            </td>

          </tr>
          <tr class="">
            <td data-label="Business Process" class="slds-cell-wrap" style="vertical-align:top;" headers="d185897e99 ">
              <p style="margin-bottom:0;">New Opportunity</p>
            </td>

            <td data-label="Reference Date" class="slds-cell-wrap" style="vertical-align:top;" headers="d185897e105 ">
              <p style="margin-bottom:0;">Opportunity.Closed Date</p>
            </td>

            <td data-label="Use" class="slds-cell-wrap" style="vertical-align:top;" headers="d185897e111 ">
              <p style="margin-bottom:0;">Optional Field. Not a preferred choice.</p>
            </td>

          </tr>
          <tr class="">
            <td data-label="Business Process" class="slds-cell-wrap" style="vertical-align:top;" headers="d185897e99 ">
              <p style="margin-bottom:0;">New Opportunity</p>
            </td>

            <td data-label="Reference Date" class="slds-cell-wrap" style="vertical-align:top;" headers="d185897e105 ">
              <p style="margin-bottom:0;">OpportunityLineItem.Reference Date</p>
            </td>

            <td data-label="Use" class="slds-cell-wrap" style="vertical-align:top;" headers="d185897e111 ">
              <p style="margin-bottom:0;">For root products that are already in the cart.</p>
            </td>

          </tr>
        </tbody>
      </table>

## Orders

Orders use the following reference dates to determine which product version to use.

<table class="slds-table slds-table_bordered slds-max-medium-table_stacked slds-m-bottom_small ">
        <colgroup>
          <col>
          <col>
          <col>
        </colgroup>
        <thead class="slds-text-title_caps ">
          <tr class="">
            <th scope="col" class="slds-cell-wrap" style="vertical-align:top;" id="d185897e207">
              <p style="margin-bottom:0;">Business Process</p>
            </th>
            <th scope="col" class="slds-cell-wrap" style="vertical-align:top;" id="d185897e213">
              <p style="margin-bottom:0;">Reference Date</p>
            </th>
            <th scope="col" class="slds-cell-wrap" style="vertical-align:top;" id="d185897e219">
              <p style="margin-bottom:0;">Use</p>
            </th>
          </tr>
        </thead>
        <tbody>
          <tr class="">
            <td data-label="Business Process" class="slds-cell-wrap" style="vertical-align:top;" headers="d185897e207 ">
              <p style="margin-bottom:0;">New Order</p>
            </td>

            <td data-label="Reference Date" class="slds-cell-wrap" style="vertical-align:top;" headers="d185897e213 ">
              <p style="margin-bottom:0;">If <code>Order.RequestedStartDate</code> is NOT NULL, use <code>Order.RequestedStartDate</code>. Otherwise, use Order Start Date. </p>
            </td>

            <td data-label="Use" class="slds-cell-wrap" style="vertical-align:top;" headers="d185897e219 ">
              <p style="margin-bottom:0;">Use for searching products and determining the correct version.</p>
            </td>

          </tr>
          <tr class="">
            <td data-label="Business Process" class="slds-cell-wrap" style="vertical-align:top;" headers="d185897e207 ">
              <p style="margin-bottom:0;">Quote to Order(flow: New Oppy&gt;Quote&gt;Order)</p>
            </td>

            <td data-label="Reference Date" class="slds-cell-wrap" style="vertical-align:top;" headers="d185897e213 ">
              <p style="margin-bottom:0;">
                <code>RootLineItem.ReferenceDate</code>
              </p>
            </td>

            <td data-label="Use" class="slds-cell-wrap" style="vertical-align:top;" headers="d185897e219 ">
              <p style="margin-bottom:0;">Existing line items are displayed based on the rootLineItem reference date. All new root products added to the order use <code>Order.RequestedStartDate</code> as the reference date.</p>
            </td>

          </tr>
          <tr class="">
            <td data-label="Business Process" class="slds-cell-wrap" style="vertical-align:top;" headers="d185897e207 ">
              <p style="margin-bottom:0;">Change to Order(flow: Change to Quote&gt;Order)</p>
            </td>

            <td data-label="Reference Date" class="slds-cell-wrap" style="vertical-align:top;" headers="d185897e213 ">
              <p style="margin-bottom:0;">
                <code>RootLineItem.ReferenceDate</code>
              </p>
            </td>

            <td data-label="Use" class="slds-cell-wrap" style="vertical-align:top;" headers="d185897e219 ">
              <p>Existing line items are displayed based on the rootLineItem reference date. </p>
              <p style="margin-bottom:0;">All new root products added to the order use <code>Order.RequestedStartDate</code> as the reference date.</p>
            </td>

          </tr>
          <tr class="">
            <td data-label="Business Process" class="slds-cell-wrap" style="vertical-align:top;" headers="d185897e207 ">
              <p style="margin-bottom:0;">Frame Contract New Order</p>
            </td>

            <td data-label="Reference Date" class="slds-cell-wrap" style="vertical-align:top;" headers="d185897e213 ">
              <p style="margin-bottom:0;">If <code>Order.RequestedStartDate</code> is NOT NULL, use <code>Order.RequestedStartDate</code>. Otherwise, us Order Start Date.</p>
            </td>

            <td data-label="Use" class="slds-cell-wrap" style="vertical-align:top;" headers="d185897e219 ">
              <p style="margin-bottom:0;">All new root products added to an order use this as the reference date.</p>
            </td>

          </tr>
          <tr class="">
            <td data-label="Business Process" class="slds-cell-wrap" style="vertical-align:top;" headers="d185897e207 ">
              <p style="margin-bottom:0;">Frame Contract Change Order</p>
            </td>

            <td data-label="Reference Date" class="slds-cell-wrap" style="vertical-align:top;" headers="d185897e213 ">
              <p style="margin-bottom:0;">
                <code>RootLineItem.ReferenceDate</code>
              </p>
            </td>

            <td data-label="Use" class="slds-cell-wrap" style="vertical-align:top;" headers="d185897e219 ">
              <p style="margin-bottom:0;">Existing line items are displayed based on the rootLineItem reference date.</p>
            </td>

          </tr>
          <tr class="">
            <td data-label="Business Process" class="slds-cell-wrap" style="vertical-align:top;" headers="d185897e207 ">
              <p style="margin-bottom:0;">Amendment Order (No Contract, No reference Quote)</p>
            </td>

            <td data-label="Reference Date" class="slds-cell-wrap" style="vertical-align:top;" headers="d185897e213 ">
              <p style="margin-bottom:0;">
                <code>Order.RequestedStartDate(Datetime)</code>
              </p>
            </td>

            <td data-label="Use" class="slds-cell-wrap" style="vertical-align:top;" headers="d185897e219 ">
              <p>Use the <code>originalOrder.RequestedStartDate</code> field by default. Existing root level XLIs (assetized or non-assetized) in the Amendment Order have original <code>Order.RequestedStartDate</code> as the reference date. </p>
              <p style="margin-bottom:0;">Root-level products that are added use the Amendment <code>Order.RequestedStartDate.COV</code> as the reference date. This allows migrating an assetized root-level XLI version to a newer (and higher) version of the same product.</p>
            </td>

          </tr>
          <tr class="">
            <td data-label="Business Process" class="slds-cell-wrap" style="vertical-align:top;" headers="d185897e207 ">
              <p style="margin-bottom:0;">Follow-On Order (No Contract, No reference Quote)</p>
            </td>

            <td data-label="Reference Date" class="slds-cell-wrap" style="vertical-align:top;" headers="d185897e213 ">
              <p style="margin-bottom:0;">
                <code>Order.RequestedStartDate(Datetime)</code>
              </p>
            </td>

            <td data-label="Use" class="slds-cell-wrap" style="vertical-align:top;" headers="d185897e219 ">
              <p style="margin-bottom:0;">This is identical to an Amendment Order (No Contract, No reference Quote). </p>
            </td>

          </tr>
        </tbody>
      </table>

## Quotes

Quotes use the following reference dates to determine which product version to use.

<table class="slds-table slds-table_bordered slds-max-medium-table_stacked slds-m-bottom_small ">
        <colgroup>
          <col>
          <col>
          <col>
        </colgroup>
        <thead class="slds-text-title_caps ">
          <tr class="">
            <th scope="col" class="slds-cell-wrap" style="vertical-align:top;" id="d185897e448">
              <p style="margin-bottom:0;">Business Process</p>
            </th>
            <th scope="col" class="slds-cell-wrap" style="vertical-align:top;" id="d185897e454">
              <p style="margin-bottom:0;">Reference Date</p>
            </th>
            <th scope="col" class="slds-cell-wrap" style="vertical-align:top;" id="d185897e460">
              <p style="margin-bottom:0;">Use</p>
            </th>
          </tr>
        </thead>
        <tbody>
          <tr class="">
            <td data-label="Business Process" class="slds-cell-wrap" style="vertical-align:top;" headers="d185897e448 ">
              <p style="margin-bottom:0;">Opportunity to Quote</p>
            </td>

            <td data-label="Reference Date" class="slds-cell-wrap" style="vertical-align:top;" headers="d185897e454 ">
              <p style="margin-bottom:0;">
                <code>RootLineItem.ReferenceDate</code>
              </p>
            </td>

            <td data-label="Use" class="slds-cell-wrap" style="vertical-align:top;" headers="d185897e460 ">
              <p style="margin-bottom:0;">When an Opportunity is converted to a Quote, the line item reference date is inherited from the OpportunityLineItem reference date.</p>
            </td>

          </tr>
          <tr class="">
            <td data-label="Business Process" class="slds-cell-wrap" style="vertical-align:top;" headers="d185897e448 ">
              <p style="margin-bottom:0;">Opportunity to Quote</p>
            </td>

            <td data-label="Reference Date" class="slds-cell-wrap" style="vertical-align:top;" headers="d185897e454 ">
              <p style="margin-bottom:0;">
                <code>Quote.Created Date</code>
              </p>
            </td>

            <td data-label="Use" class="slds-cell-wrap" style="vertical-align:top;" headers="d185897e460 ">
              <p style="margin-bottom:0;">For a quote created from Oppy, you can add new root products directly to the quote. In this case, use <code>Quote.CreatedDate</code>.</p>
            </td>

          </tr>
          <tr class="">
            <td data-label="Business Process" class="slds-cell-wrap" style="vertical-align:top;" headers="d185897e448 ">
              <p style="margin-bottom:0;">Change to Quote</p>
            </td>

            <td data-label="Reference Date" class="slds-cell-wrap" style="vertical-align:top;" headers="d185897e454 ">
              <p style="margin-bottom:0;">
                <code>RootLineItem.ReferenceDate</code>
              </p>
            </td>

            <td data-label="Use" class="slds-cell-wrap" style="vertical-align:top;" headers="d185897e460 ">
              <p style="margin-bottom:0;">Assets should be displayed based on the assetized reference date. New optional child products can be added based on the assetized reference date.</p>
            </td>

          </tr>
          <tr class="">
            <td data-label="Business Process" class="slds-cell-wrap" style="vertical-align:top;" headers="d185897e448 ">
              <p style="margin-bottom:0;">Change to Quote</p>
            </td>

            <td data-label="Reference Date" class="slds-cell-wrap" style="vertical-align:top;" headers="d185897e454 ">
              <p style="margin-bottom:0;">
                <code>Quote.Created Date</code>
              </p>
            </td>

            <td data-label="Use" class="slds-cell-wrap" style="vertical-align:top;" headers="d185897e460 ">
              <p style="margin-bottom:0;">All root products added to Quote should use Quote.CreatedDate as the reference date.</p>
            </td>

          </tr>
          <tr class="">
            <td data-label="Business Process" class="slds-cell-wrap" style="vertical-align:top;" headers="d185897e448 ">
              <p style="margin-bottom:0;">Frame Contract Change to Quote</p>
            </td>

            <td data-label="Reference Date" class="slds-cell-wrap" style="vertical-align:top;" headers="d185897e454 ">
              <p style="margin-bottom:0;">
                <code>RootLineItem.ReferenceDate</code>
              </p>
            </td>

            <td data-label="Use" class="slds-cell-wrap" style="vertical-align:top;" headers="d185897e460 ">
              <p style="margin-bottom:0;">Assets should be displayed based on the assetized reference date. Optional child products can be added based on the assetized reference date.</p>
            </td>

          </tr>
          <tr class="">
            <td data-label="Business Process" class="slds-cell-wrap" style="vertical-align:top;" headers="d185897e448 ">
              <p style="margin-bottom:0;">Frame Contract Change to Quote</p>
            </td>

            <td data-label="Reference Date" class="slds-cell-wrap" style="vertical-align:top;" headers="d185897e454 ">
              <p style="margin-bottom:0;">
                <code>Quote.Created Date</code>
              </p>
            </td>

            <td data-label="Use" class="slds-cell-wrap" style="vertical-align:top;" headers="d185897e460 ">
              <p style="margin-bottom:0;">All new root products added to Quote should use <code>Quote.CreatedDate</code> as the reference date.</p>
            </td>

          </tr>
        </tbody>
      </table>

## See Also

- [Product Hierarchy Maintenance](https://help.salesforce.com/s/articleView?id=ind.comms_product_hierarchy_maintenance.htm&type=5&language=en_US)