Saturday, June 19, 2021

CPQ - Auto Mapping/Twin fields

Auto Mapping/Twin Fields in Salesforce CPQ

This is an amazing feature in CPQ where we can see without customization, writing the apex code application pass value from one object to another using "Configuration Attributes" and "Twin field"

Twin field: Certain pair of CPQ Objects pass custom field values from the first object to the second object when the second object is created. The values pass if the custom fields are editable, have matching field types, and have matching API names. We call these field pairs "Twin fields".

Example - Product Option(Configuration Attribute) and Quote Line.

If we want to map picklist field "Location__c" exists in Product to Quote line , then go to Quote line object and create exactly the same picklist field name "Location__c", that's it. Now if you set some value to that field in product the value automatically will be available on  Quote line, this value can be used later for some filtering.

Configuration Attributes: Configuration attribute is the field which drives your product configuration at the Product Option level. Depending on that configuration attribute your product selection is available for agent.



Lets assume you are running your Travelling business in India in North, East, West, South regions. Now you need to configure the cart for 4 different regions and provide filter where user can see list of sites in cart based on "Hills" OR "Beaches"

How we can implement this requirement without wrting the code? 

No worry,  let's see below 

Requirement

Design Cart for different regions and based on filter, Products should be displayed in Cart.

Sample Design: Need to implement below Cart



Implementation

Bundle Product - Travelling Catalogue
Features/Category - North, East, West, South
Options - Travelling Sites Option created under each feature
Configuration Attribute - Hills, Beaches(Picklist values)

STEP 1

Define custom field "Location__c" in Product Option and Quote Line object
  • Field Name: Location
  • Data Type: Picklist
  • Picklist values: Hills, Beaches
Copy API (Location__c) for Location field

STEP 2

Go to object "Configuration Attributes"->Open "Target Field"->Add API Location__c in Target field Picklist 






STEP 3

Go to object "Error Condition"->Open "Tested Field"->Add API Location__c in Tested field Picklist





STEP 4

Go to Tab Product->Open Bundle Product - Travelling Catalogue->Add new Configuration Attribute record
  • Attribute Name - Location Filter
  • Target Field - Location__c
  • Row order -10
  • Column Order -1
  • Position - Top
  • Apply immediately checkbox -Checked



STEP 5

Create "Product Rules" with below values

Go to Tab Product Rules->New
Product Rule Name - ShownHillsPackages
Type - Selection
Scope - Product
Active - True
Condition Met - All
Evaluation Event - Always



Create "Error Conditions" in  same Product Rule "ShownHillsPackages"

Error Conditions->New
Rule - ShownHillsPackages
Tested Object - Configuration Attributes
Tested Field - Location__c
Operator - Equals
Filter type - value
Filter value - Hills




Note: If  field "Location__c" is not visible in "Tested Field" picklist then please execute below steps
1. Go to Object "Error Condition" in setup-> Open "Tested Object" field
2. Scroll down and go to related list "Field Dependencies"
3. Click on "Edit" link
4. Select "Location__c" for Quote, Quote Line, Product Option and Configuration Attributes.
5. Click on "Include values" button and save.
6. Now you will see "Location__c" in Tested Field picklist in Error conditions.




Create "Actions" in same Product Rule - "ShownHillsPackages"

If above error condition is TRUE then "Actions" will be performed.

Example: If user selects "Hills" from Location picklist then all Hills related tourist packages should be displayed in cart and remove others. Same for "Beaches", if user selects "Beaches" then all Hills related packages should be removed from cart.

Let's create "Actions" here from action related list in Product Rule.

Rule - ShownHillsPackages
Type - Show
Product - Himachal

Create multiple actions where Type =show for all product options which you want to display for "Hills".

Rule - ShownHillsPackages
Type - Hide & Remove
Product - Goa

Create multiple actions where Type =Hide & Remove for all product options which you don't want to display for "Hills"or remove all beaches.

See below sample Ations created.




Create "Configuration Rules" in same Product Rule - "ShownHillsPackages"

Open Product Rule-"ShownHillsPackages"->Go to related list "Configuration Rules"->New
Product - Travelling Catalogue
Save the Rule

Note: Configuration Rule is mandatory for each Product rule otherwise it will not work(CPQ managed package inbuilt feature)


STEP 6

Create second "Product Rules" with below values
Go to Tab Product Rules->New
Product Rule Name - ShownBeachesPackages
Type - Selection
Scope - Product
Active - True
Condition Met - All
Evaluation Event - Always

Create "Error Conditions" in same Product Rule - "ShownBeachesPackages"

Error Conditions->New
Rule - ShownBeachesPackages
Tested Object - Configuration Attributes
Tested Field - Location__c
Operator - Equals
Filter type - value
Filter value - Beaches

Create "Actions" in  Product Rule - "ShownBeachesPackages"

If above error condition is TRUE then "Actions" will be performed.

Example: If user selects "Beaches" from Location picklist then all Beaches related tourist packages should be displayed in cart and remove others. 

Rule - ShownBeachesPackages
Type - Show
Product - Goa

Create multiple actions where Type =show for all product options which you want to display for "Beahces".

Rule - ShownBeachesPackages
Type - Hide & Remove
Product - Himachal

Create multiple actions where Type =Hide & Remove for all product options which you don't want to display for "Beaches"or remove all Hills. (Please follow same steps as you did for Hills above)


Run the application and see your cart as per above implementation.




  
  If you like my blog please comment and share your CPQ Live   experience. Let me know if you have any query :)

Related Blogs:

Monday, May 3, 2021

Apttus CPQ - Price Lists for Products

 In my last Blog we have created Bundled Product Hierarchy

 (URL -https://imaginativesap.blogspot.com/2021/05/apttus-cpq-how-to-add-option-groups-and.html)

now we will see how to setup different Prices for Products.

How to define Prices (Global/Custom Price) and why it is required?

When sales Reps need to sale any Product(standalone or Bundled) then they required Price List for each Product. If we want to sale our Product in same price for all customers then we can setup standard "Global Price" and link with all Products but if we have specific customer or we made long term contract with few customers then we will offer special prices for those Prime Customers. In this case we need to setup custom Prices based on customers.

Lets take below example that i need to configure in Apttus:


Create New Global Price List:

1. Go to "Price List" tab
2. Create New Price List->Enter Price List name = "Global Price List"
3. Select "Currency"(US Dollor or EURO) depend on your location.
4. Save and check Global Price List created


Create Custom Price Price List:

1. Go to "Price List" tab
2. Create New Price List->Enter Price List name = "L&T Price List"
3. Select "Currency"(US Dollor or EURO) depend on your location.
4. Select Customer Account or Agreement Number(depend on your customization)
5. Save and check L&T Price List created

How to link above Price Lists with Product (Ex-Washing Machine)

Global Price List added:

1. Go to Product tab
2. Open Product - "Wahsing Machine"
3. Go to Related List -> "Price Lists"
4. Click on "New" button
5. Select "Global Price List" from Price List lookup
6. Enter List Price = 280$ and save the record.
7. Check new Price List item or entry visible in "Price Lists" related list.

Note: In above scenario, Sales Rep can sale Washing machine with Global price = 280$ to all Customer.

Custom Price List - "L&T" added:

1. Go to Product tab
2. Open Product - "Wahsing Machine"
3. Go to Related List -> "Price Lists"
4. Click on "New" button
5. Select "L&T Price List" from Price List lookup
6. Enter List Price = 245$ and save the record.
7. Check new Price List item or entry visible in "Price Lists" related list.

Note: In above scenario, Sales Rep can sale Washing machine with custom price = 245$ to on;y "L&T" Customer.

Same way we can create "Price List" entrries for Customer B and Customer C.


Imp Point: As i said in my last Blog, we will not be able to search any product in Catalog if Global Price is not created for Product as it is mandatory for each Product.

Imp Point: Don't get confused for "Price Lists" and "Price List Items", Price List item is link between Product and Price List that happen through Product object(Please see above).


Next Blog: Create Quote and add Products from Catalog

If you like my Blog please comment :) 

Saturday, May 1, 2021

Apttus CPQ: How to add Option Groups and Child Products in Bundled Product

Apttus CPQ has capability to create highly configured Bundled Product Hierarchy with child options that will diplay in Catalog for Customers. In this blog we will see how to create Product Hierarchy and add its child Opions.

Prerequisite:

Bundled Product should created with below configurations

  •     Configuration Type (Picklist) = "Bundle" 
  •     Has Option (checkbox) = TRUE
  •     Has Attibute (Checkbox) = TRUE
  •     Active (Checkbox) = TRUE
  •     Product Name, Product Code, Product Description =Any values in these Text fields


Add New Option Group:

We can add Option groups by "Product Console" in  Apttus.

1. Open Bundled Product

2. Go to Product Console by Product menu and click "Manage/Bundled Options"

3. Add new Option Group 



Associate Child Products with Option Group

1. Once you created Option group above, then click on Option group in left pannel

2. Enter Minimum and maximum quantity which you want to allow to your customers

3. Set "Content Type" = Options, Modifiable Type = Fixed, save it.

4. Search Standalone Products using filters.

5. Select Products and click on "Associate" button

6. Now your child products will be added in Option Group and visible in left pane.

7. Click on child Product->Set Default checkbox =TRUE, define Min/Max Qty, Save changes.

8. Same steps follow for adding more child Products.

9. Click on "Update View" button viisble in left pane(See above)

10. Now your Bundled Product Hierarchy(With Child Options) saved in system.

Where Bundled Product Hierarchy will visible?

1. Open Product->Go to Related List  = "Option Groups"

2. Click on Option Group ID, go to Related list-Options.

3. You can find your Options (Added above)


Very imp point: You will not be able to search any product in Catalog if Global Price is not created for Product as it is mandatory for each Product. In my next Blog i will show you how to create Global as well as custom Price List for Products(standalone/Bundled)

Next Blog: How to define Global Price and Custom Price for Product

If you like my Blog please comment it :)    

CPQ - Auto Mapping/Twin fields

Auto Mapping/Twin Fields in Salesforce CPQ This is an amazing feature in CPQ where we can see without customization, writing the apex code a...