Print Page

Tuesday, December 15, 2009

Notification mechanism for MDN/FA time out

How would you build a notification mechanism for when you do not receive the MDN or FA from the trading partner ?

It can be achieved as below :

MDN :

It is possible to enable the Retry by specifying Retry count/Interval for every messages, B2B time out the message after Interval+ Retrycount*interval and set the status of the message to ERROR and also sends a Error/Exception message to the Error Queue with B2BERRORUSER. Monitor the Error queue and send an Email notification based on Error code AIP-50903 for Timed out MDN.

FA :

Set the Overdue Acknowledgment feature to identify the timeout and send an Error/Exception to the Error Queue.

http://www.b2bgurus.com/2008/12/overdue-acknowledgements-identify-and.html

It is possible to monitor the Error queue and send an Email notification based on Error code AIP-50008 for Timed out FA.

Thursday, October 29, 2009

850 - 997 mapping for a invalid Business message

There will be a situation where lots of Purchase Orders would be sent across to the trading partner and every message would receive a functional acknowledgment back and sent to the back end application. Incase of few of the -ve functional acknowledgment being received, indicating that the original business was invalid also resulting in an exception being raised with the details of the associated business message which do not have any reference to the source of exception.


Oracle AS B2B, 10.1.2.3 MLR13 release provides an option to get the associated -ve functional acknowledgment while a exception message is retrieved from the queue.

This is achieved by enabling the tip.property oracle.tip.adapter.b2b.addCorrelatedFAInfoInExceptionXML=true

By default, the value will be false, to enable the existing users to have a seemless flow of message exchange.

The modified xsd is:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://integration.oracle.com/B2B/Exception" targetNamespace="http://integration.oracle.com/B2B/Exception">

<xs:element name="Exception">
<!--xs:complexType name="Exception"-->
<xs:complexType>
<xs:sequence>
<xs:element ref="correlationId"/>
<xs:element ref="b2bMessageId"/>
<xs:element ref="errorCode"/>
<xs:element ref="errorText"/>
<xs:element ref="errorDescription"/>
<xs:element ref="errorSeverity"/>
<xs:element ref="errorDetails" minOccurs="0" />
<xs:element ref="CorrelatedFAInfo" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>

<xs:element name="correlationId" type="xs:string"/>
<xs:element name="b2bMessageId" type="xs:string"/>
<xs:element name="errorCode" type="xs:string"/>
<xs:element name="errorText" type="xs:string"/>
<xs:element name="errorDescription" type="xs:string"/>
<xs:element name="errorSeverity" type="xs:string"/>
<xs:element name="errorDetails">
<xs:complexType>
<xs:sequence>
<xs:element ref="parameter" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="parameter">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required" />
<xs:attribute name="value" type="xs:string" use="required" />
</xs:complexType>
</xs:element>

<xs:element name="CorrelatedFAInfo">
<!--xs:complexType name="CorrelatedFAInfo"-->
<xs:complexType>
<xs:sequence>
<xs:element ref="faB2BMessageId"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="faB2BMessageId" type="xs:string"/>

</xs:schema>

Wednesday, October 7, 2009

Oracle Open World -2009 B2B Booth and Demoes

Guys, I am back again with information on Oracle Open World -2009 B2B Booth and Demoes.

Demo Booth

Area: Middleware
Location: W-101
Times Monday - Wednesday
Title: Oracle SOA Suite: The Gateway Component
__________________________________________________________________________

Title1: B2B Migration from Oracle SOA Suite 10g to Oracle SOA Suite 11g
Session: S309297
Date: Sunday 11-Oct-2009
Time: 13:15-14:15
Location: Hilton Hotel - Yosemite A
Presenters:

Sean Carey: SPS Commerce
Shub Lahiri: Oracle 'A' team
Cliff Wright: Oracle 'A' Team
Jeffrey Hutchins: Oracle SOA Product Management

Abstract:

Oracle's B2B solutions, a component of Oracle SOA Suite 11g Release 1, have undergone a major change from the last release of Oracle SOA Suite 10g (Release 10.1.2). In this session, learn the details of a real-life migration effort to move existing B2B configuration data from the old release to the new one and learn tips and tricks with best practices for making this transition effort smooth and efficient. The session discusses, among other use cases, field experiences from one of the premier customers of Oracle's B2B solutions, SPS Commerce, which has one of the most complex B2B configuration repositories for migration.

_____________________________________________________________________________

Title2: In the Current Economic Conditions, Why Are B2B Projects Increasing?

Session: S309293
Date: Monday 12-Oct-2009
Time: 17:30-18:30
Location: Moscone South - Room 304
Presenters:

Victoria Whitlock: Independent Consultant, SME in Ecommerce
Jeffrey Hutchins: Oracle Product Management

It's all about reducing cost: B2B represents classic business processes, mature business documents, and industry-tempered exchanges. Automation of core processes can reduce support, error, and inventory costs. B2B requires tighter relationships and alignment between business, IT, and partners, and the financial benefit goes far beyond integration. It requires a unified business process platform, end-to-end instance tracking, visibility and auditing, integrated process intelligence, process and service governance, and consolidated security. Oracle SOA Suite provides these features, and with Oracle B2B solutions, the platform is ready. This session uses customer use cases to illustrate how Oracle SOA Suite 11g can enable these business goals.

Dont miss this golden Opportunity...

Wednesday, July 1, 2009

Duplicate Elimination in EBMS

Uniqueness of a document in EBMS is maintained by the messageID and is referred by the ebMS header eb:MessageId

Outbound Flow

B2B always generates the unique message ID for all messages which do not have messageID from back end applicaton, for other messages, Back end application should ensure the uniqueness. Hence there is no challenge associated with
Duplicate Eliminataion for outbound flow.


Inbound Flow


Depending on the tip.property

oracle.tip.adapter.b2b.checkDuplicate= true

it is possible to eliminate the duplicate messages. This logic currently works only for EBMS and based on MessageId.

Wednesday, June 10, 2009

Custom Exception Queue

Custom Exception Queue

Oracle B2B enque the exception messages to IP_IN_QUEUE with user as B2BERRORUSER and is always fixed. This feature allows the users to configure a custom queue to receive the Exception messages. For e.g: if the communication mechanism with backend application is JMS, using the default IP_IN_QUEUE, with B2BERRORUSER might not be a feasible option.

Configuring the following tip.properties can enable this feature

oracle.tip.adapter.b2b.CustomExceptionChannel=[Internal Delivery channel name]

Note:

  1. This internal delivery channel can be configured against JMS queue and it need not have to be part of any agreement.
  2. Part of MLR7

Thursday, May 21, 2009

Secure data exchange - Enterprise Architecture

Secure data exchange is an important part of an Enterprise business. This document analyzes few options that can be used in an Enterprise for exchanging sensitive data to external parties. This may be applicable for the sensitive data movement with in Enterprise (i.e., between internal systems).

Purpose

Customer to define their secure data exchange architectural model. The important pointto consider is that the data should not even visible at the middleware level, meaning it should not be logged at any case to file system, DB and/or to any persistence storage.

Please follow this link for complete document.

Wednesday, May 20, 2009

Message Prioritization – B2B

In some cases, many enterprises wish to process few critical messages ahead of the rest that arrived in Oracle B2B earlier. There may be several driving force behind this requirement, for an example, message from a specific trading partner. And, there may be much more instances but we are not going to go in detail here as this doesn’t fall under the scope of this document.

Enabling Prioritization:

Oracle B2B has been shipped with AQ queues namely IP_OUT_QUEUE and IP_IN_QUEUE. IP_OUT_QUEUE is used for sending outbound messages and the later used to deliver messages from Trading partner. Those queues can be changed to custom queues and/or other tranport endpoints if needed.

You may enable the prioritization in B2B using transactional transports like AQ and JMS. This applies to both inbound and outbound scenarios.

AQ queues:

You may redefine the IP_OUT_QUEUE to be priority aware queues. Messages that needs to sent ahead of other messages can have a higher priority. And, B2B would start picking up the messages based on priority of message send to AQ queue.

Even though default IP_OUT_QUEUE can be made priority aware queue, we would recommend customers to create custom priority aware queues and use it in agreement.

Please follow this link to create priority aware AQ queues creation script.

For inbound, if you are using AQ queues as partner facing channel, please create priority aware AQ queues and configure the same in agreement. This would enable B2B to operate messages based on their priority for inbound messages also.

JMS Queues:

JMS queues can be used for both inbound and outbound in B2B. By making the JMS queues as a priority aware, you can enable B2B to process messages based on their priority.

Please follow the link to create priority aware queues definition guide for Weblogic.

Note: Weblogic based queue setup is just shown as an example, Oracle B2B can be configured to operate with any standard JMS provider and/or vendor.

Friday, May 8, 2009

Best Practice for handling Large EDI document


There will be a scenario where a large EDI payload with multiple transactions need to be processed by B2B. Processing such a big number (say 10000 transactions - 1 edi payload) need s smart way of handling and passing to backend application.

During this process, the EDI Document processor will generate xml files for all the transaction sets and B2B Engine will process these messages.
By using the following tip.property, we can effectively manage the messages by using the optimised SQL Queries.

oracle.tip.adapter.b2b.edi.optIncomingReq=true


Monday, April 20, 2009

Friday, April 17, 2009

Sending HL7 Messages using MLLP

What is MLLP ?
The Minimal Lower Layer Protocol (MLLP) is the most common mechanism for exchanging the HL7 data. MLLP uses the TCP/IP protocol to transfer the data in continuous stream of bytes. MLLP delimiters is used to recognize the start and the end of message,

The structure of an MLLP message is given below
<SB> + <Message> + <EB> + <CR>

<SB> = Start Block. Messages are prefixed with start byte charcter <SB>
<Message> = HL7 Message
<EB> = End Block. Messages are terminated with end byte character <EB>
<CR> = Carriage Return.

Overriding HL7 MLLP delimiter in Oracle B2B
In Oracle B2B,these parameters are available as part of Document Exchange parameter.
MLLP parameter can be overridden as part of the endpoint configuration in the delivery channel. These values must be given in hexadecimal format.

Default hexadecimal values of MLLP delimiters are
<SB> = 0x0B (VT)
<EB> = 0x1C (FS)
<CR> =Carriage Return

Types of MLLP connection
There are two types of MLLP connection
1. Permanent Connection : In this case, only one connection is used to exchange all the messages between two endpoints.

2. Transient Connection : In this mode a new socket is created for each message. When a message is sent the sender waits for the ACK and once it is received socket is closed.

In Oracle B2B, the mode can be set in the transport protocol parameter in Delivery channel.

Wednesday, April 8, 2009

Filename Preserve Feature - Enhanced on MLR9

It has been enhanced and made available at the Delivery channel level. This feature ensures to preserve the filename of the payload while processing the message in B2B. Users can now configure this feature at the delivery channel level, using "Preserve Filename" attribute in transport parameter. The possible values are true/false, with the default value as false.

This applies to both outbound and inbound scenario, which uses File/FTP/SFTP transport protocols as external/internal delivery channels.

The tip.properties entry "oracle.tip.adapter.b2b.FilenamePreserve" is no longer needed.

Monday, April 6, 2009

Functional Acknowledgement in HL7 and how to override.

Functional Acknowledgement in HL7 are used to indicate a state of Accpetance by the Application layer. It can be used for sending the translation, validation status. Typical business message in HL7 is

MSH|^~\&|ACME APP|ACME FAC|GC APP|GC FAC|20050804162010||ADT^A01|13463138|P|2.3.1|||AL|AL|US|ASCII|ENG
PID|1||A0000010||TEST, Patient 01_10||20001001|F
PV1|1||||||||||||||||||10010


typical Acknowledgement in HL7 is

MSH|^~\&|app HL7|| ||20010508150310||MSA|567890|P|2.3|||

MSA|AE|12345678|Error


Functional Acknowledgement need to be configured in the Document layer. The flag isFunctionalAck required controls whether an FA is needed are not. Make sure to define a Document Type with the name and revision of ACK_A01/2.3.1(as that of business message) attached Business action in the agreement.

It is possible to override the "isFunctionalAck" flag by sending MSH.15 with following values.

AA - Application Accept
AE - Application Error
AR - Application Reject
CA - Commit Accept
CE - Commit Error
CR - Commit Reject


How to override MSH.15

OracleAS Integration B2B checks the payload (MSH.15) of an incoming message to check if an acknowledgment must be generated. However, in some HL7 systems, MSH.15 is not sent in the payload, although an acknowledgment is still expected to be sent. To enable OracleAS Integration B2B to handle this case, set the following flag in

tip.properties:
oracle.tip.adapter.b2b.hl7.acceptAcknowledgement=AL

When this flag is set, OracleAS Integration B2B uses the value, AL, as the value for MSH.15 in the payload.

Wednesday, March 4, 2009

JMS Delivery Channel Setup Guide & FAQ

Please follow this link for JMS Delivery Channel Setup guide.

FAQ

1. Where do i place my JMS providers binaries (jar files, example, weblogic.jar) in B2B so that it can connect to target JMS system?

opmn.xml, refer the guide for more details and sample configuration.

2. Getting classloading and/or version mismatch major/minor exception when connecting to other JMS providers?

B2B runs on top of JDK1.4, if your third party JMS binaries are compiled against higher versions of JDK you may have this error. Please have the binaries in classpath those are compatible with JDK1.4.

3. Why principals and credentials are always sent by B2B even if it is not configured in Delivery Channel Setup?
Just rename or remove the jndi.properties file under $ORACLE_HOME/ip/config and restart B2B, you should be good to go.

Please post your comments and/or other challenges in configuring JMS. We will add pointers in this post to address those challenges.

Tuesday, March 3, 2009

MLR8 - Post install

Users interested on FTP/File/SFTP please continue reading, others may opt to skip this. Heard from users that even after successful installation of MLR8, few transport specific features do not appear to be enabled in UI. If you encounter similar problem, please follow the below to resolve the same.

How to verify the new features of MLR8?

This patch would create transport parameters like "is VAN Mailbox" and "Clear Command Channel" etc., for FTP protocol. After successful installation of patch, if you are going to use any of MLR8 features and/or transport specific features of recent MLRs, please verify your FTP protocol by creating a FTP delivery channel. You should see the aforementioned parameters as part of "transport parameter" configuration.

If those are available, then you can configure B2B for FTP (CCC) and other FTP features of MLR8.

Resolution

If those parameter are not available, you could create the same by yourself by following the steps below.

1. Run setenv.bat/setenv.sh under $ORACLE_HOME/ip/install
2. Shutdown B2B midtier - "opmnctl shutdown"
3. Go to patch exploded directory, "cd /files/ip/config/"
4. run the command to create the transport seed parameter - "java oracle.tip.adapter.b2b.data.B2BTransportParamSeed tpp.properties"

You are good to go now, #4, would see that the transport features of patch "MLR8 and earlier" also get seeded so that you could consume those.

Monday, March 2, 2009

VAN FTP

Introduction

Value added network is typically a paid service to exchange the data between Trading partner. Traditionally most of the VAN cases are for transmitting EDI document, however it can also be used for exchanging XML or any proprietary document.

VAN gives additional functionalities such as

1. Leased dedicated network to exchange data in a secure way.
2. Translation,Validation, transformation and lookup.
3. Auditing capability.
4. Data synchronization service.
5. Variety of Transport offering.
6. Advanced notification and Web Interface.
7. It may also have few industry standard service like FTP, FTPS, SFTP (SSH FTP), HTTP and HTTPS etc for message exchange.

B2B Configuration

B2B can be configured to exchange files to VAN (Value added Network) FTP interface. The configuration is as same as simple FTP delivery channel configuration.

If the VAN provider exposes FTP interface as a mailbox, meaning, the path to transfer file may not be in-line with regular FTP.

For example, a regular FTP, may have path lik "/tmp/outbound/" and "/tmp/inbound/". Some, VAN providers FTP interface, may have path like "inbound/" and "outbound/" and there cannot be a directory under a directory. This is referred as a mailbox as opposed to folder or directory in FTP.

To cater for the later case mentioned above, you may have to enable "is VAN Mailbox" transport parameter in FTP delivery channel by providing "true".

Other configuration remain same for any FTP endpoint.

contributors of this post: Ramesh and Sinkar

MLR8 - Oracle B2B 10.1.2.3 transport features

  • VAN mailbox support
  • FTP "CCC" command support
VAN Mailbox Support

Supported Proctols: FTP

  1. The support has been provided in B2B for wide range of VAN implementation that includes FTP based mailbox implementation in addition to regular FTP interface on VAN.
Clear Command Channel ("CCC") Support

Supported Proctols: FTP

  1. The "CCC" support enables B2B to authenticate the channel over SSL on FTP and exchange other commands on plain socket for control communication.
  2. This can be enabled at the delivery channel level.
The SSL based communications are relatively slower than the data transmission on plain channel. This feature helps customers to increase the performance of B2B FTP interface without compromising on the security part. Enabling, this feature makes B2B to exchange "password" over secured channel and rest of the ftp commands on plain channel (socket) on the same connection. Technically, B2B swaps the underlying connection to secure and non-secure and vice-versa as needed.

Transport Features - MLR7 - Oracle B2B 10.1.2.3

  • File/FTP/SFTP - Archive feature
  • File/FTP/SFTP - Marker Support
  • File/FTP/SFTP - File name preserve
  • FTP - Binary transfer type
  • SFTP Delivery Channel Configuration - Masked pass phrase
  • FTP - List and process in the same session
  • SFTP HA Mode - Closes in-active instance connections
  • Custom Exception Queue
Archive Feature

Supported Protocols: File, FTP and SFTP

  1. Enables the users to archive the files that are being processed by Oracle AS B2B
  2. Configurable feature in UI as part of Delivery channel configuration with absolute path of the directory where to archive the files.
Marker Support

Supported Protocols: File, FTP and SFTP

  1. This feature indicates successful processing of a particular message
  2. Once a message is processed, "0" byte file with same name gets created in the same folder
  3. Configurable feature in UI as part of Delivery channel configuration with the value of true/false
File name preserve

Supported Protocols: File, FTP and SFTP

  1. Incase of inbound, the incoming filename will be retained in B2B and handed over to backend application .
  2. Incase of outbound, the filename provided by backend application is retained while message processing and sent across to the trading partner.
  3. To enable this feature, please set the property "oracle.tip.adapter.b2b.FilenamePreserve=true" in tip.properties. The default value is false .

Binary Transfer

Supported Protocols: FTP

  1. There are two modes for file transfer, "ascii" and "binary"
  2. Selectively use the transfer modes for different delivery channel
  3. The Default transfer type is ascii

PassPhrase Mask - Private Key

Supported Protocols: SFTP

  1. Private key passphrase is masked in B2B delivery channel configuration
List and process in the same session

Supported Protocols: File, FTP and SFTP

  1. Some of the FTP servers (like ConnectEnterprise) have the mechanism of changing the alias name on a regular basis for the same file, so the file becomes non-existant for reading if the read and processing is in different session.
  2. Connect and read the files in a single connection, thereby reading all the files in a single session.
  3. When the cache connection is set to false, the B2B will connect and, read using different FTP Connections
SFTP HA Mode

Supported Protocols: SFTP

  1. While in High Available environment, it is important to close the connections on the inactive instances.
  2. B2B Engine closes the inactive instances to SFTP server appropriately .
Custom Exception Queue

Oracle B2B enque the exception messages to IP_IN_QUEUE with user as B2BERRORUSER and is always fixed. This feature allows the users to configure a custom queue to receive the Exception messages.

For e.g: if the communication mechanism with backend application is JMS, using the default IP_IN_QUEUE, with B2BERRORUSER might not be a feasible option.

Configuring the following tip.property can enable this feature

oracle.tip.adapter.b2b.CustomExceptionChannel=[internal delivery channel]

Tuesday, February 10, 2009

Insight into HL7 Acknowledgement and Generic Acknowledgement

Acknowledgement in HL7 with out Trigger Event and How to enable it.

Every message has a message type and a Trigger event. Message type defines the purpose of the message and the Trigger event results in creation of one or more messages.

e.g

When the patient is admitted to hospital sending a HL7 Admit Patient message (HL7 ADT:A01)
When the patient is transferred from one ward to another sending a HL7 Transfer message (HL7 ADT:A02)

ADT message is used to transmit the Patient Administration information from hospital to pharmacy. Typically this information is broadcasted from hospital to pharmacy, lab, admin section.

A01 - Admit patient only.
A02 - Transfer patient


Combination of message type and Trigger event refers to a specific message type is sent for a specific activity. A message type may be associated with more than one event.

HL7 Acknowledgement -

Recipient sent the below acknowledgement code depending on the outcome of processing business message

AA Application Accept
AE Application Error
AR Application Reject

Recipient check the message type(msh.9), version ID (msh.12) and processing ID(msh.11), if any of these are not acceptable it should send a acknowledgement message with msa.1 having value AR. For improper message format, missing required filed, it sends the value AE. For all other error recipient sends AR.

ADT Message

MSH|^~\&|ACME APP|ACME FAC|GC APP|GC FAC|20050804162010||ADT^A01|13463136|P|2.3.1|||AL|AL|US|ASCII|ENG
EVN|A01|199901061000|199901101400|01||199901061000
PID|1||191919^MCM~371-66-9256|253763|MASSIE^JAMES^A||19560129|M|||171 ZOBERLEIN^^ISHPEMINGMI^49849^""^||(900)485-5344|(900)485-5344||S|CHR|10199925^^^GENHOS^AN|371-66-9256||
NK1|1|ACK^ELLEN|SPO|171 ZOBERLEIN^^ISHPEMING^MI^ABW^""^|(900)485-5344|(900)545-1234~(900)545-1200|EC^EMERGENCY CONTACT
NK1|2|MASSIE^MARYLOU|MTH|300 ZOBERLEIN^^ISHPEMING^MI^ABW^""^|(900)485-5344|(900)545-1234~(900)545-1200|EC^EMERGENCY CONTACT
NK1|3
NK1|4|||123 INDUSTRY WAY^^ISHPEMING^MI^49849^""^||(900)545-1200|EM^EMPLOYER|19940605||PROGRAMMER|||ACME SOFTWARE COMPANY
PV1||O|||||0148^ADDISONJAMES|0148^ADDISON,JAMES|0148^ADDISON,JAMES|CAR|||||||0148^ADDISON,JAMES|S|1400|A|||||||||||||||||||GN||||||
PV2||||||||199901101400|||||||||||||||||||||||||199901101400
OBX||ST|1010.1^BODY WEIGHT||62|kg|||||F
DG1|1|19||BIOPSY||A
GT1|1||MASSIE^JAMES^""^""^""^""^||171 ZOBERLEIN^^ISHPEMINGMI^49849^""^|(900)485-5344|(900)485-5344||||SEL^SELF|371-66-925||||a|171 ZOBERLEIN^^ISHPEMING^MI^49849^""|(900)485-5344|||||||||||||||||||||||||||||||||MOOSES AUTO CLINIC
IN1|1|0|BC1|BLUE CROSS|171 ZOBERLEIN^^ISHPEMING^M1^49849^^||(900)485-5344|90||||||VXX
IN1|2|""|""

Acknowledgement
MSH|^~\&|GC APP|GC FAC|ACME APP|ACME FAC|20071016055244||ACK^A01|20071016055244131|P|2.3.1|
MSA|AA|13463136|MSG Received Successfully|


Typically Acknowledgement carries the message type and Trigger event of the original message in MSH.9.

Some of the HL7 System has a Generic Acknowledgement implementation for all trigger types i.e which does not expect only message type in msh.9 and not any trigger type.

To enable this set the following tip.properties.

oracle.tip.adapter.b2b.hl7.genericAck=true

How to configure Oracle B2B for sending and Receiving GenericAck

1. Edit the Acknowledgement ecs file in spec builder.
2. Go to MSH 9, select Event type under Trigger event and delete the same.
3. Save the ecs file and export xsd.
4. Use the above ecs while modelling the flow of Acknowledgment.

Sunday, February 8, 2009

Document vs Exchange level Acknowledgement

Acknowledgment are of two types,

1. Document Acknowledgment - Acknowledgment which is sent/consumed by the document layer and it caters more for sending validation, translation status, it can also be considered as Application acknowledgement.

e.g Functional Acknowledgment(997)/Control in EDI/HL7 protocol.

Typically Functional acknowledgment are send/received by B2B, however there is always a fallback option to send FA by the back end application only for a use case which cant be handled by B2B.

e.g To send some of the specific segment in the inbound business message as part of the outbound control/FA, for which there is no mapping in B2B Functional Acknowledgment. Back end Application need to generate the Functional acknowledgment using the internal property of the inbound business message.

How to enable Document level Acknowledgment

The flag isFunctionalAck required controls whether an FA is needed are not. Make sure to define a Document Type with the name and revision of 997/4010(any) or control/D3 with an attached Business action in the agreement.

2. Exchange Acknowledgment/MDN/Ack

Exchange level acknowledgment are called MDN in AS2 and Acknowledgment in RNIF and eBMS case. Exchange level acknowledgment signifies the status of validity of Exchange message, verify,decrypt functionality and sends a negative
acknowledgment to the initiator of the business message for any issues.

How to enable Exchange level Acknowledgment

The flag IsAcknowledgement handled by B2B enables B2B to generate and consume Exchange level Acknowledgment. However it is possible to delegate this functionality to back end application by setting this flag to OFF.

Monday, January 26, 2009

Interesting Post in HL7Gurus

Please follow new and interesting post in HL7Gurus What is HL7

Wednesday, January 21, 2009

Thursday, January 15, 2009

Verification & Vaildation of messages for ebMS in Oracle B2B

When a signed message comes into Oracle B2B using ebMS protocol, the following steps occur:

STEP 1: Verification:

The ebMS protocol itself does the verification by extracting the certificate from the message and uses this certificate to verify the signed message.


STEP 2: Validation

An additional feature of Oracle B2B is to perform another step after STEP1 for validation. Here, the public key in the repository is compared with that of the message. The public in the repository is uploaded while configuring the trading partner.

This feature can be turned off by adding the following property in the tip.properties:

*oracle.tip.adapter.b2b.tpa.verifyCertificate=false*

Further, it is strongly recommended that this additonal feature be turned off (by adding the above property) while working with high performance environments.

Exception handling in Rosettanet

While processing an inbound RosettaNet message, there are chances of the message being erronous due to vaious reasons.

The likely cause could be in
1.Rosettanet Exchange specific values mismatch in either service header or delivery header
2.Error Document validation

In this case, B2B will send an exception message back to the trading partner. This is an automatic process of creating the exception message and sending back to trading partner and this does not need any additional configuration.

It is different from PIP 0A1 processing. In the case of PIP 0A1, an Exception message is trigger by B2B Engine for any error/exception, where as NOF has to be sent by the Back end application.

Friday, January 9, 2009

Security Configuration in Oracle AS Integration B2B

Practice Lesson
Security Configuration in Oracle AS Integration B2B


Security Configuration In Integration B2B


Introduction:

There are three ways of providing security in Oracle AS Integration B2B.
      1. Encryption
      2. Digital Signature (Sign).
      3. SSL



Security Setup:

Step1 : Create a self signed certificate for the host using the Oracle Certificate Authority, the tutorial for the same is as below.
http://www.oracle.com/technology/products/oid/oidhtml/sec_idm_training/html_masters/devapp06.htm

Alternatively it is possible to obtain a certificate from the CA(certificate Authority like Verisign or Thwarte) . Certificate extension should not matter, as long as you use x.509 compliant certificate.

Step2: Import the host certificate into the Oracle Wallet along with the Root certificate.

Step 3: Make sure you have specify the wallet location properly (folder name) in the file /ip/configuration/tip.properties.

E.g. oracle.tip.adapter.b2b.WalletLocation = c:/tmp/soa/b2b

Step 4: Using Oracle Integration B2b, The following are the steps to configure for secured way of transferring messages between trading partners.

      -> Select Partners
            -> Select Trading Partner
                  ->Select Acme
                        -> Click on “Update”


Enter the following information

General Page: Enter the wallet Password information
New Wallet Password
Confirm New Password

->Click Apply

step 5: Setting up the Host Delivery Channel:

For providing the Security Information for Host Trading Partner (Acme)
Create Communication Capability
      -> Select Trading Partners
            -> Select Acme
                  -> Select Capabilities
                        -> Select
                              -> Select Create Communication Capability

Delivery Channel Page

Prompts to define the following delivery channel details for the secure exchange of messages between trading partners:
     · Delivery channel name
     · Acknowledgment mode
     · Global usage code
     · If nonrepudiation of receipt and nonrepudiation of origin are Required
     · If encryption, transport security, and compression are enabled
     · Time to acknowledgment value
     · Retry count value

Note: The selections you make on this page for nonrepudiation of receipt, nonrepudiation of origin, encryption, and transport security determine the fields that display and the transport protocols that are selectable on subsequent pages of this wizard.

Document Exchange Page

Prompts to define the following document exchange characteristics for exchanging messages between trading partners

     · Document exchange name
     · Exchange protocol revision and parameter values.
     · Document exchange protocol parameters
     · Digital signature, signing credential, and certificate file if you Selected        “Yes” for nonrepudiation of receipt and nonrepudiation of origin on the        Delivery Channel page.
     · Digital envelope, encryption credential, and certificate file if you selected        “Yes” to enable encryption on the Delivery Channel
       page.


In the Document Exchange window, enter the following information,


Encryption:
There is a need to select Digital Envelope algorithm depending on whether encryption is enabled.

New encryption credential can be created using create new or use the existing Encryption credentials. For new credentials use Browse button to locate Host certificate as it is used to decrypt the message. Make sure this certificate should be available in the e-wallet.

Non-Repudiation: If Non-Repudiation is enabled then select the Digital Signature and Signing credentials. Use Browse button to locate Host certificate for Digitally Signing the outbound Message. Make sure this certificate should be available in the e-wallet.

B2B engine uses the certificate from the repository for both signing and encryption and also a lookup to the wallet for Private key, hence there is a need to import the host certificate into the wallet as well.

Note: There is another way to specify the Certificates,

     -> Select Partners
          -> Select Trading Partner
               -> Select Acme
                    -> Click on “Create” under Certificate


Enter the following information
     Name: <Any valid Name>
     Certificate File: <Using browse to locate the certificate >
          ->Click Apply

Use this certificate while creating the Delivery Channel by selecting “Use Existing”.

Step 6: Setting up the Trading Partner Delivery Channel:

Providing the Security Information for Remote Trading Partner (GlobalChips)
Create Communication Capabilities
     ->Select Trading Partners
          ->Select GlobalChips
               ->Select Capabilities
                    ->Select <Business protocol>
                         ->Select Create Communication Capability

Delivery Channel Page

Prompts to define the following delivery channel details for the secure exchange of messages between trading partners:

     · Delivery channel name
     · Acknowledgment mode
     · Global usage code
     · If nonrepudiation of receipt and nonrepudiation of origin are Required
     · If encryption, transport security, and compression are enabled
     · Time to acknowledgment value
     · Retry count value

Note: The selections you make on this page for nonrepudiation of receipt, nonrepudiation of origin, encryption, and transport security determine the fields that display and the transport protocols that are selectable on subsequent pages of this wizard.

Document Exchange Page

Prompts to define the following document exchange characteristics for exchanging messages between trading partners

     · Document exchange name
     · Exchange protocol revision and parameter values
     · Document exchange protocol parameters
     · Digital signature, signing credential, and certificate file if you Selected        “Yes” for nonrepudiation of receipt and nonrepudiation of origin on the        Delivery Channel page
     · Digital envelope, encryption credential, and certificate file if You selected        “Yes” to enable encryption on the Delivery Channel
       Page

In the Document Exchange window, enter the following information,



Encryption:
There is a need to select Digital Envelope algorithm depending on whether encryption is enabled.

New encryption credential can be created using create new or use the existing Encryption credentials. For new credentials use Browse button to locate Trading Partner certificate as it is used to encrypt the outbound message.

Non-Repudiation: If Non-Repudiation is enabled then select the Digital Signature and Signing credentials. Use Browse button to locate Trading Partner certificate for Digital signature verification for the inbound message.


SSL - Security

Configure SSL:

1. Edit Oracle_Home\opmn\conf\opmn.xml. Search for ssl-disabled and change it to ssl-enabled.
2. Startup Oracle Wallet Manager. Open the default wallet* in Oracle_Home\Apache\Apache\conf\ssl.wlt\default. Password is welcome.
3. Right click on “Trusted Certificates” Node and import the Remote Trading Partners Certificate.
4. Save the wallet in location Oracle_Home\ip as b2bwallet.txt
5. Edit Oracle_Home\ip\config\tip.properties
6. Search for wallet location and change it to Oracle_Home\\ip\\b2bwallet.txt.
7. Stop and start opmn – opmnctl stopall / opmnctl startall

* Note: Usage of default wallet is recommended only for Test. Request for a Server Certificate from a CA for actual usage.

Test SSL Configuration:

1. Access Oracle Enterprise Manager.
2. Find the SSL port
3. Access the B2B Transport Servlet through the following the URL: https://hostname:sslport/b2b/transportServlet

Configure SSL for Trading Partners.
1. Log into the B2B UI Tool.
2. Click on Partners>>Trading Partners>>Select the Trading Partner>>Capabilities>>Select the Business Protocol>>Communication Capabilities>>Select Delivery Channel
3. Update Delivery Channel to enable Transport Security.
4. Update Transports details to select HTTPS 1.1 secure as the Transport Protocol.
5. Update Transport Server details to include the SSL port.

Repeat the same for all remaining Trading Partners.
Create a Configuration and Deploy.

Thursday, January 8, 2009

monitoring and cleaning internal queue

Sometime it is required to remove persistence data within B2B. This script will be very useful for cleaning any event stuck in internal B2B queues.

1) this script to find count of messages in queue.

SELECT a.queue_table, a.name, b.waiting, b.ready, b.expired FROM
dba_queues a, v$aq b WHERE a.qid = b.qid AND owner = 'B2B';

2)cleaning messages from specific queue table. in case, you are using inbound AQ, queue table is 'IP_QTAB'.

declare po dbms_aqadm.aq$_purge_options_t;
begin
po.block := FALSE;
dbms_aqadm.purge_queue_table(
queue_table => 'EVENT_QTAB',
purge_condition => NULL,
purge_options => po);
end;

Thursday, January 1, 2009

Monitoring All the AQ in B2B

In order to monitor all the AQ (Advanced Queues) related to B2B the following query can be used.

SELECT a.queue_table, a.name, b.waiting, b.ready, b.expired FROM dba_queues a, v$aq b WHERE a.qid = b.qid AND owner = 'B2B';