SAP CPQ

SAP CPQ Quote Revisions: What Master, Active and Inactive Really Mean

Two colleagues reviewing printed charts and documents together at a shared office table

SAP documents quote revisions across several guides but never as one model. Here is how a revision is built, which action does what, and where integrations and scripts catch people out.

What you will learn

  • How master, active and inactive revisions relate, and what a new revision copies
  • What New Revision, New Active Revision and Set Active actually do
  • Which parameters and permissions decide who can edit or delete revisions
  • How Sales Cloud, Salesforce, Commerce Cloud and Quote 2.0 scripts treat revisions

Revisions look like the least interesting corner of SAP CPQ. A rep clicks New Revision, changes a discount, and moves on. The trouble arrives weeks later, when Sales Cloud refuses an update, an inactive revision turns out to be editable, or someone deletes the active revision and takes the rest of the quote with it. None of these are bugs. They are the documented behavior of a model that SAP describes in several different places and never in one.

I went through the User Guide, the administration guides for Quote 1.0 and Quote 2.0, the scripting reference, the integration guides and the What’s New entries up to release 2609, plus the support notes that practitioners actually land on. What follows is the mental model I wish had been written down for me: how a SAP CPQ quote revision is built, which action does what, and where the whole thing meets integrations, scripts and releases. Where SAP does not say something, I will say that too, because a confident guess is the most expensive kind of documentation.

How a SAP CPQ Quote Revision Is Built

SAP’s own definition is short: “A quote revision is a copy of the quote from which the revision was created.” The sentence that matters comes right after it. Revisions do not have to be created from the master, which means you should picture a tree rather than a line. Every revision in that tree shares the same quote composite number, and exactly one of them can be active at any moment.

What a new revision copies and what it leaves behind

According to the administration guide, all data except approval history is copied from the source revision into the new one. After that the two drift apart: changes on the new revision do not flow back to the source, and changes on the source do not flow forward. A revision created later from that new revision inherits whatever the new revision holds at that point, not what the master held originally.

This is why a revision gives you a clean approval slate on a copy while the original keeps its history, a difference I walked through when comparing it with retracting an approval in place. Two application parameters bend the copy behavior and both are worth knowing by their exact names. “Reset Quote Expiration Date on New Revision” resets the expiry date on every new revision when set to TRUE. “Copy Opportunity Id On New Revision” decides whether the opportunity reference travels with the copy. SAP does not itemize the remaining fields, so whether a given custom field, document or status behaves the way your process needs is a sandbox question, not a documentation question.

Master, active and inactive

The first quote created is initially named MASTER, and you can rename it in the Revision list. From there the vocabulary is simpler than it sounds. Several revisions can exist side by side, but only one is active, and the active one is the revision currently being negotiated. SAP is explicit that “a revision doesn’t automatically become active.” You activate it with the Set as Active button under the Revision list, which only appears while an inactive revision is open, and the active revision gets “(Active)” appended to its name. On the Revisions screen, an inactive revision shows grey and the active one blue.

The quote list itself shows only active revisions, with their number in the Rev. column. Keep that in mind the next time a user asks where their quote went. Users who lack permission to see inactive revisions see them greyed out and cannot click them. If you want to see how revisions fit into the wider flow from draft to approval to output, the full quote lifecycle from draft to document generation gives the surrounding picture.

One composite number, many quote IDs

Every revision shares the composite number, but each one has its own QuoteId. SAP states this plainly in the Commerce Cloud scenarios for Quote 2.0, and it is the detail that bites people who build integrations or scripts around the composite number and assume it identifies a single record. In the Quote 2.0 scripting reference, a revision object exposes QuoteId, OwnerId, RevisionNumber, MasterRevision and ParentRevision as separate properties, which tells you how SAP itself thinks about the structure.

Thick stack of paper documents held together with colored clips on a desk, next to glasses and a keyboard

The Actions That Create and Switch Revisions

New Revision, New Active Revision and Set Active

Three standard workflow actions do the work, plus a fourth that is often confused with them. The descriptions below are SAP’s wording from the Standard Workflow Actions reference for Quote 2.0.

Action SAP’s description What to remember
New Revision “Creates a new quote revision.” The new revision starts inactive, shown grey on the Revisions screen.
New Active Revision “Creates a new quote revision and sets it as active.” One step instead of two. Missing from the menu until it is enabled for the quote status in the workflow.
Set Active “Sets a quote revision as active.” It cannot be undone, the only way back is to activate a different revision.
Make Primary “When there are multiple quotes assigned to an opportunity, this action marks one of them as primary.” Used with SAP Sales Cloud. A choice among quotes on an opportunity, not among revisions of one quote.

I would not treat “primary” and “active” as the same idea. SAP describes primary as a choice between quotes on one opportunity, and active as a choice between revisions of one quote. What I could not find in any official text is what Make Primary does when a new revision is created afterwards, so if your Sales Cloud setup depends on it, test it before go-live rather than after.

What happens to approvals on a new revision

Because approval history is not copied, a new revision starts its approval journey from the beginning. SAP’s own example is a user who creates a new revision, changes the discount and sets the revision as active, after which that revision goes through the approval process. The audit trail records Quote Revision and Quote Status as separate columns, so you can see which revision sat in which status. The approval tags such as ISAPPROVED, ISREJECTED and ISWAITING refer to the active revision.

Beyond that, SAP does not formally describe how every approval rule reacts to a revision, so the design of the rules themselves does the real work. If your approvals are slow because every small change restarts the chain, the problem sits in the rules, and approval design that protects margin without stalling deals is where I would look first.

Permissions and parameters that decide who can break things

A SAP CPQ quote revision is controlled almost entirely through workflow permissions. The user type needs Edit, View, Delete, New Active Revision, New Revision, History and Set Active, and each action has to be added to the relevant quote status. SAP Knowledge Base Article 3289736 covers the classic symptom: the New Active Revision option is not there, and the fix is the “New Active Revision” checkbox for that status under Setup and Workflow.

The parameter that causes the most damage is “Available actions for Inactive Revisions” in the General Application Parameters. With “Based on status of ACTIVE revision”, users can change and delete only the active revision. With “Based on status of EACH revision”, every revision can be edited and deleted, which is exactly the situation described in KBA 3268973, titled “Inactive revisions of quote are editable”. The fix there is to switch the parameter to the ACTIVE option. The same documentation warns that deleting the active revision deletes the related revisions too, and the scripting reference says the same about the helper method: deleting by the Id of an active revision also deletes all inactive revisions of that quote. Treat Delete as a permission to hand out sparingly.

Hands resting on a printed document beside an open laptop during a team review at a table

Where Revisions Meet Integrations, Scripts and Releases

Sales Cloud, Salesforce and Commerce Cloud do not treat revisions alike

In the SAP Sales Cloud integration for Quote 2.0, SAP states that the sales quote can be updated with the Update Sales Quote action “only if the quote in SAP CPQ is in active revision.” From an inactive revision the action returns an error. For Quote 1.0 the same rule applies to the automatic update on Save Quote: it runs only when the revision is active, and the quote composite number doubles as the Sales Cloud external ID. If a rep tells you that Sales Cloud stopped updating, the first question is which revision they had open. The integration flows between SAP CPQ and SAP Sales Cloud are worth reading with that question in mind.

The Salesforce integration takes a different position. A parameter named “Attach every revision of the quote to the same opportunity” decides whether all revisions stay attached. When it is switched off, only the active revision remains on the opportunity and the others are removed. SAP Commerce Cloud differs again: each revision has a different QuoteId, a customer change in Commerce creates a new revision in CPQ, and the workflow action New Active Revision moves a quote from Released to Commerce back to Preparing. SAP recommends locking a quote in Released to Commerce by turning off Edit and turning on View.

Scripting a revision in Quote 2.0

In Quote 2.0 scripting, IQuote offers CreateNewRevision(), which “creates new quote revision and sets it active by default”, plus overloads that take a Boolean isActive and optional name and description. The IQuoteRevision interface, marked “For Quote 2.0 only” in the 2605 scripting reference, adds SetActive, SetName and SetDescription. SAP’s event flow for a new revision runs New Revision, then Copy quote, then Edit, and fires QuoteEdit followed by BeforeQuoteRendering on reload.

One practical trap comes from KBA 3265087. A custom field was not updating when a workflow preAction or postAction ran on a new revision, and the fix SAP documents is adding Quote.Save() in the custom script, after which the field loads once Set Active is used on the new revision. If you work with the API side of this, the Quote 2.0 API for creating quotes programmatically covers the neighboring entities.

Release fixes worth knowing

The What’s New entries show how much of this area was still being corrected. Release 2502 fixed new revisions losing autocomplete attribute selections when a location field contained whitespace. Release 2602 made DateModified update for both the previously active and the newly active revision on Set Active. Release 2605 improved error handling for quotes with multiple revisions when some are not visible to the user, and 2609 removed misleading errors from the Developer Console and Logs during new revision creation. As of today, 2611 is listed with a validity date of 31 October 2026 and has not shipped. Among its entries are a migration fix for quote duplication across multiple revisions and a change so that New Revision no longer includes external requests to SAP Variant Configuration and Pricing in Quote 1.0. If you migrate, note also that the Quote Migration Tool moves every revision only when “Migrate All Revisions” is on, and otherwise only the master revision.

A Short Checklist Before You Go Live

Revisions rarely fail loudly. A SAP CPQ quote revision usually goes wrong by quietly letting the wrong person edit the wrong copy, or by letting an integration talk to a revision it was never meant to. Before go-live I check these:

  • The value of “Available actions for Inactive Revisions”, and whether it matches who is allowed to edit and delete.
  • Which user types hold Delete, New Revision, New Active Revision and Set Active, per quote status.
  • What Update Sales Quote or Save Quote does when an inactive revision is open, in every connected system.
  • Whether scripts survive the New Revision event flow and call Quote.Save() where a field depends on it.

These are the topics I would cover when training internal administrators, because the people who own the setup after go-live need the mental model more than the click paths. And if you inherited a setup where nobody remembers why revisions behave the way they do, a health check of the SAP CPQ setup is a calm way to find out before a customer does. SAP’s own Managing Revisions page in the User Guide remains the reference for the click paths, and it reads better once the model above is in your head.

Frequently Asked Questions

Why is the New Active Revision option missing in SAP CPQ?
Usually the action is not enabled for that quote status. Under Setup and Workflow, tick the New Active Revision checkbox for the status and give the user type the matching permission. SAP describes this fix in KBA 3289736.
Why can users edit inactive revisions of a quote?
The General Application Parameter Available actions for Inactive Revisions is probably set to Based on status of EACH revision. Switching it to Based on status of ACTIVE revision limits changes to the active revision, as described in KBA 3268973.
What happens when I delete the active revision?
SAP's documentation warns that deleting the active revision also deletes the related revisions. The scripting reference says the same for the helper method: deleting by the Id of an active revision deletes all inactive revisions of that quote, while deleting an inactive revision removes only that one.
Why does Update Sales Quote fail on some quotes?
In the SAP Sales Cloud integration for Quote 2.0, the sales quote can be updated with Update Sales Quote only if the quote in SAP CPQ is in active revision. From an inactive revision the action returns an error, so set the right revision active first.
Does a new revision go through approval again?
Approval history is not copied into a new revision, so it starts its approval journey from the beginning. SAP's example shows a revision with a changed discount going through the approval process once it is set active. How each of your approval rules reacts depends on your setup.
Why does a custom field not update when I create a new revision?
In KBA 3265087 for SAP Sales Cloud CPQ, a custom field was not updating when a workflow preAction or postAction ran on a new revision. SAP's fix is to add Quote.Save() in the custom script.