CME System Administration PDF-En
CME System Administration PDF-En
Copyright 2021 Vlocity LLC, a Salesforce company. All rights reserved. Information in this document is subject to change without
notice. This documentation and the software, tools, templates and other material described in this document (“Vlocity Materials”) are
furnished exclusively under a subscription services agreement or nondisclosure agreement. The Vlocity Materials may be used or
copied only in accordance with the terms of those agreements. No part of the Vlocity Materials may be reproduced, stored in a
retrieval system, or transmitted in any form or any means electronic or mechanical, including photocopying or recording for any
purpose other than the licensee’s personal use as set forth in the applicable agreement without the prior written permission of Vlocity
LLC. Vlocity is a trademark of Vlocity LLC, a Salesforce company, as are other names and marks. Other marks appearing herein may
be trademarks of their respective owners.
CME System Administration
Table of Contents
System Administration for Vlocity Communications, Media, and Energy ......................................... 1
Administration Jobs Reference for Vlocity Communications, Media, and Energy ............................ 84
Accessing the Vlocity CMT Administration Tab ..................................................................... 84
Running Maintenance Jobs ................................................................................................ 84
CMT Maintenance Jobs Fresh Install vs. Upgrade ....................................................... 85
Account Hierarchy Maintenance ................................................................................. 85
Batch Validation ......................................................................................................... 86
Clear Managed Platform Cache .................................................................................. 86
Field Maps Maintenance ............................................................................................ 87
Interface Implementation Maintenance (Merge) ........................................................... 88
Interface Implementation Maintenance (Restore) ......................................................... 88
Object Maps Maintenance .......................................................................................... 89
Product Hierarchy Maintenance .................................................................................. 89
Refresh Platform Cache ............................................................................................. 90
Refresh Pricebook ..................................................................................................... 92
Reset XLI Validation Data ........................................................................................... 92
Enable and Set Up Projects for Vlocity Product Designer ........................................................... 146
Configure the Layout of the Project Custom Object ............................................................ 146
Enable the Project Lightning Record Page For Specific Profiles .......................................... 147
Enable the Project Record Type for Specific User Profiles .................................................. 148
Create a Tab for the Project Custom Object ....................................................................... 150
Application Constraints
You can configure your Vlocity applications to remain within the operating limits or constraints of each
application.
Module Limitations
Salesforce Vlocity applications deployed to the Salesforce platform are subject to Salesforce limitations. Refer to Salesforce
Platform documentation for an enumeration of these limitations.
Module Limitations
Configure
Price Quote Non-Cacheable APIs
(CPQ) Vlocity provides a complete set of cart-based APIs for creating, updating and submitting carts such as Orders,
Quotes, and Opportunities. These APIs are not cacheable because they perform CPQ calculations at runtime and
update the state of the cart with each call.
Vlocity CPQ is fully hosted on the Salesforce platform. To avoid deployment problems and degradation in service
quality, we recommend that the number of orders, quotes, order lines, and quote lines processed in your org not
exceed the limits listed below. If your growing deployment exceeds the guidance shown in the following table,
contact your Vlocity account representative to understand how Vlocity can scale to meet your needs.
Number of Line Items Number of Products in Depth of Product Bundle Peak Number of API Peak Number of
in Order* Sales Catalog Hierarchy per Line calls** per Hour Orders*** per Hour
Up to 10 1,500 Up to 3 113,000 4,300
11 to 23 1,500 Up to 3 87,500 3,500
*The test was carried out with a catalog containing 1,500 products with an average of 12 attributes including 2 configurable attributes.
**The only load in the Salesforce Org was the Vlocity Cart APIs
***An order is comprised of, on average, 25 API calls during the shopping experience, from browsing to ordering.
The limits listed above are not hard limits. Vlocity tests CPQ to a higher level of throughput to ensure that
unexpected high peaks are handled gracefully by the service. Your product model, number of pricing rules, number
of compatibility rules, number of configuration rules, number of promotions, load, performance, and other system
issues can prevent some limits from being reached. Stated limits are not a promise that the specified throughput is
available in all circumstances.
In this example, every new and returning customer places an order. The API calls in this example include:
Cacheable APIs
Vlocity also provides a set of cacheable APIs (also known as Digital Commerce APIs) that enable consumer
shopping use cases where the user is often anonymous until well into the checkout process. These APIs cache
responses by customer context in order to deliver faster response times and higher scalability than is possible using
the cart-based non-cacheable APIs. These APIs also enable browsing for eligible offers without first creating a cart
for the shopper.
Our CPQ Cacheable APIs are currently intended to support B2C Scenarios. While it is our intent to support various
Product Catalog scenarios, it is important to note that specific guardrails must be respected to get the best
performance out of these Cacheable APIs.
We recommend that the number of Baskets, Orders, and Order lines processed in your org not exceed the limits
listed below. Contact your Vlocity account representative to understand how Vlocity can scale to meet your needs.
In this example, very little of the shopping traffic results in an order. The API calls in this example simulate the
following shopping funnel:
Module Limitations
Number of Number of Depth of Peak Number Peak Number Peak Number Peak Number
Line Items in Products in Product of API Calls per of API Calls per of Orders per of Orders per
Baskets Sales Bundle Hour (w/o Hour (w/ Digital Hour (w/o Hour (w Digital
Catalog Hierarchy per Digital Commerce Digital Commerce
Line Commerce Gateway) Commerce Gateway)
Gateway) Gateway)
Up to 10 1500 Up to 3 782,000 2,084,000 2,600 6,700
Up to 23 1500 Up to 3 602,000 1,602,000 1,900 5,000
The test was carried out with a catalog containing 1500 products with an average of 12 attributes including 2 configurable attributes per product.
The test warmed up all caches ahead of time so there are zero cache misses.
In this example, every returning customer places an order, while many new prospects leave before checkout. The
API calls in this example simulate the following shopping funnel:
Number of Number of Depth of Peak Number Peak Number Peak Number Peak Number
Line Items in Products in Product of API Calls per of API Calls per of Orders per of Orders per
Baskets Sales Bundle Hour (w/o Hour (w/ Digital Hour (w/o Hour (w/ Digital
Catalog Hierarchy per Digital Commerce Digital Commerce
Line Commerce Gateway) Commerce Gateway)
Gateway) Gateway)
Up to 10 1,500 Up to 3 386,000 490,000 16,800 34,300
Up to 23 1,500 Up to 3 157,000 323,000 11,200 22,700
The test was carried out with a catalog containing 1500 products with an average of 12 attributes including 2 configurable attributes per product.
The test warmed up all caches ahead of time so there are zero cache misses.
A Vlocity CPQ cache miss is a state in which the data requested for processing a CPQ API request is not found in
the Vlocity API Response Cache. (If it were found, then it would be a cache hit.)
Cache misses lead to higher response times because the CPQ API must execute the CPQ engine to calculate the
response, then it generates the response and stores it in the cache.
The frequency of cache misses is determined by the basket shape. Several factors contribute to the basket shape,
including those listed here:
Module Limitations
NOTE
An increase in Basket shape permutations will result in an increase of cache misses. If this
occurs, then we suggest that you leverage the CPQ Non-Cacheable APIs.
There are several governing factors that affect the duration of a cache miss based on the data shape and the factors
listed above.
Cache Warm-Up
Vlocity provides automated warm-up cache responses for anonymous browsing calls (GetOffers and
GetOfferDetails). Several factors contribute to the performance of cache warm-up jobs, including those listed here:
Module Limitations
Order Vlocity Order Management Standard is a fully Salesforce-hosted version of Vlocity Order Management. To avoid
Management deployment problems and any degradation in service quality, we recommend that the number of orders processed in
Standard your org per hour not exceed the limits listed below. If your growing deployment needs to support more orders per
hour, contact your Vlocity account representative to understand how Vlocity can scale to meet your demands.
All new Salesforce environments come with a limited set of High Volume Platform Events (HVPE) that improve the
performance of Salesforce applications. Vlocity recommends that OM Standard use platform events to improve the
overall performance of fulfillment. To configure High Volume Platform Events, see OM Standard: High Volume
Platform Events (HVPE) for Orchestration in the Vlocity Order Management documentation on the Support Center.
Customers may need to purchase one or more HVPE Add On licenses to support more complex configurations.
The following table highlights the approximate performance of Vlocity Order Management Standard when using
Platform Events:
Domain Max Order Lines Max Callouts / order (1.5 Peak Number of Number of Orders
(Post-decomp) Sec Latency assumed) Orders per Hour per Day
Business to Consumer 15 4 6,000 60,000
(B2C)
Business to Business 75 20 1,200 12,000
(B2B)
For lower volumes of orders the traditional Salesforce batch processing mechanism can be used. In this situation
the Platform Events setting must be turned off.
The following table highlights the approximate performance of Vlocity Order Management Standard when the
traditional batch processing mechanism is used:
Domain Max Order Lines Max Callouts / order (1.5 Peak Number of Number of Orders
(Post-decomp) Sec Latency assumed) Orders per Hour per Day
Business to Consumer 15 4 800 8,000
(B2C)
Business to Business 75 20 160 1,600
(B2B)
The limits listed in the above tables are not hard limits. Vlocity tests Order Management to higher levels of
throughput to ensure that unexpectedly high peaks are handled gracefully by the service. However, stated limits
may be lower as a result of product model complexity, system configuration, overall system load, or other system
issues. OM Standard consumes from the shared resources in your Salesforce organization. Other processing may
reduce your ability to achieve the stated limits. Customers must load test their configuration of OM with a realistic
production background load to determine their estimated performance and scalability.
For Order Management Standard, customers are responsible for ensuring an adequate amount of Platform Events
are available for appropriate operation of the Vlocity Order Management functions. For more information about
HVPE, see Platform Events Developers Guide.
Module Limitations
Order Vlocity Order Management Plus leverages cloud-computing technology to provide the additional scalability that large
Management telecommunications companies typically require. While the design time and runtime experience remain the same for
Plus most users, Vlocity Order Management Plus executes decomposition and orchestration functions outside of the
Salesforce platform to provide the scalability required to support larger volumes of orders. Use Order Management
Plus when exceeding the volumes listed in the OM Standard tables.
To avoid deployment problems and any degradation in service quality, we recommend that the number of orders
processed in your org per hour not exceed the limits listed below. If your growing deployment needs to support more
orders per hour, contact your Vlocity account representative to understand how Vlocity can scale to meet your
demands.
The following table highlights the approximate performance of Vlocity Order Management Plus:
Domain Max Order Lines Max Callouts / order (1.5 Peak Number of Number of Orders
(Post-decomp) Sec Latency assumed) Orders per Hour per Day
Business to Consumer 15 4 15,000 100,000
(B2C)
Business to Business 75 20 3,000 20,000
(B2B)
The limits listed above are not hard limits. Vlocity tests Order Management to higher levels of throughput to ensure
that unexpectedly high peaks are handled gracefully by the service. However, stated limits may be lower as a result
of product model complexity, system configuration, overall system load, and other system issues.
Completed orders older than one week must be purged from the RDS system (AWS) to maintain optimal database
performance and reduce database storage costs.
Contract Vlocity Web Templates have the following limitations:
Lifecycle
Management • Vlocity provides a feature to generate a Microsoft Word file with .docx file extension from a HTML document. Only
a subset of HTML tags are supported for conversion.
• Only a three-level hierarchy of embedded web document templates is reliably-supported, and this includes the top
level parent template.
• Chart-generation and dynamic-insertion of images is not supported.
• In online-generation mode, documents with up to 200 line items can be reliably-generated, assuming each line
item displays five columns.
• In batch-generation mode, documents with up to 3,000 line items can be reliably-generated, assuming each line
item displays five columns.
• Batch-generation of a document only downloads the document to Microsoft Word format.
Vlocity for Microsoft Word Templates with .docx file extensions have the following limitations:
You can configure many custom settings that control configure, price, quote (CPQ) features and behaviors.
4. To modify settings, return to the dashboard, and, under Custom Settings, select CPQ Configuration
Setup.
To work with CPQ configuration settings, go to the Vlocity CMT Administration tab, and under Custom
Settings select CPQ Configuration Setup.
AllowOperationsOnDiscProducts Vlocity Cart: If set to true, child products with a cardinality of 0,0,0 can be true/false
configured or deleted in a MACD order that is being updated. If set to false,
line items with child products having a cardinality of 0,0,0 can't be deleted or Default: false
configured.
AlwaysInsertMessageElement If set to true, the API inserts the message element in all JSON nodes. If set true/false
to false or null, the API does not insert the message element. This must be
set to true when using the persistent cart in an OmniScript. Default: true
If the number of baskets in the request is greater than or equal to the value
of this setting, the createCart API call is asynchronous.
Used only with Digital Commerce APIs. Default: empty string (null)
CacheAPI.ExternalSystemAuthHeader Specifies the authentication header of the AWS (external) system to which String
the cache will be migrated from Salesforce via the CMT Administration
Cacheable API Jobs page. See Initializing the API Cache. Default: empty string (null)
CacheAPI.ExternalSystemPartitionKey Specifies to the system partition key of the AWS (external) system which String
the cache will be migrated from Salesforce via the CMT Administration
Cacheable API Jobs page. See Initializing the API Cache. Default: empty string (null)
Caching combinations that exceed the limit are cached in multiple jobs.
Caching combinations that exceed the limit are cached in multiple jobs.
• Returns all the adjustments and overrides in the getOfferDetails API for
promotions, root, and child products.
• The price result for the root product will include the base prices for the
root product and all of the adjustments or overrides defined for the root
product. The price result for child products will include the base prices for
the child products and all of the adjustments or overrides defined for the
child products.
• The price result for promotion products will include the base prices for the
promotion products and all of the adjustments or overrides defined for the
promotion products. The price result for child products of promotion
products will include the base prices for the child products and all
adjustments or overrides defined for the child products.
• The price result for the root product will include the base prices for the
root product. The price result for child products will include the base
prices for the child products and all of the adjustments or overrides
defined for that product under the root product.
• The price result for promotion products will include the base prices for the
promotion products and the adjustments or overrides defined for that
promotion product for that promotion. The price result response for the
child products of promotion products will include base prices for the child
products and the adjustments or overrides defined for that promotion and
the adjustments or overrides defined for that promotion product.
• true: Basket API responses are serialized in a remote call. Default: false
• false: Remote call responses have a mapped format.
For CME Summer '19 and later, this setting is not used if MTSEnabled is set Default: false
to true.
For CME Summer '19 and later, this setting is not used if MTSEnabled is set
to true.
To use context rules, including the Tightest Match service, CacheEnabled Default: true
must be set to true.
To implement your own approval system, set Cart Level Discount Approval
Required to true and configure the CpqCustomDiscountApprovalService
class in your org.
• cachemode: All the data and wrapper collections are cached using
platform cache.
• inmemmode: Data and wrapper collections are not cached and will
instead remain in memory.
ContextRulesEnabled Context Rules, including the Tightest Match service: If set to true, context true/false
rules are enabled for the org. If set to false, context rules are disabled.
Default: false
In asset-to-order MACD FDO flow, you create orders on a future date with
the selected assets already added to the Order as OrderItems.
By default, the system looks for OrderItems in Orders that are in Status =
Draft AND OrderStatus__c is either Ready to Submit or Queued.
In this case, the values specified here override the default OrderStatus__c
values.
To add a new value to Status, set the FDOStatuses setting value to:
Status=Draft,Activated
In this case, only the values for Status are overridden. Values for
OrderStatus__c remain as default values.
FilterRuleWithEligAvail Checks the availability and eligibility of the productToBeAdded by rule. true/false
Determines if eligibility and availability are run on a product when the
product is added to the cart.
FindReferencesRowCountLimit Vlocity EPC: Limits the number of rows returned across products, Integer
promotions, quotes, orders, opportunities and assets using the Find
References button in Vlocity Product Console. The maximum is 1000. If Default: 20
null, the default limit is 20 rows.
• true: If the order or order item not in Draft status, it is locked for editing. Default: false
• false: The order or order item can be edited. This is was behavior prior to
CME Winter '20.
This setting controls only the logging of in-flight order notifications. The
actual processing of notifications is independent of this setting.
ObjectCopierPrice Quote-to-order: If set to false, does not rerun the pricing for the order. true/false
Default: true
When set to on, users can cancel the original order while it is in flight, which
will set the:
SingleFdoMode Vlocity FDO: If set to true, extra queries or code related to merging line true/false
items with future dated orders will NOT execute because only a single
future dated order is created per asset. This may improve performance. If Default: false
set to false, such queries or code will execute.
StrictSplitModeEnabled When splitting line items, determines whether to ensure the total quantity is true/false
equal to the original number.
Toggle Next Message Flag Vlocity Cart: If ON, dialog boxes display the Go to Next message link. If on/off
OFF, the Go to Next message does not display.
Default: on
WARNING
1. Select Order Product as the source object and Asset as the destination
object.
2. Map OrderItem RootItemId__c to Asset RootItemId__c.
3. Map OrderItem ParentItemId__c to Asset ParentItemId__c.
WARNING
UseWeights Context Rules and Tightest Match: If set to true, weights from context true/false
dimensions are considered when determining the tightest match price list
entry. If set to false, weights are ignored. Weights are always ignored if Default: false
SimplePLERuleCacheMode is true.
UsingPromotions Promotions and Vlocity Cart APIs: If set to true, executes queries and code true/false
processing related to promotion operations in the cart (not in the
Promotions list). If set to false, does not execute such queries and code, Default: true
which may improve performance.
UsingWeights Context Rules and Tightest Match: If set to true, weights from context true/false
dimensions are considered when determining the tightest match price list
entry. If set to false, weights are ignored. Weights are always ignored if Default: false
SimplePLERuleCacheMode is true.
ValidateAndUpgradeV2Attributes v2 Attribute Upgrades: If set to true, APIs upgrade attributes in the cart true/false
before submitting. If set to false or null, the cart functions as usual. Only use
while a large upgrade job is still running. To use this setting, set Default: false
SaveProductAttributeMetadata to true.
With CME Fall '20 and later releases, use the basket
lightweight validation feature instead.
Cart Customizable Attribute Level DEPRECATED: Applicable to Vlocity Cart in Summer Attribute/ Summer '17
'17. If set to ATTRIBUTE, Vlocity uses the legacy Product
attribute metadata structure. If set to PRODUCT Attribute
ATTRIBUTE or null, Vlocity Cart uses new attribute or null
metadata structure. Not needed for new installs.
CPPreProcOpportunityDRBundle DEPRECATED: Used in calculation procedures to String
specify the name of the DataRaptor used in the
CPPreProcOrderDRBundle CalcProcPreProcessor for attribute-based pricing using
PricingRulesImplementation. This functionality is
CPPreProcQuoteDRBundle replaced by attribute-based pricing available on Vlocity
Process Library.
CPPreProcUseDisplayText DEPRECATED: Used in calculation procedures to true/false
specify whether to use the display value or actual value
of an attribute in attribute-based pricing using
PricingRulesImplementation. This functionality is
replaced by attribute-based pricing available on Vlocity
Process Library.
CpqPerfMode DEPRECATED: If set to true, validate and refresh price true/false CME 13 and
icons appear next to the preview in in the legacy later
manager pages. AddtoCart will not price or validate in
Perf Mode. If set to false, the icons will not display.
CPQSubmit DEPRECATED: When the order is submitted, invokes Flow CME 10 and
the work flow-based implementation. This functionality later
is replaced by CPQ/SubmitOrder OmniScript.
See CPQSubmitFlowImplementation.
See CPQSubmitFlowImplementation.
DefaultAccountFieldset DEPRECATED: Specifies the API name of the field set API name
to show fields in the custom account lookup dialog box
from the review cart in the legacy Manager pages.
DefaultRenumberThreshold DEPRECATED: Sets the threshold above which the Integer CME 11 and
cart items are renumbered so there is no gap in the line later
numbers in the legacy Manager pages.
ImplicitPricing DEPRECATED: Determines if the pricing service runs true/false CME 12–14
every time a change to the cart is made in the legacy only
Order/Quote/Oppty Manager pages. If set to true,
pricing occurs only if one or more of the fields have
changed. If set to false, pricing does not occur when
fields change.
PaginationEnabled DEPRECATED: If set to true, getProducts API returns true/false
only a set of products to be shown on the first page in
the legacy Order/Quote/Oppty Manager pages. Next
set of products can be traversed by clicking on Next or
Previous link. If set to false, getProducts API returns
the complete list of products that are qualified.
PaginationSize DEPRECATED: Specifies the number of product Integer
records getProducts API should return in the legacy
Order/Quote/Oppty Manager pages. Used with Default:
PaginationEnabled. 100
Product Configuration Mode DEPRECATED: Determines if product bundles are Expand/ CME 11.4
expanded or collapsed when added to the cart in the Collapse and later
legacy Order/Quote/Oppty Manager pages. If the
Product Configuration Mode setting is missing or has
no value, the parent product is expanded and all child
products are collapsed.
Run Trigger And WorkFlow DEPRECATED CME 14.1
and later
UseSessionCache DEPRECATED false CME Spring
'17 and later
1. Go to the Vlocity CMT Administration tab, and under Custom Settings select CPQ Configuration
Setup.
2. At the bottom of the CPQ Setup Configuration settings page, click Add.
Two red fields appear.
5. Click Save.
You are allocated a minimum of 10 MB cache space to distribute on your org. Allocating a value of 1 MB to
each partition allows you to use all of the features of CME.
After applying Vlocity Communications, Media, and Energy package upgrades, the vlocity_cmt cache
partitions are always reset to zero. After you upgrade, allocate adequate space for the vlocity_cmt cache
partition, CPQPartition.
Using the cache improves performance and response time for some operations, especially in large, deep
hierarchical product bundles.
• Caching the complete hierarchy for product bundles in the shared catalog.
When you run the Refresh Platform Cache job on the Vlocity CMT Administration tab, Vlocity copies the
shared catalog's complete hierarchy, including the details of all product child items, and caches that
information in the org level cache layer. If you don't run this job, Vlocity caches the hierarchy at run time
when a product is used for the first time. This job also updates stored filterable attributes.
When you add or modify any product bundle or product child item, you must run the Product Hierarchy
Maintenance job to create a flat data store of the complete product hierarchy. Then run Refresh Platform
Cache to copy the hierarchy to the platform cache and invalidate the older cache values.
• Caching the complete hierarchy for all products in a particular price book.
When you click Refresh Pricebook on the Price Book record detail page, Vlocity calculates the complete
hierarchy, including the details of all product child items, and caches that information in the org level
cache layer. If you don't click Refresh Pricebook, Vlocity caches the hierarchy at run time when a
product is used for the first time. Refreshing the price book also updates stored filterable attributes. If the
Refresh Pricebook button is not visible, you must expose it. See Expose the Refresh Pricebook Button
NOTE
When you add or modify any promotion, product, or product child item, refresh the price
book to invalidate the older cache values and cache the updated values. For more
information, see Refreshing the Price Book Prior to Winter '18.
In addition, Vlocity Communications, Media, and Energy releases from Summer '17 to Summer '19 use the
session cache for context rules. The cache allocation depends on the number of context dimensions used
and varies from org to org.
1. Go to the Vlocity CMT Administration tab and click CPQ Configuration Setup. To get to the Vlocity
CMT Administration tab, click App Launcher or All Tabs, and then click Vlocity CMT Administration.
2. At the bottom of the CPQ Setup Configuration settings page, click Add.
Two red fields appear.
5. Click Save.
NOTE
In Vlocity Communications, Media, and Energy Winter '19 and later, use the Refresh
Platform Cache job on the Vlocity CMT Administration page to refresh price books. In
Winter '18 and Fall '18, use the Refresh Pricebook job on the Vlocity CMT Administration
page. For more information, see Administration Jobs Reference for Vlocity
Communications, Media, and Energy.
You must refresh all price books that opportunities or orders use. While refreshing, Vlocity
Communications, Media, and Energy processes the complete hierarchy, including the details of all product
child items, and caches that information in the org level cache. Refreshing a price book also updates stored
filterable attributes. If you do not refresh the price books after an upgrade, Vlocity Communications, Media,
and Energy caches the hierarchy at run time when a product is accessed for the first time.
NOTE
You must refresh the price book in Salesforce Classic, not Lightning Experience.
Refreshing the price book stores filterable attributes and caches product bundles when the cache is
enabled. You must refresh the price book in the following situations:
• When you add or modify an attribute or attribute value for any product in the price book
• When you add any new product to the price book, whether the product includes attributes or not
• When you add, modify, or delete the product child items for any bundle in a price book
NOTE
This is applicable only if you are using the platform cache. For more information, see
Configure CPQ Platform Cache.
• The ProductAttributesBatchProcessor batch job copies the product attributes from the JSONAttribute
field to the sObject Cached Filterable Attribute, enabling queries such as the filter in the Product List in
Vlocity Cart.
• The ProductHierarchyBatchProcessor batch job copies the product hierarchies created in the
ResolveProductHierarchyBatchJob to the CPQ partition platform org cache, leveraging the Salesforce
platform cache for optimized product hierarchy operations and enables support for product hierarchies.
Do not refresh the price book while orders are being created. Invalid orders and runtime errors may result.
NOTE
If the Refresh Pricebook button is not visible, you must expose it. For more
information, see Expose the Refresh Pricebook Button
In all prior releases, use the Refresh Pricebook job on the Vlocity CMT Administration page.
For more information about admin jobs, see the Administration Jobs Reference for Vlocity Communications,
Media, and Energy.
Starting from a line item or its fields, Vlocity can look up any other fields using the lookup relationship. For
example, from a line item, you can look up a price book entry. From the price book entry, you can look up
the product table and the product name field.
You can access Power Update settings from the Vlocity CMT Administration tab. Power Update settings are
also located in the Field Settings custom setting.
To use Power Update, you must create specific field settings that include the following information:
If there is an incorrect field setting, the Power Update user interface will not be available.
NOTE
Power Update is not compatible with Vlocity Cart.
To configure Power Update settings from the Vlocity CMT Administration tab:
1. On the Vlocity CMT Administration Power Update tab, click Display Fields.
2. At the bottom of the page, click Add.
Two empty boxes and one picklist appear.
3. In the first red box, enter the sequence in which the column heading should appear.
4. From the picklist, select the object in which the field appears.
5. Click the Action icon .
The Field Selection dialog box opens.
6. Select the field that contains the information to display.
7. Click Save.
The Query panel supports SOAP type string, Double, and Boolean values.
• One Time Manual Discount corresponds to the OpportunityLineItem, OrderItem, and QuoteLineItem
vlocity_cmt__OneTimeManualDiscount__c fields.
• Recurring Manual Discount corresponds to the OpportunityLineItem, QuoteLineItem, and OrderItem
vlocity_cmt__RecurringManualDiscount__c fields.
• One Time Total corresponds to the OpportunityLineItem, QuoteLineItem, and OrderItem
vlocity_cmt__OneTimeTotal__c fields.
• Recurring Total corresponds to the OpportunityLineItem, QuoteLineItem, and OrderItem
vlocity_cmt__RecurringTotal__c fields.
• Product Name corresponds to the OpportunityLineItem, QuoteLineItem, and OrderItem ProductName__c
fields.
• Quantity corresponds to the OpportunityLineItem, QuoteLineItem, and OrderItem Quantity fields.
• Provisioning Status corresponds to the OpportunityLineItem, QuoteLineItem, and OrderItem
vlocity_cmt__ProvisioningStatus__c fields.
1. On the Vlocity CMT Administration Power Update tab, click Query Fields.
2. At the bottom of the page, click Add.
Two empty boxes and one picklist appear.
3. In the first red box, enter the sequence in which the picklist item should appear.
4. From the picklist, select the object in which the field appears.
5. Click the Action icon .
The Field Selection dialog box opens.
6. Select the field that contains the information to display.
7. Click Save.
The Edit panel supports string and double SOAP type values.
1. On the Vlocity CMT Administration Power Update tab, click Update Fields.
2. At the bottom of the page, click Add.
Two empty boxes and one picklist appear.
3. In the first red box, enter the sequence in which the picklist item should appear.
4. From the picklist, select the object in which the field appears.
5. Click the Action icon .
The Field Selection dialog box opens.
7. Click Save.
• Object Name is the name of the line item object to update. It is usually one of the following objects:
• OpportunityLineItem
• OrderLineItem
• QuoteLineItem
• Sequence specifies the field sequence display.
• PricebookEntryId.Product2id.Name
• Quantity
• PricebookEntryId.Product2id.Family
• PricebookEntryId.Product2id.vlocity_cmt__Type__c
• PricebookEntryId.Product2id.vlocity_cmt__SubType__c
• PricebookEntryId.Product2id.ProductCode
• PricebookEntryId.UseStandardPrice
• PricebookEntryId.UnitPrice
• PricebookEntryId.vlocity_cmt__RecurringPrice__c
• vlocity_cmt__OneTimeTotal__c
• vlocity_cmt__OneTimeManualDiscount__c
• vlocity_cmt__RecurringManualDiscount__c
• vlocity_cmt__ServiceAccountId__c
• vlocity_cmt__BillingAccountId__c
• PricebookEntryId.IsActive
• PricebookEntryId.Product2id.CanUseQuantitySchedule
• PricebookEntryId.Product2id.QuantityScheduleType
• PricebookEntryId.Product2id.QuantityInstallmentPeriod
• PricebookEntryId.Product2id.NumberOfQuantityInstallments
• PricebookEntryId.Product2id.CanUseRevenueSchedule
• PricebookEntryId.Product2id.RevenueScheduleType
• PricebookEntryId.Product2id.RevenueInstallmentPeriod
• PricebookEntryId.Product2id.NumberOfRevenueInstallments
• LastModifiedDate
• vlocity_cmt__LineNumber__c
1. The Query panel filters the list of line items in the Records panel. You can query line items using
multiple fields defined in the Field Settings custom setting. Choose a field setting, select a qualifying
operator, and enter a value. Click the Query button to filter the line items in the Records panel.
2. The Records panel displays all of the line items in the cart. By default, all line items are selected. You
can select any line items to modify. Power Update edits only the selected line items.
3. The Edit panel enables you to change the line items. Power Update interfaces directly with the
database using DML requests. Other than standard data type checks and Salesforce behavior, the
system does not validate the line items. After you click Replace, you cannot undo the operation. You
can choose multiple fields to edit. Only selected line items are changed. Typical actions include set,
increment, decrement, percent, multiply, and divide. After a successful operation, the records in the
Records panel refresh. However, a refresh does not occur if an Apex job handles the operation.
4. Select an operator.
5. Enter a value for which to search.
6. To enter more search criteria, repeat steps 2 through 4.
7. Click Query.
8. In the Records panel, select the line items to change.
9. In the Edit panel, on the Replace tab, from the Add a Field to Change picklist, select the field to
change.
The field name you selected appears in a line below the picklist.
• Click the Exit button to close the Power Update page. If any values were changed, they remain
changed, but Power Update does not recalculate prices.
• Click the Exit & Validate button to close the power Update page and update the prices based on the
changes.
NOTE
When an Apex job performs updates, Power Update automatically recalculates
pricing.
NOTE
If you delete the value, there is no threshold; that is, an Apex job will never handle a
Power Update operation.
6. Click Save.
When an Apex job handles a Power Update operation, Power Update notifies the user with the Apex job ID.
The Records panel is not automatically refreshed when an Apex job runs. Power Update runs the job in
multiple batches with a batch size of the threshold value.
To check the status of an Apex job, from Setup, in the Quick Find box, enter Apex jobs.
NOTE
The line item quantity must be greater than one.
• If the value is false, the total quality of the split line items need not match the original quantity.
For example, if you originally had two iPhones as one line item, if the StrictSplitModeEnabled setting is
true, you can split the iPhones into two line items, no more, no less. However, if the
StrictSplitModeEnabled setting is false, you can split the iPhones into as many line items as you wish.
4. Click Save.
You can also configure how items are split using the StrictSplitModeEnabled custom setting.
When you add an item to the cart or when you refresh the cart, instead of returning the complete product
bundles, the level-based approach sends only the root along with the first level children. For example:
• Root
• Parent 1
• Parent 2
• Parent 3
When you click the expand icon, the next level of child product is returned through a subsequent API call.
Required Settings
The following CPQ configuration settings control the level-based approach to cart item refreshing.
• LevelBasedApproach specifies whether to use the level-based approach to cart refreshing. If set to true,
the value of the custom setting should be displayed when you create an order, add a bundle to the cart,
and expand all the child items in the bundle.
• LevelBasedPageSize specifies the number of items that are returned on one page.
• LevelBasedPagination specifies whether to use the level-based pagination settings.
NOTE
You can also write a custom implementation of the LevelBasedInterface interface to
control the behavior of level-based cart refreshing.
For instructions on creating custom fields, see Configure the Review Cart Using Custom Settings.
You are finished configuring the level-based approach to cart item refreshing.
Run this job when you add an attribute to an existing object type that is associated with products.
When running the EPCProductAttribJSONBatchJob, you enter a script to get a list of Product2 IDs, or
prod.Ids.
When you import data that contains product attributes, such as when creating a sandbox environment, you
must correct the product attribute record IDs. If your org contains migrated product attribute overrides from
promotions, you must also run EPCFixCompiledAttributeOverrideBatchJob to correct the attribute record
IDs.
For example, you can track the following data points for CPQ APIs:
To enable this functionality, Vlocity Tracking Service is implemented with Vlocity Cart Validation and tracks
the following fields for each CPQ API call:
To enable CPQ tracking, you add a trigger with an appropriate name. For example, to enable tracking for
getCarts API, create a trigger, name it Track.CPQ.getCarts, and set it to On.
The tracking data is stored in the Vlocity Tracking Entry object (VlocityTrackingEntry__c). For more details,
see Vlocity Components Event Tracking.
You can have many triggers simultaneously that enable tracking for different APIs. You can also enable
tracking at the CPQ level or at the individual method level.
• For compatibility with Vlocity Communications, Media, and Energy Spring '17, set the Cart
Customizable Attribute Level custom setting to Attribute.
• When you are ready to switch to the new, enhanced Vlocity Cart behavior, set the Cart Customizable
Attribute Level custom setting to Product Attribute. You could also delete the custom setting.
When installing the Vlocity Communications, Media, and Energy Summer '17 package for the first time, the
Cart Customizable Attribute Level custom setting is added and set to Product Attribute.
NOTE
In future releases, the Cart Customizable Attribute Level setting may not be installed,
because the absence of the setting enables the new behavior.
When upgrading the Vlocity package from Vlocity CMT Spring '17 to Vlocity Communications, Media, and
Energy Summer '17, Vlocity automatically adds the Cart Customizable Attribute Level custom setting and
sets it to Attribute. The Vlocity Cart behavior does not change. When upgrading, confirm that the custom
setting has been added. On the Vlocity CMT Administration tab, click CPQ Configuration Setup. The Cart
Customizable Attribute Level should be listed.
If it does not appear, you must add it. For more information, see Add CPQ Configuration Setup Settings.
You can remove it later.
In Vlocity CMT Spring '17 (V15), the product attribute Read-Only behavior setting controls whether the
attribute is configurable in quotes and orders in Vlocity Cart.
In Vlocity Communications, Media, and Energy Summer '17, both the Read-Only behavior setting and the
Run-time Configurable behavior setting control whether the attribute is configurable. This enhancement
provides better control over customizing product attributes.
The Read-Only and Run-time Configurable settings appear when configuring individual product
attributes. For more information, see Product Attributes Overview.
If the Run-time Configurable setting is false, the value is fixed at design time. Users cannot configure the
attribute in quotes and orders regardless of how the Read Only setting is set.
If the Run-time Configurable setting is true, the value is not fixed. Whether users can configure the
attribute value in quotes and orders depends on how the Read Only setting is set.
• If the Read Only setting is false, users can directly edit the attribute value during order capture.
• If the Read Only setting is true, users cannot directly edit the attribute value during order capture.
Instead, the value might be set at order capture through an API call, calculation, or process, such as a
process to assign an IMSI value to a new mobile plan.
Customers upgrading from Vlocity Spring '17 (V15) who are using Vlocity Cart will likely have many
products with the Read Only setting false, and the Run-time Configurable setting false. If the Cart
Customizable Attribute Level setting is not set to Attribute, these attributes become read-only for all
components in Vlocity Cart.
By default, upgrading customers have the Cart Customizable Attribute Level setting set to Attribute for
compatibility with Vlocity CMT Spring '17. Vlocity strongly recommends that customers enable the
enhanced control over attribute customization by changing the Run-time Configurable setting to true for
all product attributes outside of the production org. Then, set the Cart Customizable Attribute Level
setting to Product Attribute. Test that all components are functioning as expected in Vlocity Cart. When
the testing is successful, push the product attribute changes and the new Cart Customizable Attribute
Level setting to production. At that time, you can remove the Cart Customizable Attribute Level setting.
The Run-time Configurable setting in the EPC Product Console is the same as the Customizable setting
through the Salesforce Product record pages. On the Salesforce Product record pages, the Customizable
setting was originally used only to enable the additional Picklist data type for a product attribute. The
Customizable setting continues to behave that way in the Salesforce Product record pages, but also takes
on the new Vlocity Communications, Media, and Energy Summer '17 functionality as well. For more
information, see Product Attributes Overview.
You can create a custom message for each product relationship record. First, you create a user custom
message field to display instead of the standard message. Then, you set the
CustomRuleMessageFieldName custom setting.
3. Expose the new field on the Product Relationships record detail page.
a. On the Product Relationship tab, click a product relationship.
b. Click Edit Layout.
d. Drag the field you created in step 1 to the Product Relationships Detail Information section.
e. Click Save.
4. Enter the custom message.
a. On the Product Relationship tab, click a product relationship.
b. In the custom field, for example, Message, enter the custom message.
5. Ensure that the active implementation for the ProductValidationInterface is a validation rule
implementation.
a. On the Interface Implementations tab, from the View picklist, select All.
b. Click Go!.
c. Click ProductValidationInterface.
d. Ensure that ValidationRulesImplementation or a custom implementation that invokes compatibility
rules is active. If it is not, click the appropriate implementation and select Active.
1. In Lightning Experience, from Setup, in the Quick Find box, enter Object Manager.
2. Click Object Manager.
3. Click the object to which to add the button—Opportunity, Order, or Quote.
4. Click Page Layouts.
5. Click the page layout for your object record detail page, for example Order (Vlocity
Telecommunication Services) Layout.
6. In the palette, click Buttons.
7. Drag the ConfigureWithNameSpace button from the palette to the Object Detail, Custom Buttons
section.
8. Click Save.
In Asset to Order FDO MACD flow, Order's Status and OrderStatus__c fields query for a previously created
MACD order. The query uses the following values:
The FDOStatuses setting lets you configure the possible list of values for Status and OrderStatus__c fields.
Format
The value for the status FDOStatuses is a semicolon-separated list of fields and their corresponding values:
<FieldAndValue>;<FieldAndValue>
To specify only one FieldAndValue, you need not use a semi-colon. Each FieldAndValue is an expression in
this format:
<Field>=<Comma-separated-values>
Examples
The following table lists FDOStatus values for various use cases.
In Vlocity CME, the CPQ Order Status field (API Name: vlocity_cmt__OrderStatus__c) includes values
such as Ready To Submit, In Progress, Activated, Cancel Requested, Cancelled, Completed and so on.
See Order Statuses in CPQ.
The Vlocity OM Fulfilment Status field (API Name: vlocity_cmt__FulfilmentStatus__c) includes values such
as Draft, In Progress, Activated, and so on.
IMPORTANT
DO NOT customize the Order Status or Fulfilment Status fields to extend the picklist
values for your custom project values. Instead, create a custom field with the required
milestones as picklist values. See Creating a Custom State Field.
After you enable the usage pricing feature, the following options are available in Vlocity Cart.
NOTE
If you do not enable the Cost and Margin feature, Usage Pricing is only available in
the drop-down menu of Vlocity Cart.
To support canceling orders, you must add your Salesforce org base URL to the remote site settings.
the namespace. The value for the corresponding Remote Site URL is https://cmt-106-
vlocity-cmt.na72.visual.force.com.
For new Installations, the StreamingAPI should be set as the Remote Site Name.
You need to switch to Salesforce Classic before you invoke the Cart to see that version of the URL.
5. Select Disable Protocol Security.
IMPORTANT
Do not disable protocol security for:
• Streaming API
• Vlocity Mock
• Vlocity process Library B2BMobile
6. Select Active.
7. Click Save.
NOTE
Salesforce does not allow Vlocity to install custom indexes in an org during install. To have
a custom index added to an org, open a case with Salesforce technical support and
provide the exact SOQL queries with bind variables needed to create and test the index.
If you are implementing Vlocity CPQ, you must add the following required indexes to support the related
CPQ objects.
SELECT
Id,ParentId,vlocity_cmt__AssetReferenceId__c,vlocity_cmt__ParentItemId__c,vloci
ty_cmt__PricebookEntryId__c,vlocity_cmt__RootItemId__c FROM Asset WHERE
vlocity_cmt__ParentItemId__c = '02i3i00000099TNAAY'
Asset.vlocity_cmt__RootItemId__c
SELECT Id,ParentId,vlocity_cmt__AssetReferenceId__c,vlocity_cmt__RootItemId__c
FROM Asset WHERE vlocity_cmt__RootItemId__c = '02i3i00000099TaAAI'
Asset.vlocity_cmt__AssetReferenceId__c
Asset.vlocity_cmt__PricebookEntryId__c
SELECT
Id,ParentId,vlocity_cmt__AssetReferenceId__c,vlocity_cmt__PricebookEntryId__c,v
locity_cmt__RootItemId__c FROM Asset WHERE vlocity_cmt__PricebookEntryId__c =
'01u3i000000PavqAAC'
OrderItem.vlocity_cmt__RootItemId__c
OrderItem.vlocity_cmt__AssetReferenceId__c
SELECT
Id,OrderId,vlocity_cmt__AssetReferenceId__c,vlocity_cmt__ParentItemId__c,vlocit
y_cmt__RootItemId__c FROM OrderItem WHERE vlocity_cmt__AssetReferenceId__c =
'f8c87dd8-42bd-acce-c064-0ff505aa0883'
• cpq-base-grid.html
• cpq-base-header.html
• cpq-base-header-card.html
• cpq-left-sidebar.html
• cpq-product-cart.html
• mobile-ret-cart.html
$rootScope.apiSettings = {
'addToCartAPIRequiresPricing': true,
'addToCartAPIRequiresValidation': true,
...
};
$rootScope.vlocityCPQ.features = {
enablePromotions : true,
...
};
}]);
cpq-base-header- Replace $root.vlocityCPQ.features.enablePricing with attrs.enablePricing.
card.html
cpq-base-header.html • Update the vloc-card directive.
• Add the enable-pricing parameter:
<vloc-card enable-pricing="attrs.enablePricing">
cpq-left-sidebar.html Replace $root.vlocityCPQ.features with importedScope.featureSettings.
cpq-product-cart.html:
GUIDs Performance
Vlocity made GUID performance enhancements to meet demand from customers for higher throughput for
some key transaction types. The GUID performance feature is an optional performance enhancement
available to customers with the Fall '20 release.
The transaction types can be a mix, but a large portion of that mix is add-to-cart, which essentially adds line
items to an existing or empty order. To achieve the desired throughput, the number of, and time spent on,
DMLs and SOQLs executed by the add-to-cart transaction in the modeled customer environment has been
reduced.
Of the two types of database operations, DMLs are typically far fewer in number but are often very slow to
execute and expensive in terms of database resources. In particular, the DML operations are expensive in
terms of a metric tracked closely by Salesforce: Database CPU. Salesforce requires that none of their pods
exceed 40% DB CPU utilization. The combination of the high number of order transactions in the
performance tests modeled on the customer requirement and the impact of each transaction was easily
exceeding that limit.
• Insert DML, required to create the line items added to the cart.
• DML for pricing. This DML was eliminated by performing the pricing in memory before the initial insert.
• DML to update the hierarchy establishing fields ParentItemId__c and RootItemId__c that contain the
string-representations of Id values of related records.
Since the ParentItemId__c and RootItemId__c fields contain ID values of rows that are often not created
until after the first DML executes, you cannot eliminate the second DML while maintaining the existing
data model where those fields contain, essentially, Salesforce ID values.
However, the actual type of the ParentItemId__c and RootItemId__c fields is text with a maximum length
of 255 characters. This type is capable of storing both string representations of Salesforce ID values but
can also store any other kind of string. Therefore, instead of storing the string representation of the
Salesforce ID of the target row, the target is identified by its AssetReferenceId__c value so the same
result can be accomplished without requiring this DML.
In the previous data model, the ParentItemId__c and RootItemId__c fields contain the Salesforce ID values
of the target.
As an example, consider a simple product hierarchy with a root product named "Root Product" and a single
child named "Child Product". If "Root Product" were added to an order, the OrderItems would contain the
following fields, in addition to many others not shown:
To represent the hierarchy, the ParentItemId__c and RootItemId__c fields of "Child Product" contain the Id-
value of "Root Product" (8024600000Nj76BAAR). In addition, Root Product's RootItemId__c contains its
own ID value because it is the root of the hierarchy.
For example, using the new data model the OrderItem rows are:
The hierarchy-establishing fields contain the AssetReferenceId__c value of the target rather than the ID
value of the target. You can tell immediately that GUID values are used because the ParentItemId__c and
RootItemId__c values are longer than normal Salesforce IDs and contain dashes. This can be an important
clue for debugging and testing or while searching data for errors.
However, while AssetReferenceId__c values often look like the values above, they may also look different
and even take the form of Salesforce IDs. The values above are generated by default Vlocity code.
You can implement an open interface to generate your own asset reference ID, in which case the values
could look like any string. Finally, it is possible that the values in the AssetReferenceId__c field are taken
from older Vlocity code that actually used Salesforce ID values. Generally, Salesforce ID values come from
another container, such as values that look like Salesforce IDs but don't match the IDs of other line items in
the current container and instead match the AssetReferenceId__c values.
Configuration
Due to the heavy testing requirements of these changes and the potential for customer-logic incompatibility,
the ability to use GUID values in the hierarchy-establishing fields is hidden behind a master configuration
switch. By default, the switch is logically off, meaning that Salesforce ID values are still used in the
hierarchy fields.
In CME Fall ’20, you can enable the GUID mode by adding a CPQ configuration setting named
UseAssetReferenceIdForParentAndRoot and setting its value to True.
Once this configuration setting is enabled, Vlocity CME code immediately starts producing new records,
such as OrderItem, OpportunityLineItems, QuoteLineItems, and Assets, with the GUID values in the
hierarchy fields when conditions allow for it, such as when creating a new order.
These new records are not compatible with code that runs when the configuration switch is turned off, so
you cannot turn off the feature again without potential data-incompatibility errors.
Also, customers still reap performance benefits for non-legacy containers, such as new orders, even if they
have legacy data, such as unconverted assets.
All Salesforce Vlocity code must be capable of handling legacy data when the switch is on even if you have
a data migration strategy.
To simplify the implementation and allow for high performance, containers, such as Order, Opportunity,
Quote, or Account, do not contain a mix of records with both GUID and non-GUID values in the
ParentItemId__c and RootItemId__c fields. This allows the bulk of the Vlocity code that implements the
various transaction types to determine which type of hierarchy-establishing value to use for the current
container by examining exactly one field in one existing record in that container. This field is usually a
RootItemId__c field because null values are not normally used in this field.
If there are existing records, then any new records will match the style of the existing records in the
container. For example, if an OrderItem is added to an existing Order with the master-GUID configuration
switched on and that order has OrderItem records containing the old Salesforce IDs in the hierarchy fields,
then the new OrderItem will also have Salesforce IDs.
OrderItems added to an Order that has existing OrderItems with GUIDs will also use GUIDs. The related
add-to-cart transaction incurs performance benefits as a result. OrderItems added to an empty order will
have GUIDs because there is no risk of mixing.
An Apex batch process converts Vlocity-specific customer data in the background to use the GUIDs. This
program is compatible with the running Vlocity Apex code on the same org by using DMLs that convert one
or more containers at a time, but never partial containers.
Customers who enable this performance feature may also have custom logic to convert for maximum
performance benefit. For example, some customers may produce orders by importing them continually from
a third-party order management system. To work efficiently with the new GUID change, such a customer
would need to modify that logic so the new orders are produced with the appropriate GUID values in the
ParentItemId__c and RootItemId__c fields. If the customer did not change the logic, the orders produced
would still work by running Vlocity code even with the master GUID switch enabled. However, any
transactions operating on those orders would not incur performance benefits.
The existence of an ID value within the RootItemId__c and ParentItemId__c fields in the without-GUIDS
case usually requires a separate DML to write after the DML that created the line items. The reason for the
additional DML is that the ID values of the target line items are usually not available until after the write
operation that created them is finished. This second write is not necessary when you enable the GUIDs
performance feature unless you are creating new line items within containers that have not been converted
to the new style because the new values are not Salesforce IDs.
In addition to immediate time savings, the GUIDs performance feature carries other benefits for the future,
allowing existing features and to-be-developed features to potentially run faster by enabling them to issue
minimal write operations (one). Also, the savings of the DML can have cascading benefits for other
database operations on the same Salesforce org by reducing the overall database workload.
DMLs can be very expensive to execute so even though this change does not come without potential
migration issues, the benefit is substantial both in immediate time savings and reducing the load on the
database in general.
It is not possible to accurately quantify the time savings enabled by this feature because observed times for
the affected write operations vary widely depending on factors such as the exact structure of the product
being added, load on the Salesforce org, and many other conditions.
Enable GUIDs
NOTE
Do not turn on this setting unless a review of the existing custom code has been
performed.
For example, consider a simple product hierarchy with a root product named "Root Product" and a single
child named "Child Product. The line items, which could be OrderItems within an Order container, but in fact
could be any of the above types, might appear in the database without the GUID switch enabled:
These are not all the fields present, but these are all the fields relevant to the GUID feature changes. The
ParentItemId__c values, when not null, and the RootItemIdValues__c all match the target Salesforce ID
(“Id”) of some row in the container. The ParentItemId__c points to the ID of the immediate parent in the
hierarchy and the RootItemId__c field points to the line item at the root of the hierarchy. The
AssetReferenceId__c field value is not entirely relevant at this point, but it becomes relevant as you explore
the with-GUID state of the records.
Consider the state of these same records as they would exist if written into an empty container with the
GUID feature enabled:
Note that the ParentItemId__c and RootItemId__c values no longer match the target line item’s ID field but
instead match the target line items’ AssetReferenceId__c field. The hierarchy defined is the same in both
cases, without GUID, and with GUID, but the type of value within the hierarchy fields is different.
Also, note that neither the GUID nor without GUID examples mix the value styles. There is not, for instance,
one-row using Salesforce IDs and another using AssetReferenceId__c values in the two fields. Line items
or assets in a single container do not mix styles even with the GUID switch on.
The ParentItemId__c and RootItemId__c fields point to the AssetReferenceId__c value of the relevant line
item in the hierarchy instead of the Salesforce ID of those line items.
Once you enable the GUID switch, existing containers are not immediately converted to the new data
format. Instead, Vlocity code can detect and handle either of the two formats to allow proper functionality
while existing data is migrated using the supplied background process (or not, the migration is optional).
Custom Code
Ensure all such custom code is inspected and modified before enabling the GUID feature. It is possible that
a customer installation has code that is sensitive to this change.
However, if the specific case has passed the tests in the previous section then it likely identifies code that
needs modification.
Here are some additional tests that can confirm the if code needs modification:
If the following condition is true, then, despite passing the checks in the previous section, the custom code
may not need modification.
The value taken from RootItemId__c or ParentItemId__c field is treated only as a string value and is
never compared to a Salesforce ID. For example, a value is fetched from one of these fields and used in a
map as a unique key field of type String. The keys in the map are compared only to other RootItemId__c
and ParentItemId__c fields in the same container and never mapped to nor compared with Salesforce
ID values.
Once you have identified custom code that must be changed, remember to maintain compatibility with
earlier releases in the modified logic.
This means, in practice, a given container, such as Account, Quote, Order, or Opportunity, can contain
either updated records using AssetReferenceId__c values in ParentItemId__c and RootItemId__c (new
records) or Salesforce IDs in those fields (legacy records). There can never be a mix of such types within
the same container, so you only need to test one record to determine the style that is in effect if you’ve
retrieved the line items by reference to the container ID (i.e., selected all assets from an account).
1. Obtain a root item with at least the Id, AssetReferenceId__c, and RootItemId__c fields populated.
• You can identify a root line item by testing for ParentItemId__c = null.
• Your custom code may have already fetched or otherwise obtained a root line item. If so, it’s
recommended for performance reasons to leverage the existing sobject if possible rather than
perform a separate fetch for this purpose.
2. Compare the ID value as a string to the RootItemId__c value. If they are the same, then the current
container is using legacy Salesforce IDs. Otherwise, the container is using the newer
AssetReferenceId__c values.
Here is an example of code that, given a list of sobjects from a single container, can identify which value
style is in use. A requirement of the input list is that at least one root line item must be present. This is
guaranteed if, for instance, the line items represent the complete contents of the container. If there was an
error detected in the input sobject list, the code returns null. Otherwise, it returns true if the container is
using AssetReferenceId__c values and false if not using AssetReferenceId__c values. The example makes
use of a second method that accepts a root line item as input. This can also be useful for special cases
where the root line item has already been identified.
== null)
{
rootLineItem = currentLineItem;
break;
}
}
if (rootLineItem == null)
{
// error - no root item supplied
return null;
}
return
isRootLineItemUsingGuids(rootLineItem);
}
public Boolean isRootLineItemUsingGuids(SObject rootLineItem)
{
String rootIdValueAsString = (String) rootLineItem.Id;
if (rootIdValueAsString == null)
{
// error - the id field is not opulated.
return null;
}
String rootRootItemIdAsString =
(String) rootLineItem.get('vlocity_cmt__RootItemId__c');
return (rootIdValueAsString != rootRootItemIdAsString);
}
OpportunityLineItem parentOppLineItem = [
SELECT Id, UnitPrice, Product2.Name
FROM OpportunityLineItem
WHERE Id=:childOppLineItem.vlocity_cmt__ParentItemId__c];
OpportunityLineItem parentOppLineItem;
if (containerIsUsingGuids)
{
// using guids, ParentItemId__c is comparable to
// AssetReferenceId__c
parentOppLineItem = [
SELECT Id, UnitPrice, Product2.Name
FROM OpportunityLineItem
WHERE vlocity_cmt__AssetReferenceId__c =
:childOppLineItem.vlocity_cmt__ParentItemId__c];
}
else
{
// using legacy salesforce ids. ParentItemId__c is comparable to Id.
parentOppLineItem = [
SELECT Id, UnitPrice, Product2.Name
FROM OpportunityLineItem
WHERE Id=:childOppLineItem.vlocity_cmt__ParentItemId__c];
}
This example assumes that the containerIsUsingGuids value is determined by logic similar to the
isContainerUsingGuids() method supplied above.
Case 2: RootItemId__c identifies line items within a hierarchy having the same
root
RootItemId__c is used as input to the query for selecting the line items in the hierarchy, but that case is
similar enough to the previous case (using ParentItemId__c) that it’s not repeated here. Instead, consider
the case where all line items in the container have already been fetched into memory and the
RootItemId__c value collects the line items belonging to a single hierarchy.
The existing code to collect the hierarchy might look something like the following example, which assumes
that a previously identified rootAsset and a list of all assets in the container are supplied as input.
The code identifies the assets in the hierarchy by comparing the RootItemId__c value to the Salesforce ID
of the known root. This does not always work when the GUID feature is enabled.
Here is how the code might look after adjusting for the GUID performance feature. It has the same input
assumptions and leverages the isRootLineItemUsingGuids method defined above.
{
if (usingGUIDs)
{
if (currentAsset.vlocity_cmt__RootItemId__c ==
rootAsset.vlocity_cmt__AssetReferenceId__c)
{
allAssetsInHierarchy.add(currentAsset);
}
}
else
{
if (currentAsset.vlocity_cmt_RootItemId__c ==
rootAsset.Id)
{
allAssetsInHierarchy.add(currentAsset);
}
}
}
This process is optional. There is no need to convert records using this process to obtain proper
functionality with the GUID feature on or off.
The GUIDs performance feature is built to be compatible with earlier releases. Errors do not occur if legacy
records are not converted. However, if legacy records are not converted, then an extra write DML operation
may occur during transactions that creates additional records in the same container. A container can be an:
For example, if legacy assets are not converted and the GUID feature is enabled, performance benefits are
still the same for any resulting Asset-to-Order operation because, for example, the order is entirely new
even though it was modeled after the existing unconverted Assets. The new order line items in the new
order can use GUIDs without violating the mixing rule and obtain improved performance as a result.
However, if one or more order items are added to the order and the order is submitted, the resulting submit
operation incurs an extra, potentially costly, DML write operation. The reason is that the relevant target
container in this operation is the existing Account that already has unconverted assets. To avoid violating
the mixing principle, the code must then write the new assets using Salesforce IDs, which requires a
separate write operation.
The only fields that are modified are the vlocity_cmt__ParentItemId__c and vlocity_cmt__RootItemId__c
fields of the related line items: Asset, OrderItem, QuoteLineItem, and OpportunityLineItem. You can inspect
the code before running it.
The name of the batch class is GUIDConverterBatchProcessor. This class is designed to either
identify or convert needed records of a single container type within each scheduled run. The primary output
interface is email, so ensure the email address of the user account for initiating the batch process is up to
date. Check your spam filter as well.
1. Execute code to create an instance of GUIDConverterBatchProcessor.cls and schedule the batch job.
Each such instance is specific to one container type. For example, to start a job for immediate
execution, subject to org resources, to convert all assets tied to any account on the org that does not
already conform to the more efficient data model, run this in anonymous Apex:
GUIDConverterBatchProcessor
converter =
new GUIDConverterBatchProcessor(
'Account',
GUIDConverterBatchProcessor.Options.CONVERT,
null);
Id jobId =
Database.executeBatch(converter);
System.debug(LoggingLevel.ERROR, 'job id
is: ' + jobId);
2. Wait for the job to finish and look for an email sent to the email address of the Salesforce user account
for launching the batch job. The email details the number of containers (accounts in this case) for
which conversion was necessary and lists the account IDs of any accounts that could not be
processed.
Here are the details about the conversion launching code used in the above example:
• This example converts only assets. To completely cover all possible records, run a similar process for
Order, Quote, and Opportunity, using each as the first parameter.
• This example converts the affected records. If you would rather get an indication of how many records
might need to be modified, you can use other options for the second parameter besides CONVERT.
• The third parameter is null in this example. Use null to specify containers to skip if errors occurred in
previous runs.
If you encounter governor limit exceptions while executing the batch process, try reducing the batch size by
passing, for example, 100 as the second parameter to Database.executeBatch()).
During a package upgrade, picklist values are not normally installed into your org for existing fields. As a
result, you must manually add the following picklist values. However, if any picklist values for an object are
installed through the Vlocity package and those picklist values are inactive, you must activate them. Also,
for several picklist values, you must remove them and either change the Lookup values to text or leave
them blank.
Object Label and API Name Field Label and Field Name Picklist Value to Add
Context Scope Scope Type Virtual
vlocity_cmt__ContextScope__c vlocity_cmt__ScopeType__c
Vlocity OmniScript Element Type Radio Group
Navigate Action
Batch Action
Cache Block
Conditional Block
vlocity_cmt__OmniScript__c vlocity_cmt__Language__c
Product Scope Account
Remove
• Completed
• Deployed
Object Label and API Name Field Label and Field Name Picklist Value to Add
Product Type Plan
SIM Card
Add On
Fee
Top Up
Handset
Product Sub Type Postpaid
Group
Group Rollup
Master
Master Rollup
Order Product Relationship Relationship Type Replacement
Movement
Asset Relationship Relationship Type Replacement
Suspend
Resume
Movement
Relies On
Order Product Sub Action Replace
OrderItem vlocity_cmt__FulfilmentStatus__c
Quote Line Item Action Suspend
Object Label and API Name Field Label and Field Name Picklist Value to Add
cachedAPIResponse Type ruleSetCombinationResultItem
groupContext
basketWrapper
assetReferenceKey
pleOfferMap
basketPricing
bundleWrapper
promotionWrapper
CachedAPIChange ChangeType promotionWrapper
vlocity_cmt__CachedAPIChange__c vlocity_cmt__ChangeType__c
Order Pricing Source Attribute Based Pricing
vlocity_cmt__OrderPriceAdjustment__c vlocity_cmt__Source__c
Quote Pricing Source Attribute Based Pricing
vlocity_cmt__QuotePricingAdjustment__c vlocity_cmt__Source__c
Opportunity Pricing Source Attribute Based Pricing
vlocity_cmt__OpportunityPriceAdjustment__c vlocity_cmt__Source__c
Account Pricing Source Attribute Based Pricing
vlocity_cmt__AccountPriceAdjustment__c vlocity_cmt__Source__c
Account Hold Hold Type Customer Initiated
Fraud
Asset Action Suspend
Reassignment
Quote Product Relationship Relationship Type Movement
vlocity_cmt__QuoteLineItemRelationship__c vlocity_cmt__RelationshipType__c
Object Label and API Name Field Label and Field Name Picklist Value to Add
Offer Migration Plan Product Family Broadband
TV
Wireless Mobile
Internet
Multiplay
Product Relationship Relationship Type Relies On
vlocity_cmt__ProductRelationship__c vlocity_cmt__RelationshipType__c
Order Order Status Amend Requested
Superseded
Submitted
Rejected
Frozen
Discarded
Available In Pool
Order Fulfilment Status Queued
Replace SIM
Change Number
Orchestration Scenario Action NoChange
Resume
Vlocity Object or Object Type Lifecycle Status Add:
Remove:
• Completed
• Deployed
Object Label and API Name Field Label and Field Name Picklist Value to Add
Vlocity Picklist Lifecycle Status Add:
Remove:
• Completed
• Deployed
Project Status Add:
Remove:
• Deployed
• Completed
• Testing
• Approved
• Rejected
Remove the following picklist value and change the Lookup value to text or leave it blank:
In Lightning Experience:
1. Go to Setup → Object Manager, and find the object that contains the picklist field that you need to
change.
2. Click Fields & Relationships.
3. Click the picklist field.
4. Under the Values section, click New.
5. Enter the new picklist values.
6. To apply the new values to a specific record type, check the box next to the Record Type Name.
If no Record Type Name boxes are checked, the values apply to all record types.
7. Click Save.
1. Go to Setup.
2. Find the object that contains the picklist field that you need to change, either under Build →
Customize or Build → Create → Objects.
3. In Fields, click the picklist field.
4. Under the Values section, click New.
5. Enter the new picklist values.
6. To apply the new values to a specific record type, check the box next to the Record Type Name.
If no Record Type Name boxes are checked, the values apply to all record types.
7. Click Save.
• Id is mapped to Id
• value is mapped to value (only if value is not null)
• label is mapped to value (only if value is null and label is not null)
• Id is mapped to value (only if value and label are null)
• sequence is mapped to display sequence
• label is mapped to label
You can use the following as an example of troubleshooting API changes for picklist attribute values in
custom implementations:
In the sample response, there are several nodes, and there is also an array under the label values. Assume
a certain picklist moved from a single value to multi-value, meaning that when you query the API that uses
that picklist, instead of one value being returned, an array is returned with all the values selected. For
example, an order with a picklist for status that contains values for draft, in progress, or activated would
return all those values if the picklist becomes multi-valued. This changes the way the object is parsed by
the API on the other side. Instead of receiving a string with the represented value, you receive an array with
all the values. Therefore, everything that was expecting a string will fail. If you investigate each element in
the array, you can see the values returned and determine the impact on the custom implementation.
Enabling the party model will increase the storage requirements in your org. In general terms, an additional
party record will be generated for each account, contact, and Vlocity household record stored.
There are multiple maintenance, upgrade, EPC, and other jobs for configuring Vlocity Communications,
Media, and Energy. This guide describes each job in detail.
In most cases, do not run administration jobs on live production environments. Running the jobs may
disrupt order processing and the customer experience.
The Vlocity CMT Administration tab includes custom settings and the Admin Console, from which you can
the administration jobs.
1. Click the All Tabs button , or click the App Launcher and then click the Vlocity CME Admin app.
2. Click Vlocity CMT Administration.
1. Click the All Tabs button , or click the App Launcher and then click the Vlocity CME Admin app.
2. Click Vlocity CMT Administration.
3. Under Admin Console, click Maintenance Jobs.
4. Next to the maintenance job that you want to run, click Start.
To see details about each job, click the link in the Maintenance Job Name column.
The Root Account (vlocity_cmt__RootAccountId__c) field stores the root account ID for each account in
the hierarchy. The Root Account field is essential to maintain relationships between accounts. The
Account Hierarchy Maintenance job finds any accounts that have a null root account field and then adds
the root account ID. The job reports any errors encountered in the job status email it sends to the org
administrator.
After running the Account Hierarchy Maintenance job, you can run the below query to validate the data in
your org:
You can run this query to validate that the Account Maintenance Hierarchy job completed successfully:
Batch Validation
This job validates a list of header items in opportunities, orders, or quotes against a predefined list of rules
and entity filters.
You can use the following Apex method to programmatically run the Product Hierarchy Maintenance, Clear
Managed Platform Cache, and Refresh Platform Cache jobs in sequence:
CMTAdminJobService.startProductHierarchyMaintenanceJob(pricebookId)
To run these jobs on all price books, substitute null for the price book ID.
You can run the Field Maps Maintenance job as part of the upgrade process when you want to restore
changes to the default field mappings back to factory settings.
IMPORTANT
This job deletes any custom maps, so record any custom field mappings you need to
restore after this job has run.
When to Run This Job • After planning and documenting existing field mappings
• To restore or recreate default field mappings
• After upgrades that introduce new fields to map
• On development or test environments, and then on production environments, but not on live
production environments
More Information If you have custom mappings to retain, record your customization details before running the Field Maps
Maintenance job.
You can use the Field Maps Maintenance job as a restore job.
The Field Maps Maintenance job may be helpful for troubleshooting, for example, to resolve issues in
Vlocity Cart.
Returns all active and default flags on interface implementations to their original states.
When Not to Run This Job If you have custom implementations to retain, especially in production environments
When to Run This Job Run only on a first-time package installation.
More Information Run only on a first-time package installation.The Implementation Maintenance (Restore) removes any
interface implementation customizations in your org. Record any custom implementations you make.
• Opportunity to quote
• Quote to order
• Order to asset
• Asset-related objects
The CPQ flow uses the Object Map Maintenance job to map source opportunities to destination
opportunities.
You can use the Object Map Maintenance job as a restore job.
The Object Map Maintenance job may be helpful for troubleshooting, for example, to resolve issues in
Vlocity Cart.
When to Run This Job • After any changes to the product hierarchy or product cardinality in the Vlocity Product Console
• After upgrading Vlocity Communications
• After spinning a new org
• Before running the Refresh Platform Cache job
Delete Old Data With Fall '20 and later, you can enable this option to delete the older, inactive dataset. Only the new, rebuilt
Option dataset is available. Enabling this option can save storage space. See the More Information section about
how datasets are used for this job.
More Information The Product Hierarchy Maintenance job is a global job that reads the product child items across the shared
catalog and creates a flat version of the product hierarchy in the Data Store sObject to enable quick access
to child record IDs at runtime. Messages appear in the CMT Administration screen after successfully
completing the Product Hierarchy Maintenance job and administrators receive email notification.
After running this job, click Refresh Platform Cache to run the ProductHierarchyBatchProcessor and copy
the new product hierarchy data to the platform cache.
With Fall '20, running the Product Hierarchy Maintenance job no longer requires downtime. Users can
continue to work while the job runs. The Product Hierarchy Maintenance job uses a new cached data set,
and there are two sets of data: the current one which is active and the new one that the job is building,
which is inactive. Any changes to Products and the PCIs are recorded in the new dataset. When PHM
completes, the older dataset is deactivated, and the new one is activated.
Vlocity Mobile also uses the Data Store sObject to store application definition records. If you are using the
Vlocity Mobile application, ensure that your mobile application definition does not create records using the
Product Hierarchy record type. Otherwise, the Product Hierarchy Maintenance job deletes them.
You can use the following Apex method to programmatically run the Product Hierarchy Maintenance, Clear
Managed Platform Cache, and Refresh Platform Cache jobs in sequence:
CMTAdminJobService.startProductHierarchyMaintenanceJob(pricebookId)
To run these jobs on all price books, substitute null for the price book ID.
Troubleshooting If the following error occurs:
Go to Setup > Deliverability. Ensure that Access Level is set to All Email.
Run the Product Hierarchy Maintenance job before running Refresh Platform Cache in order for changes in
product bundles to be reflected in your implementation.
NOTE
In the Fall '18 release and earlier, this job is named Refresh Pricebook.
ProductAttributesBatchProcessor
Where to Run CMT Administration tab
This Job
Risks of HIGH RISK
Running This
Job Can cause orders to fail in a live production environment.
Because this job includes price books that Vlocity doesn't use, it can take longer to complete if you have more
price books. The time for completing this job run can vary. You can exclude non-Vlocity price books by running the
following code:
controllerClass.setParameters(JSON.serialize(input));
controllerClass.invokeMethod();
When Not to In a live production environment.
Run This Job
When to Run After changing product bundles, product cardinality, or filterable attributes in Vlocity Product Console.
This Job
More The Refresh Pricebook job runs on all products of an active price book. It doesn’t filter Salesforce Industries
Information products.
• Copy the product hierarchies in the data store to the org cache in the platform cache for every product bundle.
• Copy filterable product attributes to the sObject cache that stores filterable attributes.
If the Refresh Pricebook job can’t refresh one of the price books, the job moves to the next price book. It notifies
you if refreshing any of the price books fails.
Starting in the Winter '18 release, this job (formerly Refresh Pricebook) is available in the Maintenance Jobs list in
the CMT Administration screen. For instructions on how to use this job in earlier releases, see Refreshing the
Price Book Prior to Winter '18.
You can use the following Apex method to programmatically run the Product Hierarchy Maintenance, Clear
Managed Platform Cache, and Refresh Platform Cache jobs in sequence:
CMTAdminJobService.startProductHierarchyMaintenanceJob(pricebookId)
To run these jobs on all price books, substitute null for the price book ID.
If you see the Too many DML rows: nnnn error message, increase the value of the PriceBookRefreshBatchSize
configuration setting to eliminate it next time you run this job.
Refresh Pricebook
This job copies product hierarchy data to the platform cache and rebuilds the product attribute cache.
Run the Product Hierarchy Maintenance job before running Refresh Pricebook in order for changes in
product bundles to be reflected in your implementation.
NOTE
In the Winter '19 release and later, this job is named Refresh Platform Cache.
ProductAttributesBatchProcessor
Where to Run This CMT Administration tab
Job
Risks of Running HIGH RISK
This Job
May cause orders to fail in a live production environment.
When Not to Run In a live production environment.
This Job
When to Run This • After making changes to product bundles, product cardinality, or filterable attributes in Vlocity Product
Job Console
• After running the Product Hierarchy Maintenance job
More Information The Refresh Pricebook job calls two jobs to:
• Copy the product hierarchies in the data store to the org cache in the platform cache for every product
bundle.
• Copy filterable product attributes to the sObject cache that stores filterable attributes.
If the Refresh Pricebook job cannot refresh one of the price books, the job moves to the next price book,
notifying you if refreshing any of the price books fails.
Starting in the Winter '18 release, the Refresh Pricebook job is available in the Maintenance Jobs list in the
CMT Administration screen. For instructions on how to use the Refresh Pricebook job in earlier releases, see
Refreshing the Price Book Prior to Winter '18.
You can use the following Apex method to programmatically run the Product Hierarchy Maintenance, Clear
Managed Platform Cache, and Refresh Pricebook jobs in sequence:
CMTAdminJobService.startProductHierarchyMaintenanceJob(pricebookId)
To run these jobs on all price books, substitute null for the price book ID.
If you see the Too many DML rows: nnnn error message, you can increase the value of the
PriceBookRefreshBatchSize custom setting to eliminate it next time you run this job.
1. Click the All Tabs button , or click the App Launcher and then click the Vlocity CME Admin app.
2. Click Vlocity CMT Administration.
3. Under Admin Console, click Upgrade Jobs.
4. Next to the upgrade job that you want to run, click Start.
The jobs must be run following the steps provided in Upgrading JSON Attributes to the CME Fall '18
Schema.
New installs of Vlocity Communications, Media, and Energy Fall '18 release
Apex Name ConvertProductAttributeToV2BatchJob and ConvertXliAttributeToV2BatchJob
Where to Run This Job CMT Administration tab
Risks of Running This Low Risk
Job
When Not to Run This • Do not run in a live production environment when orders are being taken.
Job • Do not run prior to CME Fall '18.
• Do not run without referencing Upgrading JSON Attributes to the CME Fall '18 Schema.
When to Run This Job • When upgrading to Vlocity Communications, Media, and Technology Fall '18.
• When installing CME Fall '18 for the first time.
• After referencing the considerations Upgrading JSON Attributes to the CME Fall '18 Schema.
More Information Analyzes the existing JSONAttribute__c content on Product2, generates the new format for the JSON and
adds it to the AttributeMetadata__c and AttributeDefaultValues__c fields.
New installs of Vlocity Communications, Media, and Energy Fall '18 release
Apex Name ConvertXliAttributeToV2BatchJob
Where to Run This Job CMT Administration tab
Risks of Running This Low Risk
Job
When Not to Run This • Do not run in a live production environment when orders are being taken.
Job • Do not run prior to CME Fall '18.
• Do not run without referencing Upgrading JSON Attributes to the CME Fall '18 Schema.
When to Run This Job • When upgrading to CME Fall '18.
• When installing CME Fall '18 for the first time.
• After referencing the considerations Upgrading JSON Attributes to the CME Fall '18 Schema.
More Information Analyzes the JSONAttribute__c content on XLIs (Order Item - Opportunity line item - Quote line item -
Asset), generates the new format for the JSON and adds it to the AttributeMetadataChanges__c and
AttributeSelectedValues__c fields.
Run the Product Attributes Conversion job once when you enable JSONAttribute v2 to add and populates
these new fields for product records.
For information about running this job, see Running Upgrade Jobs and Upgrading the Attribute Schema.
If you enable JSONAttribute v2 and then create new entity filters, you must manually update these fields
after adding them in the layout.
5. Add Attribute Metadata Field Name and Attributes Values Field Name to the layout.
6. Click Save.
The Attribute Metadata Field Name and Attributes Values Field Name fields are available in the layout
when you create a New Entity Filter and then manually populate it.
Applies to Upgrades from Vlocity Communications, Media, and Energy Fall '18 release to later releases.
Apex Name PopulateProductHierarchyGlobalKeyPathBatchJob
Where to Run this Job Upgrade Jobs link on the CMT Administration tab.
Risks of Running this Job Low Risk
When Not to Run this Job Do not run in a live production environment. Not needed for a fresh installation.
When to Run this Job When upgrading to Winter '19 or later releases.
Applies to Upgrades from Vlocity Communications, Media, and Energy v15 release
Apex Name PopulateRequestedStartDateBatchJob
Where to Run this Job Upgrade Jobs link on the CMT Administration tab.
Risks of Running This Job Low Risk. This job populates the new Requested Start Date field that is the new date field for
submission of an order.
When Not to Run This Job N/A
When to Run This Job When upgrading to v.103.x or later releases. During the upgrade, this job populates the new Requested
Start Date field with values from the old Request Date field.
More Information The FDO orders from v103 will now use the requested start date field, which is a date time field for
submit orders.
Table 4.
Applies to Upgrades from Vlocity Communications, Media, and Energy Fall '19 release to Summer '19 release.
Table 5.
Applies To Upgrades from Vlocity Communications, Media, and Energy Fall '19 release to Summer '19 release.
Apex Name CreateItemRelationshipsBatchJob
Where to Run this Job Upgrade Jobs link on the CMT Administration tab.
Risks of Running This Job Low Risk
When Not to Run This Job
When to Run This Job When upgrading to Summer '19 or later releases.
More Information
If the root product child item is missing for any products, this job helps ensure that this critical data is
present.
Applies to Upgrades from Vlocity Communications, Media, and Energy Fall '18 release to Winter '19 release
Apex Name UpdateEncryptAttributeJob
Where to Run this Job Upgrade Jobs link on the CMT Administration tab.
Risks of Running This Job Low Risk
When Not to Run This Job Do not run in a live production environment. Not needed for a fresh Winter '19 installation.
When to Run This Job When upgrading to Winter '19 or later releases.
More Information
IMPORTANT
Ensure the Populate New Fields job is completed successfully before running the
Populate Product Hierarchy Group Key Path job.
NOTE
Before running this job, deactivate flows for custom record types to avoid interference with
the update. See Deactivating a Flow and Vlocity Triggers. Active them again after the job
completes.
Applies to Upgrades from Vlocity Communications, Media, and Energy Spring '20
Apex Name VersioningUpgradeBatchJob
Where to Run this Upgrade Jobs in the Admin Console section on the CMT Administration tab.
Job
Risks of Running Low Risk. These fields are populated only when they are null, so if you run this job again, it does not modify
This Job existing field values.
By default, this job processes all products, including those that are not in the Vlocity catalog. While there is no
risk to the non-Vlocity products, processing these products adds to the time to deploy.
When Not to Run Do not run this job for product configuration that is not managed directly in Enterprise Product Catalog (EPC).
This Job
When to Run This • Run this job once during the upgrade process for existing product data.
Job • Run this job for products imported from external sources.
• Re-run this job for products imported from external sources after the initial run.
• If you create entries in Vlocity Product Console, run this job again before updating to Vlocity Product Designer.
More Information This batch job is used for the following versioned objects:
• Product2
• Populates GlobalGroupKey__c with auto-generated GUID.
• Sets the Version Label field if you provide it. The default value is V1.0.
• Object Type
• Populates GlobalGroupKey__c with an auto-generated GUID.
• Sets the Version Label if you provide it. The default value is V1.0.
• Picklist
• Populates GlobalGroupKey__c with an auto-generated GUID.
• Sets the Version Label field if you provide it. The default value is V1.0.
If you do not want to update custom record types, use the following steps to run the job from the Developer
Console.
Applies to Upgrades from Vlocity Communications, Media, and Energy Spring '20
Apex Name PopulateVlocityAttachmentProdGrpKeyJob and PopulateProdHierarchyGrpKeyPathJob
Where to Run this Upgrade Jobs in the Admin Console section on the CMT Administration tab.
Job
Applies to Upgrades from Vlocity Communications, Media, and Energy Winter '20 or earlier release to Summer '20
release
Apex Name WorkSetItemUpgradeBatchJob
This class cannot be executed outside of the package because it is not global. It can only be executed from
the Vlocity CMT Administration > Upgrade Jobs view.
Where to Run this Job Upgrade Jobs in the Admin Console section on the CMT Administration tab.
Risks of Running this Low Risk
Job
When Not to Run this Not needed for a new installation.
Job
When to Run this Job When upgrading to Fall '20 or later releases.
More Information • Root Item Id — Project items are hierarchical, and the Root Item Id is the record ID of the topmost item
that represents the root of the hierarchy. Having the Root Item Id ensures the project items show up
correctly in the hierarchical tree list view and allows the backend to load the project items efficiently.
• Global Key — This is a globally unique identifier for the project item record. It is used to identify and
match the project item across Salesforce orgs when you use IDX Workbench.
Multi-Service Upgrade
This job converts all group information (currently saved as an attachment) into QuoteMember's records.
This job also changes the parent of QuoteGroup records from its group cart to the master quote.
Applies to Upgrades from Vlocity Communications, Media, and Energy Winter '20 or earlier release to Summer
'20 release
Applies to Upgrades from before Vlocity Communications, Media, and Energy Summer '18 release to Winter '20
release
Apex Name UpdateIsChangesAllowedJob
Where to Run this Job Upgrade Jobs link on the CMT Administration tab.
Risks of Running this Job Low Risk
When Not to Run this Job When upgrading from Summer '18 or later releases.
When to Run this Job When upgrading from releases earlier than Summer '18 .
Run the Vlocity EPC jobs when upgrading from one version of Vlocity Communications, Media, and
Energy to another.
The Vlocity EPC jobs are available from the Vlocity CMT Administration tab.
1. Click the All Tabs button , or click the App Launcher and then click the Vlocity CME Admin app.
2. Click Vlocity CMT Administration.
3. Under Admin Console, click EPC Jobs.
4. Next to the EPC job that you want to run, click Start.
NOTICE
The Create Object Classes and Create Default Layouts batch jobs have been
deprecated. Do not run them.
Name Description First Upgrade Upgrade Upgrade Upgrade Upgrade Upgrade Upgrade
Install to Fall to to to Fall to to to any
'20 Spring Winter '19 Summer Winter 2018
'20 '20 '19 '19 release
Generate Generates the No Yes Yes Yes Yes Yes Yes No
Global missing global
Keys keys for records.
Name Description First Upgrade Upgrade Upgrade Upgrade Upgrade Upgrade Upgrade
Install to Fall to to to Fall to to to any
'20 Spring Winter '19 Summer Winter 2018
'20 '20 '19 '19 release
Create Populates the No No No No No No No No
Contextual required virtual
Adjustment object setup to
Data control
contextual
manual
adjustments.
NOTE
The following deprecated jobs also appear in the CMT Administration EPC Jobs list. Do
not run them.
• EPC Create Object Classes (Deprecated): Creates a set of default Vlocity Object Class
objects. To see the Object Class objects, go to the Vlocity Product Console.
• EPC Create Default Layouts (Deprecated): Creates a set of default layouts for the
default Vlocity Object Class objects that the EPC create object classes job created. This
job provides a default layout for viewing an object in the Vlocity Product Console. If there
aren't any default layouts, going to any tab in the Product Console would result in a
blank page. To see the layouts, go to the Vlocity Product Console and click Object. Click
any object and then click Layout Management.
NOTE
In Vlocity Communications, Media, and Energy Summer '17, the EPC jobs are prefaced
with EPC. In Vlocity Communications, Media, and Energy Winter '18, they are not. Also, in
Vlocity Communications, Media, and Energy Summer '17, the first listed EPC job is EPC
Create Default Vlocity Objects and Layouts, while in Vlocity Communications, Media, and
Energy Winter '18, the first listed EPC job is Install Default Vlocity Objects and Layouts.
NOTE
When you are upgrading from Vlocity CMT V15 to Vlocity Communications, Media, and
Energy Summer '17 or later, if Vlocity objects and layouts previously existed on your org,
before running the EPC jobs, go to the Vlocity Objects and Object Types tab and the
Vlocity Object Layouts tab and delete duplicate records. For more information, see Delete
Custom Objects in the Salesforce Help.
The jobs you run depend on whether you are performing a new installation or upgrading Vlocity
Communications, Media, and Energy. To run the EPC jobs, see:
You use virtual context rules to buy contextual discount. For example, a sales representative can apply a
manual adjustment. Based on user profiles, you can restrict how much you apply a manual adjustment, for
example, 5% for a customer.
To use contextual discounts, complete these steps to run this job without picklist value errors.
1. From Setup > Object Manager, search for Vlocity Attribute and click it.
2. In the Fields & Relationships section, click the Value Type field.
3. In the Values list, if the Lookup value is not in the list, check the Inactive Values list. If it's Inactive,
click Activate.
The Lookup value is moved to the Values list.
If Lookup is not in the Inactive Values list, click New, add Lookup in the edit box, and click Save. The
Lookup value is added to the Values list.
4. In Vlocity CMT Administration > EPC Jobs, click Start for the CREATE DEFAULT CONTEXTUAL
ADJUSTMENT DATA job.
5. In the Vlocity Product Console under the Metadata section, click the search icon next to Object.
6. Search for AdjustmentData and click it.
7. In the AdjustmentData tab, select Attributes.
8. Click the Account attribute, set Value Data Type to Lookup, and click Save.
9. Repeat step 8 for the ANY, Opportunity, Order, and Quote attributes.
10. In the App Launcher, search for and open Vlocity Attributes.
11. In the List View menu, select All.
12. Search the list for Account, and click the Account attribute (which has Attribute Category set to
System Attributes).
13. In the Value Type field, select Lookup, and click Save.
14. Click the browser back button, and repeat steps 12 and 13 for the following attributes that also have
Attribute Category set to System Attributes: ANY, Opportunity, Order, and Quote.
You can also run this job from the Developer Console.
Risks of Running This This job deletes all default layouts and facets in Vlocity Product Console. Before running, record any
Job configuration changes so you can re-implement them, if needed.
When Not to Run This N/A
Job
When to Run This Job • If your layouts include any customizations and you want to restore the default layouts or facets
• When you are prepared to re-create all customized layouts and facets
More Information The Delete Default Objects and Layouts job removes ObjectFacet__c and ObjectLayout__c data.
The Delete Default Objects and Layouts job may be useful if a problem occurs in a layout or facet.
After running the Delete Default Objects and Layouts job, run the Install Default Vlocity Objects and
Layouts job.
If loyalty pricing is disabled, this job does not update the loyalty pricing variable.
This job creates a Time Policy and the name of the policy is hardcoded. This Time Policy is used as
the default when creating a recurring discount.
Once the name of the Time Policy is modified, recurring discounts cannot be defined.
For example, if you have a pricing element in Org A and want to migrate the element to Org B, assign a
global key to each pricing element record.
To restore the default pricing plan, delete your entire plan and then re-install the plan using this
DataPack.
• Object class
• Object layout
• UI facet
• UI section
More Information This job provides all object-related hierarchy elements. It imports the Vlocity Product Console default
view. It also replaces the two, separate deprecated jobs for creating default object classes and layouts.
1. Click the All Tabs button , or click the App Launcher and then click the Vlocity CME Admin app.
2. Click Vlocity CMT Administration.
3. Under Admin Console, click Multilanguage Support Jobs.
4. Next to the Multilanguage Support job that you want to run, click Start.
• Job Name
• Status
• Total Batches
• Batches Processed
• Created Date
• Completion Date
• Status Detail
• Job Name
• Status
• Total Batches
• Batches Processed
• Created Date
• Completion Date
• Status Detail
1. Click the All Tabs button , or click the App Launcher and then click the Vlocity CME Admin app.
2. Click Vlocity CMT Administration.
3. Under Admin Console, click Cacheable API Jobs.
4. Next to the Cacheable API job that you want to run, click Start.
Run the Load API MetaData job before running the Populate API Cache job.
You see the message Successfully Completed! after running this job.
Run the Load API Metadata job to populate the Vlocity API Metadata table before running the Populate API
Cache CMT Administration job.
By default, the Populate API Cache jobs are run for all catalogs.
Apex Name populateCacheCAJob in TelcoAdminConsoleHandler
Where to Run This Cacheable API Jobs link on the CMT Administration tab.
Job
Risks of Running The cache will be cleared and repopulated, but you will not lose any data. There will be a temporary
This Job performance impact in a production environment. Run this job only during a maintenance window.
When Not to Run Do not run this job if cacheable definitions are not ready to be cached. Only run this job once you have
This Job completed your product catalog configuration.
When to Run This Cached information is a snapshot of current cacheable definitions at the time caching was invoked. Run this
Job job when definitions are ready or when testing the cached information is required. After running this job, you
will see the status, creation and completion dates of the individual API cache jobs.
When you initially run this job, select the checkboxes for all cache job options because some of the jobs have
dependencies on other jobs. You can select all options by selecting the Name checkbox on the option list after
clicking Start.
More Information • This job calls cache handlers that cache the catalog and product information, such as product structure,
cardinality, rules, attributes, and pricing.
• All cache handlers must be selected and cached at least once.
• The dependency order of handlers is descending.
• Once cache entries have been generated, each handler can be selectively re-executed based on which
information needs to be recached. For example, the pricing cache handler may be invoked often due to
frequent promotional pricing changes.
• You must clear the entire contents of the cache response object if you make changes to the product catalog
data.
Starting with the CME Winter '20 release, pseudo-accounts and pseudo-orders are deleted automatically. To
delete pseudo records created prior to the CME Winter '20 release, you can run the Delete Pseudo Records
cacheable API job. Note that the Delete Pseudo Records job would only need to be run one time.
When to Run This Job Run this job regularly to keep the number of cached records at a minimum.
More Information Cacheable API information is cached in the CachedAPIResponse object with expiration times; the
expiry date is set when you run the Populate API Cache job.
Records with expiration times in the past are no longer accessible by the Digital Commerce APIs. This
job deletes records that are older than midnight of the day the batch job was executed.
1. Click the All Tabs button , or click the App Launcher and then click the Vlocity CME Admin app.
2. Click Vlocity CMT Administration.
3. Under Admin Console, click Report Jobs.
4. Next to the Report job that you want to run, click Start.
Applies to Vlocity Communications, Media, and Energy Winter ’20 release and later.
Apex Name ReportMismatchedSpecTypeBatchJob
Where to Run This Job Upgrade Jobs link on the CMT Administration Vlocity CMT Administration page → Admin Console
table → Report Jobs link → Audit Product Structure.
Risks of Running This Job Low Risk
When Not to Run This Job Do not run as part of a fresh install.
When to Run This Job Anytime, and when upgrading from CME releases prior to Winter ‘20.
More Information An email is sent even when no entries are found in the content tables of the report.
Applies to Vlocity Communications, Media, and Energy Winter ’20 release and later.
Apex Name ReportNullSpecTypeBatchJob
Where to Run This Job Vlocity CMT Administration page → Admin Console table → Report Jobs link → Audit Product
Specification Type
Risks of Running This Job Low Risk
When Not to Run This Job Do not run as part of a fresh install.
When to Run This Job Anytime, and when upgrading from CME releases prior to Winter ‘20.
More Information An email is sent even when no entries are found in the content tables of the report.
1. Click the All Tabs button , or click the App Launcher and then click the Vlocity CME Admin app.
2. Click Vlocity CMT Administration.
3. Under Diagnostics, click Functional Jobs.
4. Next to the functional job that you want to run, click Start.
For more information about the Custom Settings listed on the Functional Jobs page, see CPQ
Configuration Settings Reference.
Basic Configurations
This job ensures that your org has all appropriate configuration settings and values. It checks whether any
settings are missing.
Other Jobs
This section describes other jobs that you can run using anonymous Apex code in the Developer Console.
You can use the EPC batch jobs to fix JSONAttributes and simple rule conditions. If you created the
products and assigned attributes within the Vlocity Product Console, use EPCProductAttribJSONBatchJob.
If you created the products and assigned attributes within the Aloha Products page, use
FixProductAttribJSONBatchJob.
First get a list of Product2 Ids, prodIds, then call the batch job and execute it anonymously:
Do not run this job in orgs with products created using the Salesforce Classic interface instead of Vlocity
Product Console.
When to Run This Job • After spinning a new org.
• After importing data containing product attributes.
More Information The EPCProductAttribJSONBatchJob processes products attributes created with Vlocity Product
Console and corrects the product attribute record IDs. It does not affect the org cache.
If you run this job on an installed package, as is usually the case at a customer site, then run:
Database.executeBatch(new vlocity_cmt.EPCFixCompiledAttributeOverrideBatchJob
(), 1);
For products that are managed in the legacy Salesforce Aloha page through the Attributes Setup
component, you can run this batch job in case the JSONAttribute gets out-of-sync with the attributes that
are assigned to the product. By default, this job only creates the JSONAttribute for the products where
JSONAttribute is null.
Do not run this job In orgs with products created using Vlocity Product Console.
When to Run This Job • After spinning a new org.
• After importing data containing product attributes.
More Information This job processes product attributes created using the Salesforce Classic interface and corrects the
product attribute record IDs. It does not affect the org cache.
A lookup to ContextDimension__c has been added to the EntityFilterCondition__c table as of release CME
Winter '18. In earlier releases, the FieldName__c field was used to set the ContextDimension. At admin
time, for a simple rule condition, it is easier and less error-prone if the Context Dimension is a lookup and
not a text field. This batch job is created to populate this lookup for records created prior to CME Winter '18
release. Records created in CME Winter '18 release and later have this lookup populated.
If you run this job on an installed package, as is usually the case at a customer site, then run:
Database.executeBatch(new vlocity_cmt.EPCFixCompiledAttributeOverrideBatchJob
(), 1);
To update the flag for usage in Product Console, change the flag according to the logic:
Standard ordering systems end the customer relationship after the order is complete. However, not all
orders are about buying new products or services. An existing customer may want to modify the existing
assets or services.
Using asset-based ordering (ABO), you can manage customers' products and services throughout their life
cycles.
To use asset-based ordering, you must complete the following administrative tasks:
Vlocity enhances the page layout for the following Salesforce objects:
For example, with Vlocity page layouts for accounts, you can see billing information reports as well as a
relationship graph that illustrates that account's key connections to people and businesses.
For users to see these improved page layouts and layouts for Vlocity custom objects, you must assign
Vlocity layouts to user profiles.
To assign a page layout for a profile using the traditional profile user interface:
9. Select Vlocity page layouts for all other available Account record types.
You can only view three record types at a time. If necessary, click Next to view and apply layouts to
additional record types.
• Billing
• Billing Aggregator
• Business
• Consumer
• Service
• Service Aggregator
10. Click Save.
11. Repeat steps 2 through 9 for the following:
• Asset (Console only)
• Case
• Contact
• Opportunity
• Opportunity Product
• Order
• Order Product
• Payment Adjustment (Console only)
• Price Book
• Product
• Quote
7. In the Record Types and Page Layout Assignments section, for each record type, select the
appropriate page layouts, for example Account (Vlocity Telecommunications Services) Layout.
Apply page layouts for the following records:
• Billing: Billing (Vlocity Telecommunication Services) Layout
• Billing Aggregator: Billing Aggregator (Vlocity Telecommunication Services) Layout
• Business: Business (Vlocity Telecommunication Services) Layout
• Consumer: Consumer (Vlocity Telecommunication Services) Layout
• Other: Other Account (Vlocity Telecommunication Services) Layout
• Service: Service (Vlocity Telecommunication Services) Layout
4. Click New.
5. In the Page Layout Name box, enter a name for the layout.
6. Click Save.
7. From the palette, drag Vlocity custom fields—for example, Product Code, Recurring Price,
Recurring UOM, Standard Price—to the Fields section.
1. From Setup, click the Quick Find box, enter Object and click Object Manager.
2. Click the object for which you will change the page layout.
Vlocity recommends that you install all base cards, templates, and OmniScripts that are in your org. There
is no negative impact on your environment and if you plan to use these other products in the future, you will
have access to them automatically.
WARNING
If you customize any of your cards, templates, and OmniScripts, you must give them a
new, unique name to prevent them from being overwritten when you refresh them for the
latest release.
IMPORTANT
The latest version of the card, template or layout is automatically selected while the
previous version is still active. If previous versions are still active, a yellow triangle
icon appears in the Activation dialog and the new versions are not selected. You may
have to scroll down to the bottom of the Activation dialog box to see all the yellow
triangle icons. To solve this issue, click Select All or check the checkbox for each
template version displaying the warning, then click Next. The previous versions are
deactivated and the new versions are activated.
If you deactivate any previous active versions of cards and layouts, including
customized cards and layouts, clicking Select All will overwrite your customized
versions with the new, default versions. To ensure your custom cards and layouts and
not deactivated and overwritten, rename any default cards and layouts you plan to
customize, deselect any newly-installed default versions of the cards and layouts, and
select your custom cards and layouts for activation.
7. Ensure that all items are selected. Click Next and click Done.
Billing Management
Vlocity Communications, Media, and Energy does not include a billing engine, but Vlocity Communications,
Media, and Energy can access, report, and analyze billing data. The Vlocity Billing Management module
aggregates billing data across multiple billers on a schedule. For example, you can call the information up
when a call comes in or schedule a monthly data load. Reporting can store bills, bill line items, and
DataRaptor data.
You can create new payment methods and payment types. A payment method is how a customer
compensates a seller for products and services. A payment type is a category to which a payment method
belongs.
For example, you can call the information up when a call comes in or schedule a monthly data load.
Reporting can store bill, bill line items, and DataRaptor data.
Communications-specific objects and the data model extend the Salesforce Case object to support billing
disputes. Billing Management includes billing reports and dashboards, billing and usage interfaces, and
data maintenance service.
You can manage billing directly from a Billing Aggregator, Billing, Business, or Consumer Account record.
Statements, statement line items, and account balances are imported from your company's billing system.
View comprehensive billing and usage reports. Add payment methods and create payment adjustments
directly from the account record to be exported to the billing system for processing.
Neither Salesforce nor Vlocity are billing systems, but Billing Management retrieves specific information
from other systems. This enables the customer service representative to handle billing questions.
Representatives can make payments and adjustments. System administrators can define payment and
adjustment methods and options.
Billing Profile
The Billing Profile section includes all billing information for a customer, including payment methods, billing
methods, and autopay options.
Billing Information
The Billing and Usage Information Visualforce page displays a variety of billing and usage reports,
depending on the account type. In the example below, the image shows a graph of an account's billing by
month, a pie chart of billing by type, and a graph of usage by type.
Statements
The Statements related list displays recent statements, imported from your company's billing system.
Each statement has statement line items, which display details for a product or service.
Any billing or service disputes related to the line item appear on the Statement Line Item record.
Account Balances
The Account Balances related list displays a running balance for the account imported from your company's
billing system.
Payment Methods
The Payment Methods related list displays all payment methods on file. You can also add new payment
methods or remove payment methods that are no longer in use. You can add a new credit card, bank
account, or other payment method to the account record.
Before deploying Vlocity, set up the picklists in the Payment Methods and Payment Adjustment objects. For
more information, see Add or Edit Picklist Values in the Salesforce Help.
The Custom Fields & Relationships related list contains the fields that specify information about
payment methods, including:
• Active specifies if a payment method is active or inactive.
• Bank Account Type specifies the type of bank account from which a customer can make a
payment.
• Card Type specifies the type of credit card the customer can use to make a payment.
• Method Type specifies the type of payment.
• Primary specifies if a payment method is the primary payment method.
4. In the Custom Fields & Relationships related list, click the field label to edit its data.
5. Make any necessary changes.
6. Click Save.
1. On the Payment Method page, scroll down to the Custom Fields & Relationships related list.
4. Click New.
5. In the Card Type box, enter the appropriate information.
Add one or more values—for example, American Express.
6. Click Save.
NOTE
You can add other payment methods as well. For example to add a new account payment
method, in the Custom Fields & Relationships related list, click Account.
1. On the Card Type page, scroll down to the Values related list.
2. Next to one of the existing values, click Edit.
4. Click Save.
1. On the Card Type page, scroll down to the Values related list.
2. Next to one of the existing values, click Del.
Before deploying Vlocity, set up the picklists in the Payment Methods and Payment Adjustment objects. For
more information, see Add or Edit Picklist Values in the Salesforce Help.
The Custom Fields & Relationships related list contains information about payment adjustments,
including:
7. Click New.
8. In the Method box, enter the appropriate information.
9. Click Save.
5. On the Billing Data Trim Setting Edit page, enter the following information:
You configure these reports on the Reports tab. To modify a report, on the report page, click Customize.
For more information, about the Salesforce Report Builder, see the Salesforce Help.
Forecasting
A forecast is an expression of expected revenue from sales based on the gross roll-up of a given set of
probabilities. The task of forecasting is an imprecise art, as there are many unexpected items and factors
that can cause shifts during the process. To achieve the best possible outcome, apply several forecasting
methods.
Future planning is a key success factor for any business. While there are many variables that may affect a
predicted business model, the forecasting process helps sales and administration staff convey an accurate
plan for the sales cycle, from the pipeline to closed sales.
Use Collaborative Forecast to predict and plan the sales cycle from the known pipeline to the closed sales
stage, as well as to manage the sales expectations. For more information, see the Salesforce document,
Collaborative Forecasts Implementation Guide.
Customizable Forecast is a flexible way to estimate how much revenue the organization can generate or
how many items can be sold. You can only use Customizable Forecast with a Salesforce case. That is, to
use Customizable Forecast, you must open a Salesforce case. For more information, see Customizable
Forecasting Overview in the Salesforce Help.
The Vlocity forecasting calculations differ from the Salesforce default forecasting calculations. The main
differences between Vlocity and the Salesforce defaults are:
• Using Vlocity, you can create the schedules for an entire opportunity with one button. Using the
Salesforce default, you must create schedules product by product.
• Salesforce divides the Opportunity.Amount (Total) evenly into the number of Opportunity months. Using
Vlocity, the first month contains the one-time charges plus one instance of the recurring charge, while the
remaining months contain just the recurring charge. The amount scheduling is based on the Number of
Contracted Months in the Opportunity header.
• Vlocity forecasts according to months, while the Salesforce default forecasting can calculate by months,
weeks, quarters, or years.
For more information about setting up forecasts, see the Salesforce document, Collaborative Forecasts
Implementation Guide.
Here is an example for the Communications industry that shows the difference between the two scheduling
types using Vlocity—an order for CATV service for a hotel chain. In the example, we assume that the length
of the contract is 24 months.
Using Collaborative Forecast, the whole amount of $242,000.00 would be forecast for the month of sale.
However, if you use Customizable Forecast and Vlocity OpptyScheduleInterface, the month of sale
would include the amount of $22,000.00 (NRC + 1 MRC) and a $10,000.00 forecast for every month for the
remaining 23 months of the contract. The forecast results are quite different.
Set Up Scheduling
Use scheduling to view how recurring revenue for a given opportunity is spread across a certain number of
contracted months.
To enable scheduling:
The number of contracted months drives the scheduling in a customizable forecasting environment. For
example, if you have a 12-month contract for an opportunity, you get 12 columns on the schedule. If you
have a 24-month contract you get 24 columns, and so on.
To see the schedule, on the Opportunity record detail page, expand the Products related list.
NOTE
The Products related list is not exposed out of the box. You can add it to the Opportunity
page layout. For more information, see Page Layouts in the Salesforce Help.
Scheduling takes the one time total amount and spreads it over the chosen number of months. Scheduling
applies to the technology the opportunity uses. However, it does not affect forecasting itself in the newer
technology, but does affect it in the older technology.
NOTE
Do not click the Re-establish button.
If certain charges go up or down some months, you can enter comments to reflect these variations by
clicking the Edit button.
If you try to create a schedule for an opportunity that already has a schedule, you will get an error message
stating: The opportunity already has schedule data.
It is possible to remove an existing schedule by clicking the Remove existing schedule data button.
Loyalty pricing is a new feature in Vlocity Communications, Media, and Energy Winter '18. Two additional
fields are included in price lists, Currency Code and Loyalty Code. By default, Currency Code is USD
(US dollars) and Loyalty Code is PTS (points). You can modify these values as a part of the Salesforce
global value sets. By default, for existing pricing lists, both the Currency Code and Loyalty Code aren't
selected. However, the standalone pricing element requires the Currency Code and Loyalty Code. You
must select the Currency Code and Loyalty Code to save any new and update all existing standalone
pricing elements.
If you do not set a currency code for each price list, your standalone pricing elements will not have a
currency code. This makes the pricing elements invalid. Products associated with invalid pricing elements
are not displayed in the cart.
After you set the pricing and loyalty codes, you run the EPCPEUpdateCurrencyCode class, which sets the
currency code for each standalone pricing element in the system.
You must perform these steps even if you are not using loyalty pricing.
1. If you have not already done so, run the Install Default Vlocity Objects and Layouts batch job, located
on the Vlocity CMT Administration tab, in the EPC batch jobs section. For more information, see
Running Vlocity EPC Jobs for an Upgrade.
2. (Optional) Edit the Currency Code and Loyalty Code global value sets.
a. From Setup, in the Quick Find box, enter Picklist.
b. Click Picklist Value Sets.
f. Click Save.
g. Click Back to List.
h. Click Loyalty Code.
i. In the Values related list, click New.
The Add Picklist Values Loyalty Code page opens.
j. Enter the loyalty codes.
k. Click Save.
3. For each active price list, select a Currency Code value and a Loyalty Code value.
a. In the Vlocity Product Console, next to Price List, click Search.
b. Leave the Search Price List box blank and click Search.
NOTE
Although this is multiselect picklist, Vlocity supports only one currency code per
price list. Select only one option.
NOTE
Although this is multiselect picklist, Vlocity supports only one loyalty code per
price list. Select only one option.
f. Click Save.
g. Repeat steps c through f for each active price list.
The Project feature tracks any changes that administrators make to EPC artifacts in the Vlocity Product
Designer. To use Projects, you must enable and configure the feature, access, and record type.
To be able to use the Project feature, you need to complete the following procedures to set up the Projects
object, enable the feature, create the Projects tab, and give users access to the Projects page and record
type. For more information about using Projects, see Track Product Catalog Changes with Projects.
A default project is automatically created after the feature is enabled and when you create, update, or
delete a product catalog object. This project is set as the default and is named Default Work Set for {user
name} where {user name} is the full name of the logged-in user. The project has an item entry for the
changed product.
To enable the EPC Project setting in Vlocity CMT Administration, see Configure Vlocity Product Designer.
6. In the App, Record Type, and Profile tab, click Add Assignments.
4. Select Work Set in the Available Record Types list and add it to the Selected Record Types list.
5. Click Save.
6. Repeat steps 3 - 5 for other profiles.
The tab will have the plural Projects as the label and will refer to the vlocity_cmt__Project__c object.
When communications service providers sell products in different regions, it’s important that you translate
significant product details into multiple languages. Translation helps sales agents find the things they need
easily by making all the relevant details, such as properties, cross-sell, or upsell suggestions, available to
them in their preferred language.
A UI-driven translation of Vlocity shared product catalog data in different locales enables sales agents and
applications to view product data in local languages. The shared product catalog renders translated text for
products, promotions, and properties in more than 18 different locales in CPQ, based on the user profile.
You can also search and sort products and promotions by translated names in CPQ.
System administrators can use the multi-language support feature to configure a default language for a
specific user or one or more languages that the user can choose from as a preferred language. The user
can also change the default language in the user profile. The default language appears on the UI with
language-specific field labels, as well as with translated metadata and business data.
At runtime in CPQ, the customer-preferred language has higher precedence than the default user-
language. Similarly, if a language code is provided as part of a URL, as in eCom, then it has a higher
precedence than the default user-language.
As an example, a customer initiates an order in French, through eCom, and completes the order by
contacting a call center where a CSR has English as the default language. The CSR would see the Order
data in French, provided the CSR locale/language is configured for French.
CPQ and Assets display products, promotions, and properties in the base language when translations
aren’t found.
With multi-language support, you can also enable users to configure the Shared Catalog objects and fields
for translation. Users can determine the product data for translation based on the configured multi-language
support object fields and languages. Users can then search and view the data for translation.
Vlocity supports the migration of translated product catalog data across Salesforce organizations.
You can also disable multi-language support at the organization level. After multi-language support is
disabled, there’s no translation in CPQ or Asset pages.
Task Topic
Enable multi-language support in Vlocity CMT Administration. Configuring Multi-Language Support for Shared Catalog
Activate and deactivate the languages that you need. Configuring Multi-Language Support for Shared Catalog
Set the default user language. Configuring Multi-Language Support for Shared Catalog
Configure the object fields for multi-language support. Configuring Multi-Language Support for Shared Catalog
Task Topic
Run the Create Translation job to extract product data (base language) for Configuring Multi-Language Support for Shared Catalog
translation.
Create Translation Job
View the extracted untranslated product data. Configuring Multi-Language Support for Shared Catalog
Translate the product data. Set String Translations in Product Designer
1. Click Setup.
2. In the Quick Find / Search field, type Picklist Value Sets.
3. Click Vlocity Locale Code.
The Global Value Set (Managed) page appears.
6. Enable Multi-Language Support for the Shared Catalog so that product data and values that have
translations are translated before appearing in the UI. This setting allows product administrators to
translate product data, and also allows customer service representatives (CSRs) to view translated
data.
a. Go to Vlocity CMT Administration.
c. Click LOAD DEFAULT FIELDS CONFIGURATIONS. This job loads out of box objects and fields
configuration for multi-language support. But it doesn’t remove any data added by users in step 6.
This job must be run by the product admin whenever there’s a change to Multi-Language Field
Setup.
The following table lists the out of box data:
The following table is for CachedPromotionTranslation__c, which stores translation data for a
promotion:
For details on these tasks, see Configuring Multi-Language Support for Shared Catalog
3. If editing a string, type the translation into the Translated Text field, and click Save.
See Also
• Multi-language Support for Shared Catalog
• Configuring Multi-Language Support for Shared Catalog
• Set String Translations in Product Designer
Product administrators who are responsible for product catalog administration and lifecycle or contract
generation configure the base language.
For details on these tasks, see Configuring Multi-Language Support for Shared Catalog.
1. From the Vlocity Product Designer list, click Vlocity String Translation.
2. Find catalog entities to enter or edit the translated text.
Goal Action
Search master or translated text. Enter text
Goal Action
Filter the catalog entities by master text, 1. Click the Filter button.
translated text, or locale values. 2. In the Filter panel, click Add Filter.
3. In the New Filter dialog box, set the Field, Operator, and Value for the filter, and
click Done.
4. In the Filter panel, click Save.
4. Click Save.
5. Repeat steps 2–4 for catalog entities and locales as needed.
6. From the Multilanguage Support Jobs page in Vlocity CMT Administration, click CREATE CACHE
TRANSLATION DATA.
This job creates cache data for products and promotions to support search and sort in getProductList
and getPromotionList. This job copies data from StringTranslation__c and Product/Promotion objects
and fills CachedProduct2Translation__c and CachedPromotionTranslation__c.
See Also
• Multi-language Support for Shared Catalog
• Configuring Multi-Language Support for Shared Catalog
• Modify String Translations in Vlocity Product Console
You can use the translated language to search for and sort existing features within CPQ, including
promotions and products.
When generating a document using the CLM document generator, CLM can retrieve and translate header
and xLI information.
The Vlocity Build tool enables you to migrate product data with translations from one environment to
another, for example, from a development environment to a test environment, assuming standardized
environments and the same version. The Vlocity Build tool also enables you to migrate product data with
translations from older versions of Salesforce+Vlocity CME environments to new versions of Salesforce
+Vlocity CME environments.
There is also support for Product API methods (GET) to query by a specific language, and support for
validation of product data translations for completeness and consistency, for example, an export of all
picklist data. You can use data packs to transfer String data and String Translation data from one org to
another.
Customers can use Data Raptor (field implementation) to import translations from legacy systems.
NOTE
Before importing the Translated.stf file, open the file and shorten the field
labels if they are longer than 40 characters, for example,
'OverriddenAttributeAssignmentCategoryId',
'OverriddenOfferPricingComponentId'. Remove some characters from the label
names, if not the import will fail due to 40 characters limitation. If the labels are
already 40 characters long, adding ** will make their length to be 42 characters
causing the import to fail.
b. Alternatively, you can use the following Python script to create translations:
------------------------------------------
import sys
# Take two files as input (the last one might not exist if it does
exist the content is appended.
#The first file represents the input file with un-translated strings.
#The second one represents the output file where the translations will
be written.
##
#The translation process consists of taking strings of the form:
# ButtonOrLink.vlocity_cmt__Application__c.vlocity_cmt__Review Review
#and converting them to:
# ButtonOrLink.vlocity_cmt__Application__c.vlocity_cmt__Review
**Review
#
# by adding "**" after the tab.
#
#In the case that after the translation a string is longer than 40
characters (and its key contains '.FieldLabel')
# then the last characters are removed.
def main():
input = sys.argv[1]
output = sys.argv[2]
with open(input, 'r') as input_file:
line = line.strip()
if '\t' in line:
line = line.replace("\t", "\t**")
line = removeExtraCharacters(line)
keyValuePair = input.split('\t')
key = keyValuePair[0]
value = keyValuePair[1]
length = len(value)
if length <= 40:
return input
else:
value = value[:40]
output = key + '\t' + value
return output
if __name__ == '__main__':
main()
------------------------------------------------
5. Import the translated file:
1. Go to the Quick Find box and type Rename Tab and Labels.
2. Select Rename Tabs and Labels from the search results.
The Rename Tabs and Labels page opens.
3. From the Select Language drop-down list, select the language you want to rename the labels into.
The labels are translated and are displayed in the Display label column.