When our client approached us to help speed up their processes we jumped at the opportunity to create a great custom solution that we expect many service companies could use. Our client’s products are predominantly year-long subscriptions to their services. As such, each opportunity within Salesforce represents a 1 year term which would then hopefully be renewed for the next year. Following the closed opportunity (sale), the existing process required the sales person to setup another opportunity and then to follow up to ensure the subscription renewal. We were able to automate this to create the new opportunity as soon as the existing opportunity was closed won. The complexity comes when our client sells additional licenses to their subscription during the year which would be required on the new contract, and ensuring that the sales team remembered to add them to the opportunity when they followed up.

Our client asked us to automate the ‘renewal’ opportunity inside of Salesforce for the following year’s subscription as soon as the Sales Team was able to close the current opportunity. The ability to track the up-sell (additional licenses) through other opportunities that modify the original and automatically update the renewal opportunity with the extra information was also necessary.

The final requirement was to ensure there was only ever one contract per account at all times. This meant that if an additional license was purchased, the opportunity would need to update the existing contract and no new contract would be created for the next year’s subscription details. It required the opportunity information to roll-up to the pre-existing contract, displaying all active opportunity information.

How we did it

The biggest challenge here was to handle multiple different situations that can occur during the lifetime of this functionality. New business opportunities had to be treated differently than existing businesses who have already gone through the initial renewal process and would therefore already have a contract object, while up-selling would require its own special treatment. All of this had to be built out in such a manner as to not interfere with existing processes and workflows within the client’s Salesforce organization.

The native opportunity field Type worked perfectly for differentiating between the different opportunity scenarios. Sales reps could specify if the opportunity was new or an up-sell, and the custom code would mark renewal opportunities as such. Now there was an easy way for the trigger code to detect and direct opportunities down the proper logic branch.

When handling new opportunities, first the contract for the account was created. After this the opportunity was cloned, along with all of its line items and schedules. All of the new opportunity date information was updated to be the next year’s, and the opportunity name was appended with the next year.

For renewal opportunities, since the contract already existed it just needed to be updated. The cloning process was identical to when new opportunities are won, save for the opportunity name being incremented by one year rather than appending the year to it.

When an up-sell opportunity was closed won, two things would need to happen. First, the contract ACV and MRR values had to be updated. After this, the renewal opportunity for the existing opportunity would need to have an additional line item added to it, representing the up-sell but for the future year.

Do you have annual contracts?

Our solution is perfect and can help companies automate the process of handling license agreements. Want to take it a step further, we can connect this setup to a Marketing Automation Platform so that you can take your upgrades to the next level. Contact us today to learn more.