Download PDF
Download page Recommendations to Import Legacy Products into Conga CPQ.
Recommendations to Import Legacy Products into Conga CPQ
This topic describes best practices for migrating purchased product information from legacy CRM and ERP systems into Conga CPQ and for tracking subsequent renewals.
CPQ Implementation without Billing
To import assets in a pure CPQ implementation without Billing, it is best to create the asset line-item data directly in the Conga environment. This section describes best practices for importing legacy data, the asset types that may be imported, and those asset types' characteristics.
Maintaining Uniqueness within the Imported Data
- When importing data into the Asset Line Item object, the combination of line number (or primary line number) and business object ID must be unique. Business object ID can be quote ID, order ID, account ID, or agreement ID (if applicable). If the combination is not unique, the Installed Products page does not complete loading data.
- Maintaining line number uniqueness can be challenging when the process is batched for huge volumes. Implementation teams must ensure that the line number is sequenced programmatically to maintain uniqueness across multiple batches.
Renewing Assets
When performing asset renewal, ensure that bundles and their options have matching charging frequencies (one-time or recurring) if they have the same Charge Type. For example, When the bundle's Charge Type is Standard price and its option's charge type is Standard Price, then the Frequency of the bundle and its option should be the same (either one-time or recurring).
A sample when the bundle and its option have the same charge type (standard price):
Case 1: Bundle | Option | Case 2: Bundle | Option | Case 3: Bundle | Option | |
---|---|---|---|
Frequency | Onetime | Onetime | Recurring | Recurring | Onetime | Recurring |
Charge Type | Standard Price | Standard Price | Standard Price | Standard price | Standard Price | Standard price |
Recommended? | Yes | Yes | No |
Standalone Assets
A standalone asset line item needs the following basic data elements to be transferred successfully to Conga CPQ. Implementation teams must ensure that this data is available within the source of the purchased products.
- The Sold To account associated with the standalone asset governs its display on the Installed Products page.
- The unit sale price of the asset with its corresponding selling frequency becomes the asset's base price for any future asset-based orders.
For a recurring entity, the asset line item's term is important for prorating future asset-based orders and for determining the renewal start dates for manual and automated renewals.
- Set the Inactive flag on the asset line item to false. Any asset with Inactive=True is not visible on the Installed Products page.
- Set Has Attributes to True if the asset has attributes.
- Set Asset Status to Activated. The Installed Products page does not recognize statuses such transactional statuses as Amended or Renewed. An asset's status is either Activated or Cancelled.
Bundled Assets
In addition to the points specified for standalone assets, you must specify a bundle's relationships to its child assets (options). Your legacy systems may not operate with the concept of a bundled asset. Entities are related either using a contract or an order. Implementation teams must ensure that all the data is available and structured appropriately for the bundled asset to be used with asset-based ordering.
- Set Has Options to True on the asset.
- Set Has Attributes to True if the asset has attributes.
- Set Has Attributes to True at the bundle level even if the bundle has no attributes: options within the bundle may have attributes that drive quantity or cumulative range pricing. If Has Attributes is set to True, the reprice action does not reflect the change.
- Populate the parent bundle number (representing the primary line number of the immediate parent line in the hierarchy).
- Populate the parent asset ID (representing the primary line number of the immediate parent asset). This makes a difference when user has cloned options within the bundle structure.
Examples
The following examples show the differences in the population of the parent bundle ID and parent asset ID.
A simple bundle with one option
Asset Name | Charge Type | Selling Term | Start Date | End Date | Is Primary Line | Primary Line Number | Bundle Asset Line Item | Parent Bundle Number | Parent Asset Line Item |
---|---|---|---|---|---|---|---|---|---|
Supernet Transportation Service | Subscription Fee | 12 | 1/1/2021 | 12/31/2021 | Yes | 1 | |||
AAP Options | Subscription Fee | 12 | 1/1/2021 | 12/31/2021 | Yes | 2 | Supernet Transportation Service | 1 | Supernet Transportation Service |
A bundle with two options where one of the options is a bundle
Asset Name | Charge Type | Selling Term | Start Date | End Date | Is Primary Line | Primary Line Number | Bundle Asset Line Item | Parent Bundle Number | Parent Asset Line Item |
---|---|---|---|---|---|---|---|---|---|
Supernet Transportation Service | Subscription Fee | 12 | 1/1/2021 | 12/31/2021 | Yes | 4 | |||
AAP Options | Subscription Fee | 12 | 1/1/2021 | 12/31/2021 | Yes | 7 | Supernet Transportation Service | 4 | Supernet Transportation Service |
VPN | Subscription Fee | 12 | 1/1/2021 | 12/31/2021 | Yes | 5 | Supernet Transportation Service | 4 | Supernet Transportation Service |
Level 2 VPN | Subscription Fee | 12 | 1/1/2021 | 12/31/2021 | Yes | 6 | Supernet Transportation Service | 5 | VPN |
A bundle with a nested bundled option that is cloned
Asset Name | Charge Type | Selling Term | Start Date | End Date | Is Primary Line | Primary Line Number | Bundle Asset Line Item | Parent Bundle Number | Parent Asset Line Item |
---|---|---|---|---|---|---|---|---|---|
Supernet Transportation Service | Subscription Fee | 12 | 1/1/2021 | 12/31/2021 | Yes | 1 | |||
AAP Options | Subscription Fee | 12 | 1/1/2021 | 12/31/2021 | Yes | 2 | Supernet Transportation Service | 1 | Supernet Transportation Service |
VPN | Subscription Fee | 12 | 1/1/2021 | 12/31/2021 | Yes | 3 | Supernet Transportation Service | 1 | Supernet Transportation Service |
Level 2 VPN | Subscription Fee | 12 | 1/1/2021 | 12/31/2021 | Yes | 4 | Supernet Transportation Service | 3 | VPN |
Level 2 VPN | Subscription Fee | 12 | 1/1/2021 | 12/31/2021 | Yes | 5 | Supernet Transportation Service | 5 | VPN |
VPN | Subscription Fee | 12 | 1/1/2021 | 12/31/2021 | Yes | 6 | Supernet Transportation Service | 1 | Supernet Transportation Service |
Ramped Assets
To persist discrete data points associated with each period for billing and revenue recognition in a Quote-to-Cash (Q2C) environment, CPQ creates one asset for each period while processing a ramped (multi-year) deal. The following examples show the structure of such assets:
- Ramped assets are all connected using a primary ramp asset, acting as a loosely-coupled bundle that holds the assets for all periods.
- CPQ populates the bundle asset line item.
- You must set the Is Primary Ramp Line flag to True for the first period.
Examples
The following examples show the differences in the population of the parent bundle ID and parent asset ID.
A standalone ramped asset
Asset Name | Charge Type | Start Date | End Date | Is Primary Line | Is Primary Ramp Line | Primary Line Number | Bundle Asset Line Item | Parent Bundle Number | Parent Asset Line Item |
---|---|---|---|---|---|---|---|---|---|
CPQ | Subscription Fee | 1/1/2017 | 12/31/2017 | Yes | Yes | 1 | |||
CPQ | Subscription Fee | 1/1/2018 | 12/31/2018 | 1 | CPQ | ||||
CPQ | Subscription Fee | 1/1/2019 | 12/31/2019 | 1 | CPQ |
A ramped asset with bundle level ramps that cascade to the options
Asset Name | Charge Type | Start Date | End Date | Is Primary Line | Is Primary Ramp Line | Primary Line Number | Bundle Asset Line Item | Parent Bundle Number | Parent Asset Line Item |
---|---|---|---|---|---|---|---|---|---|
Conga | Subscription Fee | 1/1/2017 | 12/31/2017 | Yes | Yes | 1 | |||
Conga | Subscription Fee | 1/1/2018 | 12/31/2018 | 1 | Conga | ||||
Conga | Subscription Fee | 1/1/2019 | 12/31/2019 | 1 | Conga | ||||
CPQ | Subscription Fee | 1/1/2017 | 12/31/2017 | Yes | Yes | 2 | Conga | 1 | Conga |
CPQ | Subscription Fee | 1/1/2018 | 12/31/2018 | 2 | Conga | 1 | Conga | ||
CPQ | Subscription Fee | 1/1/2019 | 12/31/2019 | 2 | Conga | 1 | Conga | ||
ABO | Subscription Fee | 1/1/2017 | 12/31/2017 | Yes | Yes | 3 | Conga | 1 | Conga |
ABO | Subscription Fee | 1/1/2018 | 12/31/2018 | 3 | Conga | 1 | Conga | ||
ABO | Subscription Fee | 1/1/2019 | 12/31/2019 | 3 | Conga | 1 | Conga | ||
Billing | Subscription Fee | 1/1/2017 | 12/31/2017 | Yes | Yes | 4 | Conga | 1 | Conga |
Billing | Subscription Fee | 1/1/2018 | 12/31/2018 | 4 | Conga | 1 | Conga | ||
Billing | Subscription Fee | 1/1/2019 | 12/31/2019 | 4 | Conga | 1 | Conga |
A ramped asset with option-level ramps
Asset Name | Charge Type | Start Date | End Date | Is Primary Line | Is Primary Ramp Line | Primary Line Number | Bundle Asset Line Item | Parent Bundle Number | Parent Asset Line Item |
---|---|---|---|---|---|---|---|---|---|
Conga- Service Included | Standard Price | 1/1/2017 | 12/31/2017 | Yes | Yes | 1 | |||
Conga- Service Included | Subscription Fee | 1/1/2017 | 12/31/2019 | 1 | Conga- Service Included | ||||
CPQ | Subscription Fee | 1/1/2017 | 12/31/2017 | Yes | Yes | 2 | Conga- Service Included | 1 | Conga- Service Included |
CPQ | Subscription Fee | 1/1/2018 | 12/31/2018 | 2 | Conga- Service Included | 1 | Conga- Service Included | ||
CPQ | Subscription Fee | 1/1/2019 | 12/31/2019 | 2 | Conga- Service Included | 1 | Conga- Service Included | ||
ABO | Subscription Fee | 1/1/2017 | 12/31/2017 | Yes | Yes | 3 | Conga- Service Included | 1 | Conga- Service Included |
ABO | Subscription Fee | 1/1/2018 | 12/31/2018 | 3 | Conga- Service Included | 1 | Conga- Service Included | ||
ABO | Subscription Fee | 1/1/2019 | 12/31/2019 | 3 | Conga- Service Included | 1 | Conga- Service Included |
Linkage to Child Objects
You can link an imported asset line item to its attribute detail using the asset attribute value object. You can link it to its usage detail using the asset usage tier values if applicable.
Quote-to-Cash Implementation with Standard Billing
For a Q2C implementation where there is a need to generate billing for assets, the recommended strategy is to create the order and order lines. Activation of the order and order lines will then generate the assets and the billing. The following are the best practices in those scenarios:
- Specify the billing frequency and billing method for the price list item associated with the order line item. If you do not specify, order activation will fail.
- Set the status of the order header and order lines to Pending Activation.
- Set the Line Status of the order line items to New.
Quote-to-Cash Implementation with Custom Billing
For a Q2C implementation to generate custom billing (using a billing plan) for assets, create the proposal and proposal line items, attach a billing plan to the proposal header, accept the quote, and activate the corresponding order. In such a scenario:
- Follow the standard process to create or import a proposal.
- Auto-activate orders by passing either the Ready for Activation Date from the proposal (if the billing is aligned to this date) or by setting the Auto Activate Order flag to True.
- Do not create the renewal suite on order activation while going through this process.
Renewal Pipeline Generation for Imported Assets
To generate the renewal pipeline for legacy assets, use the OnDemand mode in conjunction with the lead time.
- To group the generated renewal quotes by quote ID, use the Apttus_QPConfig ProposalId r.Name grouping field.
- Do not generate renewal suites for legacy assets on order activation in a batch process. This overwhelms CPQ resources, violates the governor limits, and causes unpredictable behavior.
Using a Batch Process to Create Imported Assets
- Asset import through an order involves calling several data manipulation languages (DMLs) and APIs. Executing too many orders in one batch can result in a Too many SOQL queries: 201 error.
- You must ensure that the batch size is optimized to prevent errors based on the size of your order and the size of each line item.