Renewals/Amendments: Cannot read property ‘lineVO’ of null

This error. 👍🏻 The worst. WHY DOES IT HAPPEN?!?! I’ll TELL you why. The CPQ demons want to eat your renewals and amendments for breakfast. And they have. Time to give up and retire to some remote island where you can sip on the souls of frustrated CPQ Specialists. Kidding! It happens because Assets! Issues …
Continue reading Renewals/Amendments: Cannot read property ‘lineVO’ of null

Subscription Conversion – One per unit

You know how on the Product record, you can set up a Product to convert to an Asset? And you can either make it convert to an Asset One per Quote Line or One per unit? One per unit means a Quote Line with a Quantity of 5 gets 5 separate Asset records. How great! …
Continue reading Subscription Conversion – One per unit

Quote Template – Custom Lines Section

Today, I realized that I’ve not done a custom lines section article! A travesty of justice! Or just an oversight. Either way, here it is! This includes a controller APEX class, a VisualForce page and a Template Content that is of type Custom. Have at it below! This example is a lines section that groups …
Continue reading Quote Template – Custom Lines Section

CPQ – Consortia! (Quote by Location)

Have you ever wanted to Quote by location? Do you have a client who MUST be able to quote by location? Look no further! Well, look a LITTLE further. Like down this article. This solution involves Account Hierarchy, some Custom Fields, Quote Line Groups, a Fieldset, a Process Builder, a Price Rule, and a QCP! …
Continue reading CPQ – Consortia! (Quote by Location)

Renewal Start/End Date

I am not sure when it happened but Salesforce CPQ now sets Start/End Date fields on Renewals. Instead of setting Start Date and Subscription Term. This is a bad thing for most of our clients. So I made the most simple process builder that sets Subscription Term to Renewed Contract Renewal Subscription Term and Sets …
Continue reading Renewal Start/End Date

CPQ – Amendment Discount Amount – Fix

The IssueWe recently discovered an issue with amending a Contract containing lines that had a Discount Amount on the original Quote. The issue is that, when you amend a line that has a Discount Amount from the original Quote, the whole discount value is put on that line from before. Which doesn’t make sense because …
Continue reading CPQ – Amendment Discount Amount – Fix

CPQ – Rollback to Here

Have you ever been testing some functionality you just built that works on renewals or amendments and you keep having to roll back to the original opp and/or quote? Does your client have a process that includes “starting over” where they manually delete renewals, amendments, and the contract so it can all be regenerated? Look …
Continue reading CPQ – Rollback to Here

CPQ – Opportunity – Custom Action – New Quote

Most times, customers want a simple “New Record” screen for the Quote object. They also want fields to prepopulate with some things. Here is a simple custom action on Opportunity that you can put at the top of the page layout. Make sure to hide the “New” button in the Quotes related list. Here is …
Continue reading CPQ – Opportunity – Custom Action – New Quote

CPQ – Auto generate Contract and auto generate Renewal Opportunity and Renewal Quote on Contract.

Salesforce Support’s official stance is to NOT use Workflow Rules OR Process Builder OR Scheduled Flows for Renewal Forecast, Renewal Quoted or Contracting. This is because Contracts will mysteriously not always generate if you do this. The same thing can happen with renewal quotes not being created. The recommendation is to move your automation to …
Continue reading CPQ – Auto generate Contract and auto generate Renewal Opportunity and Renewal Quote on Contract.

CPQ – Lookup Price Rule – Step by Step

Hello! Here is a simple step by step of how to create a Lookup Price Rule! Create the Custom Object and its Fields. The best way to do this is to make a CSV with your columns and some sample values. Then use the Lightning Object Creator with your file to make the object. Price …
Continue reading CPQ – Lookup Price Rule – Step by Step

Error Message in Generate Document: Attempt to de-reference a null object

This error. Is the worst. It appears everywhere and indicates no detail about why the error happens. WTF. This will be a thread of reasons why this could happen. The first reason is below. Block Pricing Product without Blocks! Whaaaaaat. It turns out if you have a block priced product without block prices, you get …
Continue reading Error Message in Generate Document: Attempt to de-reference a null object

CPQ – Price Rule – Add Months to Any Date

Here’s a formula to put in a Price Action to add months to any Date. You can use this in lieu of the ADDMONTHS() function which is not supported in Price Action formula. Note: Leap year is calculated by: IF(( MOD(YEAR(Date_Field__c),4) == 0 && (MOD(YEAR(Date_Field__c),100) != 0 || MOD(YEAR(Date_Field__c),400) == 0) ), 29, 28)

CPQ – Pre-Discovery Homework!

This is a list of homework. For whoever wants to implement a CPQ. Any CPQ. This is a small list of things you can do before you even kick off your CPQ project. You’ll definitely need these things in hand during discovery. It’s a bit of pre-discovery. Keep in mind that if there is anything …
Continue reading CPQ – Pre-Discovery Homework!

CPQ – Orphaned Amendments – Solution!

There came an issue with amendment Opportunities/Quotes being orphaned after a renewal was closed won and Contracted! Below is a diagram showing the issue. The process is as follows: Everything is fine (most important step) Create new Opportunity New Quote Close win Opportunity Click Contracted = True on Opportunity (or your favorite automation) Contract is …
Continue reading CPQ – Orphaned Amendments – Solution!

CPQ – Quote Templates – Text on Top of Image!

Did you know you can put text on top of an image in a Quote Template? You CAN! Here’s how to do it: Template Section field “Keep Together” is set to “Always” Place image first. To make the image go all the way to the edge, have negative top and left margins that push it …
Continue reading CPQ – Quote Templates – Text on Top of Image!

CPQ – Finally! Dynamic Quote Fields in the Line Editor!

This is a simple one… Salesforce CPQ has implemented yet another “Special Field”, HeaderFieldSetName. If you add this field to the Quote object, you can dynamically control what header fields show up in the QLE. This has been requested countless times over the past 5 years and FINALLY we have it! CPQ Quote Object: New …
Continue reading CPQ – Finally! Dynamic Quote Fields in the Line Editor!

CPQ Feature! Recommended Products!

I can not tell you how many times someone has requested to see recommended products after adding a bunch of stuff to the line editor. It’s probably in the top ten functionality requests. I always have to implement some sort of lookup product rule based on their criteria for the recommendations. Well look no further! …
Continue reading CPQ Feature! Recommended Products!

Salesforce Billing! Refund Process Flow

This is a post about Salesforce Billing! I am getting more and more into billing and we could not be more delighted! This is a process that we ironed out in a flow it clear on what needs to happen and in what order… follow along! Original Invoice (Opp -> Quote -> Order -> Bill …
Continue reading Salesforce Billing! Refund Process Flow

CPQ Pre/Post-Deployment Checklist!

Are you going live? Do you have no idea how to start climbing THAT mountain? Look no further! Below are two checklists! Pre-Deployment Checklist Get Sign-off on UAT in Sandbox Do NOT go live without sign-off. This is a bad idea. Clone CPQ Page Layouts and Assign them to Proper Profiles You can not put …
Continue reading CPQ Pre/Post-Deployment Checklist!

MDQ! Contracts! Segment Quantity!

This is a weird one but it makes sense. You have a yearly MDQ Product. You quote it for 3 years. You generate a Contract after close winning the Opportunity. There are TWO ways you can generate the Contract: Close Win Opportunity (or whatever criteria you use to contract with) Contracted = True on Opportunity. …
Continue reading MDQ! Contracts! Segment Quantity!

CPQ Feature: Hide/Show/Modify Tiny Quote Line Icon Buttons

Those buttons. I am asked all the time: “Can we hide or remove some of or all of these buttons?” YES. You can! Fun thing: these are just custom actions. You can edit them, including adding conditions! Go! Search for them! Go to the Custom Actions tab. Look at the actions for Location = Line. …
Continue reading CPQ Feature: Hide/Show/Modify Tiny Quote Line Icon Buttons

CPQ – Little Known Feature – Lookup Search Fields!

This is a pretty cool feature. It enhances the lookup search capabilities of lookup relationship fields in CPQ visualforce pages. The ScenarioYou have the Account field on the Line Editor layout for Quote Line Groups. You can set the Account individually on a Quote Line Group. The ProblemWhen you click into the Account field on …
Continue reading CPQ – Little Known Feature – Lookup Search Fields!

Advanced Approval – Submit Multiple Records in Related List (Classic)

A new Code Using Advance Approvals If you created a new approval process with Advanced Approvals package and you need a quick way to submit for approval multiple records from selecting them from a Related list (without having to enter each record), this code will work very well for you. For this Project we have …
Continue reading Advanced Approval – Submit Multiple Records in Related List (Classic)

CPQ Exam vs. CPQ Training

Do you want to hone your CPQ skills and become a super CPQ Specialist? Great! There is, of course, a difference between the CPQ Specialist exam and the CPQ Admin Essentials classes you can take. There are also trailheads! TrailheadsLet’s talk these first. If you’re new to trailhead, this is an online training program that …
Continue reading CPQ Exam vs. CPQ Training

CPQ – Line Editor – Component Option Quantities are Calculated Between Before Calculate and On Calculate

You have a Price Rule on before calculate that updates SBQQ__ListPrice__c using a formula which is something like: SBQQ__OriginalPrice__c * (SBQQ__Quantity__c *0.01). A formula that changes the list price based on quantity. You add a bundle product containing an option that is of type “Component” and save the configuration. The bundle product has a zero …
Continue reading CPQ – Line Editor – Component Option Quantities are Calculated Between Before Calculate and On Calculate

System.SObjectException: Invalid field SBQQ__Product__c for SBQQ__QuoteLine__c

Object o = myOb.get(myFieldName); Does your code look something like this? System.SObjectException: Invalid field SBQQ__Product__c for SBQQ__QuoteLine__c And you get an error something like that? This is an apex error. This can happen with any field on any object. If you’re here, you probably have less hair because you’re pulling it out trying to figure …
Continue reading System.SObjectException: Invalid field SBQQ__Product__c for SBQQ__QuoteLine__c

Salesforce CPQ – Standard Subscription Management Process

IntroductionHere is a click through (with screenshots) path for the standard management of subscriptions in Salesforce CPQ. New Subscription On Account Page Click the New Opportunity button. Fill in pertinent information for new Opportunity. Click the Save button. Click on the new Opportunity record. On Opportunity Page Click the New Quote button. Fill in pertinent …
Continue reading Salesforce CPQ – Standard Subscription Management Process

Salesforce CPQ – Pull Quote Line Groups into Renewals and Amendments

Hello! If you’re here, you’re looking for how to pull groups into your amendments and/or renewals! You might have come from the Salesforce Idea page or perhaps google search…. There is a checkbox field, a trigger and a Price Rule involved. Fear not! All of it is right here. Please NOTE: This code is provided …
Continue reading Salesforce CPQ – Pull Quote Line Groups into Renewals and Amendments

The Entity ‘ConsumptionSchedule’ is not found. Contact the vendor for more details.

You’re here. You’re trying to install CPQ. But this message happens. Dammit. 😡 There’s only two ways to solve this: Enter a support ticket to have Salesforce provision Usage Based Pricing in your org. Create a fresh new org and try installing there. Support TicketBelow is an example thread you might see after submitting a …
Continue reading The Entity ‘ConsumptionSchedule’ is not found. Contact the vendor for more details.

When Migrate Quote Template Through data loader

You might notice, after migrating your quote templates to another org with data loader (to production perhaps), you see either double or duplicate columns in the Quote Template! Are you migrating the quote templates through data loader? You must keep in mind that the order to add the Quote template through data loader is: 1. …
Continue reading When Migrate Quote Template Through data loader

Salesforce CPQ – New Theme Woes

Did you create a new theme and it does not apply to your users and/or sales representatives?Is your theme giving you an error when previewing it?  Upsert Failed. First exception on row 0 with id xxx; first error: INSUFFICIENT_ACCESS_ON_CROSS_REFERENCE_ENTITY, insufficient access rights on cross-reference id: []Error is in expresssion ‘{!previvew}’ in page sbqq:theme: (SBQQ) After …
Continue reading Salesforce CPQ – New Theme Woes

How-to Rename/Relabel the Pricebook Entry – Field: List Price!

Guess what! You can relabel / rename the Pricebook Entry field, List Price! I bet you can’t find where though! You might think it would be in the Custom Labels Setup. Nope. Translation? Nope. Rename Tabs & Labels, Pricebook Entry object? Negatory. Well, you’re half right. Setup > Rename Tabs & Labels > Opportunity Products …
Continue reading How-to Rename/Relabel the Pricebook Entry – Field: List Price!

CPQ – Product2 Field – Has Configuration Attributes

There is a field on the Product2 object called “SBQQ__HasConfigurationAttributes__c”.  This field is one of the only fields in CPQ that does not have help text next to it in the UI. You can see Lock Description has a help text “i” next to it but Has Configuration Attributes does not. It does have a …
Continue reading CPQ – Product2 Field – Has Configuration Attributes

APEX – Don’t Allow Contact Deletion if Contact is an Opportunity Contact Role.

This is not CPQ but a short, quick, request from someone for some code. The request is: If a Contact is an Opportunity Contact Role of same Account, don’t allow deleting it. Below is the code. I didn’t think “of same Account” matters, so I didn’t write that into the code. APEX Trigger – ContactTriggers …
Continue reading APEX – Don’t Allow Contact Deletion if Contact is an Opportunity Contact Role.

Error Message on VF Page – INSUFFICIENT_ACCESS_OR_READONLY: user does not have access to use approval assignment email template.

You have an approval process that sends and email to an approver using a specific visual force email template. You get an error that says: INSUFFICIENT_ACCESS_OR_READONLY: user does not have access to use approval assignment email template. GAAAH!!! What the heck?? You see that the template is in a folder that is set to read …
Continue reading Error Message on VF Page – INSUFFICIENT_ACCESS_OR_READONLY: user does not have access to use approval assignment email template.

Error Message in QLE: Attempt to de-reference a null object

This message is the worst. Very sorry that you’ve found this error. This is telling you, ”something bad happened in CPQ and we’re not telling you what It is”. This is going to be a living document that contains reasons why you might encounter this error. Upon upgrading to CPQ 222, when clicking the wrench …
Continue reading Error Message in QLE: Attempt to de-reference a null object

Error Message in QLE: Apex CPQ Time Limit Exceeded

Whaaaaaat is going on with this error message??Sometimes, when you click save on the Quote Line Editor, you get a message saying it timed out! Why would this happen, you ask? There are plenty of reasons and some of them are listed below. Too many Price Rules/Product Rules Price Rules Product Rules Summary Variables Too …
Continue reading Error Message in QLE: Apex CPQ Time Limit Exceeded

Price Rules – Configurator!

Guess what! Price Rules can operate inside of the configurator! Most times, folks configure them to run in one of the four calculation events in the line editor. But you can also configure them to run within the configurator too! I am going to use an example Price Rule to illustrate some things about configurator …
Continue reading Price Rules – Configurator!

CPQ – Oldity – The Mysterious “None” Option

You have a bundle product. You have a couple features. You have a few options in those features. You quote the product to test it. Lo and behold! There is a “None” option under all of your other options! Whaaaaaat. I didn’t put that there. There’s no setting anywhere to turn this off or on. …
Continue reading CPQ – Oldity – The Mysterious “None” Option

CPQ – Oddity – Product Rule does not show “Continue” button in QLE

Hello! Welcome to another episode of “well this is weird”, CPQ edition. You have a bunch of products. You have an Alert Product Rule set up to run on Quote. See below. Where in the world is the “Continue” button? Is my alert Product Rule acting like a validation and not letting me save the …
Continue reading CPQ – Oddity – Product Rule does not show “Continue” button in QLE

CPQ – Feature – Usage-Based Products

This feature is for when you have a product that is usage based! This is for “number of” products. Hours, Views, Impressions, Calls, Incidents, Visits, Bandwidth, and many many more. There are a few things you need to do before you begin quoting with Usage-Based Products. SFDC Help Case: Enable the Usage Based Pricing FeatureIf …
Continue reading CPQ – Feature – Usage-Based Products

CPQ – Feature – Pricing Guidance

This is a feature of CPQ that allows for some guidance when your reps are deciding on discounts for the products they’re quoting. There are Two Types!– Manual Pricing Guidance (OOTB LOE: 20 Hours)– Pricing Guidance with Einstein Analytics (OOTB LOE: 50 Hours) Off-the-Bat Caveats!There are some caveats with this feature!  See below. Not available …
Continue reading CPQ – Feature – Pricing Guidance

CPQ Training

There are two training resources available to you offered by Salesforce. Salesforce Training and Trailhead. Salesforce TrainingAt the time of this writing, you get a free seat in both the CPQ-201 and CPQ-211 courses offered by Salesforce. There is also a CPQ Billing course. Salesforce CPQ Admin Essentials for New Administrators (CPQ-201)CPQ-201 is a hands-on …
Continue reading CPQ Training

Error Message when Amending Contract: Invalid field SBQQ__SegmentUplift__c for Asset

Error MessageError Message “Invalid field SBQQ__SegmentUplift__c for Asset” would appear when amending a Contract. Root CauseThis is caused by one of two things (or both): The Required By field on the Subscription record points to an Asset record ID. There are both an Asset record and a Subscription record existing for the same Product. SolutionThere …
Continue reading Error Message when Amending Contract: Invalid field SBQQ__SegmentUplift__c for Asset

Subscription Products

Need some clarity on Subscription Products? Here it is! Subscriptions can be divided up in a few different ways. PricingThere are two pricing options here. Fixed Price or Percent of Total. Fixed Price subscriptions are products that have just that, a fixed price. This fixed price can either be a one specific price for the …
Continue reading Subscription Products

CPQ Implementation Project – Guide

Introduction Many folks have asked, “How do we even start our CPQ project?”. This is a great question. It can be daunting to think about all of the things you’re going to need in your system. Here is a guide to help you kick off and run your CPQ implementation project.  Also this:  I like …
Continue reading CPQ Implementation Project – Guide

No such column ‘LastViewedDate’ on entity SBQQ__. If you are attempting to use a custom field, be sure to append the ‘__c’ after the custom field name. Please reference your WSDL or the describe call for the appropriate names.

Wow this is a long article name. But it’s appropriate! This message can be seen throughout the Line Editor screen and/or the Documentation Generator screen. The above screen cap shows Quote Line Group as the culprit. But there are common others such as, but not limited to: Quote Line, Product Option, and Product Feature. What …
Continue reading No such column ‘LastViewedDate’ on entity SBQQ__. If you are attempting to use a custom field, be sure to append the ‘__c’ after the custom field name. Please reference your WSDL or the describe call for the appropriate names.

CPQ – Amend MDQ Past First Segment

The ProblemIf you’re dealing with amendments on MDQ products, you may have realized you can’t do this… Click Amend on Contract Set Start Date past first segment Save Quote You get the below error: The AnswerHuzzah! There is an answer! The answer is… Contract -> Amendment Start Date Set Amendment Start Date on Contract past …
Continue reading CPQ – Amend MDQ Past First Segment

AUTO-POPULATE Fields on Quote Creation

Repubished from here: https://learningsalesforcecpq.com/2018/09/19/auto-populate-fields-on-quote-creation/ A specific set of fields on Quote can be auto-populated from the associated Opportunity and Account at the time of creating a new Quote. If you do not do the necessary setup, sales reps would spend time re-entering Quote fields which were already filled in at the time of creating Opportunity and Account. Salesforce CPQ provides a Field …
Continue reading AUTO-POPULATE Fields on Quote Creation

Generating a Document: Error generating document: Bad Request

If you’ve ever got this error when generating a document, you probably have less hair than you did before generating the document. There are multiple reasons this could happen: HTML tags in a Quote Line Line Column field in the lines section Template Content. One of your HTML Template Content records has a reference to …
Continue reading Generating a Document: Error generating document: Bad Request

The 5 Minute Time-Based Workflow (or 15 Minute, or 30 Minute…)

This was originally posted here. But I wanted to re-post it to save it in case it ever disappears. This is also not super CPQ related but VERY helpful! Salesforce workflows come in 2 flavors – real time and time-based workflows.  Time-based workflows are evaluated at the time interval you set – some number of hours or days after …
Continue reading The 5 Minute Time-Based Workflow (or 15 Minute, or 30 Minute…)

CPQ Spring ‘19 – Delete SBQQ__Opportunity__c from the Quote Object.

When version 26 of Salesforce CPQ + Billing was introduced in September 2016, the SBQQ_Opportunity_c field was replaced by SBQQ__Opportunity2__c. This field allows you to maintain the relationship between Quotes and Opportunities, and the introduction of SBQQ_Opportunity2_c allowed users to create quotes without first requiring to have an Opportunity record in place.  Both SBQQ__Opportunity__c and …
Continue reading CPQ Spring ‘19 – Delete SBQQ__Opportunity__c from the Quote Object.

CPQ Self Service

It looks like there is a need for some guidance here.  Sorry I have been dormant for the last while.  Busy busy with CPQ configurations and a growing company!  😀  As far as CPQ Self Service goes: This is not out of the box and when this link references Self Service with a Customer Community, …
Continue reading CPQ Self Service

Legacy Data Import Process

Once you have your CPQ implementation all set, you will have to figure out a process to import legacy data. This could be importing data from another system into SFDC or importing data from another SFDC object (such as the old Quote object) into the CPQ setup. First, let’s look at a simple general flow …
Continue reading Legacy Data Import Process