Release Notes
Release 2507.2 - 11/13/2025
9 min
🚀 release 2507 2 is live in sandbox 🗓️ production deployment is scheduled for november 13, 2025 this release introduces the ability for finops managers and administrators to define custom logic for annual contract value (acv) calculation on orders look at upgrade notes for more details upgrade notes to ensure existing orders recalculate acv based on the new default formula added as part of this release follow these steps navigato developer console debug > open execute anonymous window execute the batch jobs below to recalculate using the global methods database executebatch(new ruby orderacvrecalculatebatchjob(), 200); database executebatch(new ruby quoteacvrecalculatebatchjob(), 200); this will specifically recalculate any existing orders in your environment containing cancel cancel only lines feature enhancements lifecycle manager customize acv calculation for orders this release introduces the ability for finops managers and administrators to define custom logic for annual contract value (acv) calculation on orders the calculation formula can now be tailored for specific change types such as cancellations or reconfigurations and for each customer's unique reporting needs, using a plugin based architecture the feature supports both default and custom plugin options, ensures correct acv in edge cases (like subscription cancellations or bundle reconfigurations), and provides mechanisms to recalculate acv for historical orders when logic changes why it matters enables accurate acv reporting for all order and subscription scenarios, including complex edge cases like partial year cancellations and bundle reconfigurations, reducing financial mis statements and audit risk delivers maximum flexibility by allowing customers to deploy custom acv logic, supporting diverse internal policies and external compliance requirements without engineering intervention drives customer satisfaction by resolving long standing pain points such as inflated or negative acv on cancellation orders and aligns with industry best practices for modern cpq and billing solutions learn more customer use case use case 1 when a customer cancels a subscription, the previous acv calculation would produce an incorrect (often extremely large) value if the cancellation term was one day (start date = end date) with this feature, acv is now calculated based on the actual start and end dates of the canceled order items, summing the delta acv of the cancellation lines this ensures the reported acv accurately reflects the prorated contract value for the cancellation period, addressing a frequent complaint from finance teams use case 2 a customer wants to reconfigure an existing bundle subscription to remove an add on previously, the acv calculation might not properly exclude the removed add on or would misrepresent the value change with the new default value of the plugin model, the acv is recalculated to only include the relevant line items, reflecting the true contract value after reconfiguration this supports accurate reporting and downstream billing adjustments how it works acv calculation logic is determined by a system setting, which points to the desired plugin class (default or custom) the plugin is invoked automatically during order/orderitem updates (afterupdate phase) and can be run asynchronously for scalability default implementations are provided one that sums all delta acv values, and one that specifically handles cancellation scenarios historical orders can be recalculated by running a batch job via global method dependencies & limitations to leverage custom logic, the relevant plugin class must be registered in the system setting by default, existing acv calculations are unaffected for regular orders—only cancellation and reconfiguration scenarios use the new logic global methods must be manually triggered to recalculate acv for historical orders after enabling or updating plugin logic read more here bug fixes lifecycle manager improved change order reliability ownership transfer for price tags previously, customers encountered errors when attempting to create change orders if any associated line price tag or price tag was owned by an inactive salesforce user this was due to salesforce data security constraints, which prevented operations on records owned by inactive users as a result, users were unable to process change orders for subscriptions linked to orders with price tags assigned to deactivated users the only workaround was to manually reassign ownership of these records to an active user, which was time consuming and error prone with this release, we have introduced a global method that allows administrators to transfer ownership of price tag and line price tag records from inactive users to active users this enhancement ensures that change orders can be created and processed smoothly, even if the original record owner has been deactivated the new method also supports transferring ownership between active users, while preventing assignment to inactive users ruby pricetagownertransferutil transferpricetagownership('from user\@company com','to user\@company com'); discounts now properly removed when discount tags are deleted during upgrades previously, when performing an upgrade and adding seats in the line editor, the system would automatically apply volume discounts however, if a user removed the corresponding discount price tag, the discounts would remain applied to the quote, and the pricing would not be recalculated to reflect the removal with this fix, removing a discount price tag during an upgrade or when adding seats will now correctly clear the associated discounts from the quote the pricing will be recalculated immediately, ensuring that the quote reflects the accurate, non discounted price this update improves pricing transparency and ensures that quotes always display the correct amounts based on the current set of applied tags
🤔
Have a question?
Get answers fast with Nue’s intelligent AI, expert support team, and a growing community of users - all here to help you succeed.
To ask a question or participate in discussions, you'll need to authenticate first.
