I’m coming across more and more business applications that clame they’re “integrated” with Salesforce. The other week I was presented with a system where the “integration” was part of the implementation package. However, the vendor knew nothing about our environment, and based on the use case of the application, they couldn’t possibly clame the integration would be easy.
The problem with the “integrated” label, is that it can mean just about anything. As Salesforce grows, more and more business applications feel they need to say they’re “integrated” with Salesforce, otherwise they risk losing sales. In reality, many of these apps say this despite only half understanding the Salesforce API, meaning they could integrate their application if asked.
Simply put, no integration is equal
You should never accept a vendors statement like “our application fully integrates with Salesforce”, whiteout diving into the details of how that integration works.
So that you can avoid headaches down the road, here are some questions to ask:
Does the application read Salesforce data or does it read and write Salesforce data?
This is by far the most important question to ask. An application that simply reads Salesforce data is the simplest architecture – and is often recommended for initial integration projects. However, at some point, you’ll want some of that data back in Salesforce. For example, QuickBooks reading the data from a closed won opportunity helps make your organization efficient – this is a read only requirement. A truly integrated QuickBooks would mean a Salesforce account can be flagged as having a 90 day past due invoice. This bi-directional integration is when you get true value.
While a simple read / export of Salesforce data sounds simple, don’t under estimate how difficult this can be. For example, if you have an external system that needs to pull the contact details of all contacts associated to a customer account all of the following can make this complex:
- Salesforce must accurately flag accounts as customers.
- You need to decide if all these contacts really should be sent over (do you really want the details of the accounts shipping and receiving clerk to be integrated?), if not, this is another layer of complexity your integration needs to accommodate.
- What is the time frame for integrating records – do you need real time or scheduled.
- Does the integration care what products / assets the account has purchased?
- This list only gets more complex …
The point is that an integrated application must accommodate your level of complexity when reading or writing Salesforce data.
Is the application on the AppExchange?
The easiest way to guess the quality of an integration is to ask if the application is, or will soon be on the Appexchange. Even a simple data connector listed on the Appexchange must pass an intense security and technical audit. While these integrations are not all equal, it’s a good start to understanding how well the application integrates.
Note: if the application is not on the Appexchange, you must have Salesforce enterprise edition because the integration must use the Salesforce API. Apps on the Appexchange can be installed into Pro, and through Salesforce.com’s new Aloha app program, applications can be installed into group edition. Most “integrated” salesforce applications don’t tell you this on their website!
Does the application write data to Salesforce standard objects?
Believe it or not, this can be one of the hardest things for an integrated application to do. The integration must manage simple things like required custom fields, record types, and validation rules. Remember, if you’ve created one required custom filed, it will cause a write command to fail. To avoid these problems, applications will often install their own custom objects to manage data.
Can the the application read Salesforce custom fields and objects?
Salesforce standard fields and objects are easy to integrate because their API names are the same across all Salesforce instances. However, for an integration to be truly effective, they need to know that custom fileds and objects exist through the use of Salesforce.com’s Meta Data API.
If the application creates contact, account or other records, does it do any de-duplication?
It’s almost too easy to insert records into Salesforce, meaning your integrated application can indiscriminately create contact, account or other records in Salesforce. If the application doesn’t do anything to address de-duplication of records, the lack of data governance will quickly pollute your Salesforce database. If it does de-duplicate, you sill need to understand how the data integrates. For example, does the integration allow you to designate fields that can never be overwritten. You don’t want your good email address overwritten by a disposable email used to fill out a web-form.
Does the application require custom Apex Code to function?
While custom Apex code and Visualforce pages are common to most integrations, you should understand what the code does, and if it interacts with other applications or Salesforce functionality. For example a de-duplication script should be local to the application, and not interfere with every upload you do.
