Skip to Content
Author's profile photo Sujit Hemachandran

Blog 5: Content Enricher Pattern in Integration Flows

Hello Integration Community !

 

In this blog, I shall explain the content-enricher pattern of SAP Cloud Platform Integration (f.k.a HCI) and how you can use it in your integration project.

 

What is the Content Enricher Pattern?

 

From the definition of Enterprise Integration Patterns, a content enricher accesses an external data source in order to augment a message with missing information.

 

Let’s take an example from the HR domain. In the SuccessFactors(SFSF) suite, we can obtain information on employee object entity.I get the job location code from the results. But, I want to send the complete job location and not just the job code and the job location is stored in a different entity. So, I enrich my data with the job location using a content enricher step.

 

Likewise, one system may provide us with a order ID, but the receiving system actually requires the associated customer ID associated with that order.

Content enricher is a very common integration pattern.

 

How to Use the Content Enricher?

 

In SAP Cloud Platform Integration, content enricher is available as a Service Task.

ServiceCall.JPG SwitchtoContentEnricher.JPG

 

We shall take the following integration flow as an example:

Integration_flow_pattern.JPG

The first call to SFSF shall return the compound employee data. This is how the data looks:

 

 

 

CompoundEmployee.JPG

 

We are interested in enriching the job information. So, let us take an expanded look into it. In the expanded view, take a closer look at the location field. We are interested in enriching that particular field with the exact address details.

 

/wp-content/uploads/2015/01/jobinfo_625994.png

So, to achieve our purpose we shall use the Content Enricher step with the following configuration.

enrich_property.JPG

The Lookup message depends on the address location entity.The entity to which you are querying. So, the final output or the enriched output shall look like the one below.

FO_Location.JPG

 

Note: Content Enricher also has another option – Combine. That is a very simple logic of combing the two elements. Employee information and Job information query results are combined together into one entity. For fun, for the same objects we saw above – the result looks like this:

Combine.JPG

 

Conclusion

 

In the current version, the Content Enricher step works well with SuccessFactors system. For SOAP-based scenarios, the entire payload goes to the sending look-up system. If you do not want the entire data to go, you would have to employ the data store step and the content modifier step.

 

Best Regards,

Sujit

Assigned Tags

      10 Comments
      You must be Logged on to comment or reply to a post.
      Author's profile photo Mark Bernabe
      Mark Bernabe

      Hi Sujit,

      I'm wondering how the iFlow sends the request message to FO_location.

      Author's profile photo Bakau Onafuwa
      Bakau Onafuwa

      Hi Sujit,

      Thanks for the blog.

      Do kindly provide some insights into how we can optimize the "Lookups" or "Request-Reply" or "Content Enrichment" calls during the processing of huge outbound message payloads in HCI environments; we are able to handle this challenge easily in the SAP PI/PO environments by employing UDFs.

      We are proposing to implement HasMap functionalities in scripts that should be executed only once irrespective of the number of outbound records; the HashMaps now serve as data caches for subsequent access instead of the very expensive and repeated calls......

      What are your thoughts?

      Author's profile photo Nimrod Gisis
      Nimrod Gisis

      Well written.

      Author's profile photo Ying Heng Tan
      Ying Heng Tan

      Hi Sujit,

      Thanks for the blog.

      But I have one question.

      If we have multiple Key Element to merge up 2 messages. Can the Content Enricher allow us to do that?

      I have opened a discussion for this topic and inside have some test data and expected result. Do you have any idea on this?

      HCI: Is Content Enricher allow 2 Key Elements?

      Author's profile photo Netrey Powdwal
      Netrey Powdwal

      Hi Ying Heng Tan,

       

      Did you find solution to this? The link you've given here is broken. Please let me know how you achieved your requirement?

       

      Regards,

      Netrey

       

      Author's profile photo Former Member
      Former Member

      Hi Sujith,
      after doing same, i am not getting enriched data in location field, ithink some going my side in Fo_Location model configuration. So

      Can you add Fo_location model configuration in this blog, than can be helpful as i am not getting enriched data in location as i am confused which element i should use to get look up data while configuring Sf Fo_location channel.

      Regards
      Uma Sairam

      Author's profile photo Arpna Kaul
      Arpna Kaul

      Hi Sujith,

       

      I am sending the content enricher’s output as input to message mapping. In this case, do I need to create separate xsd file or enter two source  elements in mapping?How can we get content enricher’s output file xsd format ?

      Thanks,

      Arpna Kaul

      Author's profile photo Alexey Dmitriev
      Alexey Dmitriev

      Hi Sujith,

      did u manage to get xsd with enriched data?

      Author's profile photo Marc Frenay
      Marc Frenay

      Hello,

      Thx for this blog.

      Sorry but I don't understand how we know what value to put on the lookup message...

      Is someone can explain me ? I'm new in HCI world 🙂

      Thx

      Author's profile photo Skugan Venkatesan
      Skugan Venkatesan

      I also have the same question as Marc Frenay. The important difference is that the "Arrow" In request-reply, the arrow was from Request-reply to the receiver. But in content enricher it is the vice-versa.

      My first question

      Why the arrow is towards content enricher but for request - response it is the other war round

      My second question

      How does the OData understands, For example: this is the Order ID for which I have to enrich the data.

      Would be good if anyone could explain this

      Regards,

      Skugan V