We recently worked with a large financial services company that wanted to enable real-time data updates between Salesforce and applications running on both IBM i and a Linux-based system.
Every day, people from a variety of departments entered customers, leads, and orders into these systems. The salespeople, however, needed to access the most current information from within Salesforce.
Our client understood the value of IBM i as the system of record, and they wanted to continue using it as such. They called on us to design and program reliable communication between the IBM i and Linux systems and Salesforce.
Integration via APIs
One of the key requirements in this project was two-way data transfer for certain data elements, such as contact information. Regardless of where an employee enters updates to contacts, for example, our client wanted their other systems updated.
Other data elements, such as orders, get entered only on the IBM i. Although that data flows only one way, we still needed to update Salesforce in real time.
To enable this real-time data communication, we built APIs. On the Salesforce side, developers used Salesforce’s proprietary APEX language to build API consumers and providers. On the IBM i side, we worked with the client to build REST APIs in PHP and RPG, using JSON to communicate.
The salespeople did not require all data to be transferred in real time, so to optimize traffic, certain data is batched and run in a nightly process.
Now that the integration is complete, the salespeople have up-to-date marketing and order data at their fingertips. They also have access to automated marketing tools, metrics, and reporting to help them better serve their client base.
Tips for Salesforce/IBM i Integration
If you are contemplating a similar integration, consider these lessons that we learned along the way.
Be aware of the data limitations set by Salesforce. Plan to slice large batches of data into smaller ones and queue them to prevent exceeding these limits.
Plan, Plan, Plan . . . and Document!
Documentation and planning will be critical. Make sure you have thorough workflow and process diagrams. Develop detailed use cases, including branching logic, for the developers.
If a JSON schema is not available, request sample JSON payloads to facilitate communication between developers on different platforms about the data.
In addition, you can avoid pain if you define data standards up front, including such things as date formats and how to interpret empty/zero values.
Testing is perhaps the most critical step of all, so make sure you’ve allotted ample time for it. Even in our situation, where we were careful with planning, end users unearthed some unexpected user scenarios during testing that needed to be handled.
The more you log, the happier you’ll be when you’re trying to troubleshoot an issue. Make sure to log all incoming and outgoing JSON payloads throughout the development and testing phases, as well as response codes and error messages.
To work smoothly with Salesforce error scenarios, plan to devise a graceful error handling strategy within your IBM i API. You’ll want to log the error, notify the correct person of the error, and ensure that it doesn’t interrupt the end user’s work.
Additional Salesforce/IBM i Integration Tips
For additional tips on a successful integration, see Alan’s blog post Salesforce Talks to PHP and IBM i.
Help with Your Salesforce Integration
If you are considering the Salesforce journey, we can offer objective advice and assistance. Given the effort, cost, and potentially large business benefits of such implementations, consider talking to us about: guidance during the discovery/feasibility phase, documenting requirements and use cases, analysis, API development, or even code reviews.
Let us know if you’re thinking about integrating Salesforce with IBM i and other core systems.