Tuesday, May 24, 2011

Implementing Oracle B2B 11g as a Hub


It has been discussed a number of times on OTN Oracle B2BForum that how Oracle B2B can be used as a HUB but there was no out-of-box solution available in 10g release. Understanding the importance of this requirement, Oracle B2B Product Development team have come up with an out-of-box solution in Oracle B2B 11gR1. Now Oracle B2B 11g can act as a hub without any additional configuration. In this blog post I will walk you through that how Oracle B2B 11g can be implemented as a hub and how actually it works.

In this example implementation, I will use three trading partners –
a)      OracleServices – This is the host trading partner and it will act as a hub
b)      MarketInc – This TP will send HL7 ADT_A01 document to a trading partner RetailInc through trading partner OracleServices
c)       RetailInc – This TP will receive the HL7 ADT_A01 document sent by MarketInc through OracleServices

So actually the message flow, which we will be implementing in this blog is –

MarketInc  <--- ADT_A01 ----> OracleServices (HUB) <--- ADT_A01 ----> RetailInc

Though the above flow demonstrates that MarketInc is sending the ADT to OracleServices but actually in it’s technical implementation, MarketInc will assume that flow is like –

MarketInc <----------------> RetailInc

So at MarketInc’s B2B server, the agreement(s) will be configured between MarketInc and RetailInc but channel location will be the one on which OracleServices B2B is listening for messages from partners.

Now to start with implementation, first of all create the HL7 document on Oracle B2B console –




As you can see in above picture, I have created two document definitions –

  1. ADT_A01_Def
  2. ACK_A01-Def
There is no specific configuration required in document definition creation. It is same as what you do while creating document for one-to-one communication.

After creating document, let’s configure the trading partners. Go to the “Documents” tab of remote TP “MarketInc” and add the created document definitions as below -



As you can see, we have configured MarketInc as sender of ADT and receiver of ACK. Similarly, configure RetailInc  as receiver of ADT and sender of ACK –



Now after adding documents, configure the channels and add the identifiers in trading partner profiles. Again it is a common task so I am not showing it up here.

Now we will configure the agreements. First of all configure two agreements with MarketInc, each for ADT (Inbound) and ACK (Outbound). Then similarly configure two agreements with RetailInc, each for ADT (Outbound) and ACK (Inbound).






Once agreements are created, just save, validate and deploy those. Now you are ready to test your configuration.


To start and test the message flow, drop an ADT_A01 message into external listening channel directory of OracleServices. Once it gets removed from there just go to Oracle B2B reports and verify that –


  1. Incoming ADT from MarketInc has been processed successfully
  2. An ACK for incoming ADT has been posted back to MarketInc
  3. The same ADT has been passed to RetailInc
Note :- If RetailInc is also configured then you may see an ACK back from RetailInc as well.

 
So now you are done with implementation. 


How exactly it works: It just tries to identify the intended recipient (ToTP) for the incoming message. If it is not the host trading partner for which the message has been sent then it just tries to find an outbound agreement with intended recipient and if found one, then it posts the same message to that TP. 

You may download the configuration which I created for this example implementation, from here.  Make sure to change the channel end-point configuration if you are using this configuration. You can also download the sample ADT message which I used to start and test the message flow, from here.

Now go ahead and experiment more with it. If you have any queries related to this implementation, please feel free to post them in OTN Oracle B2B forum.