---
schema_version: "1"
id: 1943cf36005c77a1a401b22cb49a883028a5e4642b76a5af98bf4976fa99fcce
title: JSONAttribute v2 Schema Upgrade Considerations
collection: admin
version: current
locale: en-us
portal_url: https://docs.salesforce.com/admin/current/en-us/ind/264-0-0/comms_jsonattribute_v2_schema_upgrade_considerations.md
canonical_url: https://help.salesforce.com/s/articleView?id=ind.comms_jsonattribute_v2_schema_upgrade_considerations.htm&release=264.0.0&type=5
source_site: help.salesforce.com
content_type: documentation
content_hash: 8493554725288f3973f8fa76e6eae3113a2c32a2e84ab27d82135c5f6f888086
description: "The upgraded attribute schema provides multiple performance and storage enhancements. For example, the new schema extracts values from the vlocity_cmt__JSONAttribute__c field into separate fields: Metadata components, default runtime values, and metadata changes."
products:
  - Communications
  - Media
  - Energy and Utilities
release: "264"
---
# JSONAttribute v2 Schema Upgrade Considerations

The upgraded attribute schema provides multiple performance and storage enhancements. For example, the new schema extracts values from the vlocity\_cmt\_\_JSONAttribute\_\_c field into separate fields: Metadata components, default runtime values, and metadata changes.

This separation allows metadata to remain on the design-time object (the product) while runtime values and metadata changes are maintained on the runtime object (the XLIs), which results in smaller XLI payloads. The data shape of the XLI attribute fields is aligned with the API response, which results in fewer translation operations and better runtime performance.

For deployments prior to the Fall '18 release, you can run an upgrade process to update product attributes to the latest schema. However, any custom Apex code, configurations, and Omnistudio Data Mappers that depend on the vlocity\_cmt\_\_JSONAttribute\_\_c field must be updated to use the new fields. The new schema is optional: the previous JSONAttribute field will continue to be supported and your existing processes can remain the same.

![Warning](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-ind-comms_media_energy_managed-264-0-0-production-enus/ff4079f6-a384-475c-b863-578bbbb0ef9b/images/icon_warning.png)

Warning

The migration is one-way only; the action is not reversible. Salesforce does not provide utilities to migrate back to the old schema model.

Custom implementations using the JSONAttributeSupport class must use the new v2 methods outlined in

The Asset Attribute Visualforce component on the Asset page is not supported by the v2 attribute model. If your org needs the Assets Attribute component, it cannot be upgraded to the v2 attribute model. The Card Assets Visualforce component will support this functionality for orgs using the v2 attribute model.

For customers who use Industries Order Management (IOM), add a custom setting to add IOM support for the schema upgrade: [JSONAttribute v2 Support in Industries Order Management](https://help.salesforce.com/s/articleView?id=ind.order_mgmt_jsonatrribute_v2_support_in_industries_order_management.htm&language=en_US)

The following table provides the newly added fields by object:

<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="d123197e62">
              <p style="margin-bottom:0;">Object</p>
            </th>
            <th scope="col" class="slds-cell-wrap" style="vertical-align:top;" id="d123197e68">
              <p style="margin-bottom:0;">Field</p>
            </th>
            <th scope="col" class="slds-cell-wrap" style="vertical-align:top;" id="d123197e74">
              <p style="margin-bottom:0;">Description</p>
            </th>
          </tr>
        </thead>
        <tbody>
          <tr class="">
            <td data-label="Object" class="slds-cell-wrap" style="vertical-align:top;" headers="d123197e62 ">
              <p style="margin-bottom:0;">Product2</p>
            </td>

            <td data-label="Field" class="slds-cell-wrap" style="vertical-align:top;" headers="d123197e68 ">
              <p style="margin-bottom:0;">AttributeMetadata__c</p>
            </td>

            <td data-label="Description" class="slds-cell-wrap" style="vertical-align:top;" headers="d123197e74 ">
              <p style="margin-bottom:0;">Stores productAttribute JSON without default values.</p>
            </td>

          </tr>
          <tr class="">
            <td data-label="Object" class="slds-cell-wrap" style="vertical-align:top;" headers="d123197e62 ">
              <p style="margin-bottom:0;">Product2</p>
            </td>

            <td data-label="Field" class="slds-cell-wrap" style="vertical-align:top;" headers="d123197e68 ">
              <p style="margin-bottom:0;">AttributeDefaultValues__c</p>
            </td>

            <td data-label="Description" class="slds-cell-wrap" style="vertical-align:top;" headers="d123197e74 ">
              <p style="margin-bottom:0;">Stores the default values for product attributes.</p>
            </td>

          </tr>
          <tr class="">
            <td data-label="Object" class="slds-cell-wrap" style="vertical-align:top;" headers="d123197e62 ">
              <p style="margin-bottom:0;">OpportunityLineItem</p>
            </td>

            <td data-label="Field" class="slds-cell-wrap" style="vertical-align:top;" headers="d123197e68 ">
              <p style="margin-bottom:0;">AttributeSelectedValues__c</p>
            </td>

            <td data-label="Description" class="slds-cell-wrap" style="vertical-align:top;" headers="d123197e74 ">
              <p style="margin-bottom:0;">Stores the attribute code and the value selected by the user.</p>
            </td>

          </tr>
          <tr class="">
            <td data-label="Object" class="slds-cell-wrap" style="vertical-align:top;" headers="d123197e62 ">
              <p style="margin-bottom:0;">OpportunityLineItem</p>
            </td>

            <td data-label="Field" class="slds-cell-wrap" style="vertical-align:top;" headers="d123197e68 ">
              <p style="margin-bottom:0;">AttributeMetadataChanges__c</p>
            </td>

            <td data-label="Description" class="slds-cell-wrap" style="vertical-align:top;" headers="d123197e74 ">
              <p style="margin-bottom:0;">Stores the attribute code and any metadata changes from the default product configuration.</p>
            </td>

          </tr>
          <tr class="">
            <td data-label="Object" class="slds-cell-wrap" style="vertical-align:top;" headers="d123197e62 ">
              <p style="margin-bottom:0;">OrderItem</p>
            </td>

            <td data-label="Field" class="slds-cell-wrap" style="vertical-align:top;" headers="d123197e68 ">
              <p style="margin-bottom:0;">AttributeSelectedValues__c</p>
            </td>

            <td data-label="Description" class="slds-cell-wrap" style="vertical-align:top;" headers="d123197e74 ">
              <p style="margin-bottom:0;">Stores the attribute code and the value selected by the user.</p>
            </td>

          </tr>
          <tr class="">
            <td data-label="Object" class="slds-cell-wrap" style="vertical-align:top;" headers="d123197e62 ">
              <p style="margin-bottom:0;">OrderItem</p>
            </td>

            <td data-label="Field" class="slds-cell-wrap" style="vertical-align:top;" headers="d123197e68 ">
              <p style="margin-bottom:0;">AttributeMetadataChanges__c</p>
            </td>

            <td data-label="Description" class="slds-cell-wrap" style="vertical-align:top;" headers="d123197e74 ">
              <p style="margin-bottom:0;">Stores the attribute code and any metadata changes from the default product configuration.</p>
            </td>

          </tr>
          <tr class="">
            <td data-label="Object" class="slds-cell-wrap" style="vertical-align:top;" headers="d123197e62 ">
              <p style="margin-bottom:0;">QuoteLineItem</p>
            </td>

            <td data-label="Field" class="slds-cell-wrap" style="vertical-align:top;" headers="d123197e68 ">
              <p style="margin-bottom:0;">AttributeSelectedValues__c</p>
            </td>

            <td data-label="Description" class="slds-cell-wrap" style="vertical-align:top;" headers="d123197e74 ">
              <p style="margin-bottom:0;">Stores the attribute code and the value selected by the user.</p>
            </td>

          </tr>
          <tr class="">
            <td data-label="Object" class="slds-cell-wrap" style="vertical-align:top;" headers="d123197e62 ">
              <p style="margin-bottom:0;">QuoteLineItem</p>
            </td>

            <td data-label="Field" class="slds-cell-wrap" style="vertical-align:top;" headers="d123197e68 ">
              <p style="margin-bottom:0;">AttributeMetadataChanges__c</p>
            </td>

            <td data-label="Description" class="slds-cell-wrap" style="vertical-align:top;" headers="d123197e74 ">
              <p style="margin-bottom:0;">Stores the attribute code and any metadata changes from the default product configuration.</p>
            </td>

          </tr>
          <tr class="">
            <td data-label="Object" class="slds-cell-wrap" style="vertical-align:top;" headers="d123197e62 ">
              <p style="margin-bottom:0;">Asset</p>
            </td>

            <td data-label="Field" class="slds-cell-wrap" style="vertical-align:top;" headers="d123197e68 ">
              <p style="margin-bottom:0;">AttributeSelectedValues__c</p>
            </td>

            <td data-label="Description" class="slds-cell-wrap" style="vertical-align:top;" headers="d123197e74 ">
              <p style="margin-bottom:0;">Stores the attribute code and the value selected by the user.</p>
            </td>

          </tr>
          <tr class="">
            <td data-label="Object" class="slds-cell-wrap" style="vertical-align:top;" headers="d123197e62 ">
              <p style="margin-bottom:0;">Asset</p>
            </td>

            <td data-label="Field" class="slds-cell-wrap" style="vertical-align:top;" headers="d123197e68 ">
              <p style="margin-bottom:0;">AttributeMetadataChanges__c</p>
            </td>

            <td data-label="Description" class="slds-cell-wrap" style="vertical-align:top;" headers="d123197e74 ">
              <p style="margin-bottom:0;">Stores the attribute code and any metadata changes from the default product configuration.</p>
            </td>

          </tr>
          <tr class="">
            <td data-label="Object" class="slds-cell-wrap" style="vertical-align:top;" headers="d123197e62 ">
              <p style="margin-bottom:0;">CompiledAttributeOverride__c</p>
            </td>

            <td data-label="Field" class="slds-cell-wrap" style="vertical-align:top;" headers="d123197e68 ">
              <p style="margin-bottom:0;">AttributeDefaultValues__c</p>
            </td>

            <td data-label="Description" class="slds-cell-wrap" style="vertical-align:top;" headers="d123197e74 ">
              <p style="margin-bottom:0;">Stores the attribute code and the value selected by the user.</p>
            </td>

          </tr>
          <tr class="">
            <td data-label="Object" class="slds-cell-wrap" style="vertical-align:top;" headers="d123197e62 ">
              <p style="margin-bottom:0;">CompiledAttributeOverride__c</p>
            </td>

            <td data-label="Field" class="slds-cell-wrap" style="vertical-align:top;" headers="d123197e68 ">
              <p style="margin-bottom:0;">AttributeMetadataChanges__c</p>
            </td>

            <td data-label="Description" class="slds-cell-wrap" style="vertical-align:top;" headers="d123197e74 ">
              <p style="margin-bottom:0;">Stores the attribute code and any metadata changes from the default product configuration.</p>
            </td>

          </tr>
          <tr class="">
            <td data-label="Object" class="slds-cell-wrap" style="vertical-align:top;" headers="d123197e62 ">
              <p style="margin-bottom:0;">EntityFilter__c with attribute set as the entity filter condition</p>
            </td>

            <td data-label="Field" class="slds-cell-wrap" style="vertical-align:top;" headers="d123197e68 ">
              <p style="margin-bottom:0;">AttributesMetadataFieldName__c</p>
            </td>

            <td data-label="Description" class="slds-cell-wrap" style="vertical-align:top;" headers="d123197e74 ">
              <ul>
                <li>
                  <p>The value for OrderItem/OpportunityLineItem/QuoteLineItem is PriceBookEntry.Product2.{namespace}__AttributeMetadata__c.</p>
                </li>

                <li>
                  <p>The value for Product2 is {namespace}__AttributeMetadata__c.</p>
                </li>

              </ul>
            </td>

          </tr>
          <tr class="">
            <td data-label="Object" class="slds-cell-wrap" style="vertical-align:top;" headers="d123197e62 ">
              <p style="margin-bottom:0;">EntityFilter__c with attribute set as the entity filter condition</p>
            </td>

            <td data-label="Field" class="slds-cell-wrap" style="vertical-align:top;" headers="d123197e68 ">
              <p style="margin-bottom:0;">AttributesValuesFieldName__c</p>
            </td>

            <td data-label="Description" class="slds-cell-wrap" style="vertical-align:top;" headers="d123197e74 ">
              <ul>
                <li>
                  <p>The value for OrderItem/OpportunityLineItem/QuoteLineItem is {namespace}__AttributeSelectedValues__c.</p>
                </li>

                <li>
                  <p>The value for Product2 is {namespace}__AttributeDefaultValues__c.</p>
                </li>

              </ul>
            </td>

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

## API Considerations

Starting with the Winter '20 release, the Digital Commerce APIs support the JSONAttribute v2 schema.

## Upgrading the Attribute Schema

The schema upgrade steps are listed in [Upgrading the Attribute Schema](https://help.salesforce.com/s/articleView?id=ind.v_admin_upgrading_the_attribute_schema_25922.htm&language=en_US).