This is part one of a three-part use case series for a large international client that partnered with our team at LaunchPad Lab for their digital transformation initiative. In this first part, we provide an introduction to the client and their technological roadmap and set the stage for the solutions LaunchPad Lab explored.
In 2019, LaunchPad Lab was introduced to a large international client and asked to support their digital transformation plan for 2020. This client is a leader in the industry whose business is to share their expertise through training programs and resources.
While the client had applications for purchasing and accessing some resources, much of their primary business was delivered in person with paper materials. Our initial engagement was to digitize those paper products, but soon after we were brought into another critical facet of their digital transformation: creating a 360-view of their customers, utilizing data and business logic within existing applications and the Salesforce CRM.
At LaunchPad Lab, we work with many clients who use Salesforce as an integral part of their technology suite. Salesforce is a powerful tool to manage customers, with the flexibility to expand into custom domain logic, particularly when coupled with a custom application. We were excited to work with this client to develop this integration and expand their technological capabilities.
Initial Technical State
When we partnered with this client, they had an existing PHP application that connected to a MySQL database. This database held years of customer and purchase data, much of which would need to be surfaced in Salesforce. To that end, they also had an existing Salesforce instance, with plans to expand and enhance its data schema and workflows.
The client also wanted to streamline their technology suite by leveraging Heroku to host the new applications we would develop, and later migrate the legacy applications to Heroku as well. This allowed the client to take advantage of simplified dev operations and Heroku’s strong security practices.
Choosing Heroku as the hosting platform also led the client to have us migrate the data from the MySQL database to a PostgreSQL (Postgres) database also directly hosted on Heroku. The legacy PHP apps then connected directly to the Postgres database.
Finally, as an agency with a penchant for Rails, we designed our own applications to be a series of Rails engines (with React frontends) that center around a Rails API. This API would also connect directly to the new Postgres database, and leverage ActiveRecord, Rails’ Object Relational Mapping (ORM) to interface with the data.
Introducing Salesforce to the System Architecture
When integrating a Salesforce instance with a custom application, we introduce the problem of keeping data in sync. That is, if data is shared between the systems, an update in one system should be reflected in the other. For us, working with Heroku, Salesforce offers a robust tool that does exactly that: Heroku Connect.
Heroku Connect is an “add-on” you can use with your Heroku application that is authorized with your Salesforce instance and allows you to bring your Salesforce objects into your custom web application. It then manages a bi-directional sync with your Salesforce instance and Postgres database; if an update happens in Salesforce, Heroku Connect propagates that change to the custom app, and vice-versa.
This tool is easy to use and is very impactful with minimum setup. It is most powerful when the Salesforce objects also represent the core of the custom application’s data, such that the Salesforce objects are directly reflected in the app’s domain model.
This can be easily achieved on a brand-new build of the custom app but can become more challenging when integrating Salesforce with a legacy system. If that legacy system already has its own domain modeling that includes representations of Salesforce objects (e.g., contacts, users, tickets), the integration will need a more nuanced data-syncing strategy.
Of course, this project posed this exact scenario. With the inclusion of Heroku Connect, we had the below main players in our system architecture, with three direct connections to the Postgres database:
- Legacy PHP app
- LaunchPad Lab-built Rails API
- Salesforce instance via Heroku Connect
Next up in part two of our Integrating Salesforce With a Legacy System series, we cover the design and development process the LaunchPad Lab team used to develop the data syncing strategy needed to integrate these systems together.