Salesforce App Development Guide
Dr. Vivek Pandey
CEO at Vrata Tech Solutions (VTS), An Arvind Mafatlal Group Co. I Technopreneur, Digital Transformation Leader I Global Sales, Delivery, M & A Expert | Business Strategist
1.????Preliminaries
To sustain in this evolving digital era, organizations must indulge in the development of effective and indigenous applications. That can further help in making their business productive while serving their customers in the best possible way. Salesforce Development Lifecycle is like software developed on the cloud, tested on the cloud, and similarly deployed on the cloud environment. One of the most popular services offered by Salesforce is Salesforce App Cloud. App Cloud provides developers with tools that are required to build custom applications based upon the requirement. Some of the tools of App Cloud are:
·??????Force.com: This allows admins and developers to develop websites and integrate with the main Salesforce.com solution
·??????App Exchange: App Exchange is a marketplace for developers looking to develop custom applications.
·??????Heroku: Heroku gives flexibility for developers to create apps in their preferred language.
·??????Salesforce Sandbox: Salesforce sandbox allows you to test the application in a safe and isolated environment.
Salesforce AppExchange is one of the most popular Salesforce Enterprise services to build and develop custom apps based upon business needs.
2.????Apps and Lightning Components Defined
Apps and Lightning components are what consulting organizations or developers can build and sell using the Salesforce platform. Simply put, apps solve business problems, and Lightning components are the building blocks of those apps.
Salesforce describes an app like this: “Think of an app as a customization of the Salesforce platform that consulting organizations or developers can distribute to others.” App are likely to be built most of the times without even realizing it if Salesforce has been customized to get certain jobs done faster.
Lightning components allow to reuse either existing snippets of code available from Salesforce and partners on the AppExchange. Or custom components (when designed correctly) are created to its surrounding to improve customer experience. The Lightning Component Framework gives you the ability to mix and match to create the app the organizations desire.
3.????App Development Lifecycle
The App development lifecycle is the recommended journey that all apps and Lightning components follow. This cycle ensures that the organizations and developers are building a product that consumers want and have established proper business processes to gain customers and support them after the delivery. The nine steps of the App development lifecycle are:
3.1???????Plan
Salesforce starts their App development lifecycle with a planning phase with focus on following tasks.
·??????Setting up Project goals and objectives by the project’s executive sponsor
·??????Defining Salesforce Partner and Client Team members roles & responsibilities
·??????Reviewing App development plan and methodology
·??????Scheduling milestone dates
To begin your Salesforce to ERP integration project, identify the stakeholders and their roles. Here are the typical actors involved in the lifecycle.
·??????Release manager – Coordinates release schedules with development team and client. Also, in charge of source control systems.
·??????Product manager – Finalizes and coordinates the business requirements of the customization, features, and functionalities that are expected out of the final solution, and ensure that the final product is up to norms. Also in charge of final testing processes and development team coordination.
·??????Developer – One who does the main coding, and creates deliverables.
·??????Quality Analyst – One who tests and confirms various features of the application.
·??????Trainer – provides training.
·??????Administrator
3.2???????Requirement Definition
The first step in this phase is to understand the “as is” Salesforce, ERP platform infrastructure and other applications in ecosystem, and then consider what new platform elements are needed. ?Define the project scope and objectives and take a good look at the fields most often used and those not used at all, so prioritize the order of integration between the two systems. Select an integration tool or platform that offers pre-built connectors. Ready-to-go connectors can drastically reduce development time and even long-term maintenance costs.
Some of the key questions to ask at this stage:
·??????What are the epics or product backlog of the solutions to be developed?
·??????What are the potential data flows between Salesforce, ERP and other applications?
·??????How do the data models of systems communicate and integrate?
·??????What fields does each system leverage?
3.3???????Technical Solution
For the Design phase, break into sprints and create field-level physical data models. This step defines what new features/ functionalities need to be developed, which Salesforce fields map to which ERP fields and where new fields are needed.
3.3.1?????Development Environment Setup
Salesforce development environment, known as Force.com IDE, is a complete integrated Salesforce development setup that is fully equipped to develop apps having Apex, Visualforce, and metadata components. It is built using Eclipse as base and thus can be even integrated with it through a plugin. The most important thing to note about the environment is that all the data is saved on a local file system so that the developers have to migrate the changes to source control repository and then Salesforce platform. This can be done manually or through Eclipse plugin or through any other custom solution. For source control most companies use GIT or SVN. For migration of code from source control to Salesforce.com, the best tool is the Force.com Migration Tool itself. The tool is a JAVA and Ant based command line tool that can easily transfer all metadata from one platform to another. The tool can even be automated.
3.3.2?????Source Control Setup
Setting up the source control repository is usually the role of Release Manager. A good practice is to create separate GIT repository for every project with the default branch of the repository acting as the Master branch. Production metadata shall be stored in the Master branch. The release manager then creates separate branches for separate features that would be handled by separate developers. The release manager is also responsible for creating package.xml manifest and use it to populate Master branch with metadata. The release manager would have to use Force.com Migration to actually migrate the data. For large Salesforce development teams where a whole team is working on a single feature, each developer can clone the feature branch repository for their own work.
3.4???????Development
In the Build phase, you need to decide whether you’ll have different developers work on each end of the integration or just one developer from start to finish. Pulling in the IT operations team (the DevOps model) to help establish a continuous integration/continuous deployment cycle is a best practice that can pay off in time, cost, and efficiency.
Next, the developer will start working in an environment containing a copy of the production org’s metadata, but with no production data. Salesforce suggests that you develop on Lightning Platform using an appropriate combination of declarative tools (Process Builder, the Custom Object wizard, and others in the UI) and programmatic tools (Developer Console, Source Code Editor, the Force.com IDE, or Visual Studio Code).
Pro tip: After completing this phase, run a unit test with the user team.
3.5???????Build Release
Before test, take some time to aggregate all the assets that have been created or modified during the “Develop” stage. These assets will create a single release artefact. A single release artefact is a logical bundle of customizations that is deployed to production.
3.6???????Testing
It's time to start testing changes to make sure everything works as intended before the developer starts the process of integrating with the work done by other team members. The Test phase starts with a dedicated QA engineer executing the test plan. This phase will go more smoothly if the testers are involved in the Requirements, Design, and Build phases so they are familiar with the original requirements and can design test cases to verify them. The testing can be done in the same type of environment that was used during development. However, it is recommended to keep development and integrated testing environments separate. When the integrations look good to the QA team, the test cases can go through user-acceptance testing where end users can provide feedback on the system.
Before deploying to production, train end users on how to use the integrated systems. But for end users to achieve their optimal efficiency, they need to be shown how the new data flows and how often. User acceptance testing is when a small group of experienced users are allowed to test release and provide feedback. They may find pain points that developers couldn’t see. The solution shall be deployed and tested in a staging environment that mimics production. Make sure that staging environment includes a realistic amount of representative production data and is connected to all the external systems needed to mimic production system’s integration points. Run full regression and final performance tests, and perform user-acceptance testing till all the defects are successfully closed.
3.7???????Production Deployment
Production Deployment phase is where continuous integration (starting from the Build phase) will pay off so that the applications are continuously built in a fully functional environment. In the Salesforce world, having a solid deployment strategy and lifecycle management approach is key to success. If too much time is spent in development environment and wait too long to get the changes into testing, staging, and user-acceptance testing, you inevitably run into issues.
3.9???????Support
In Support phase, the Ops team will begin monitoring the integration, using tools to analyse logs, fix issues, and cycle changes into the process. It’s time to send changes to production! Now, the organization shall start training employees, partners, and other users to ensure they understand the changes. If a release has significant user impact, consider creating a separate environment with realistic data for training users.
4.????Conclusion
Developing a custom app using Salesforce app exchange can add a great benefit to organization and also automate some processes that are unique to business. People using Salesforce app exchange has grown up over the last few years and more than 89% of the fortune 100 people use at least one Salesforce app exchange application.
References
1.??????Pratyush Kumar, All You Need to Know About Salesforce Development Lifecycle, 2015, https://www.algoworks.com/blog/salesforce-development-lifecycle/
2.??????All About Salesforce Development Lifecycle, July 2021, https://www.explorateglobal.com/blog/salesforce-development-lifecycle/
3.??????Lacey Jackson, Following the Salesforce LifeCycle Management Framework, July 2019, https://www.formstack.com/resources/blog-following-the-salesforce-lifecycle-management-framework
4.??????Jacob Rouser, The AppExchange Product Lifecycle Explained, December 2018, https://www.codescience.com/blog/2018/the-appexchange-product-lifecycle-explained/
5.??????How to Build apps on Salesforce: All that you need to know about Salesforce AppExchange, https://www.stridelysolutions.com/resources/blog/how-to-build-apps-on-salesforce-all-that-you-need-to-know-about-salesforce-appexchange/