9
AugWhen a product reaches End-of-Life, there are multiple scenarios to consider. Will a completely new Product replace the EOL Product? Or should the Product be available to customers who already purchased it (on amendments and renewals) while unavailable for new sales?
Let's consider this scenario, and to add more flavor, let's make it a Subscription product, part of a bundle.
Salesforce offers the ability to delete/ archive a product, deactivate it (with or without its related Price Book Entries), and apply a Search Filter.
Archiving a product is an irreversible process, and the Product becomes unavailable for any operation. Archived product records aren't stored in the Recycle Bin, and you can't recover them, though they will still be visible on Opportunities and other related records. But you can't take any further actions on them like close Opportunity, Renew or Amend. For example, if you try to edit a Renewal Quote, you will be informed that the Product has been deleted and that you should manually delete the Quote Lines for it to modify the quote.
A different error message we'll appear upon amendment of an existing Contract.
To preserve all records related to a product, deactivating it is another way to go. However, if a product and its related price book entries are deactivated, it will be brought to Renewal Quotes though you won't be able to order it (Required fields are missing: [Price Book Entry] when inserting order and orderitems).
Also, you won't be able to add it to new quotes, but at the same time, it won't be available for amendments (The Product will not sync to the opportunity because a valid pricebook entry does not exist). This is not what we need.
There is also the option to leave individual prices as active for the deactivated Products. (Note: there is a Product Setting that allows you to activate/deactivate product records with their prices simultaneously. Go to Setup > Product Settings > "When changing active flag on a product record, automatically update active flag on related prices" ).
This makes the Product not only available for renewals and amendments but also for new quotes, which is not desired in our scenario. It should be mentioned, though, that the behavior is slightly different depending on whether the Product is a Standalone (or Bundle Parent) or whether it's part of a bundle as a Product Option. In the first case, the Product doesn't appear on the Product Selection page, which is good. But, if it's a Product Option, it will still be visible and available for selection in the Product Configurator.
Another option is to create a custom checkbox, e.g., Archived__c, on the Product object and then use it in a Search Filter to exclude the Products marked as Archived from Product Selection. This works fine for Standalone or Bundle Parent Products; however, if it's a Product Option, it still appears in the Product Configurator.
An alternative is to use the checkbox mentioned above in a Selection Product Rule with the Scope of Product, a Hide & Remove Product Action Filtered by the "Archived" checkbox and make it trigger only on Quotes where SBQQ__Type__c equals Quote.
Thus users won't be able to add this Product to new quotes, but it will still be available for amendments and renewals.
Comments (0)