Troubleshooting
When a quote total looks wrong:
- Open the Product Display tab and check the reconciliation row. If it shows a red warning, the displayed total disagrees with the persisted line items — capture the screenshot and open an issue.
- Verify the parent quantity matches the expected. A wrong parent quantity multiplies every Component/FPC child below it.
- Check the bundle’s
PricingModel__c. Switching between Standard, Roll-Up, and Itemized changes how the parent total relates to the children. Standard is the most common source of “the bundle didn’t pick up my option’s price” — switch to Roll-Up if the parent should reflect the option choices. - Look at the option type on
ProductOption__c. A child that should multiply (Component or FPC) but is set to Accessory will keep the option quantity as-is — no multiplier. - For subscriptions, check the segment dates and dimension settings. A segment whose duration doesn’t match the dimension default will prorate. The prorated quantity is on the segment line.
- For renewals and amendments, remember re-pricing is always on. There is no toggle to check — every carried-forward line is re-priced on the effective date against the customer’s active contracted price, then the discount schedule, then the subscription’s verbatim price (most- to least-specific; see Renewals & Amendments). A surprise price change is almost always one of those inputs moving since the original deal — an updated contracted price or discount schedule effective as of the renewal / amendment date.
”Pinion cannot create a contract for this Opportunity: its Type is …”
Moving an Opportunity to Closed Won can stop with a message like:
Pinion cannot create a contract for this Opportunity: its Type is ‘New Customer’, which is not one of the contract-eligible Types in Configurator Settings (ConfiguratorSettings__mdt: NewBusinessType__c = ‘New Business’, RenewalType__c = ‘Renewal’, AmendmentType__c = ‘Amendment’). …
The deal’s lines were built in Pinion, so closing it won would normally create a Contract, Subscriptions, and Assets. Its Type matches none of the Type values Pinion is configured to recognize, so Pinion blocks the stage change rather than leave the deal won with no contract. Nothing was saved.
To fix it, do one of the following:
- If the Type is one your team uses for new deals (Salesforce’s standard
New Customeris the usual case), setNewBusinessType__con Configurator Settings to that exact value. UseRenewalType__corAmendmentType__cinstead if the value means a renewal or an amendment. - If the Type was set by mistake, clear it and close the deal again. A Pinion deal with a blank Type closes as new business.
See Lifecycle Defaults for how each Type value is handled.
”Cannot amend contract … contracted lines could not be reconstructed”
Clicking Amend can stop with a message like:
Cannot amend contract 00000134: 2 contracted lines could not be reconstructed — “Premium Support” (no active pricebook entry on the amendment pricebook), “Volume Discount” (subscription status is blank; expected Installed). No amendment was created. Correct the contract or catalog data and try again.
This is deliberate, and it is the safe outcome. An amendment starts by rebuilding the customer’s current configuration from the contract. If a contracted line cannot be rebuilt, the alternative to stopping is a silently short amendment — one that looks complete, prices as though the customer never bought the missing product, and quietly bills them for less than they hold. Nothing is created when this fires, so there is no half-built amendment to clean up: fix the data named in the message and click Amend again.
Each reason maps to one fix:
- “no active pricebook entry on the amendment pricebook” — the amendment
prices against
Contract.Pricebook2Id(falling back to the original opportunity’s price book, then Standard). Add an active entry for the named product to that price book, or point the contract at the price book the product actually lives in. On a multi-currency org the message names the currency; an entry that exists in USD but not in the deal’s currency reads as missing, because price book entries are resolved per currency. - “subscription status is blank; expected Installed” — the contracted line’s Status is empty. Set it to Installed if the customer still holds it, or Terminated if they do not. A Terminated line is skipped without any error; only a blank one blocks, because blank is not a decision anyone made.
- “no configuration node was produced for it” — the line could not be placed in the rebuilt configuration at all. The usual cause is a catalog change since the sale, such as Bundle Type having been cleared on a product that was sold as a bundle, which orphans its options. Restore the product’s catalog setup and retry.
A contract whose lines are all Terminated is not an error: it amends into a blank configuration you build from scratch.
Related
- The Universal Invariant — the equation a broken total violates.
- Bundle Math — Effective Quantity — where a wrong quantity comes from.
- Pricing Models — Standard vs Roll-Up vs Itemized.