Category Archives: In The Lab

Wedid: Marketo and Infor (Formerly known as Saleslogix) Integration

Challenges

Customer uses Marketo to track incoming leads that would need to be converted to accounts and contacts respectively in their Infor CRM system. The customer would also like to track all field changes and/or activities that occur in Marketo into Infor as the contact related activities, as well as other custom records being tracked in Marketo at the moment.

Solution:

Purpose To ensure leads and their respective related records from Marketo are in-sync between Contact in their Infor system.
Applications Marketo
Infor
Tool Boomi
Information Marketo Lead > Infor Account/Contact
Infor Account/Contact > Marketo Lead
Marketo Activities > Infor Activities (Custom)
Infor Notes Histories (Custom) > Marketo Notes History (Custom)
Data Formats JSON
Volumes ~100 – 300/day
Process When a new lead is registered in Marketo, the lead record will be in return synced into Infor as Contact with the lead’s company being the Infor account record.
However, when a new contact is created or a contact record is updated in Infor, the information would need to be synced to Marketo as well.
For every change in Marketo Lead (Activities), these trails will need to be synced into Infor as well. Some additional information tracked in Infor (custom object records), needs to be created and tracked in Marketo too.
Schedule ~ 5 minutes
Complexity Medium

Wedid: ActionHRM and Kallidus Integration

Challenges

Customer is tracking employees information through ActionHRM (A Human Resource Management System). These employees need to be tracked as a student record in their Kallidus system (being a student and learning management system) too.

Solution:

Purpose To ensure student records in Kallidus system is up to date from the ActionHRM employee records
Applications Sharefile (FTP)
ActionHRM
Kallidus
Versions Sharefile (FTP)
ActionHRM
Kallidus
Tool Boomi
Information Sharefile (CSV) > (Query) ActionHRM Employees > (CSV) Kallidus
Data Formats CSV and JSON
Volumes ~10/day
Process A set of qualified employees Id will be listed in csv format and to be uploaded to an FTP server. The integration process in return query for the employees details using ActionHRM API to produce student information in csv format for Kallidus to process.
Schedule Daily
Complexity Medium

Boomi: Debugging low latency mode processes

You may have processes (especially web service listener type processes) that are configured with low latency mode plus the option “Only Generate Process Log on Error” enabled. This would make it difficult sometimes to troubleshoot or review the Boomi process logs as it would not show up in the process log not unless it is an error process.

One way to debug/troubleshoot your process is to add the parameter _boomi_debug=true on the endpoint URL while executing the specific process and the specific request will be printed on Boomi logs.

For example:

https://test.connect.boomi.com/ws/simple/executeMyAPI?_boomi_debug=true

For further details please see: http://help.boomi.com/atomsphere/GUID-9DBB4927-E4FA-40F7-9A3C-077063E1AE7F.html

Boomi: Handling Additional Parameters when extending OAuth 2 details

Boomi allows extending OAuth 2 details for example in a HTTP Client Connector.

http_extension

When defining the connection details in the development mode, you are allow to build the Authorization and Access Token URL with additional parameters via the “Add Authorization Parameter” and “Add Access Token Parameter” section:

additional_params

There is no way to extend the additional parameters portion as of today.

An alternative approach is to consider building the parameters directly through the “Authorization Token URL” and “Access Token URL” directly instead.

For example: ${the_authorization_url}?response_type=code&resource=……

In this case, you can then overwrite the parameters through the “OAuth2 Authorization Token URL” and “OAuth2 Access Token URL” in the extension.

This is something to be considered when you are planning to extend the OAuth 2 details for a connector.

Boomi Connector: Using JSON Schema

In the latest Boomi connector SDK, you can now write a custom connector to work with JSON profile instead of using the convention XML profile. So how to do this?

Let’s take the following JSON schema as an example:

{  
   "$schema":"http://json-schema.org/draft-04/schema#",
   "title":"Product set",
   "type":"array",
   "items":{  
      "title":"Product",
      "type":"object",
      "properties":{  
         "id":{  
            "description":"The unique identifier for a product",
            "type":"number"
         },
         "name":{  
            "type":"string"
         },
         "price":{  
            "type":"number",
            "minimum":0,
            "exclusiveMinimum":true
         }
      }
   }
}

The main object element in the JSON schema is “item”. In the connector browser, we just need to declare “item” as the element name (or they call in pointer in the connector) and specify the input and output type as below:

ObjectDefinition objDef = new ObjectDefinition();
objDef.setElementName("/" + elementName);
objDef.setInputType(ContentType.JSON);
objDef.setOutputType(ContentType.JSON);

objDef.setJsonSchema(jsonStr);

That’s all! Happy coding 😀

Boomi Tips: Retrying Error Document for Sub Process

In Boomi, we often design the integration process to run in a serial mode by having a Parent process that invokes Sub process.

Parent Process

This is really helpful if we have a business flow which we need to make sure that the parent record (e.g, Customer) is synced into the target system before the related record (e.g, Sales Order) is being synced. However, this design is not that handy when it comes to retrying error document. As you all know that Boomi allows you to retry an error document in the Process Monitoring console. This only works for the document that is related to the Boomi process that is attached to an environment directly and deployed.

As a workaround, you will need to attach and deploy the related Sub process to an environment and just let it sit there without having any scheduler.

Boomi: Query Marketo Leads by Static List

In Boomi Marketo connector, you can query a list of leads by using the static list which gives you the option of either using:

1. Static List Name
2. Static List Id

staticlist

Static List Name
You can do this by simply providing the name of the List that you have created in Marketo. However, if the list is created under a campaign, you have to provide the name of the campaign and the list. For example:

staticlist2

if you have the setup as shown in the screenshot above, the name that you should provide is “Campaigns for Activity Extract.Leads with Web Visits”.

Static List id
If you would like to use the list Id, you can retrieve the Id:
– click on the list
– look at the URL in browser
– retrieve the number between ST and A1

For example: https://app-abd.marketo.com/#ST1234A1, the Id for the list would be 1234.

Boomi Tips: HTTP Operation Response Header

In the latest release, Boomi has included a very important feature in the HTTP connector. The HTTP operation can now capture the value of the response header and store it into a dynamic document properties. This is very useful as some of the applications require a certain cookie value returned in the first call to be used in the subsequent call.

To use this feature, you just need to:
1. edit a HTTP operation
2. scroll to Response Headers Mapping
3. add the specific response header that you want to capture

response_header

For more information, please refer to the official documentation.

Boomi – System Command Shape Tips

Last time, we discussed about the usage of Program Command shape in Boomi. The shape is very useful especially it allows us to invoke a system command/shell script from a Boomi process. However, did you know that the shape will use the system command exit code to determine the status?

0 – success
1 – fail

This will not work correctly if you want to execute a system command that has different exit code than the standard one.

For example, the Robocopy in Windows uses different exit code (e.g, 1) other than 0 to indicate a success copy operation. This will cause an error execution in Boomi. To overcome this, you can write a system command script to alter the exit code to make it compatible with Boomi Program Command shape:

ehco off
robocopy D:from D:to filetocopy.txt /is
IF %ERRORLEVEL% EQU 1 (
exit 0
) ELSE IF %ERRORLEVEL% EQU 0 (
exit 0
) ELSE (
exit 1
)