Optimized Configurations and Settings for Maximum Performance
These configurations and best practices enhance performance. The listed impact applies to OOTB packages, but customizations may affect results. Evaluate functional and implementation outcomes before making any changes.
Implementation | Performance Impact |
---|---|
Calculation Matrices Cache | For better performance, when using Attribute Based Pricing, create a custom partition for caching calculation matrices. Please refer to the link on the left |
UOW Mode: True | Default is True starting Spring '21 releaseOverview - If set to true, enables Unit of Work performance enhancements that save DMLs and SOQL statements when making Cart-Based API calls Impact - CPQ APIs have shown up good improvement with this mode on (the impact varies based on the complexity of use case). |
V2 JSON/V2 AttributeModel: Enabled (Feature) | Overview - JSONAttributeSupport is a service implementation that enables users to apply multiple types of actions to the attributes JSON stringImpact - DB Storage usage is lesser with V2 Json model enable |
CME Custom Indexes: Applied | Overview - All CME customers should install custom indexes in their organisation during install. Therefore, if you are implementing Vlocity CPQ, you will need to add the following recommended indexes to support the related CPQ objects. Complete list of Custom Indexes to be applied Impact - Performance Gain |
For using Cart-based APIs Pricing: false Validate: false | Overview - A flag which describes if the pricing & validation should be run in createCart api. If price is true, it runs pricing on the created cart. If price is false, it does not run pricing on the created cart. Similarly for Validate. Default value is true. Impact - Performance gain for CreateCart API if Price and Validate is false. |
GUID (UseAssetReferenceIdForParentAndRoot) | Default is True starting Spring '21 release for new installations. Otherwise Default is False. Overview : If set to true, enables performance enhancements that save data manipulation language (DML) statements in Add-to-Cart and other transactions. Impact : CPQ APIs have shown up good improvement with this mode on (the impact varies based on the complexity of use case). |
CachedQueryMode: True | Overview - Vlocity caching: If set to true, uses output from queries in the CacheQueryStore. If set to false, queries directly from the database. Default is false. Impact : Performance improvement for most of the Cart API as queries get response from DB |
LevelBasedApproach: True | Overview - If set to true, APIs return root and first-level children in product hierarchy. Next level are returned when user clicks expand icon on product Impact - Perform better for product bundle with Depth > 2 |
CacheAPI.SkinnyBasket: True | Overview - When CacheAPI.SkinnyBasket is set to true, AssetToBasket just returns key-value pairs. Impact- Performance gain for Asset To Basket transaction(Quantify) |
CacheAPI.Trimmode: True | Overview -If set to true, the Basket APIs return a basket that has field and attribute metadata removed from the Basket API response, which reduces JSON processing and network I/O. This setting overrides the CacheAPI.SkinnyBasket configuration setting. Impact- Performance gain for Anonymous and Loggedin Flow. |
CacheEnabled: True | Overview - Supports platform caching. To use context rules, including the Tightest Match service, CacheEnabled must be set to true. Impact - Platform cache will not get updated |
DeltaPrice: True | Overview - If set to true, pricing is run only on new items added to the cart. If set to false, pricing is run on all items in the cart. Impact - Better performance for larger cart (quantify)For large number of items in the cart, please refer to Pricing and Validating Changed Items Only |
DeltaValidate: True | Overview - This is used along with DeltaPrice. Similarly, if it is set to True - configuration rules are run against changed items in the CPQ Cart instead of all items Impact - Better performance for large number (>50) of items in the cartFor large number of items in the cart, please refer to Pricing and Validating Changed Items Only |
Context and Context Key in the Request URL | For best performance, whether the user is known or anonymous, call the API with both the context parameter and the context key. This is a two-step process. For example, first issue a request to the Get Offers by Catalog API. The contextKey is returned in the output of the API call, as shown here: API Call: /services/apexrest/cacheableapis/v3/catalogs/Mobiles/offers?context={"accountId":"001f200001ci94Q"}&loggedin=true<br> API Response: {"contextKey":"9425c79cd5f3ec005ebcf4b72d57a378","offers":[{"<br>... (truncated for clarity) Subsequent requests are then made using the contextKey and the context. For example, API Call: /services/apexrest/cacheableapis/v3/catalogs/Mobiles/offers?context={"accountId":"001f200001ci94Q"}&contextKey=9425c79cd5f3ec005ebcf4b72d57a378&loggedin=true If the context shape changes (changes are made to the account, an asset that belongs to the account, or to a contract), the context key must be regenerated. |
Implementation | Performance Impact |
---|---|
ProductAttributesBatchProcessorSize | Default is 500, if you are getting below error while running refresh platform cache please reduce the size, it restrict the number of attribute records being picked in a batch Too many DML rows: 10001``Apex heap size too large |
PriceBookRefreshBatchSize | Default is 200, reduce the size if you are getting any Salesforce goverance Limits while running refresh platform cache job. This configuration control the size of attributes and products processed in the Refresh Pricebook batch . |
ProductHierarchyBatchProcessorSize | Defaut is 20 , Reduce the size if you are getting any Salesforce goverance limit while running product hirarachy job. |