With Salesforce, there are multiple approaches for implementing systems interfaces. The optimal decision is typically determined during the design phase of a project. Below is an overview of the integration patterns and the possible association to specific integrations for this project:
Real-time data integration – Real-time interfaces are typically required when a Salesforce user performs an action and expects an immediate response, whether it be a calculation result, an “order processed” message or something similar. Real-time integrations have higher risk and require complicated queuing mechanisms and error handling mechanisms to account for system outage and data errors. Often, a near real-time alternative is acceptable in the cases of “fire and forget” patterns (e.g. a user submits a record for processing and will receive an email notification once it has been processed successfully). This type of integration will utilize Salesforce Apex Callouts to call remote web services.
Real-time mashups – Real-time mashups involve a custom built Visualforce UI in Salesforce. This UI is similar to a traditional web app built with HTML in that custom branding can be implemented, complex user flows can be built and the web page can perform web service callouts to external systems to retrieve data. Real-time mashups are great for situations when data is not stored in Salesforce but needs to be accessed immediately. An example of a real-time mashup would be an Agent screen that also needs to pull in related documents from multiple external document management systems for access by the Salesforce user.
Near real-time data integrations – Near real-time interfaces can involve transactions within seconds or minutes, depending on need. In reality, many interfaces fall into this category. If a user wants to simply mark a record for processing and know that it will be sent within a couple of minutes and that they will be notified upon completion, near real-time is an optimal solution. It is more reliable than real-time because it has built-in queuing and reprocessing out of the box. Options for implementing this are outbound messages, which are a 100% declarative functionality within Salesforce, and rapid polling (30 sec-5 min batching) by an ETL tool, utilizing the Salesforce SOAP or REST APIs.
Batch data integrations – Batch data integrations are one of the most common forms of integrations. Batch is an excellent pattern for data that must reside in Salesforce (or be transferred out of, e.g. to a DW) for reporting or workflow purposes, that does not change that often and that is generally in large quantities. Batches can occur with time ranges from seconds to weeks if needed. Batches are the simplest type of interface to implement, with the majority of the development occurring in the ETL tool, not Apex code. Batch is also the ideal solution for handling flat files.
AppExchange “installations” – Salesforce has an extremely comprehensive “app store” with bolt-on applications that can be installed directly into your Salesforce environment. Many of these apps provide best-of-breed integrations with common systems, such as Paypal. When applications like this exist, it is best to reuse them instead of building the integration. These vendors will provide support and enhancements in the future and installations are low complexity. A perfect example of an AppExchange installation is integrating a PayPal payment processing.
Non-Visualforce mashups – In addition to developing Visualforce pages, Salesforce also offers the ability to embed third-party web pages directly within the UI – either directly or using Force.com Canvas. Both of these options integrate already built web applications, developed in other technologies and hosted in other locations, directly into the Salesforce user interface. SSO Web Tabs allow an administrator to create a new tab that passes user credentials to another web page, seamlessly authenticating the user. This is an extremely common use case to integrate a BI application that extends Salesforce’s reporting capabilities.
Force.com Canvas – This allows developers to embed an already built web application, utilizing a Salesforce-developed JavaScript SDK, directly into existing Salesforce page layouts. For example: If you want to integrate a “Sales Actuals” component from your ERP system directly on your Account screen and you do not want to bother with Visualforce and Apex, you can use Force.com Canvas to display the web app and pass appropriate credentials and record IDs. Force.com Canvas allows for seamless interaction between Salesforce and the embedded web page to allow for dynamic web apps with full UI interactivity.
The integration pattern that you will choose should be based on multiple factors such as budget, reliability needs, criticality of data, the expertise of your development resources and whether or not you have an ETL tool. Cloud Sherpas has performed hundreds of system integrations with and without multiple ETL and ESB tools. We would be glad to guide you through this process and either develop your entire interface or assist you with the interface design activities.
Cheers!!