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.

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

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.

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

V0.45.0

/packagingSetupUI/ipLanding.app?apvId=04tPH000000ipzhYAA

  • BP-13015
    • Reduced the field length of the monetize__SyncError__c and monetize__AdditionalDataSyncError__c fields from 131072 to 1000 to reduce the impact towards Salesforce limits, any data stored in these fields will be truncated if necessary.

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 Quote Status
    • 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 additional revenue data points to Quote Item
      • EffectiveARR__c and EffectiveMRR__c -> this will be populated only if the QuoteItem spans to the end of the contract
      • AbsoluteIncrementalARR__c and AbsoluteIncrementalMRR__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.

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 and Processed 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

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 to My_Custom_Field__c in Salesforce.
      • All special characters are stripped out prior to comparing, myCustomField in MonetizeNow will match to my_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.
  • 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 to ALWAYS or NEVER 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

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.

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 the monetize__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 and ContractController.
  • 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 from 1 to 0 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
  • 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.