How to: Getting An App On The AppExchange
As a Salesforce developer designing an application or component for the AppExchange can seem like quite a daunting task. But if you break it into small steps and don’t get too lost in small details it can become something quite manageable. Let’s go through all the steps and take the TimeCapsule app as an example.
The TimeCapsule is an app for the AppExchange that makes it easier for Salesforce users to track their field history. They no longer need to create an entire report when they are looking for a specific field and its changes. Next to that, this app has a nice visual aspect to it, users can easily see the changes in their history by looking at the graph we have designed.
Why did we build this application
We built this app because we wanted to develop a cheaper alternative to history tracking. Currently it is quite expensive to go back more than a year and a half in Salesforce. Next to that, we thought this option could use a better interface. That is the reason why we created a field history tracking app with a nice graphical interface.
How to build an app for the Salesforce AppExchange?
First, begin with researching the demand of certain options in Salesforce, you can do this in Salesforce communities, but asking your clients or noticing a need at your client is also a good option. We noticed a couple of things when we researched the topic of field history tracking; Salesforce users are not happy with the options Salesforce offers, it is expensive when you want to look at data older than 18 months, it is a hassle to access the data and when you finally have the data it is not pleasant to look at.
We came up with two solutions for the issues mentioned above. For the data storage issue we chose to use a big object instead of a (normal) custom object. This way you can store a lot more data within Salesforce. We also improved the user interface by developing an interactive graph.
The programming languages and design patterns can vary for every app you build on the AppExchange. For developing this app we used the following languages and design patterns.
- backend (APEX)
- Externe library D3 (this makes the graph)
Used design patterns
- DRY (Don’t repeat yourself)
- SOLID (SRP, OCP, LSP, ISP, DIP)
- SoC Separation of concerns
- Onion architecture
When working with multiple people on an application it is wise to manage the project well. When our DevOps team works on an app or component we use the scrum method, use Jira for the backlog of the stories and Git for version control and code review.
Break the development of the application up into stories, we do this in Jira. Stories are manageable pieces of the complete application and should be something a developer can do on his own.
How do you get an app on the AppExchange?
When your component or app is finished, the next step is to get it on the AppExchange. You do that by following these steps:
- Upload a business plan, this must be approved by Salesforce before you can list your product on the AppExchange
- Upload your code for a security review, this also needs to be approved by Salesforce
- Make a package of the code
When your business plan and code are reviewed and approved by Salesforce they will put your product on the AppExchange for you. Next to adding the product as is, we also add the following items to make it easier for your potential customers to install and use the app:
- A short movie clip and documentation for the installation and setup of the app
- A Wiki for help questions
- Contact information so that people know where to find you in case of questions
Our final tips for creating an application for the AppExchange is to always keep the end user in mind when you are working on a story towards the development of the complete app. And make sure the roles within the team are clear; the lead developer makes sure the technical aspects are correct and the project manager makes sure the wishes of the end user are met.
Curious to see what we’ve built? Check out the TimeCapsule
Want to know more about developing apps for the AppExchange, please don’t hesitate to contact us.