We recently completed an interesting client project to integrate Salesforce CRM with JIRA, an enterprise task management system. The business problem was that the client’s sales team was diligently closing deals on Salesforce, but the resulting action items for the different suppliers were hard to track through Salesforce. The client had been doing a manual transfer of action items to JIRA for closer project management, and wanted to automate the process.
The exact use case was to transfer the Product Line Items in the Contracts created on Salesforce, to separate JIRA Tasks, in near real-time. There was a field mapping that was required between the two systems, and the acknowledgement of a task’s closure from the JIRA end.
After a bit of background research, we decided to asynchronously sync the necessary data between the two platforms using a custom-coded agent running as a Windows Service. Coded using .NET’s WCF, this service pulls the Salesforce contract line items every five minutes, tags them to the correct JIRA users, and opens new JIRA tasks. The JIRA fields are populated according to a configurable XML-based field mapping. The communication between the syncing agent and the two platforms was via their respective SOAP interfaces. Shown below is a simple block diagram of what we did:
Complexities that we encountered included the design of a fail-safe mechanism to ensure that communication failure during any given run of the sync agent would be handled gracefully, and that the data transfer would resume from the last successfully transferred JIRA task. We also built a simple transaction log file to report any failures in the sync agent over time.
If you are ever faced with the problem of integrating Salesforce with JIRA, you might find the links below useful reference.
1. JIRA: https://developer.atlassian.com/display/JIRADEV/JIRA+RPC+Services
2. Salesforce: http://www.salesforce.com/us/developer/docs/api/index.htm