Release Notes
Salesforce Managed Pacakge Release Notes
Overview
This page includes release notes for each version of our managed package.
To Upgrade, append the package URL path listed in the version to your Salesforce domain and choose to** install for Administrators**.
Example:
https://[your-domain].sandbox.my.salesforce.com
(sandbox)https://[your-domain].sandbox.my.salesforce.com/packaging/installPackage.apexp?p0=04t...
https://[your-domain].my.salesforce.com
(production)https://[your-domain].my.salesforce.com/packaging/installPackage.apexp?p0=04t...
https://[your-domain].sandbox.lightning.force.com
(lightning.force
works as well)https://[your-domain].sandbox.my.lightning.force.com/packaging/installPackage.apexp?p0=04t...
V0.49.0
/packaging/installPackage.apexp?p0=04tPH000000ry65YAA
- BP-13540
- bugfix: Fixed logic for determining the Quote owner to ensure that only active users are considered as the record owner.
- Logic: Find an active owner on: Prior related opportunities, prior related contract, account, and if no active user if found then the owner will be the current running user (which is the integration user configured in MonetizeNow CRM setting)
- bugfix: Updated the
Create new Opportunity for MonetizeNowQuote
flow to set the opportunity owner as the same user as the quote owner.
- bugfix: Fixed logic for determining the Quote owner to ensure that only active users are considered as the record owner.
Customer Action Required
- If you are using our
Create new Opportunity for MonetizeNowQuote
flow as-is, then you will need to activate the new version. - If you have customized the
Create new Opportunity for MonetizeNowQuote
flow, you will want to make the following modifications- In the
Initialize New Opportunity
step, add a "Set Variable Values" entry{!varOpportunity.OwnerId}
Equals{!$Record.OwnerId}
- Remove the
Set OwnerId on Opportunity
record assignment step - Remove the
Has Opportunity OwnerId
decision step - Remove the
varOpportunityOwnerId
variable as it is no longer used
- In the
V0.48.0
/packagingSetupUI/ipLanding.app?apvId=04tPH000000o5MJYAY
- BP-13302
- bugfix: Added
monetize__LifecycleType__c
edit permissions to the End-User permission set as some users were unable to create quotes.
- bugfix: Added
V0.47.0
/packagingSetupUI/ipLanding.app?apvId=04tPH000000kI5BYAU
Note: v0.46 was skipped because a change was made that required an additional minor version bump
- BP-13091
- Ensure Opportunity Product Quantity never gets set outside the allowable bounds, the quantity will get set to 1 or -1 instead if the number is to large or too small.
- Introduced a new field
OpportunityProduct.monetize__QuoteItemIncrementalQuantity__c
to store the actual value so that it is always available.
V0.45.1
/packagingSetupUI/ipLanding.app?apvId=04tPH000000k5fpYAA
- BP-13078
- Ensure that the entire transaction is not marked as a failure if a user does not have permission to
monetize__FieldMapping__c
- Fix typos in codebase
- Ensure that the entire transaction is not marked as a failure if a user does not have permission to
V0.45.0
/packagingSetupUI/ipLanding.app?apvId=04tPH000000ipzhYAA
- BP-13015
- Reduced the field length of the
monetize__SyncError__c
andmonetize__AdditionalDataSyncError__c
fields from131072
to1000
to reduce the impact towards Salesforce limits, any data stored in these fields will be truncated if necessary.
- Reduced the field length of the
V0.44.0
/packagingSetupUI/ipLanding.app?apvId=04tPH000000hP9dYAE
- BP-12899
- Fetch supplemental quote data from MonetizeNow more often.
- this now happens any time the quote
Amount
changes, in addition to the QuoteStatus
- this now happens any time the quote
- Include yearly ARR breakdown for Quotes
- Added fields to Quote:
Year1ARR__c
,Year2ARR__c
,Year3ARR__c
,Year1IncrementalARR__c
,Year2IncrementalARR__c
,Year3IncrementalARR__c
- these get populated asynchronously when we fetch data from MonetizeNow
- Added fields to Quote:
- Added additional revenue data points to Quote Item
EffectiveARR__c
andEffectiveMRR__c
-> this will be populated only if the QuoteItem spans to the end of the contractAbsoluteIncrementalARR__c
andAbsoluteIncrementalMRR__c
-> Since incremental ARR/MRR is only populated if the line spans to the end of the contract, these fields are available to see the incremental for all lines regardless of their timespan.
- Fetch supplemental quote data from MonetizeNow more often.
V0.43.2
/packagingSetupUI/ipLanding.app?apvId=04tPH000000h8LhYAI
- CE-760
- When a quote is created, the account contacts are synced to MonetizeNow in a separate transaction and split up into sets of 200 records to avoid hitting governor limits for accounts that have a lot of contacts.
V0.43.1
/packagingSetupUI/ipLanding.app?apvId=04tPH000000gkKzYAI
- BP-12913
- Ensure that if opportunity product sync is disabled, that every part of the sync is disabled. Previously, line items may have been deleted when this setting was enabled.
- Ensure that our managed package never deletes opportunity products that were not created by the managed package. Our managed package owned lines are identified by
monetize__ExternalId__c
having a value.
V0.43.0
/packagingSetupUI/ipLanding.app?apvId=04tPH000000fSMvYAM
- BP-12874
- Added a number of new fields on Quote, specifically quote lifecycle date fields such as
Accepted Date
andProcessed Date
- Fixed a bug with auto-mapping of quote custom fields from MN to SFDC - checkbox fields that were null would cause the sync to fail
- Added a number of new fields on Quote, specifically quote lifecycle date fields such as
V0.42.1
/packagingSetupUI/ipLanding.app?apvId=04tPH000000bWYnYAM
- BP-12551 - Fixed validation for invalid cancellation date while cancelling a contract
V0.42.0
/packagingSetupUI/ipLanding.app?apvId=04tPH000000am9NYAQ
- BP-12347 Add ability to auto-map custom Quote fields from MonetizeNow to Salesforce
- If you have a custom field on your Quote in MonetizeNow with the same API name as a custom field in Salesforce, the value will be auto-mapped from MonetizeNow to Salesforce.
- Rules
- The
__c
for Salesforce fields is ignored when matching, do not include this in your MonetizeNow API name. - Field API names are case-insensitive -
my_Custom_Field
in MonetizeNow will match toMy_Custom_Field__c
in Salesforce. - All special characters are stripped out prior to comparing,
myCustomField
in MonetizeNow will match tomy_custom_field__c
in Salesforce. - All fields with the
monetize__
namespace are ignored, you can only map custom fields which you have created in Salesforce.
- The
- BP-12551 Ability to cancel the contract from the Salesforce Contract
- Added a cancellation button to Contract. If you are not using our managed layout, make sure to add this to your page layout.
V0.41.2
- Changed packaged flows to be asynchronous so that if there is a failure in creating the Opportunity, it does not cause the triggering transaction to fail.
V0.41.1
/packagingSetupUI/ipLanding.app?apvId=04tPH000000XB6LYAW
- Bugfix: Temporarily adjusted
QuoteCurrency__c
formula field on the Opportunity to reduce the number of spanning relationships from 4 to 1 (limit per object is 15 globally)- This is temporary while we figure out another approach for solving the need to know what the Primary Quote's currency is on an opportunity.
V0.41.0
- BP-12420 add support for fine-grained Opportunity Product sync
- Added a global setting in configuration to allow disabling Quote Item to Opportunity Sync globally
- Added a new dropdown field on QuoteItem named
Override Opportunity Sync
- you can set this toALWAYS
orNEVER
to override the sync behavior for this QuoteItem - Both above options are incorporated into the
monetize__ShouldSyncToOpportunityProduct__c
formula (checkbox). This field gives visibility into whether a line is eligible to sync or not.
V0.40.0
/packagingSetupUI/ipLanding.app?apvId=04tPH000000LImjYAG
- BP-11288 Add support for multi-currency Salesforce orgs.
- Pricebook entires are created for each currency enabled in Salesforce
- Opportunity, Quote, Quote Item, and Contract all have CurrencyISOCode populated upon record creation based on the Quote's currency
V0.39.3
/packagingSetupUI/ipLanding.app?apvId=04tPH000000KsYvYAK
- BP-11268 Ensure that changes in contract length are reflected in the Renewal Opportunity CloseDate.
- Ensure that
monetize__IncrementalARR__c
is the default value for the Opportunity Sync Field in MonetizeNow settings for new installations.
V0.39.2
/packagingSetupUI/ipLanding.app?apvId=04tPH000000IPmLYAW
- Remove special handling to determine which QuoteItems should sync to Opportunity Products, MonetizeNow will manage calculating the correct values so Salesforce does not need to manage.
V0.39.1
/packagingSetupUI/ipLanding.app?apvId=04tPH000000GRibYAG
- Version bump to ensure that the UserExternalCredential permission is included with the package, which became supported with Salesforce API version 60.0.
V0.39.0
/packagingSetupUI/ipLanding.app?apvId=04tPH000000F4zNYAS
- BP-10550
- Introduced a new formula field on quoteItem
monetize__QuoteItem__c.ShouldSyncToOpportunityProduct__c
which is the sole factor in determining if a quote item will create an Opportunity Product- Previously, this logic was embedded in a query and new conditions were added to properly handle ARR/MRR and incremental ARR/MRR as well as REFERENCE line items for Amendments
- Added new fields
monetize__MonetizeNowLink__c
to Account, Contact, and Contract which you can add to your layout to easily navigate to MonetizeNow for these entities - 🐞 Bugfix -
monetize__MonetizeNowLink__c
on the Quote was using deprecated custom settings fields (this only impacted MonetizeNow team and not customers) - Updated the labels of the deprecated fields mentioned above to include
(Deprecated)
in the label to indicate they are no longer used
- Introduced a new formula field on quoteItem
V0.38.0
/packagingSetupUI/ipLanding.app?apvId=04tPH000000Ae7RYAS
- BP-9670 🔑 Authentication Overhaul
- A major bug was identified where Salesforce would copy over credentials from production to a sandbox
- Authentication was previously stored in a protected Custom Setting (one that only our managed package had access to)
- With this release, we have migrated to using NamedCredentials - which means that Salesforce stores the encrypted credentials outside the scope of our Managed Package
- This change also introduces API Key based authentication instead of OAuth-based authentication, which means that you will need to create an API Key in MonetizeNow which is tied to your tenant.
- Your current authentication will continue to work prior to migrating to new authentication
- Steps to Migrate:
- Create a new API Key for your tenant, The name of the key will show up as the owner of records, so name accordingly. (e.x. "Salesforce Integration")
- Go to the MonetizeNow Configuration Page
- Enter the Api Key, save, and verify your credentials.
- BP-9608 Bugfix
- In some cases an error would cause
AuraHandledException
to be thrown from requests that did not originate from the UI, which would cause an uncaught error to occur.
- In some cases an error would cause
V0.37.0
- BP-9669 Added
ExternalId__c
field to Contracts, which is unique, to prevent duplicate contracts from being created in cases multiple upsert requests come in at the same time.
V0.36.2
- BP-9558 Ensure that new contacts have their
monetize__EnableSync__c
field enabled any time the account has themonetize__EnableSync__c=true
, regardless of the global package setting.
V0.35.0
- BP-9530 Include account shipping and billing address fields in payload to MonetizeNow in preparation for account-level addresses.
V0.34.0
- Only sync field mapping updates to quotes that are not canceled, expired, or archived.
- Reduce the number of times SFDC calls out to MN when quotes are modified, previously this would happen for every quote update and now will only happen when a quote is created or the status is modified.
- The reason for the callout is to fetch the quote to update a few fields in Salesforce which are currently not set by the standard integration.
- Updated the Field Mapping "All" list view to include additional fields aside from just Name
- Added the Field Mapping tab to the MonetizeNow App
V0.33.2
- Add missing ApexControllers to MonetizeNow_User permission set:
CreateQuoteVfpController
andContractController
. - Removed
OAuthCallbackController
from the MonetizeNow_User permission set since only admins would ever go through authentication flow. - When fetching mapped fields from the Opportunity, ensure this runs in System Mode to prevent a failure if the user does not have access to the fields used in mapping.
V0.33.0
- BP-9322 - Ignore user permissions when getting field mapping records so that users without a CPQ license don't encounter errors.
- BP-9373 - Append quote id to the end of the quote name to ensure that it is easy to tell quotes apart in related objects with lookup to quote.
V0.32.2 / V0.32.3
- BP-9279 Fixed bug where contact name updates would not trigger sync to MonetizeNow
- Fixed bug where if multiple contracts had a lookup to the same renewal quote, updates to the contract would not flow to the Opportunity correctly.
- This data situation would only happen if someone made a manual update to a record to get into this state.
V0.32.1
- Fixed bug with field mapping deserialization
V0.32
- BP-9065 - Allow mapping fields from SFDC to MN
- Added FieldMapping object, which stores a list of object+field's that trigger a sync from SFDC to MN
- Account, Contact, and Opportunity listen to field changes for any mapped fields and pass the information to MonetizeNow
- For Opportunity, any mapped fields will map to all the related Quotes
- Opportunity products use incremental quantity instead of actual quantity.
V0.31
- Changed default value of
Quote__c.monetize__PreviousQuantity__c
from1
to0
to ensure that when this is blank from MonetizeNow it does not default to 1 - Skip updating renewal Opportunity Amount field when amendments are processed if the value was not modified.
- Salesforce calls out to Monetizenow when quotes are updates to get additional field data not included in the sync from MN to SFDC
- New quotes fields:
RequiresEsign__c
,EsignEnvelopeId__c
,PreviousMRR__c
,PreviousARR__c
,NewQuoteType__c
- New quoteItem fields:
ParentQuoteOfferingId__c
,PricebookEntry__c
- New quotes fields:
- For customers using the Manual Renewal feature, if a quote is flagged as a manual renewal or the prior ARR is modified, then an Opportunity Product will be created (or removed) to represent the offset amount that is used to roll up to the Opportunity's Amount field
NewQuoteType__c
,PreviousARR__c
,PreviousMRR__c
V0.30
-
BP-8220 - Quote items with 0 quantity no longer created Opportunity Products.
- Users often set quoteItems to 0 quantity in MonetizeNow to exclude from the quote, but since Salesforce does not allow 0 quantity on Opportunity Products this was getting set to 1 and causing the Opportunity Amount to include this product.
-
BP-8474 - Fixed bugs in new opportunity flows
Create new Opportunity for MonetizeNowQuote
- Multiple places in the flow were referencing the original quote's contract instead of the previous quote's contract, causing incorrect data mapping for the 2nds and beyond renewal quotes.Create renewal opportunity
- OwnerId and PricebookId were being set to incorrect values due to a data mapping error.
-
BP-8494 - Renewal Quotes were not correctly linking to the existing renewal opportunity when using the Renew Contract button on the Contract.
-
Added Contact.Title to payload sent to MonetizeNow
V0.29
- BP-7374 - Split records synced to MonetizeNow into multiple queueable jobs to ensure that Salesforce limits are not reached if there is a high number of record updates.
- Allow user to set the application URL instead of having this derived from the domain. This allows the MonetizeNow team to test on local environments.
Updated about 3 hours ago