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 with Assets. Here is a link to the article that tipped me off to Assets.
More Detail
This is caused by one of two things but those two things are very similar!
Asset Record
On the Asset record, there are two fields: Required by Asset and Required by Subscription. This error could be happening because one of those fields is blank but shouldn’t be. Example:
You have a piece of hardware configured. Under this hardware, you put a required, selected Product Option that is a subscription. Like a maintenance product or a warranty product or something. It’s a subscription. But the hardware product is not configured to convert to an Asset. Everything is totally fine in the configuration screen and the line editor screen. All is happy. You’re demoing this for your client, expecting the OOTB renewals and/or amendments to work. BOOM. You get this error and look like a doof. WHO DID I HIRE?! <– customer is thinking.
The renewal is trying to add that subscription to the renewal quote. But it can’t because it can’t figure out what it is supposed to be attached to.
Subscription Record
On the Subscription record, there is a field: Required By Id. This error could be happening because this field is blank but shouldn’t be.
Solution
Go update the Asset Conversion and Asset Amendment Behavior fields on these products that are not subscriptions but have subscriptions under them. Asset Conversion = One per quote line -or- One per unit. Asset Amendment Behavior = Default. Go. Do it. Test it. Fixed.
PS. If this does not fix it, please drop a comment below and TELL ME. I want to know and help fix your problem.
Hello Again!
I am facing this issue. The Asset and Subscription records are good with one problem. The org has 3 products that were originally configured to generate to assets. These products were then re-configured to not generate assets. But assets were already created for some old contracts. Amendments are getting created successfully if CPQ setting has Legacy Amend/Renew Service=True. Error “Cannot read property ‘lineVO’ of null” is generated if Legacy Amend/Renew Service=False.
Note: Contracts are generated from opportunities and not from orders in this org.
Could you please recommend any approach?
Regards,
Kavita
Hellooooo again! In this case I would look for assets that have blank values in these required by fields. Either delete the assets or fill in one of the required by fields on the records. I would rather not have to set legacy amend service to true.
Sorry for delay on giving updates. Tried these solutions. Amend functionality did not work. I had to set legacy amend service to true temporarily.
Oh this is unfortunate. I’m curious to see your assets and subscriptions related lists for this account and contract. Let me know if you figure it out!
I have another instance. How do you recommend sharing (screen share?)?
What if I don’t want an asset OR a subscription for the parent product? At renewal time, I want ONLY the child record to be renewed, with no reference to the parent at all. (Currently parent product’s asset conversion/amendment behavior is NULL, Child product is renewable and CAN be added as a stand-alone product without issue, but is generally sold as part of that parent’s bundle.)
Hey Mitch. Hmmm this sounds like it should work but I have a feeling you get this error. You may need to consider alternate configurations such as a Product Rule that auto adds the subscription as a standalone product when your bundle is detected on the lines.
I came across this recently and the issue was with the bundle structure that was in place when the original quote was ordered and contracted.
We had a one-off situation where we set up a bundle with just one option. We mistakenly had the parent product set up without any subscription details (no subscription pricing and no subscription term), but the child product was set up as a subscription item.
When contracted, it created only the subscription for the child product, and amendments to this contract produced the dreaded lineVo error. I could not figure out a workaround and ended up re-contracting the deal after fixing the parent product’s pricing info.
It seems to me that there should have been a validation on the contracting step that prevented us from going forward. I don’t know of a valid scenario where it should allow the orphaned subscription to be created.
Good day!!
Thank you for sharing the amazing collection of knowledge!!
Would it be possible to update the link to the article that tipped you over to the problem being the assets. Unfortunately current link opens up trailhead 🙁
Updated!
All set!
I am getting this error ” Cannot read properties of null (reading ‘lineVO’)” when I set the Renewal Forecast ( SBQQ__RenewalForecast__c) to True on Contracts
Yeah there’s a whole thread about this error on a Salesforce help post. I’ll have to find it and add the results of it to this post. Will have to be tomorrow 🥱 🙂
Appreciated, Denis. Some posts I found online mentions RequiredByID and some other fields that are not populated, however, I have records that successfully created a renewal opportunity where those fields are not populated.