Note that this project depends on internal Symphony infrastructure (repository.symphony.com), and therefore it can only be built by Symphony LLC employees/partners.
The Salesforce WebHook Integration will allow you to receive notifications in Symphony when a Salesforce opportunity, account or an executive dashboard changes state.
Unlike JIRA and GitHub, Salesforce does not provide out-of-the-box Webhook support. As such, while in beta, Symphony provides directly to customers an unmanaged package consisting of an Apex trigger and configuration object to achieve this functionality. As a Salesforce administrator, you can configure the unmanaged packaged with the webhook URL generated by the Salesforce Application available in the Symphony Market. You’ll then start receiving notifications for opportunity updates. Symphony will later distribute this integration through a managed Salesforce package.
Every integration will receive a message sent in a specific format (depending on the system it ingests) and will usually convert it into an "entity" before it reaches the Symphony platform. It will also, usually, identify the kind of message based on an "event" identifier, which varies based on the third-party system.
You can find more details about entities and the Symphony Message ML format here.
Salesforce WebHook Integration currently deals with one event. The data already comes in a Symphony MessageML format (as it is generated by our Apex applications) and the only post-processing that Integration Bridge does before resending the payload is to check if the users mentioned in the payload do have identifiable accounts on the target Symphony platform. If they do, a "mention" tag will be added to the payload. Next, we'll detail the supported events:
- Payload sent from Salesforce
<messageML>
<entity type="com.symphony.integration.sfdc.event.opportunityNotification" version="1.0">
<presentationML>
Milton Quilzini updated Test Company Upsel - FEB08 - 2 (<a href="https://link.to.the.opportunity.at.salesforce/path/to/the/opportunity/at/salesforce"/>) to stage <b>5. Closed - Won</b>
</presentationML>
<attribute name="username" type="org.symphonyoss.string" value="test" />
<entity type="com.symphony.integration.sfdc.opportunity" version="1.0">
<attribute name="title" type="org.symphonyoss.string" value="Test Company Upsel - FEB08 - 2"/>
<attribute name="link" type="com.symphony.uri" value="https://link.to.the.opportunity.at.salesforce/path/to/the/opportunity/at/salesforce"/>
<attribute name="type" type="org.symphonyoss.string" value="Upsell"/>
<attribute name="stage" type="org.symphonyoss.string" value="5. Closed - Won"/>
<attribute name="closeDate" type="org.symphonyoss.time.rfc3339" value="2016-08-05T14:42:09.992Z"/>
<entity name="arr" type="com.symphony.integration.sfdc.revenue" version="1.0">
<attribute name="currency" type="org.symphonyoss.fin.ccy" value="USD"/>
<attribute name="value" type="org.symphony.oss.number.double" value="288000.00"/>
</entity>
<entity name="owner" type="com.symphony.integration.sfdc.user" version="1.0">
<attribute name="username" type="org.symphonyoss.string" value="mquilzini"/>
<attribute name="displayName" type="org.symphonyoss.string" value="Milton Quilzini"/>
<attribute name="emailAddress" type="org.symphonyoss.string" value="mquilzini@symphony.com"/>
</entity>
</entity>
<entity type="com.symphony.integration.sfdc.account" version="1.0">
<attribute name="name" type="org.symphonyoss.string" value="Test Company"/>
<attribute name="link" type="com.symphony.uri" value="https://link.to.the.account.at.salesforce/path/to/the/account/at/salesforce"/>
<attribute name="salesRegion" type="org.symphonyoss.string" value="Americas"/>
<attribute name="renewalDate" type="org.symphonyoss.time.rfc3339" value="2016-08-05T14:42:09.992Z"/>
<entity name="totalContractedArr" type="com.symphony.integration.sfdc.revenue" version="1.0">
<attribute name="currency" type="org.symphonyoss.fin.ccy" value="USD"/>
<attribute name="value" type="org.symphony.oss.number.double" value="288000.00"/>
</entity>
<entity name="owner" type="com.symphony.integration.sfdc.user" version="1.0">
<attribute name="username" type="org.symphonyoss.string" value="mquilzini"/>
<attribute name="displayName" type="org.symphonyoss.string" value="Milton Quilzini"/>
<attribute name="emailAddress" type="org.symphonyoss.string" value="mquilzini@symphony.com"/>
</entity>
</entity>
<entity name="author" type="com.symphony.integration.sfdc.user" version="1.0">
<attribute name="username" type="org.symphonyoss.string" value="mquilzini"/>
<attribute name="displayName" type="org.symphonyoss.string" value="Milton Quilzini"/>
<attribute name="emailAddress" type="org.symphonyoss.string" value="mquilzini@symphony.com"/>
</entity>
</entity>
</messageML>- Notification on Symphony platform
You’ll build an integration module to be used with the Integration Bridge.
If you develop a new integration, to get it up and running you'll also need to add it to the core project's web pom file.
- JDK 1.7
- Maven 3.0.5+
Salesforce WebHook Integration is compatible with Apache Maven 3.0.5 or above. If you don’t already have Maven installed you can follow the instructions at maven.apache.org.
To start from scratch, do the following:
- Build the App-Integrations-Salesforce dependencies (so you have them in your Maven local repository):
- Clone the source repository using Git:
git clone git@github.com:symphonyoss/App-Integrations-Salesforce.git - cd into App-Integrations-Salesforce
- Build using maven:
mvn clean install
