Tag Archives: rightnow integration

Boomi: Querying RightNow Report

The standard data query in RightNow allows you to get the details of a single object. However, imagine if there is need to get further details from another cross reference object.For example,

Data model: Incident Object -> Opportunity Field (Type: Menu look up to custom object Opportunity)

Data to be retrieved: Incident information + Opportunity Name

ResultUsing the standard query, the following sample result is returned with Opportunity ID. However, we would like to retrieve the opportunity name as well.

<Incident>
<ID>12345</ID>
<LookupName>1433-2112</LookupName>
...
<CustomFields>
<a.Opportunity>6689</a.Opportunity>
</CustomFields>
...
</Incident>

One option to go about this in Boomi is to utilise multiple RightNow connectors to get the details. Here, we would like to share with you another option on how to get the required information which is to use one RightNow connector by querying a report instead of an object.

Steps:

  1. Create a RightNow report with join tables between Incident and custom object Opportunity.
  2. Include the required fields from both tables to the column display and save the report. At the same time, you can add in filter to get a specific record. In our example, we will filter by Incident ID. You can verify the configuration via View Definition from the report.
  3. In Boomi, utilise the RightNow connector and query for the RunAnalyticsReport instead of object.
  4. Configure the parameters to query for the report (via name/id) and pass in the filter, delimiter values.

Using the above steps you should be able to retrieve the information from cross objects via RightNow report.

RightNow ROQL: Custom Field structure and format in Feb’12 API

In the latest RightNow API (February 2012 and May 2012 release), one of the important changes we need to be aware of is the structure of custom field and the query format in ROQL.

In the older API version, all custom field API name has a prefix of “c$”. e.g, c$mycustomfield. You can query the custom field data out by using the following ROQL:
Select ID, c$mycustomfield FROM Contact;
In the latest release, RightNow has structured the custom field by grouping them under the same Parent element called CustomFields. We can have better control and visibility to customfield in an object when constructing a SOAP request envelope for CRUD operation. Below is how a custom field looks like in ROQL and the SOAP response:
Select ID, Contact.CustomFields.c.mycustomfield FROM Contact;
Result:
<ns7:RNObjects xmlns:ns4="urn:objects.ws.rightnow.com/v1_2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="ns4:Contact">
         <ID xmlns="urn:base.ws.rightnow.com/v1_2" id="1" />
         <ns4:CustomFields xmlns:ns2="urn:generic.ws.rightnow.com/v1_2" xsi:type="ns2:GenericObject">
         <ns2:ObjectType>
                 <ns2:TypeName>ContactCustomFields</ns2:TypeName>
         </ns2:ObjectType>
         <ns2:GenericFields dataType="OBJECT" name="c">
                 <ns2:DataValue>
                         <ns2:ObjectValue xsi:type="ns2:GenericObject">
                                 <ns2:ObjectType>
                                         <ns2:TypeName>ContactCustomFieldsc</ns2:TypeName>
                                 </ns2:ObjectType>
                                 <ns2:GenericFields dataType="STRING" name="mycustomfield">
                                         <ns2:DataValue>
                                             <ns2:StringValue>This is value for customfield</ns2:StringValue>
                                         </ns2:DataValue>
                                 </ns2:GenericFields>
                         </ns2:ObjectValue>
                 </ns2:DataValue>
         </ns2:GenericFields>
         </ns4:CustomFields>
</ns7:RNObjects>

 

If you would like to learn more about this, you can always download the sample client from RightNow.

Oracle RightNow CX Object relationships explained

Understanding object relationships and the data model in RightNow is helpful when it comes to RightNow integration. Object relationship enables you to implement your business complexity in RightNow by relating standard objects with any custom that are required for your business.

When integrating with RightNow, understanding the object relationships is beneficial when designing the integration process such as determining the parent and child relationship as well as the logic to handle any deleting of records.

Why bother about object deletion? The behavior of record deletion is dependent on the type of relationship used.

In RightNow, the following three relationships are emphasized:-

  1. Aggregation
  2. Association
  3. Self-referencing

Some further details The following section, further defines the relationships and its possible use case which you can use as a reference on how to build a data model which suits your needs in RightNow.

Aggregation

This type of relationship is used when you want objects to be tightly relate with one another where the child objects will be deleted along when the parent object is deleted.

Scenario: When you have bug/incident records that is tie to certain product range in your business, you may not want to keep the related bug/incident records anymore in your RightNow system when the product is no longer available or obsoleted. In this case, you can utilize the aggregation relationship to link a custom bug or standard incident object as the child to the sales product or a custom product object which you implemented. Once, the product is deleted, the child records will be deleted as well.

Association

Consider using this when you want the objects to link/reference with one another but not tightly related. This relationship will not deletes the child object automatically when the parent object is deleted.

Scenario: When you have bug records that is linked/related to an incident raised by your customer. You only want the bug to link or reference with the incident raised instead of strongly tying the bug with the incident so that when the incident is deleted, the bug record is still available in your system for others to reference. To achieve this, you can utilize the association relationship to link up the child custom bug object and the standard incident object in RightNow.

Self-referencing

This relationship applies only when you have objects that utilized the association relationships and can be configured by linking the child and parent object of itself.

Scenario: You may have an umbrella or a pool of related bug/incident being tracked in your system. You would want the bug/incident to reference one another under a parent bug/incident which has been raised for the same topic. In this case, the child and parent objects would be the custom bug or standard incident object itself.

Hope this gives you some idea on how should you customize your RightNow instance to suits your business needs as well as some consideration when integrating your RightNow and other applications. For more information related to custom objects and defining relationships, please see the RightNow CX User’s Guide.

Integrating SATAC and Callista with RightNow

SATAC is a course application system used by the South Australian universities/TAFE. Students use the system to apply to the course and institution specifying their preferences from higher to lower. The educational institutions can then retrieve course application information from SATAC and process the data according to their specific requirements.

Based on experience, many institutions also use an external LMS system to keep track of records. One of the commonly used LMS systems is RightNow. Here is a standard data data flow for integrating SATAC with RightNow:

  • SATAC Applicant (Database) > RightNow Contact
  • SATAC Application (Database) > RightNow Opportunity

From there, a report  to show how the institution fares among the other institutions in terms of applicant preferences can be generated in RightNow. This is just one of the benefits of integrating the data between SATAC and RightNow.

For more technical specs on this data flow, take a look at:

http://www.wdcigroup.net/wedidintegration_satacrightnow.html

To spice up the mix, we have also had experience with a solution that includes integrating SATAC, RightNow and Callista. Both SATAC and Callista records are integrated into RightNow in addition to the integration points defined above:

  • Callista Student (Database) > RightNow Contact
  • Callista Enrollment (Database) > RightNow Opportunity

The above process looks in RightNow for a matching email record to the SATAC record.  If a match is found it updates the RightNow contact to mark that the applicant has been converted to the institution’s permanent student.

With the records integrated to RightNow, a report on the conversion rate from applicant to permanent student can be generated in RightNow.

Integrating to RightNow

 

URL www.rightnow.com
Description Cloud Customer Service Application
API Yes
Trial Version with API Access N/A
Protocol SOAP
Data Format XML
Authentication WS-Security Authentication: Requires Username and Password
API Limits 100 ROQL statements per SOAP request
10,000 ROQL output objects or rows per SOAP request
1,000 objects on Create, Get, Update& Destroy operation
100 Batch items per SOAP request
10,000 total input objects per SOAP request
Sample Use Case Callista’s Student Record > create/update > RightNow’s Contact
Callista’s Student Enrollment > create/update > RightNow’s Opportunity
Salesforce’s Account/Contact > create/update > RightNow’s Organization/Contact
Salesforce’s Cases > create/update > RightNow’s Incident
F2I 3.5
 Objects/Operations


Boomi Integration Tip: Integrating to RightNow CX

Integrating to RightNow CX becomes easy with the new RightNow CX connector in Dell Boomi.
 
This connector is designed and built based on the core API operational structure in RightNow CX web service.  It supports:
1. the CRUD (Create, Read – Get or Query, Update and Destroy – Delete) operations on the main RightNow Primary Objects (e.g, Account, Asnwer, Contact, Incident, Opportunity and etc) as well as the custom object
2. Batching to improve the server processing time and reduce the number of API call
3. Procedural operations such as ExecuteMarketingFlow, GetFileData and SendMailingToContact
 
The feature that I personally like the most in the new web service is the RightNow Object Query Language (ROQL). This language is pretty similar to a SQL statement where it allows you to query the records of an object by just providing a simple query statement. For example:
Select Contact From Contact Where Emails.EmailList.Address = "andy@example.com"
This will return all contacts with the email address “andy@example.com”.
 
Of course ROQL is supported in the connector as well. You can always form a custom ROQL statement as mentioned in a previous blog post to have the desired result returned in your integration process.  I’ve used this feature extensively and really recommend it, Here’s a couple of projects where I’ve used this:
For some more info on how to use Dell Boomi to integrate with RightNow, check out this link http://www.boomi.com/solutions/rightnow.

ROQL for RightNow Integration

There are many applications that are creating their own query language namely:

  • ROQL in RightNow
  • SOQL in Salesforce
  • JQL in JIRA

This flexibility allows other integrated applications to perform SQL like queries and filter for specific records that need to be retrieved.

I came across ROQL recently while using the RightNow CX connector to integrate with other application. This connector is provisioned by Boomi. The following sample scenarios show the utilisation of ROQL using the RightNow CX connector. The filter parameter for using ROQL is identified as –RAW_QUERY.

Scenario #1 – Standard query:

Search against all RightNow contact emails if such email exist – andy@example.com

Implementation:
Form a RAW_QUERY using the following ROQL:

SELECT Distinct Contact FROM Contact WHERE ((Emails.EmailList.Address = “andy@example.com” AND Emails.EmailList.AddressType = 0) OR (Emails.EmailList.Address = “andy@example.com” AND Emails.EmailList.AddressType = 1) OR (Emails.EmailList.Address = “andy@example.com” AND Emails.EmailList.AddressType = 2))

Scenario #2 – Custom query:

Model: A custom object – Opportunity_Products is created as a child object to Opportunity and many-to-one relationship.Get all the opportunity product records that are associated with Opportunity ID=56862.

Implementation:
Form a RAW_QUERY using the following ROQL:SELECT Distinct CO.opportunity_products from CO.opportunity_products where oid=”56862″
For more detailed information on how ROQL can be implemented with other clients: