Boomi: Application Response Profile

There is a flag in most of the Boomi connector send operation called “Return Application Error Responses”. If this checkbox is checked, Boomi will return you the Error Document (e.g in XML format – depending on the target application) as a response so that you can have do additional error handling logic after the send operation. Please see Figure 1 for an example.

response_1
Figure 1: Sample process flow

However, not every connector will have the response profile generated automatically during the import. For example, if you look at the Web Service SOAP Client connector, it will generate 2 profiles: Request Profile and Response Profile automatically during the import. But, for a connector like Salesforce, it will only have the Request Profile. So, how can we get the Response Profile? One easy way is to:

  1. run the process in test mode
  2. retrieve the shape source data by clicking on the shape (e.g, in the example above, it will be success decision shape) after the send operation
  3. save the data into a text editor
  4. create a new profile in Boomi and import the saved text file as the profile schema

Tada! Now you can use the newly created profile as the Response Profile for the connector send operation.

Boomi: How to Post Form URL Encoded Request

In integration, sometimes I will encounter a situation whereby I need to post a data to a HTTP endpoint as a query string in the URL. However, this will not work correctly if the data string is too long (there is limit in the length of HTTP request URL). To get around this, I have to post the data as a form. Here, I’m going to show you how you can do this in Boomi:

1. write a custom scripting in a Data Process shape to encode the data (java.net.URLEncoder)
2. use a message shape to construct the param and set the current data (URL encoded in Step 1) as the value
formpost_3

3. set the HTTP Post Operation content type as “application/x-www-form-urlencoded”
formpost_2

This will be the final outcome:
formpost_1

The last thing that you will need to do is to run the process.

Wedid:Partner Community for Sales & Marketing Agency

Challenges

This agency helps their partners to market their products to hypermart. The challenges they have are:

  • The agency sales rep needs to keep track of the historical purchase for each hypermart. They are unable to share this information with their partners.
  • When the agency sales rep receives an order from hypermart, they will need to place an order to their partners. This is currently done via phone call.
  • The agency sales rep should also monitor the shipment of the purchase to hypermart. It is tracked in a spreadsheet.
  • The communication between 3 parties are all in email/fax format. It is time consuming to consolidate them.

Solutions:

Salesforce Partner Community via the following setup:

  • The partners can login and access to their Salesforce with restricted access to their own data.
  • The partners can view all new/historical sales from different hypermart
  • All communication (email/call) is tracked using Salesforce activities
  • The full life cycle from Lead > Sales > Shipment is tracked in Salesforce. This process is also visible to the partners.
Related Objects Opportunities, Shipment, Order
Components Partner Community, Report, Dashboard
Complexity Medium

Boomi: Query Operation in Batch Results

Some connectors (ex. Salesforce, Netsuite, etc.) can be configured to retrieve the data in either per document or in a batch results.

Default_Profile

 

 

 

 

 

 

 

 

‘Batch Results’ is batching all result documents into a single list document. There is one important note to take to get a successful list document. After you have done with the profile import, the imported profile (see attached screenshot) is only able to store single document data and not the documents in the list.

If you are getting the data into Map transformation step, you will need to a create a custom ‘list’ XML profile to pass through the data. If not, you will get the “No data produced from map…” error.

List_Profile

 

To do is to manually create a new ‘list’ XML profile. Basically is to move all the elements of the onto one level lower (as shown below) and set the ‘Max Occurs’ of the second level Element to ‘unbounded’.

Batch_Result

Salesforce Report Scheduler

Scenario: When a customer requests to receive a report daily or weekly without having to login to Salesforce.

Salesforce user can schedule reports to be automatically sent as a html email on preferred time. [More info here]

Setting up schedule report

schedule report

Red Box: Button will only show if report is already in the scheduled list.

Green Box: Send report to receipient.

Purple Box: Schedule date and time.

 

Scheduling Time

There is only 3 options available and this CAN NOT be changed. Salesforce advises to schedule report off peak hours of local time. [Source here]

analytic report

To monitor all scheduled reports, go to Setup | Monitoring | Scheduled Jobs.

Emailed Report

When it is time, Salesforce will send the report to receipient’s email. This is how it looks like:

report schedule2

Note

Bare in mind that:
- Reports with types of Joined CAN NOT be scheduled.
- Report charts are not included in email (Solution is to create chart as dashboard and schedule dashboard refresh)
- Reports with table more than 22″ wide or more than 63 columns might not be able to display prperly in Outlook 2007.
- Emailed reports has a maximum size of 10MB.

For more information, click here.

 

 

 

Boomi: Boomi Sub-Process Error Reporting Behavior

In this blog, we will look at how Boomi handle an error execution of a sub process and how it affects the parent process. Let’s separate this into 2 categories: Synchronous and Asynchronous Execution

Synchronous Process
Data Passthrough
As we all know that a Data Passthrough sub process will accepts the document from the parent process. In this, if there document failed in the sub process, it will also stop the parent process with error regardless of the “Abort if process fails” option.

No Data/Connector Call
If the “Abort if process fails” option is enabled, the sub process will fail with error. The parent process will also failed with error and it will stop at the process call shape (where the sub process is being called). However, if the “Abort if process fails” option is disabled, only the sub process will be error-ed.

async_error_2
Figure 1: Error Log for Synchronous Process

Asynchronous Process
Data Passthrough
This is not supported in asynchronous execution

No Data/Connector Call
If the “Abort if process fails” option is enabled, the sub process will fail with error and this will be reported back to the parent process. And, the parent process will be flagged as error only after the parent process has finished executed all the process paths. Please see Figure 2 for the sample error logs.

async_error_1
Figure 2: Error log for Asynchronous Process

Boomi: Asynchronous Process Call

Boomi allows you to invoke a child process from a parent process by using the Process Call shape. By default, the sub process call will be invoked in a synchronous manner. However, do you know that you can change it to become asynchronous manner?

To achieve this, you will just need to un-check the “Wait for process to complete?” checkbox in the Process Call shape properties.
async_1
Figure 1: Process Call Properties

If you look at the sample that we have below, you can see that both Flow Test – Child 1 and Flow Test – Child 2 are executed at the same time.

async_2
Figure 2: Flow Test – Child 1 execution log

async_3
Figure 3: Flow Test – Child 2 execution log

So, what’s the benefits of using asynchronous process call?

  1. Executes a series of sub-processes without depending on each other (this could save your time too)
  2. The failure on one sub-process will not affect the execution of the other sub-process
  3. The failure of the sub-processes will not affect the other execution path of the parent process

Boomi: Boomi Sub-Process Call Execution Behavior

In one of the previous post, we talked about the option of enabling a Boomi sub process call to be executed in a asynchronous manner. However, do you know that this is actually also depending on the Start Shape Option of the sub process?

Start Shape Option Support Synchronous Execution Support Asynchronous Execution
Data Passthrough Yes No
No Data Yes Yes
Connector Call Yes Yes

 

Salesforce Activity WhatID & WhoID

Scenario: Migrating data into activity task or event.

Creating a task or event from front end, we are able to specify that this activity belongs to who or what account. ie:

Activity2

How to bulk load activity with relationship?

In the data loader field mapping, you will be able to see two fields:

activity

These two fields are used to determine the ‘Name’ and ‘Related To’ field in task or event. So how do we map them?

  • whatId = Account, Opportunity, Campaign, Case, or custom object
  • whoId = Contact or Lead

Note: If whoId is related to lead, Salesforce does not allow the whatId field to contain any value.

activity3

For more information, refer here.

! Upsert whatId & whoId using Object External ID is not applicable.