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.
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:
- run the process in test mode
- 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
- save the data into a text editor
- 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.
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
3. set the HTTP Post Operation content type as “application/x-www-form-urlencoded”
This will be the final outcome:
The last thing that you will need to do is to run the process.
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.
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.
||Opportunities, Shipment, Order
||Partner Community, Report, Dashboard
Some connectors (ex. Salesforce, Netsuite, etc.) can be configured to retrieve the data in either per document or in a batch results.
‘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.
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’.
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
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.
Figure 1: Error Log for Synchronous Process
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.
Figure 2: Error log for Asynchronous Process
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.
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.
Figure 2: Flow Test – Child 1 execution log
Figure 3: Flow Test – Child 2 execution log
So, what’s the benefits of using asynchronous process call?
- Executes a series of sub-processes without depending on each other (this could save your time too)
- The failure on one sub-process will not affect the execution of the other sub-process
- The failure of the sub-processes will not affect the other execution path of the parent process
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
Here’s an idea on what is Salesforce to Salesforce and how to set it up.
Basically S2S allows us to sync object to object. But what happens when it comes to person account?
Scenario: An instance with Person Account tries to sync over to an instance without Person Account or vice versa. (Enterprise Edition & Professional Edition)
For 1 and 3 : One consumer record in EE will be created as Two records in PE. For example: If I have a PersonAccount: John Doe (EE), I will end up with an Account: John Doe and a Contact: John Doe.
For 2 and 4 : Not supported
For 5 and 6 : Not supported
Information on other supported object, link here
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:
How to bulk load activity with relationship?
In the data loader field mapping, you will be able to see two fields:
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.
For more information, refer here.
! Upsert whatId & whoId using Object External ID is not applicable.