Guest Blog Written by Richard Seroter
Last week I had the pleasure of visiting the Salesforce.com Developer User Group in San Francisco and I delivered a presentation called Using the Force.com Integration APIs. This group meets regularly to discuss timely development topics related to Salesforce.com applications and the Force.com platform. In my presentation, I reviewed the comprehensive set of APIs offered by Force.com, when to use each, and how software providers like Informatica are using these APIs to create powerful software products.
What kind of APIs does Force.com provide to developers? First, there are three options for interacting with Force.com from outside systems.
• SOAP services. SOAP is the classic web services protocol for exchanging XML messages between systems. The Force.com SOAP API is a great fit for quick development or integration with existing tools that know how to invoke SOAP-based services. The SOAP API has a rich set of operations for querying, creating, and modifying Force.com data or application settings.
• REST services. RESTful services are all about using meaningful URIs and a common interface (e.g. HTTP POST, GET, PUT, DELETE) to interact with representations of data resources. The Force.com REST API gives developers the ability to interact with standard or custom objects represented as XML or JSON objects. This is a great fit for mobile applications or modern web applications that embrace JSON and prefer the REST-style of web services.
• Batch processing. Both the SOAP and REST APIs work best with bite-sized messages as opposed to massive data sets. However – as I’m sure the folks at Informatica can tell you – there are plenty of reasons to transfer large blocks of data between systems! The Force.com Batch API lets you upload XML or CSV data files as “jobs” that are processed in parallel on Force.com servers. Choose this API when performing data migration activities or irregular data synchronizations between systems.

In addition to the host of inbound integration options above, Force.com gives developers outbound interfaces for connecting to remote endpoints.
• Message streaming. One way to detect changes in a system is to constantly poll it and try and find out what’s new. The Force.com Streaming API is a push-based channel for sending data events out of Force.com in real time. Once a Force.com developer defines a “PushTopic” that specifies the condition they are interested in, the consuming application can connect to that PushTopic and listen for changes. As soon as that condition is met in the system (e.g. “New Account Added in California”), a message is instantly sent to all subscribers to that topic. This is an intriguing option for organizations who want a real-time feed of information from Salesforce.com and have applications behind the firewall that can connect to the Streaming API.
• Outbound Messaging. Much like the Streaming API, Outbound Messaging is a powerful way to do event-driven integration with Force.com. Whenever a user-created workflow condition is met, a SOAP message is sent to a listening web service. Unlike the Streaming API which only delivers messages once to online subscribers, the Outbound Messaging infrastructure can queue failed messages and try to deliver them later when the listener is available.

All of these diverse integration endpoints make it possible for software companies like Informatica to create compelling products that interface with Salesforce.com applications. In fact, Informatica provides multiple ways to integrate with Salesforce.com. First, it can act as a listener for Outbound Messages. When using Salesforce.com as a source in an Informatica Cloud data synchronization task, you can choose to “run this task in real-time” as a response to receiving an Outbound Message. Imagine building an Informatica flow where as soon as a record changed in Salesforce.com, the data was instantly transferred to an internal database for processing.
The demonstration of Informatica Cloud that I presented to the User Group was taking Salesforce.com data and regularly transferring it to another cloud CRM system, Microsoft Dynamics CRM Online. Because of the handy library of Informatica cloud connectors, it’s a snap to quickly build enterprise-class ETL operations between SaaS systems. In this demonstration, I showed how easy it was to use the Informatica Cloud Data Synchronization Task Wizard to connect to Salesforce.com, connect to Dynamics CRM Online, filter the data, map the fields between the two systems, and schedule the ETL. After executing the ETL and showing how simple this really was, one User Group attendee jumped on Twitter to proclaims his readiness to try out the platform!

This was a fun group to present to as they regularly face the challenge of connecting Force.com applications to other systems used by their customers. While the APIs provided by Force.com give developers plenty of choices for integration, using them requires a fair amount of knowledge and custom code. However, tools like the Informatica Cloud simplify the process by offering an easy-to-use web interface for creating robust and reliable data integration flows. I’ve been a fan of this platform for a while and even taught a video-on-demand course that highlights its role in a cloud architect’s tool belt. Its critical to understand the marketplace so that we can make the best possible build vs. buy decision when integrating the cloud!
Richard Seroter is a senior product manager for cloud software company Tier 3, a trainer for Pluralsight, Microsoft MVP, InfoQ.com editor, blogger,, author, and speaker. You can find Richard on Twitter as @rseroter.