We’ve done it. This is the fourth and final post of my blog series. As I mentioned in the opening blog, my objective was to draw attention to failings in two main categories that I found to be commonplace with applications on the Salesforce AppExchange.

  • Failure to play well with others
  • Failure to play well with customers

These failings are areas of opportunity for the community where developers can enhance the community’s experience if we adopt a mindset of building our applications with consideration to other applications and where product owners pro-actively engage with customers. The decision-making process needed to address these items, if possible, should be deployed prior to submitting your application to security review to better guarantee longer term success.

Additional Salesforce Tools

Drawing this series to a close, I’d like to introduce something that while doesn’t quite fall within the scope of this series, it brings additional useful insights into life after security review. After you pass SecRev with flying colors, Salesforce gives you two applications to be installed within your business org: the Channel Orders app (CMA) and the License Management app (LMA). These are tools to manage your application in production, allowing you to place and track your orders and renewals. I’d like to direct your attention to the LMA.

The LMA

The LMA’s principal role is to manage leads generated by your app. Salesforce wants to see your app succeed, since revenue sharing is an integral part of their revenue stream. However, in my opinion, the LMA’s true value rests as a tool for your operations team.

While lead management is certainly important, there is something far more valuable with this application — it gives you the ability to log into a customer’s org (after they’ve granted login access to you, of course) so you can diagnose and investigate issues with your app. This is a huge gift! You’re being granted the ability to see how your application is operating within a specific environment. From a customer service standpoint, the opportunity to engage with the customer on this level and to learn “how” they use your application cannot be overstated! Rather than discuss that, however, I want to focus on error handling instead.

Error Handling

With LMA access into your customer’s org, you’ll be able to see the debug statements from your app via the org’s debug logs. None of these logs will be available to anyone except you, via the LMA. Therefore, in keeping with the theme of planning for life after security review before security review, I heartily recommend you leverage error handling within your application in a manner that will better support your operations team, following the release of your application into the wild.

Error handling is a massive topic to discuss, with all sorts of options and solutions available to you. To keep with the theme of this series, and to keep this blog to a manageable size, I am merely introducing the topic for your consideration. Your ability to handle bugs following security review will be heavily dependent on LMA access. And therefore, your ability to see what the bug is will depend on what your operations team sees when they log into an org via the LMA. So consider for each class what information your operations team might need to investigate a possible issue, and provide it to them via a well-crafted debug statement.

Conclusion

In closing, we’ve covered a lot in this series that I hope has sparked conversations within your team, and at the very least inspired you to plan for life after security review (before you’ve submitted your application). We all understand bugs are a way of life with software. My hopes are that you’ve planned ahead enough to prevent some of the obvious bugs from surfacing. And that you’re actively exploring strategies to engage your community of users, so bugs become an opportunity to grow your relationship with them.  Congratulations on making the decision to contribute to an amazing ecosystem of products and customers. We’re all excited to see your inclusion into our community!