Tips: Salesforce Opportunity Contact Role explained

Salesforce Opportunity and Contact has a many-to-many relationship. It is supported through a junction object called OpportunityContactRole.

Inside an opportunity, you may add many opportunity contact roles. Additionally there is no restriction on which Account the Contact can come from, you can add in any Contact from any Account.
However, unlike other system objects, there is some restriction to this object:
  1. You can’t add any custom fields into this object. (see this post)
  2. You can’t add any validation rules on this object (see this post)
  3. You can’t create any trigger on this object (see this post)
Since writing a trigger is not an option, if you want to integrate OpportunityContactRole changes to another object or another system, you can use the LastUpdatedDateTime attribute from the backend. Please contact us if you would like to know more.

Tips: Buzilla DateTime Format

The ‘last_change_time’ field returns the value in dateTime.iso8601 format. The ISO 8601 format is a standard, used to cover the exchange of data and time-related data.

In Bugzilla, the search returns the dateTime in UTC timezone regardless of of the timezone of the machine that is hosting Bugzilla.
You may need to convert your local time to UTC timezone to obtain the correct time when querying bugs in Bugzilla via a web service.
This will be helpful if you are integrating your Bugzilla instance with other applications (i.e. Salesforce).
Example of Bugzilla Response:
<member>
<name>last_change_time</name>
<value>
<dateTime.iso8601>20120426T07:43:43</dateTime.iso8601>
</value>
</member>

Tips: Authenticating to Pearson LearningStudio with oAuth1.0

In the Pearson application there are 2 types of authentication methods, oAuth1.0 and oAuth2.0.

Pearson LearningStudio API supports both OAuth 1.0 and OAuth 2.0 authentication methods.

When building an integration to communicate with Pearson LearningStudio we used the OAuth 1.0 module. Here is an example of how to get the authentication working:

1) Prepare all the required credentials:

  1. request_url
  2. consumer_key
  3. application_id
  4. consumer_secret
  5. timestamp
  6. nonce

2) Generate the timestamp. You should convert current time to seconds.

Code snippet:

long timeStamp = new Date().getTime()/1000;

3) Generate nonce, a random alphanumeric string. You can only use numbers or letters, you can’t just use letters. This nonce needs to be unique per request. Any duplicate nonce value will be rejected. The nonce must not exceed 32 characters.

Code snippet:

Random nonceGenerator = new SecureRandom();
// Any number between 0 to 999999999
long nonce = nonceGenerator.nextInt(999999999);

4) Prepare the signatureBaseString.

Code snippet:

// Method such as GET or POST in upper case

String method = method.toUpperCase();

// Prepare the resource path and encode it

String resourcePath = “/courses/10000″;

String encodedResourcePath = URLEncoder.encode(resourcePath, “UTF8″);

// Make sure that this string is URL encoded. For example ‘=’ is encoded to %3D

String signatureBaseString = method + “&” + encodedResourcePath + “&application_id%3D” +

applicationID + “%26oauth_consumer_key%3D” + consumerKey + “%26oauth_nonce%3D” + nonce + “%26oauth_signature_method%3DCMAC-AES%26oauth_timestamp%3D” + timeStamp;

5) Prepare the signature by signing the signatureBaseString with the consumer secret.

6) Use Base64 to encode the signature to produce the encodedSignature.

7) Once it’s ready you can use it to build the X-Authroization header using the follow format:

String authHeader = “OAuth realm=\”" + baseURL + “\”,oauth_consumer_key=\”" + consumerKey + “\”,application_id=\”" +

applicationID + “\”, oauth_signature_method=\”CMAC-AES\”,oauth_timestamp=\”" + timeStamp + “\”,oauth_nonce=\”" + nonce + “\”,oauth_signature=\”" + encodedSignature + “\”";

Integrating an enrolment process

Schools, Universities and colleges all have a similar challenge. Managing Enrolment processes. Whether it is integrating from a Callista student management system, or moving enrolments to a cloud based solution like RightNow or Salesforce.com the challenge can be how to integrate it.

At WDCi we have tackled this challenge for a number of Education providers and integrated many systems. In a number of cases we have been able to provision users directly into Active Directory from the Enrollment platform, as well as setting up group memberships.

In another example we have facilitated the Marketing to new students by integrating SATAC data into the cloud solution.

In all cases the integrations were performed with class leading saas integration tools from Dell Boomi.

if you would like any more information or a demo please contact us at http://www.wdcigroup.net

Tips: Talend Salesforce Integration

One of the tools we use to build integration is Talend. Talend is an open source integration tool.

When you are building the Salesforce integration, one thing we need to take note is the maximum size of the request per batch to Salesforce. The maximum size per request is 52428800 bytes. If that exceeds the limit, you can split the request into different batch.

Updated release of Business Catalyst – MYOB ReadyMade Integration tool.

BusinessCatalyst-MYOB ReadyMade is back due to popular demand.

The new release creates MYOB Item Sales Invoices and Customer Cards from Business Catalyst website orders.

You can run it on a schedule or on-demand, it’s that easy.

This is how the data flows between Business Catalyst and MYOB:

Want to know more about BusinessCatalyst-MYOB ReadyMade V2 check out our website for details.

EDI Integration: Basic Requirements

EDI integration uses industry-specific standards and it supports multiple communication protocols. Before you start EDI Integration, it would be good if you have the following information ready:

1) EDI Standard. For example: X12, EDIFACT, etc

2) Communication Protocol: How are we going to retrieve the EDI document? Is it through FTP, local disk or AS2?

3) EDI Document version: For example: 4030. 4050, 5010, etc

4) EDI Document type: This is depending on the integration flow and the standard. Take X12 for example, 850 (Purchase Order), 856 (Shipment), 861 (Receipt), etc

Bugzilla Integration: Web Service

Bugzilla is an Open Source Defect Tracking System to manage software development. We can integrate to Bugzilla through the web service or directly to the database.

For example, you can integrate Bugzilla with a support system. When a case is confirmed as a bug, then the bug will be automatically created in Bugzilla. You can find the demo here.

SmartTurn Integration: Order Fulfillment

SmartTurn is a very good warehouse management system. It has features which cover from item purchasing to item shipping, within these processes, item inventory/warehouse status will be automically updated.

So how can integration help? Let’s talk about one of the features that we can perform in SmartTurn, Order Fulfillment. Here is one scenario:

1. I am managing a clothing wholesale business, a customer has ordered 200 items from my company. Within these 200 items, 100 will be shipped to location A, 50 will be shipped to location B, and the rest to location C.

2. If the customer is placing an order through my CRM or eCommerce system. The integration process can synchronise the Sales Order into SmartTurn specifying all the item details and customer’s shipping destinations.

3. SmartTurn will then check the inventory status, if the stock is insufficient, the shipment will be put ‘On Hold’.  If everything goes well, the inventory count will be deducted in SmartTurn. We can then synchronise the latest inventory count to our Accounting System.

Below is a simple diagram illustrating the above scenario:

We can integrate SmartTurn with any other CRM, ERP system or etc. which improve efficiency in order processing and fulfillment. As with the above scenario, updating the customer information and purchasing details, processing the transaction before confirming shipment status and other details.