Bringing Together CRM And Student Management System

In the education industry, it’s not always easy to incorporate the applications in used to work for your business model. We have seen many situations where there is a need to bring together both the CRM (Customer Relationship Management) and SMS (Student Management System) applications. The following scenario can be quite common within the industry which includes Registered Training Organisations (RTO):

  • there is one side to the business that allows you to track the sales pipeline on the number of students
  • there is one side to the business that allows you to report on enrolled students and compliance requirements

The solution we have implemented ensures that:

  • the information within both applications are available to one another
  • data flow automation between both applications
  • extensive reporting coverage

If you would like to know more about how you can seamlessly connect your CRM application (i.e. Salesforce) and your student management system (i.e. JobReady), check out our latest case study addition on our website!

Integrating Netsuite and Salesforce

Ever wonder how Salesforce and Netsuite could compliment each other? Here is an example.

You may be managing all your customers’ information as well as tracking all the related opportunities in Salesforce and on the other hand, you use Netsuite to manage all the invoices issued to your customers. It would be a hassle to ensure all sold products and invoice transactions performed in Netsuite are tracked/linked correctly in the associated opportunities created in Salesforce when you are doing it manually. An easier consideration would be to automate this business processes. A simple diagram below illustrates how each applications’ entities/objects could relate and bring benefits to one another when they are integrated:-
You have an idea on how you want your Netsuite and Salesforce to work together? Feel free to contact us to discuss or check out our portfolio if you are interested to learn more on how these two powerful applications could compliment each other.

Integration Tip: Synchronize Picklist Value Part 2 – Externalizing Picklist

We’ve explained the different types of picklist available in our previous blog. This time, we are going to talk about what are the ways to maintain picklist where its value is represented by ID via API.

Usually, we can create a cross-reference table within the integration process to store the picklist values and their corresponding IDs. We can then retrieve the IDs and the matching values via the cross-reference table when needed. However, this approach may require a technical person to maintain the picklist values and IDs, as non-technical person may find it difficult to maintain as it require amending the cross-reference table via the integration process.

Alternatively, we can externalize the picklist cross-reference table within an application instead. For example, when integrating between Netsuite and Salesforce, we can create a picklist cross-reference table in Salesforce to store the picklist values and IDs. When a picklist ID is retrieved from Netsuite, the integration process will be able to retrieve the corresponding values from this table and insert into Salesforce.

With this approach, a non-technical user too can access and maintain the picklist values as well as IDs flexibly.

Integration Tip: Synchronize Picklist Value Part 1

Different system has different way to manage the picklist values. For integration, it is important to understand how the picklist values are represented in API.

Here are some of the types of picklist values can be appeared as:

1. Value is represented by same value as front-end

For example in Salesforce, the “Ownership” picklist field in Account object:-

Uses the same label value via API as well:-

<select id="acc14" name="acc14" tabindex="13">
	<option value="">--None--</option>
	<option value="Public">Public</option>
	<option value="Private">Private</option>
	<option value="Subsidiary">Subsidiary</option>
	<option value="Other">Other</option>
</select>

In this case, when integration process is synchronizing this field, we could just use the same label value as available.

2. Value is represented by ID via API

For example in JIRA, the standard “Priority” field picklist:-

Uses ID instead of the actual label seen in the user interface:-

<select name="priority" id="priority">
	<option value="1" class="imagebacked" style="background-image: url(/images/icons/priority_blocker.gif);">Blocker</option>
	<option value="2" class="imagebacked" style="background-image: url(/images/icons/priority_critical.gif);">Critical</option>
	<option value="3" class="imagebacked" style="background-image: url(/images/icons/priority_major.gif);" selected="">Major</option>
	<option value="4" class="imagebacked" style="background-image: url(/images/icons/priority_minor.gif);">Minor</option>
	<option value="5" class="imagebacked" style="background-image: url(/images/icons/priority_trivial.gif);">Trivial</option>
</select>

From the example above, we can see that:-

 Priority Label  Priority ID
 Blocker  1
 Critical  2
 Major  3
 Minor  4
 Trivial  5

For this type of picklist values, we can synchronize this field by maintaining a reference table in the integration process which reflects the actual picklist value and its corresponding ID.

As such, be sure to check the type of picklist involved in your integration process and determine which approach to use instead prior to working on the field mapping.

 

 

Salesforce Real Time Integration with Boomi: Prerequisite

If you are interested to set this up, check out the list below:

  • License. SOA framework is required. It’s included in Boomi Enterprise license and can be added as an add-on in Professional license.
  • Atom installation. The Boomi Atom is installed in a machine that has internet connection.
  • Windows security setup. If you are using Windows, make sure that the Atom executable is not blocked and the port is open. For example: 9090.
  • Network setup. Configure your router/firewall to redirect package to the server that hosts the Atom.
  • Configure the Shared Web Server Setting in AtomSphere to get your Atom ready for port 9090.
  • Has basic knowledge in Salesforce to setup the Outbound Message workflow.

Once you have built the process in Boomi, you are all set to go!

Salesforce Integration : Outbound message raw message

This is a sample of how Salesforce Outbound Message looks like:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <soapenv:Body>
      <notifications xmlns="http://soap.sforce.com/2005/09/outbound">
         <OrganizationId>00D90000000iBaVEAU</OrganizationId>
         <ActionId>04k90000000L2MLAA1</ActionId>
         <SessionId xsi:nil="true"></SessionId>
         <EnterpriseUrl>https://ap1-api.salesforce.com/services/Soap/c/26.0/00D90000000iBaV</EnterpriseUrl>
         <PartnerUrl>https://ap1-api.salesforce.com/services/Soap/u/26.0/00D90000000iBaV</PartnerUrl>
         <Notification>
            <Id>04l9000000LLakfABE</Id>
            <sObject xsi:type="sf:Account" xmlns:sf="urn:sobject.enterprise.soap.sforce.com">
               <!-- The following part is depending on what fields you have configured in Salesforce outbound message setting -->
               <sf:Id>0019000000KGsVSNA1</sf:Id>
               <sf:Name>Test Account</sf:Name>
            </sObject>
         </Notification>
      </notifications>
   </soapenv:Body>
</soapenv:Envelope>

If you use Salesforce to send an Outbound Message to an end point, please make sure that it responds with an acknowledgement that looks like this:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
  <soapenv:Body>
    <notificationsResponse xmlns="http://soap.sforce.com/2005/09/outbound">
      <Ack>true</Ack>
    </notificationsResponse>
  </soapenv:Body>
</soapenv:Envelope>

If not, you will get an error in the Monitor > Outbound Messages.

Salesforce Integration: Limit records synchronisation

Sometimes, when you build an integration between System A to System B, you do not want to sync all fields. For system like Salesforce, when a field is updated, the record lastModifiedDate will be updated automatically. Usually the integration process will pick up all the changes and process them. What if this update is not related to the field you want to synchronise? Here is a quick tip to limit the result.

For example: You only want the integration process to pick up any recent changes to the Account Name field.

1) Create a Checkbox at the Account level called “Sync me”
2) Create a workflow with the following Rule Criteria

ISCHANGED(Name)

3) The workflow action is to set the “Sync me” flag to true

You can configure the filter of your integration to pick up only “Sync me” = true and check the lastUpdatedDateTime. Just remember to uncheck it when the record is synchronised.

Salesforce Integration: Monitoring Outbound Message

If you are using the Outbound Message to trigger a real-time integration, you can monitor the status by navigating to Setup > Administration Setup > Monitoring > Outbound Messages.

If there is an error while sending the outbound message, Salesforce will automatically retry it for you. Alternatively, you can also retry it by clicking the Retry link.

 

Jitterbit Data Loader: Implementing Sequential Operation via the Scheduling Feature

In an Integration Platform, we can easily create sequential processes by implementing some business logic via a workflow designer or similar feature. With the Jitterbit Data Loader, a similar goal can be achieved by utilizing the built-in scheduling function.

The scheduling function determines the execution time and frequency of an operation. Few things to keep in mind:

  1. Determine the time required for each of the process to finish to avoid overlapping operations being run at the same time.
  2. Determine the sequence of the processes.
    • For example: We need to first sync the Account before inserting contacts for the accounts. In this case, operation related to the Accounts should scheduled to run before the Contact.
  3. If there are multiple operation being set to run at the same time, we can utilize different priority setting to determine the operation sequence.

To know more about different version of Jitterbit tools, see Salesforce : Using Jitterbit Data Loader to Sync Data.