By Steven Fitzgerald, Technical Program Manager
Salesforce is a cloud-based CRM platform initially developed to help salespeople track business contacts (influencers) and opportunities (pipeline management). The original version of Salesforce contained customizable, pre-built tools (data entry screens/reports) that allowed users to track the full sales lifecycle. The sales and business contact tracking capabilities are currently marketed as “SalesCloud."
Over the years, the platform has expanded to include other business functions besides sales tracking, including modules for performing help desk/incident management (ServiceCloud), as well as business area-specific modules such as “Health Cloud," which contain pre-built forms for health providers. Additional modules can be installed by system administrators by downloading and installing 3rd party applications from the Salesforce App-exchange. This framework allows developers to quickly add functionality without having to program/code it themselves. As the platform has evolved, it has become widely used to build deploy custom applications.
What can I do with Salesforce?
One of the best things about the Salesforce platform is the amount of development and customization that can be done without having to write any code. This is referred to as “Declarative” programming, or “Click not code." System administrators/developers (really anyone with admin permissions) can make changes to end user screens/reports using simple-to-use interfaces that require no coding. In addition to a robust developer/administrator interface, Salesforce can be further customized with more conventional programming methods, including a programming language called “Apex” that is similar to Java. As a result of these capabilities, if you can think it, you can build it!
The benefits of using Salesforce for custom development include the following:
1. Everything is cloud based, and almost everything you need to start is included. No need to purchase and maintain your own hardware, database server, application server, reporting tools, or LDAP repository. Significant cost savings result by not having to hire a dedicated database admin, system admin, network admin, and application server admin. The tool comes with basic reporting and dashboard creation tools but integrates easily with more advanced reporting tools such as Cognos or Tableau.
2. The platform is simple enough to use by non-developers yet can be customized and expanded with traditional programming methods. This allows for a wide variety of use cases, from simple to complex, and is particularly useful for rapid prototyping.
3. With the acquisition of Mulesoft, the Salesforce platform has taken on an API first design methodology, which dramatically simplifies how Salesforce can interface with other systems, such as legacy databases, HR systems, or any custom applications already in use. Note: Mulesoft is an additional cost and requires a separate license to use the functionality. Existing Mulesoft license users can quickly and easily build APIs to integrate with Salesforce, including using one of Mulesofts pre-build connectors/APIs.
4. With the acquisition of Tableau, advanced reporting and analytics not provided by the built-in Salesforce reporting and dashboard tools can be leveraged and embedded in Salesforce pages. Similar to Mulesoft, Tableau is an option, and should only be used if the standard/built-in reporting of Salesforce cannot be used. If you’re building custom applications on the platform, it’s a better user experience and more cost-effective to leverage the built-in reporting and dashboard tools. Tableau is a useful tool if it’s something you have already invested in and need more advanced analytics/reporting.
How Do You Build Applications using Salesforce?
The process for building custom applications on the platform is straight forward. Once you have an idea of what you want to do with the platform, it can be done very quickly. In general, the process is as follows (not ness in order):
1. Model your business process and data outside of Salesforce (define business entities (tables) to store your data, business requirements, screen mockups, workflows, reporting requirements, etc. (An ERD and a few activity diagrams work great here) NOTE- it often takes longer to document system requirements than to build the actual functionality, so a lean development process, such as Agile is strongly encouraged here.
2. Define your user community, identify required data access, and setup user roles/permissions.
3. Define business processes/workflows/approvals you want to have.
4. Identify reporting requirements and user requirements, such as configuring Single Sign-On. (SSO)
5. Create the tables for storing data, including specific business rules and validation rules.
6. Create data entry pages/screens, including creating pages specific to form factor, such as web pages, or mobile applications.
7. Create reports/dashboards for your users. (users can also modify/create their own reports and dashboards)
8. Deploy the pages (activate them) to make them available for end users.
How do I Handle Configuration/Change Management in Salesforce?
The short answer is that it is handled pretty much how any other software project would be managed. The difference is that Salesforce has multiple tools that help with moving code between Sandboxes/environments.
When users sign up to use Salesforce, they are provided one or more environments (Sandboxes) for separating out their development, test, and production environments.
Software is developed and deployed the way other non-Salesforce applications are usually developed and deployed;
1. Coding/changes are done in Developer Sandboxes.
2. After unit testing, changes are deployed to one or more test Sandboxes. Test sandboxes are typically used by product owners/customers to check out newly released functionality
3. Once the change is approved (by client, configuration manager, CCB, etc) it is deployed to production.
One of the benefits of the Salesforce platform is that development changes can be deployed to the different test and production sandboxes in a variety of ways, depending on the maturity of the organization and their governance/configuration management and change control processes.
For example, for a small non-profit organization with few technical resources, system administrators/developers can make changes in development sandboxes, and use ‘Change Sets’ to push configuration changes to production sandboxes. This is a good option when the organization is small, and does not require a robust configuration management process, and does not have a full development IT staff.
For more mature organizations, especially ones with multiple developers, development and test teams, and more complicated requirements, several 3rd party developer toolkits (outside of Salesforce) allow for changes to Salesforce to be tracked with more traditional change management/version control tools.
These development tools – also called integrated development environments (IDEs) essentially work by connecting to a Salesforce sandbox, and then downloading/copying all of the Salesforce metadata to the tool. Salesforce metadata includes things such as table definitions, form definitions, and custom code. Essentially most of the items (tables, pages, etc.) that is configurable within the Salesforce provided administrator tool is considered metadata.
Once the metadata is copied/imported into the tool (Eclipse or Visual Studio are common repositories/IDEs that are used to store and manipulate the Salesforce metadata), developers can make changes to Salesforce metadata within the tool, save the change to a file, and then check in their changes using a version control tool. Salesforce provides additional tools to help automate the configuration management/Change control process including automating deployments with tools such as Ant. Finally, several 3rd party tools, such as AutoRabit, allow developers to store Salesforce metadata in a Cloud based central repository, and deploy changes to one or more sandboxes via there.
How Do I Get Started with Salesforce?
One of the best ways to get started with Salesforce is to join one of their online communities and setup a free development Sandbox. This can be done by visiting: https://developer.salesforce.com/free-trials
From here, you can access a wide variety of tools and training resources, including Salesforce’s free training platform, called Trailhead.