Print Page

Tuesday, December 30, 2008

Wish you happy new year 2009

Wishing a great new year for you and your family. Have A Great Year 2009 Ahead!

Team B2BGurus

Friday, December 19, 2008

Agreement Identification in ebMS

TPA Identification details

Following are the various mechanisms with which the agreement would be identified using ebMS protocol.

Outbound scenario:

1) From, To, Document Type and Document Revision: In Oracle AS B2B, it is possible to identify the agreement using these attributes.

2) Service based Identification
If document Type and Document Revision is not present and if the ebMS service is available, which is enqueued using the ACTION attribute, then the ebMS service attribute is used to identify the Document Type and Document Revision and identify the agreement based on step 1.

3) Action based Identification
If document Type and Document Revision is not present and if the ebMS Action is available, which is enqueued using the ACTION attribute, then the ebMS action attribute is used to identify the Document Type and Document Revision and identify the agreement based on step 1.


Inbound Scenario

1) From, To, Document Type and Document Revision: In Oracle AS B2B, it is possible to identify the agreement using these attributes. Since Oracle AS B2B supports custom over ebMS Business protocol, the custom Document Type and Document Revision can be retrieved by applying the Xpath expression on the payload.

2) Action based Identification
If the Business Action matches with the ebMS header Action of the incoming message, then the respective Document Type and Document Revision will be used to identify the agreement based on step 1.

3) CPAId based Identification
The following property in tip.properties, “oracle.tip.adapter.b2b.ebms.IdentifyAgreement.cpaId=true” indicates then the incoming document’s agreement Identification will be based on ebMS header CPAId with the Agreement ID. If this value is set true, then this overrides all the above mechanisms for inbound agreement identification, as this is a global setting.

Wednesday, December 17, 2008

Monday, December 15, 2008

10.1.2.3.0 Patch Install

Every time there is a new release we often come across may patches.
10.1.2.3.0 is also a one such patch for 10.1.2.0.2 oracle AS server. 10.1.2.3.0 has 2 options, which need to be selected during installation. Below are the steps to install 10.1.2.3.0 and the option we need to select to make 10.1.2.3.0 successful installation.

NOTE:
Pre-requisite
1. 101202 infra, Midtire and b2b should be installed
2. Please make sure that Midtire is shutdown before starting Patch installation


How to install 10.1.2.3.0 Patch

1. Download 10.1.2.3.0 Patch from metalink
2. Click on "Next" button welcome screen
3. Select "Midtire home” in “specify location” screen and click Next button
4. Select the 1st radio button, which is "Oracle Application Server and Developer Suite 10g Rel2 Software update 10.1.2.3.0" and proceed to next screen(refer screen shot below)


5. Specify IAS_ADMIN password and proceed to next screen

6. Review summary page and Click on the "Install" button
7. This will complete 10.1.2.3.0 patch installation




What happens if we choose second option i.e "Oracle Application Server 10g Metadata Repository Update 10.1.2.3.0" ?

If we choose "Oracle Application Server 10g Metadata Repository Update 10.1.2.3.0" we cannot complete the installation we will hit this issues "Metadata Repository update cannot be run from the selected OH. the update must be run from either an identity management with metadata repository installation or a portal and wireless middle tire or a business intelligence and forms middle tier. Running this update on either an oracleAS middle tire or identity management with metadata repository installation allows updating of any of the metadata repositories registered with your Internet directory”

Monday, December 1, 2008

Customizing Control Version in EDIFACT

By default oracle B2B generates the CONTROL message using D3 version. If there is a requirement to customize the version of CONTROL message use the following tip.properties.

oracle.tip.adapter.b2b.edi.FAMessageVersionNumber
oracle.tip.adapter.b2b.edi.FAMessageReleaseNumber
oracle.tip.adapter.b2b.edi.FAAssocAssignedCode

If FAMessageVersionNumber, FAMessageReleaseNumber, FAAssocAssignedCode is specified in tip.properties, we replace those values in generated CONTROL message.

Overdue Acknowledgements - Identify and Take action

How to Handle Overdue Acknowledgments?

Oracle AS B2B provides a feature to configure a timeout value with in which the Functional Acknowledgment has to be received for Outbound business messages.

After successful transmission of EDI Message, B2B must wait for Functional Acknowledgment for configured time. If FA is not received, B2B will enqueue an Error message to B2B Inbound Queue.

set oracle.tip.adapter.b2b.FAWaitTimeOut= time

where time is in minutes.

With FAwaitTimeOut configuration, B2B inserts a Timeout event. If FA is not received with in the time out period, B2B will enqueue an error message.

It is possible to develop a BPEL process to listen on to B2B Inbound queues with B2BERRORUSER and send further notification in the form of fax/phone/SMS etc.

Tuesday, November 25, 2008

Multiple Private Keys in Oracle B2B

Stay tuned..

Monday, November 24, 2008

Is batching a Mandatory for Grouping the Transaction set

Even though EDI Batching is the preferred way of grouping the transaction set, it is also possible to handle it by sending multiple transaction set as edifecs XML. B2B accept the multiple transaction set, translate it into EDI document by adding the envelope details to it.

If you find any limitations in this approach , please shoot a mail to ramesh.anantharamaiah@oracle.com

Tuesday, November 11, 2008

New Blogs for - EDI and HL7 Users

EDIGurus.com and HL7gurus.org

Stay tuned to get more. This is a place to ask anything and everything on EDI and HL7.

Thursday, November 6, 2008

CPP/CPA feature in ebMS

Introduction

Oracle B2B is a critical component of Oracle Fusion middleware which supports various Standard based B2B protocol for Trading Partner Integration. Standards supported by B2B protocols spreads across several Business verticals and involve various Document, Exchange standard (Exchange standard incorporates both Transport, packaging and security protocols).

To support multiple protocols Oracle B2B has a notion of canonical meta data model to accommodate the meta data of various protocols. CPA Import process maps the incoming CPA Specific metadata to Oracle B2B canonical model and the CPA Export process do the reverse of mapping from canonical model to CPA model.


This document talks about the import /export aspect of EBXML metadata, which is captured as Collaboration Protocol Profile CPP and Collaboration protocol Agreement CPA and is widely used in EBXML community.

In ebXML, a Collaboration Protocol Profile (CPP) will describe message exchange capabilities of a party. A Collaboration Protocol Agreement (CPA) will describe the agreement between two parties


The CPP and CPA contains details of transport, messaging, security constrains, and bindings to a Business Process Specification (BPSS) document that contains the definition of the interactions between the two Parties while engaging in a message exchange.

This document explains CPP/CPA features, steps to configure using Oracle AS B2B and the runtime behavior of CPP/CPA.


Salient features:

1. CPA import with selective BPSS specification: This utility provides the option to the user to selectively add the BPSS specification while importing the CPA. One or more BPSS documents can also be imported. This is done by adding all the BPSS documents separated by “;”.

2. Auto Creation of Business Action: This feature automatically creates all the BPSS specification business actions to Oracle AS B2B business actions. This will facilitate the user to create Business Action in bulk.


3. Grouping of Business action into an agreement based on endpoint
This feature combines all the business action pertaining to an endpoint under one agreement.


4. Selective usage of Common Business Actions. This feature helps the user to selectively add the common business actions while importing, depending on the business requirement

We are referring ReceiptAcknowledgement, AcceptanceAcknowledg-ement as Common business action i.e one which can be used in multiple services.
One time definition of Common Business Actions: All the common business actions that are using common schema can be defined only once and gets used/referred to all the other BPSS’s while importing, thereby simplifies the CPP/CPA import.

The definition used for the common business actions like ReceiptAcknowledgement, AcceptanceAcknowledgement will have the common schemas.

6. Auto Import/Export of security details: The required security credentials will be taken from CPP/CPA document to Oracle AS B2B as part of CPA import process, also the security details gets exported from Oracle AS B2B to CPP/CPA,

7. CPA Export of Multiple BPSS files from Oracle AS B2B: This feature exports the Oracle AS B2B specific metadata to CPP/CPA specific metadata .For every Business Action, it creates a corresponding BPSS during export.


8. CPA Export of Multiple CPA files from Oracle AS B2B: This feature allows the multiple CPA export. Typically it creates a different agreement for every CPA based on the Trading partner.

9. Log Level can be configured as Debug or Info or Error.
10. Log files can be of type text or xml.




Pre-requisites:

1 Business knowledge of Custom over ebMS Exchange

2 Knowledge of ebXML 2.0

3 As part of Pre-CPA import steps, it is required to create the Internal Delivery Channels in Oracle B2B, and the same has to be referred in the cppcpa.properties. This gets used in CPA Import steps


User Experience

IMPORTANT: Please take backup of your existing B2B configurations.

Steps to run CPP/CPA Import:

1) Set the environment for Oracle AS B2B by executing the setenv script available at $ORACLE_HOME/ip/install
2) Configure all the necessary import values in the cppcpa.properties located in $ORACLE_HOME/ip/tutorial/.
3) From $ORACLE_HOME/ip/tutorial run the below command
java oracle.tip.adapter.b2b.utility.EBMSUtility <location of cppcpa.properties>

Steps to run CPP/CPA Export:

1) Set the environment for Oracle AS B2B by executing the setenv script available at $ORACLE_HOME/ip/install
2) Configure all the necessary export values in the cppcpa.properties located in $ORACLE_HOME/ip/tutorial/.
3) Make sure the property “oracle.tip.adapter.b2b.ebms.CPADocument” is commented. – This property is used while importing the CPP/CPA to Oracle AS B2B
4) Provide the Host Party Name in “oracle.tip.adapter.b2b.ebms.Host” property.
5) Provide the Host Endpoint URL in “oracle.tip.adapter.b2b.ebms.HostEndPoint” property.
6) From $ORACLE_HOME/ip/tutorial run the below command
java oracle.tip.adapter.b2b.utility.EBMSUtility <location of cppcpa.properties>

Configuration Details:

CPA Import Properties:

1 oracle.tip.adapter.b2b.ebms.BPSSDocument
This property holds the absolute path for BPSS Document. It is an optional property, which will be used to get the BPSS document details to be import into Oracle B2B repository. If the property does not exist then the values will be imported from CPA. Multiple BPSS documents are separated by “;”

2 oracle.tip.adapter.b2b.ebms.CPADocument
This mandatory property will be used to get the absolute path of the CPA document to be import into Oracle B2B repository.

3 oracle.tip.adapter.b2b.ebms.xsdLocation
This optional property will be used to specify the absolute path of the schema file location. This schema file will be used for document validation.

When BPSS document is not specified then it will use for the common definition for all Business Actions.

4 oracle.tip.adapter.b2b.ebms.CertificateDirectory
This is a mandatory property in case of secured message transfer. This directory will be used to store the certificates specified in the CPP/CPA document, which will be used in ebXML secured message transfer.

5 oracle.tip.adapter.b2b.ebms.internalDeliveryChannel.InBound
This mandatory property will be used in Oracle B2B Configuration. Specify the already created inbound internal delivery channel or specify the default inbound internal delivery channels like B2B Inbound or XML Gateway Inbound. The specified channel name MUST be present in Oracle AS B2B before importing the CPP/CPA

6 oracle.tip.adapter.b2b.ebms.internalDeliveryChannel.OutBound
This mandatory property will be used in Oracle B2B Configuration. Specify the already created outbound internal delivery channel or specify the default outbound internal delivery channels like B2B Inbound or XML Gateway Inbound. . The specified channel name MUST be present in Oracle AS B2B before importing the CPP/CPA.

7 oracle.tip.adapter.b2b.ebms.CommonBusinessAction
Add the common business actions separated comma. These are the business actions that are used multiple times in CPA.

E.g.: ReceiptAcknowledgementException, ReceiptAcknowledgement, AcceptanceAcknowledgementException, AcceptanceAcknowledgement. It is an optional property.

In case of CPA import along with BPSS document common business action schema can be defined like below,

#oracle.tip.adapter.b2b.ebms.<Business Action Name>.Definition = <location of xsd>
# e.g. oracle.tip.adapter.b2b.ebms.ReceiptAcknowledgementException.Definition = <location of xsd>

8 Oracle.tip.adapter.b2b.ebms.GroupAgreement
This optional Boolean property will be used to group the business action in an agreement.


CPA Export Properties:

9 oracle.tip.adapter.b2b.ebms.OutputFolder
This mandatory property will be used to place the generated CPP/CPA files in the specified location.

10 oracle.tip.adapter.b2b.ebms.Host
This mandatory property will be used to set the Host Trading Partner.

11 oracle.tip.adapter.b2b.ebms.HostEndPoint
This mandatory property will be used to set the host endpoint while generating the CPP/CPA export.

12 oracle.tip.adapter.b2b.ebms.HostCertificateAlias
In case of secure message transfer, this property will be used to get the host certificate details to the CPP/CPA export.

13 oracle.tip.adapter.b2b.ebms.TPCertificateAlias
In case of secure message transfer, this property will be used to get the trading partner certificate details to the CPP/CPA export.

14 oracle.tip.adapter.b2b.ebms.BPSSExport
This optional Boolean property will be used to generate the BPSS document.

Common Properties:
15 oracle.tip.adapter.b2b.ebms.LogDirectory
This mandatory property will be used to store the log files.

16 oracle.tip.adapter.b2b.ebms.LogLevel
This mandatory property will be used to specify the mode of logs like DEBUG|INFO|ERROR.

17 oracle.tip.adapter.b2b.ebms.LogType
This mandatory property will be used to specify the log file will be stored as text/xml.

Note : More details including configuration settings would be available soon, stay tuned.

Attachment feature in ebMS using Oracle AS B2B 10g

These steps help in sending attachments in ebMS.

1. Create an xml in UNIX FILE FORMAT. Here is the sample xml file,

<?xml version="1.0" encoding="UTF-8"?>
<Attachments xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="AttachmentsDescriptor.xsd" version="1.0" boundary="boundary---">
<AttachmentPart>
<Location>file:///scratch/nansrini/test.pdf</Location>
<Content-Type>
<Top-Level-Type>application</Top-Level-Type>
<Sub-Type>pdf</Sub-Type>
</Content-Type>
</AttachmentPart>
</Attachments>


2. Edit the enq.properties to provide the file name for the "attachment" attribute as the above file(sample xml).

3. Provide directory name in tip.properties for the key "oracle.tip.adapter.b2b.attachments.dir" where the file will be stored in the inbound scenario.
4. Restart the server and enqueue the Message.
5. By Default oracle.tip.adapter.b2b.MimeType accepts only below types,

@ application/xml
@ application/octet-stream
@ application/EDIFACT
@ application/EDI-X12
@ application/jpg
@ image/jpeg
@ application/gzip
@ application/x-gzip
@ application/pkcs7-signature

If you want more options, Then you must modify tip.properties in
$ORACLE_HOME/ip/config directory to include your MimeTypes also, For example,
You want to include pdf attachments, Then your tip.properties would look like,

oracle.tip.adapter.b2b.MimeType=application/xml : application/octet-stream : application/EDIFACT : application/EDI-X12 : application/jpg : image/jpeg :
application/gzip : application/x-gzip : application/pkcs7-signature :
application/pdf

Ensure the above property in single line.

Add a new content type such as application/pdf restart opmn and re-try testcase.

Friday, October 31, 2008

PGP Encrypted File Transfer

This feature enables transferring of the externally PGP encrypted message. This can be done by setting below tip.properties. The default value is false.

oracle.tip.adapter.b2b.BinaryTransfer=true

High Availability with SFTP (SSH FTP) adapter

B2B SFTP adapter can also operate on HA topology like File and FTP adapters. Enabling SFTP adapter on HA environment is fairly simple and the process is as same as in File/FTP HA deployment.

Please refer the HA configuration guidelines for non-transactional transports here, http://www.b2bgurus.com/2008/02/high-availability-with-fileftp-adapter.html

Monday, October 27, 2008

B2B Installation fundamentals

Installation of B2B on Windows machine

Download B2B: Get this from oracle metalink

Step1: Install Oracle Infrastructure

1. Go to Shiphome location and click on setup.exe
2. Provide necessary oracle home for this Infrastructure installation
3. Complete the installation.

Step 2: j2ee/midtire/OC4J installation

1. Go to Shiphome location and click on setup.exe
2. Provide a separate middleware home. This is different from step1
3. Complete the installation.

Step 3: post installation activity

1. Open a cmd prompt and set the oracle home, An example is shown below
C:\101202\infra_0306> set path=C:\101201\infra_0306\bin;%path%
C:\101202\infra_0306> set ORACLE_HOME= C:\101201\infra_0306
C:\101202\infra_0306> set path=%ORACLE_HOME/bin;%path%
C:\101202\infra_0306> set ORACLE_SID=orcl0306

2. Unlock the b2b user if Meta Data repository is used and shutdown the database
C:\ sqlplus /as sysdba
SQL> alter user b2b identified by b2b account unlock; ; // donot execute for IM –OID installation

SQL> alter system set aq_tm_processes=5 scope=spfile;
SQL> alter system set job_queue_processes=5 scope=spfile;
SQL> alter system set open_cursors=500 scope=spfile;
SQL> commit;
SQL> shutdown immediate;

3. Take the backup of database from oradata directory and name it as orcl_b2b_before

4. Login to database and startup again
C:\ sqlplus /as sysdba
SQL> startup;

5. On j2ee/ midtire terminal start the j2ee server before the installation of b2b
c: /101201/j2ee_0306/opmn/bin/> opmnctl startall

Step 4: B2B installation

1. Go to Shiphome location and click on setup.exe
2. Select the middleware home for b2b installation( Note: Middleware home same as step2)
3. Complete the installation.
4. Once the installation is completed then go to j2ee_0306/ip/config dir and open the tip properties file and change debug levels from ERROR to DEBUG and
change Logtype = text

5. Stop the j2ee server
6. Go back to infra terminal, shutdown the database and take a backup of database and start the database again
c:/ sqlplus /as sysdba
SQL> shutdown immediate;
SQL> quit;
7. Take a backup of database and start the database as orcl_b2b_after.
8. Go to midtire terminal and start the server.

HTTP Basic Authentication

Oracle AS B2B Support HTTP Basic authentication based on Userid and password.

How to Configure basic Authentication.

1. Go to the Transport server section, specify user id and password.
2. In the additional Transport header specify

authtype=basic#realm=myRealm

where myRealm is the realm of the remote trading partner site.

Sunday, October 19, 2008

Oracle B2B Downloads

1. http://www.oracle.com/technology/software/htdocs/devlic.html?url=/technology/software/products/ias/htdocs/101202.html

2. Accept and click on next.

3. Select Application Server Integration(10.1.2.0.2) , download B2B for Appropriate OS

4. Install the latest patch. Follow http://www.b2bgurus.com/2008/07/10123-latest-b2b-patch-details.html

p.S You need to install 10.1.2.0.2 infrastructure database and application server before installing oracle AS B2B.

Thursday, October 16, 2008

Saturday, October 11, 2008

Oracle B2B in Retail Industry - Use case scenario

Stay tuned..

Oracle B2B Wiki

Please enhance this Oracle B2B Wiki with case studies used in various business verticals. Thanks in advance.

Thursday, October 9, 2008

Oracle B2B on Vista

Oracle B2B is certified on vista. Please refer to this link on details about B2B installation on vista.

http://www.oracle.com/technology/software/products/ias/files/as_certification_r2_101202.html

Rgds,Ramesh

Oracle B2B in Chemical Industry - B2B and E-Business suite

Read stories about BPEL & B2B Synergies Reduce Supplier Enablement Costs
Helena Chemical Company Deploys New Technology & Techniques



Helena Chemical deploys Oracle AS, B2B ebXML

Tuesday, October 7, 2008

B2B Startup Issues for a listening End point

Oracle AS B2B will not start if it failed to initialize any of the transport listening end point during start up. Listening end point mean, any end point which has a polling interval.

The user community feels that just for a failure in initialization of some of the listening end points , it is in-appropriate not to start the B2B. This might also results in a huge impact in the business and is justfied in a use case with large number of listening end point. Failure in some of the end point should be ignored and B2B should be started by necessary logging of the failed end points.

With this fix B2B will start even in the following cases.

1) If any receiving delivery channel is misconfigured, such as username and password is not specified for FTP transport.

2) During initialization time, B2B is not able to connect to dataource.

B2B will log the error message as "transport could not be initialized" in b2b.log and the transport logs with the details about the listening end point in the following format

TRANSPORT_SERVER_NAME < TRANSPOR_PROTOCOL_NAME > < TRADING_PARTNER_NAME >

Log also carries information about the delivery channel which failed to initialize.

How To handle two Business Action of Same Name in B2B

One of the popular use case is to Support Business Action with same name and different revision. Follow the below steps.

1. Apply the latest MLR on 10.1.2.3
2. While defining the business action Use appropriate Name and Revision.
3. Use the appropriate business action and revision for creating Operational capability.
4. Use the appropriate business action and revision for creating Agreement.
5. Deploy and exchange the messages.

Runtime Functionality.

Please follow the post for outbound and inbound user experience for processing business action with same name and different revision.

Business Action with same Name and Different Revision

Tuesday, September 30, 2008

Interview with Thomas Kurian - Oracle’s acquisition of BEA Systems

Finally, Oracle’s B2B engine provides a way to hook up your SOA, not just within your company but outside the organization, and Oracle Enterprise Manager becomes the management framework. If you want to read more..

http://www.oracle.com/technology/oramag/oracle/08-sep/o58interview.html

Friday, September 26, 2008

Internal Properties in Oracle B2B

For every EDI document Processing in B2B, there is a need to configure the Envelope information by using Document Protocol parameters in B2B. This information is used by XEngine,

1. To create the envelope for the document sent by Back end application. Xengine create the envelope (Interchange and Group) ,embed the Transaction set and send it to Trading partner.

2. To identify the Incoming Document Type and revision, there by identifying the business action for Agreement Identification.


What is Internal Properties

For every XML schema generated per ecs file while modeling the document in B2B Document editor, it defines Internal Properties. Internal Properties are used to

1. Send the Envelope information to the back end application in case of Inbound flow. By default, XEngine strip off the Envelope information and send only the Transaction set to back end appliction.

2. Override the Document Protocol parameter which is defined in B2B, which is used by B2B to create the envelope.

set oracle.tip.adapter.b2b.edi.FAInternalProperties=true

in tip.properties to avail this feature.

B2B Generates FA/Control messages

Consider the case of B2B generating the Acknowledgment, by default B2B always uses Document protocol parameters to generate the envelope for sending FA/Control. By setting the

oracle.tip.adapter.b2b.edi.FAInternalProperties=true in tip.properties

it is possible to make use of the envelope details of the inbound business document while generating the FA/Control.

Saturday, September 20, 2008

Oracle B2B Booth in OOW-2008

There are interesting Retail and Health care use cases are getting demoed in B2B Booth. Do visit...

Wednesday, September 10, 2008

Sync Response

This feature introduces a Synchronous response to any of the incoming Business Document. Sync HTTP response essentially mean, sending the response using the same http connection as the incoming business message.


There is an introduction of a new URI b2b/SYNCResponseServlet to handle the Sync response in B2B. Every business message which is received in this URI, it is expected to send the response using the same http connection with in the time out time. The time out time is configured in tip.properties using

oracle.tip.adapter.b2b.httpSyncReplyWaitTime=

Use case : Globalchips to receive 270 EDI request from Acme over HTTP and respond with 271 EDI synchronously.

Implementation :

1. Acme Side

a. For both Acme and Globalchips, supported business action(270,271) must have

Functional Acknowledgement required? should be set to NO.

b. Configure the following in the additional transport header for GlobalChips.

http.sync=true#timeout=300000

c. End point URI for GlobalChips is selected as b2b/SYNCResponseServlet

2. Global Chips side.

a. For both Acme and Globalchips, supported business action(270,271) must have

Functional Acknowledgement required? should be set to NO.

b. web.xml in $ORACLE_HOME/j2ee/OC4j_B2B/applications/b2b/ip/WEB-INF/ must be modified to include the following servlet-mapping for transportServlet.

<servlet-mapping>
<servlet-name>transportServlet</servlet-name>
<url-pattern>SYNCResponseServlet</url-pattern>
</servlet-mapping>

c. Configure the following tip.properties

oracle.tip.adapter.b2b.httpSyncReplyWaitTime = wait time in minutes.

d. Also set

oracle.tip.adapter.b2b.ReplyToAsRequest=true

Back end application such as BPEL is required to send the response i.e 271 with replyToMsgID value of the original message. B2B message ID of the request message 270 should be sent as replyToMsgID of the Synchronous response 271

Please note in Oracle 10g, this feature is not High availability enabled i.e it is not possible to get the request in one instance of B2B and send the Sync Response in another.

Interesting Macros in EDI and HL7

Macros play an important role in XEngine, when there is an use case to fill this data in the B2B Layer, instead of sending it from the Back end application.

1. controlNumber.

In case of Outbound Messages, B2B Generates the control number only in case the Back end application send the EDI message with the Keyword #controlNumber for e.g.

#ControlNumber#

Oracle AS B2B fills in the unique number for Interchange and Transaction set Control Number and uses it for correlating the incoming Control messages.

2. SegmentCount

Segment count for the current EDI Document. Xengine will replace with the approprite values. e.g #SegmentCount#

3. MessageSendingFacility

MSH Position 4.1 e.g #Property(MessageSendingFacility)#

4. MessageSendingApp

MSH Position 3.1 e.g #Property(MessageSendingApp)#

5. MessageReceivingApp

MSH Position 5.1 e.g #Property(MessageReceivingApp)

6. MessageReceivingFacility

MSH Position 6.1 e.g #Property(MessageReceivingFacility)#










Monday, September 1, 2008

How to enable b2b_idc_transport.log

The below two tip.properties used to control the transport logs,

For External Delivery Channel :
oracle.tip.adapter.b2b.transportTraceLogLevel

For Internal Delivery Channel :
oracle.tip.adapter.b2b.appTransportTraceLogLevel

The possible values could be,
WARNING | STATUS | DEBUG | ERROR

For backward compatibility, we have made assumption that if old properties
are defined, logLevel will be assumed to be DEBUG

The new Properties for Transport Logger overrides old properties.

If none of the properties (old and new) for Transport Logger is specified,
default log level is ERROR

The new transport log files will be created in the same directory in which
b2b log file is created.
Example: $ORACLE_HOME/ip/log/b2b

For Internal delivery channel b2b_idc_transport.log

For External delivery channel b2b_dc_transport.log

Thursday, August 28, 2008

Attending OOW-2008

I will be there in Oracle Open World - 2008. Are you, if so lets plan on meeting there.




Friday, August 8, 2008

Broadcast feature in Oracle AS B2B 10g

Broadcast feature of Oracle AS B2B 10g enables the users to send the same message to multiple trading partners. This gives the flexibility to the users to create their own groups of trading partners specific to the business needs. The back-end application can then send a message to the group and B2B will send the message to all the members of the group.

The salient points of the feature are:

  1. Prevent BPEL to send multiple files there by reducing the traffic on
    BPEL-B2B and also in the B2B.
  2. Bring the concept of trading partner groups in B2B and use it for
    broadcasting. This will prevent BPEL user to know about Trading partner details as well as the Group as this is B2B specific meta data
  3. This is an event driven approach to handle the multiple messages to various trading partner
This is an optional feature which can used on a need basis by specifying the group name as part of "actionName" attribute. The "actionName" attribute would look like

actionName = Grouping:<name of the group>

This feature requires an additional identifier to be added for the Trading partner indicating the group. This can be achieved by creating a new custom Identifier and associating the same for the required trading partners

Steps to create a custom Identifier in B2B UI:

Administration -> Design -> Trading Partner Identification Types -> Create

P.S: Every New trading partner Identification requires a redeployment of the Agreement

This is available as part of MLR 10.1.2.3.0 - # 3
Patch # 7184219


Tuesday, August 5, 2008

Deque Issue in Oracle B2B

Very often i am hearing Deque issues in Oracle B2B and the root cause for the same is due to the mismatch in the namespace and is resulted due to old XSD file or the legacy option used to export the schemas from Ecs file.

To address this issue, apply the latest patch and regenerate the ecs and xsd using OracleAS Integration B2B Option. Please make sure to set the Dynamicnamespace in

<ORACLE_HOME>\ip\oem\edifecs\XEngine\config\registryValidator.xml

before regenerating the ecs/xsd file. Use the generated ecs file in B2B and XSD in BPEL.

Sunday, August 3, 2008

TPA caching

For performance reason, we have introduced a notion of TPA Caching for B2B Application which has a better Hardware Infrastructure especially Physical memory.

When this property is enabled all the TPA details will be read from the cache instead of runtime repository.

oracle.tip.adapter.b2b.TPACache=true

If the Agreement details is not available in the cache, B2B Engine will refer to the meta data repository and cache for subsequent use.

P.S Make sure to increase the heap size in opmn.xml as caching consumes more memory. This is applicable for both Document/Business action based Identification.

Tuesday, July 22, 2008

Handling Multiple Group ID - Multiple Departments of the same Enterprise

Consider a case where in the Enterprise GlobalCust has Two internal Department with name GlobalChips and GlobalCorp. Trading partner Acme wants to send messages to the two department by referring GlobaclChips and GlobalCorp in the Group ID.

1. Create two Identifier of Type EDI Group ID .
2. One with value GlobalChips and Another with GlobalCorp.
3. Add oracle.tip.adapter.b2b.edi.identifyFromTP = Group in the tip.properties and
restart B2B.
4. Create an Agreement with EDI Group ID as value GlobalChips.
5. Turn off the validation.

Send two message with Application Recipient Code as GlobalChips and GlobalCorp. Both of these messages should be accepted by B2B Engine with the To Party as GlobalCust.

P.S For generating FA similar to Inbound Business message please set

oracle.tip.b2b.edi.FAInternalProperties=true in tip.properties

P.S Make sure to disable the validation.

Another way of enabling this feature is by using the following tip.property.

oracle.tip.adapter.b2b.edi.ignoreValidation=<values>

Provide those identifier which will be different from the configured one.

Few of the sample identifiers are as follows:
InterchangeReceiverID,InterchangeSenderID,GroupReceiverID,GroupSenderID,GroupSenderQual,GroupReceiverQual,InterchangeSenderQual,InterchangeReceiverQual

Performance Tips to handle Large number of configuration

Performance Tips to handle Multiple configuration is to enable the following tip.properties and restart B2B

oracle.tip.configuration.ignoreValidation=true

or

oracle.tip.buslogic.validation.ModelValidation=off

Please ensure to be on 10.1.2.3 and latest patch.

Tuesday, July 15, 2008

RFP Support

Leave your question/Clarification on RFP by using option "Post a Comment" . I shall get back to you on this.

Thursday, July 10, 2008

10.1.2.3 - Latest B2B Patch Details

Going forward , install only 10.1.2.3 application server as all the patches will be developed for this version.

Please download 10123 AS Patch set from meta link http://metalink.oracle.com

Navigate:
1) On Patches & Update Page, click Link (Quick Links to the Latest Patchsets, Mini Packs, and Maintenance Packs)
2) On this page Click Link (Oracle Application Server Products)
3) Click Patch Number (5983622)
4) From this Page you can download Patchset for required platform.

Once 10.1.2.3.0 AS Patchset is applied, you can move to latest MLR#7184219 for B2B (10.1.2.3.0)

For Document Editor use 5550097.

Wednesday, July 9, 2008

Multiple Instances on the same box - RMI port conflict

Typically there is the RMI Port conflict when multiple instances of B2B are installed on the same box. Typically first instance will take the RMI Port as 5110 and hence the second instance is forced to take next available port which is 5111.

Even though this value is part of the tip.properties same is not updated in the web application.

How To Address this problem

1. Navigate to /ORACLE_HOME/j2ee/OC4J_B2B/applications/b2b/ip/WEB-INF. Take a backup of web.xml.
2. Identify the rmiport in the initParam, and edit the value to 5111 instead of 5110

In the web.xml file, alter the following

From
-----------
<init-param>
<param-name>rmiPort<param-value>5110</init-param>

To
---
<init-param>
<param-name>rmiPort<param-value>5111</init-param>

3. Make sure the same is reflected in tip.properties using
oracle.tip.adapter.b2b.RMIPort = 5110

4. Restart B2B

Thursday, June 5, 2008

My Birthday on June 3rd

Thanks a lot for all of the Birthday wishes on June 3rd. I received close to 1000 emails wishes for the first time in my life for my Birthday and i am very much thrilled. I never thought i have so many friends in my Blogging community.

Thanks again. you have made my day.

Cheers,
Ramesh

Sunday, June 1, 2008

How to change the metadata in Document Editor ? I.e to change the length of Country code.

File Naming convention in File/FTP Delivery channel

Often times it is a challenge to follow the file naming convention as it is send by the Trading partner. However for File/FTP Delivery Chanel following a File naming convention is mandatory if the identification is based on Exchange. This can be addressed by

1. Setting oracle.tip.adapter.b2b.allTPInOneDirectory = false and create a directory specific to the trading partner and have the Trading Partner drop the files in the Trading Partner specific folder. This will help B2B to identify the Trading partner with out any file naming convention.


2. Identify the trading partner using Group sender /Interchange sender ID.

Create an Identification as EDI Interchange ID/EDI Group ID in the Trading Partner profile, and assign a value. Make sure to have Trading partner send this value in either Interchange Sender ID or Group Sender ID in the payload. EDI Interchange ID /Group ID defined in the Trading Partner profile need not have to be part of the Identifier used in the agreement.

How To Handle Trimming Spaces in the EDI payload

Ideally there should not be Trimming spaces in the EDI payload , which results in a parsing Error while message processing. This can be handles either by

a. Requesting the customer to Trim the spaces in the end of the payload.
b. Ignoring the Parsing error due to spaces. This can be done by

suppressing the error in $ORACLE_HOME/ip/oem/edifecs/XEngine/config/ErrorSeverityConfig.xml

An error code example is 50420000. In this example, you need to append this towards the end of the ErrorSeverityConfig.xml file.

<ApplyTo>
<Criteria Name="ErrorID" Value="50420000"/>
<SetSeverity SeverityID="0"/>
</ApplyTo>

Thursday, May 29, 2008

Steps to configure and test the Dynamic Email feature of Oracle AS B2B 10.1.2.0.2

  1. Import the tutorial samples of ( for e.g:EDIFACT ) of 10.1.2.0.2 in 2 environments for Acme and GlobalChips
  2. Provide a new delivery channel detail and create the agreement for both Acme and GlobalChips
    1. In the delivery channel provide the endpoint of the IMAP Server.
    2. Provide the username/password (e.g.: user1/user1)

Scenario 1:

This is the normal scenario, where in user1@justb2b.com (Acme) will send a message to user2@justb2b.com (GlobalChips)

When observed in the log/the email client, we can see the message in the inbox of User2


Scenario 2:

Enable the actionName attribute to test the dynamic email scenario.
actionName = DynamicEmail:GlobalChips_1234:user3@justb2b.com;EmailSubject:UNB

In this case, edit endpoint details to point to another email id user3@justb2b.com and change the username/password.

When observed in the log/the email client, we can see the message in the inbox of User3. Though the in the acme machine, the configuration for GlobalChips is reading user2, due to the dynamic email feature, the mail gets delivered to user3. Ideally, this can be well tested if we have 3 environments for each user.

Sample enqueue script:

queue = IP_OUT_QUEUE
replyToMsgID =
from = Acme
to = GlobalChips
#actionName = DynamicEmail:GlobalChips_1234:user3@justb2b.com;EmailSubject:UNB
#eventName = Process_ORDERS
doctypeName = ORDERS
doctypeRevision = D98A
payload = Acme_orders.xml
attachment =

In the above enqueue script, the actionName has 2 pieces.

o DynamicEmail

In this case, the message gets delivered to the email address specified in the properties

o EmailSubject

The value of EmailSubject is “UNB”. In this case, the email subject will contain the UNB segment of the EDIFACT Message. If the "EmailSubject" has the value other than "UNB", then that string itself will be considered as the subject.

Note: The Dynamic email attribute does not require any additional configuration.


IMAP Server Setting:

Install any free IMAP email servers.

Create 3 users (e.g : user1@justb2b.com, user2@justb2b.com, user3@justb2b.com )


Friday, May 9, 2008

Time to perform /Time to Acknowledge

Time to perform : Time to perform is an important concept in Rosettanet implemented by Oracle B2B to define the timeout of a collaboration . It can be defined in the transaction level or collaboration level. It is defined as the time in minutes to perform or complete the transaction. If there is a failure to complete the collaboration with in the specified time, then b2b errors out the collaboration. This configuration can be seen as part of defining Transaction or collaboration.

This value can be overridden specific to Trading Partner.

Time to Acknowledgement : This defines the time with in which the Acknowledgment message must be received. If an Acknowledgment message is not received then B2B retries based on the retry count and failure in getting the Acknowledgment results in error.

Oracle AS B2B FTPS setup

1. Create a self signed host certificate.

2. Import the host certificate into the wallet. Import the Trading partner certificate for FTP over SSL as a trusted certificate.

3. In the General Tab of host Trading partner , create the wallet password.

4. Point the wallet in the tip.properties.

FTP Delivery channel Setup ( Generic Over FTP)

5. Depending on the mode of data transfer i.e Active/Passive , specify the data port for Active configuration and no data port for passive mode. Control port is there for both the mode and by default B2B considers this to be 21, there is a need to
mention it for any deviation.

6. Receiver Channel Mask (Host) : Depending on whether No channel encrypted, data channel to be encrypted , Control Channel to be encrypted or Both control and Data channel to be encrypted specity none, Data, Control or Both accordingly.

7. Sender Channel Mask (Trading Partner) : Depending on whether No channel enrypted, data channel to be encrypted , Control Channel to be encrypted or Both control and Data channel to be encrypted specity none, Data, Control or Both accordingly.

Note:
1. "sender channel mask" - used only when B2B send files to ftp server. The value "Both" means both channels "Control" and "Data" would be encrypted.
2. "receiver channel mask" - used only when B2B pick files from ftp server. The value "Both" means both channels "Control" and "Data" would be encrypted.
3. The other possible values what yopu provide here are "None", "Control" and "Data". Hope, the values are pretty self explanatory.


FTPS Server Configuration. Download a FTPS server such as Filezilla and follow the below steps.

1. Create a 1024 bit certificate and point to the same.
2. Create a user and/or group with permissions to a folder.
3. Download FTPS client , and connect to the FTP server , accept the certificate after the first connection.
4. Exchange the messages.



Oracle AS B2B DMZ setup

Instructions to setup and access B2B via DMZ.

This configuration is assumed to install B2B with in the firewall and standalone OHS in the DMZ and to obtain the firewall clearence for the Following port.

1. HTTP Port of OHS which sits in DMZ
2. HTTP Port of B2B which is with in the firewall.

Append the following lines to LoadModule section of standalone OHS
httpd.conf file

LoadModule proxy_module modules/mod_proxy.so (If it is already there then not required)
LoadModule proxy_http_module modules/mod_proxy_http.so

Add following lines to end of standalone Apache2.0 httpd.conf file

ProxyPass / http://:/
ProxyPassReverse / http://:/)

To work above configuration, HTTP port on which B2B listens should be opened on internal firewall.

Testing of DMZ setup
----------------------
Restart standalone Apache 2.0
Invoke the following URL from any machine in DMZ using browser
http://:/b2b/transportServlet

Above request initially goes to DMZ Apache and we have configured Apache to forward the request to B2B instance in intranet.It should display the
'transportServlet' parameters if everything goes well.

Above testing confirms that request is being passed from DMZ layer to Intranet layer but not from outside world to Intranet layer.

Testing from outside public network
-------------------------------------
Configure external firewall to accept the data for DMZ standalone Apache HTTP port.
Use the URL http://:/b2b/transportServlet
It should display the 'B2B server' parameters if everything goes well.

DMZ setup with load balancer
-------------------------------
Optionally you can configure Load balancer like 'BigIP' on external firewall to route the requests to DMZ layer.If you have DMZ layer front ended by load balancer then configure the load balancer to communicate with standalone HTTP server in DMZ.
In this case we expose the URL http://:/b2b/transportServlet to outside world to communicate with B2B .

Proxy configuration for B2B
-----------------------------
If you want to configure B2B to use proxy for all outgoing messages then read below.
Proxy server information needs to be provided in opmn.xml file of B2B midtier.

1) look for tag in opmn.xml
2) then look for tag 3) with in that tag make sure we should have
4) look for tag
5) then look for tag
6) with in that tag make sure we should have

In the above tag we also have some additional security attributes keep them as they are.

Now restart B2B and oc4j_b2b components or all components.

Refer the following documents for various High availability questions.

http://download-east.oracle.com/docs/cd/B14099_19/tru64.1012/install.1012/install/topo.htm#BABCFDBI

http://download-west.oracle.com/docs/cd/B14099_19/core.1012/b14003/mt_comp.htm

Tuesday, April 15, 2008

Oracle B2B and XML Gateway Integration

B2B XMLGateway Interoperability can be achieved in two ways.

1. ECX Queues : B2B has pre-seeded delivery channel for the XML Gateway Inbound and outbound queues such as ECX_INBOUND and ECX_OUTBOUND. Even though the Delivery channels are pre-seeded , there is a need to create the queues and the corresponding SQL are as follows.

connect apps/apps

drop type ECXMSG;
/

create type ECXMSG as OBJECT (
MESSAGE_TYPE VARCHAR2(2000) ,
MESSAGE_STANDARD VARCHAR2(2000) ,
TRANSACTION_TYPE VARCHAR2(2000) ,
TRANSACTION_SUBTYPE VARCHAR2(2000) ,
DOCUMENT_NUMBER VARCHAR2(2000) ,
PARTYID VARCHAR2(2000) ,
PARTY_SITE_ID VARCHAR2(2000) ,
PARTY_TYPE VARCHAR2(2000) ,
PROTOCOL_TYPE VARCHAR2(2000) ,
PROTOCOL_ADDRESS VARCHAR2(2000) ,
USERNAME VARCHAR2(2000) ,
PASSWORD VARCHAR2(2000) ,
PAYLOAD CLOB ,
ATTRIBUTE1 VARCHAR2(2000) ,
ATTRIBUTE2 VARCHAR2(2000) ,
ATTRIBUTE3 VARCHAR2(2000) ,
ATTRIBUTE4 VARCHAR2(2000) ,
ATTRIBUTE5 VARCHAR2(2000)
);
/

begin
begin
dbms_aqadm.stop_queue('ECX_INBOUND');
exception when others then null; end;
begin
dbms_aqadm.stop_queue('ECX_OUTBOUND');
exception when others then null; end;
begin
dbms_aqadm.drop_queue('ECX_INBOUND');
exception when others then null; end;
begin
dbms_aqadm.drop_queue('ECX_OUTBOUND');
exception when others then null; end;
begin
dbms_aqadm.drop_queue_table('ECX_INQUEUE');
exception when others then null; end;
begin
dbms_aqadm.drop_queue_table('ECX_OUTQUEUE');
exception when others then null; end;
end;
/

declare
begin
dbms_aqadm.create_queue_table('ECX_INQUEUE','apps.ECXMSG',multiple_consumers=>FALSE);
dbms_aqadm.create_queue_table('ECX_OUTQUEUE','apps.ECXMSG',multiple_consumers=>FALSE);
dbms_aqadm.create_queue('ECX_INBOUND', 'ECX_INQUEUE');
dbms_aqadm.create_queue('ECX_OUTBOUND', 'ECX_OUTQUEUE');
dbms_aqadm.start_queue('ECX_INBOUND');
dbms_aqadm.start_queue('ECX_OUTBOUND');
end;
/

connect system/welcome1
grant execute on apps.ECXMSG to b2b
/

exit;

XML Gateway enques the message to ECX_OUTBOUND queues and pick it from ECX_INBOUND queues. For outbound XML Gateway
should set the following ECX Headers.


MESSAGE_TYPE
MESSAGE_STANDARD
TRANSACTION_TYPE
TRANSACTION_SUBTYPE
DOCUMENT_NUMBER
PARTYID
PARTY_SITE_ID
PARTY_TYPE
PROTOCOL_TYPE
PROTOCOL_ADDRESS
USERNAME
PASSWORD
PAYLOAD
ATTRIBUTE1
ATTRIBUTE2
ATTRIBUTE3
ATTRIBUTE4
ATTRIBUTE5

among which TRANSACTION_TYPE, TRANSACTION_SUBTYPE,PARTY_SITE_ID,ATTRIBUTE1 are mandatory attributes. For inbound message, B2B enques the message to ECX_INBOUND queue with consumer name as b2buser, and the consuming application which is
XML Gateway in this case should use the same consumer name.

XML Gateway generates an OAGIS 7.x document, and there is a need to translate it to Edifecs XML before getting this processed in B2B as B2B mandates the incoming document to be Edifecs XML. B2B translates the Edifecs XML to native EDI using the inbuilt XEngine. To translate OAGIS to Edifecs XML use outbound call out and the
same is true in inbound case to translate the Edifecs XML to OAGIS document to be consumed by XML Gateway.


2. IP Queues : This approach used pre seeded queues IP_OUT_QUEUE and IP_IN_QUEUES with corresponding Delivery channel. Typical flow involves B2B Enques the message to IP_IN_QUEUE and BPEL Process consumes the message from IP_IN_QUEUE and send it to Ebiz suite using EBS adapter.

Refer the following Apps adapter documents which talks about various interface types for integrating with Oracle Applications:

http://download-uk.oracle.com/docs/cd/B31017_01/integrate.1013/b28351/T430238T430241.htm
http://www.oracle.com/technology/products/integration/htdocs/ds_oracleas_ebs_adapter.pdf
http://download-west.oracle.com/docs/cd/B31017_01/integrate.1013/b28351/T430238T430340.htm

also refer various samples under 10.1.3.1\OracleAS_3\bpel\samples\tutorials\150.AppsAdapter

Monday, April 14, 2008

Deployment in Oracle B2B

Refer to Chapter 13 on Creating and Deploying a configuration.

Deployment through Script

The following sql stmt makes the agreements available for deployment.
SQL> update tip_agreement_t set lifecyclestate='Approved';

It is possible to write a script encapsulating the following public API.

ip/setenv.bat
java oracle.tip.configuration.ConfigurationManager
-standalone <congif Name> -- To create configuration based on all approved agreement.

java oracle.tip.configuration.ConfigurationManager -standalone <configName> <approved agrmtName1> <approved agrmtName2>

-deploy <configuration-name>
-abort <configuration-name>
-discard <configuration-name>
-retire <configuration-name>
-reactivate <configuration-name>
-queryName <configuration-name>
-queryStatus <configuration-lc-state>
-quiesce <configuration-name>
-quiesce allActive

Thursday, April 10, 2008

Rosettanet Exception handling in B2B

Exception/Error handling in Rosettanet

RosettaNet is an e-business standard based on XML which is predominently used in the High Tech Industries for the supply chain management needs. This standard talk about rapid, reliable process interaction between different trading Partner, and also about transport and packaging requirement.

Partner Interface Process (PIP) defines the sequence of steps required to execute a business process between two trading partners. PIPs are specialized, XML-based dialogs that define the structure, sequence of steps, role activities, data elements, values, and value types for each business document message exchanged between trading partners.

The RosettaNet Implementation Framework (RNIF) is a collection of specifications used to implement message exchange between trading partners over the Internet. It covers Transport,Packaging,Authorization,Authentication,Encryption and
Nonrepudiation.

Rosettanet Specification refers to two types of errors, in-band and out-of-band.

1. in-band error : This occurs during collaboration such as General exception and Receipt Acnowledge exception.

2. out- of -band error : This ocurs outside collaboration resulting in generation of 0A1. For e.g failure related to
time to perform, retry count etc. Currently B2B is not supporting this.

Exception scenarios

1. Outbound PO Processing : Back end application send the message to B2B, for any exception B2B sends the B2B Exception to Back end application.

2. Inbound PO Processing : For any message which failed during inbound PO processing, B2B sends RNIF exception to trading partner, Trading partner in turn has to consume the RNIF exception and generate a B2B exception corresponds to it.

3. Outbound POA Processing :For any message which failed during outbound POA processing, B2B sends RNIF exception to trading partner and B2B Exception to Back end application. Trading partner consumes the RNIF exception and sends B2B Exception to Back end application.

4. Inbound POA Processing :For any message which failed during inbound POA processing,B2B sends B2B Exception to Back end application.

Tuesday, April 8, 2008

PGP Encryption Support using External CallOut

Flexible File Naming convention in File and FTP transport

File name or directory name for File/FTP transport can be customized using various MACRO provided as part of Transport Parameters.

Use case : Consider a scenario where in the outbound file name has to be created based on

a. From Party
b. To Party
c. DocTypeName
d. DocTypeRevision
e. ActionName

Solution : There is an introduction of new File name format and Directory name format as transport parameters in File/FTP protocol.

e.g filename Format to be specified as %FROM_PATRY%_%TIME_STAMP%


The format for these parameters can be constructed by using following macros

Inbound:

%FROM_PARTY% (Sender Trading Partner Of Inbound Message)
%TO_PARTY% (Receiver Trading Partner Of Inbound Message)
%DOCTYPE_NAME%
%DOCTYPE_REVISION%
%ACTIONNAME%

Outbound

%FROM_PARTY% (Sender Trading Partner Of Outbound Message)
%TO_PARTY% (Receiver Trading Partner Of Outbound Message)
%DOCTYPE_NAME%
%DOCTYPE_REVISION%
%ACTIONNAME%
%MSG_ID%
%TIMESTAMP%

Note : configure the file name format as filename_format transport protocol parameter while defining the Delivery channel. You need to apply latest patch 7322333 on top of 10.1.2.3. For internal delivery channel use internal filename format parameter.

e.g filename format %FROM_PARTY%_%TIMESTAMP%.dat





P.S It is always advisable to apply the latest patch and not the patch mentioned in this post

Wednesday, March 26, 2008

Correllation and Conversation in EMBS

There is a need to set the Following tip.property in implement Correllation and conversation in EBMS.

oracle.tip.adapter.b2b.ebms.deliverConvId=true
oracle.tip.adapter.b2b.ebms.TreatMsgWithReplyToMsgIDAsReq=true



Wednesday, March 19, 2008

Ping Pong In EBMS

It is a popular practice in EBMS world to exchange the ping-pong messages to ensure that the remote Messange Handler Service which is essentially a remote trading partner in B2B world is up and functioning well.This is done by sending a PING message and the remote MSH responds it with a PONG message.

A Message Service Handler Ping (MSH Ping) message consists of an ebXML Message containing no ebXML Payload and the following elements in the SOAP Header:

MessageHeader element
TraceHeaderList element
ds:Signature element

The TraceHeaderList and the ds:Signature elements MAY be omitted.

The MessageHeader element MUST contain the following:

a. From element that identifies the Party creating the MSH Ping message
b. To element that identifies the Party that is being sent the MSH Ping message
c. CPAId element
d· ConversationId element
e· Service element that contains: uri:www.ebxml.org/messageService/
f· an Action element that contains Ping

The message is then sent to the To Party.

Once the To Party receives the MSH Ping message, it MAY generate a Message Service Handler Pong (MSH Pong)message consisting of an ebXML Message containing no ebXML Payload and the following elements in the SOAP Header:

MessageHeader element
TraceHeaderList element
An Acknowledgment element
An OPTIONAL ds:Signature element

The TraceHeaderList, Acknowledgment and ds:Signature elements MAY be omitted.

The MessageHeader element MUST contain the following:

a. From element that identifies the creator of the MSH Pong message
b· To element that identifies a Party that generated the MSH Ping message
c· CPAId element
d· ConversationId element
e· Service element that contains the value: uri:www.ebxml.org/messageService/
f· An Action element that contains the value Pong
g· RefToMessageId that identifies the MSH Ping message.

Parties who receive a MSH Ping message SHOULD always respond to the message. However, there is a risk that some parties might use the MSH Ping message to determine the existence of a Message Service Handler as part of a security attack on that MSH. Therefore, recipients of a MSH Ping MAY ignore the message if
they consider that the sender of the message received is unauthorized or part of some attack.The decision process that results in this course of action is implementation dependent.


Implementation of Ping-pong in Oracle B2B.

1. Create a business action and Document Type as Ping.
2. While creating the Document type use the following parameter.

Document Routing ID: "EBMS_PO"
Service: "urn:oasis:names:tc:ebxml-msg:service"
Identification Expression (XPath) for XML Document: "/*[local-name()='Ping']"

3. Create an Agreement after creating Operational Capability corresponding
to Ping.

4. Enque the message with doc type and revision as Ping and 1.0.

5. The responding pong message is found in the wiremessage-report.



Friday, February 29, 2008

High Availability with File/FTP adapter

High availability in B2B is typically achieved by running muliple instance of B2B pointing to the same metadata repository, front ended by a load balancer such as web cache or any hardware load balancer. Always HA using File/FTP transport is very challenging due to the non transactional nature of the transport. We have come up with two properties to handle the same.

1. oracle.tip.adapter.b2b.inHAMode= true
2. oracle.tip.adapter.b2b.HAInstanceName=MyHost

Note that the setting for oracle.tip.adapter.b2b.HAInstanceName must be unique among the B2B instances using the same B2B repository.This is followed by running the script against b2b schema.

This feature allows the File/FTP to automatically detect which instance should poll and when the first instance stop polling (due to outages), the second instance will start polling by registering itself in the B2B_HA_REGISTRY after detecting the first instance is down. Even if there is a restart of the first instance it will not poll as the second instance is registered and active and acts as a Fail over instance, ready to take over in case of issue with second instance.
P.S

1. Please ensure to be on 10.1.2.3 patch.
2. Do not create the table manually and insert the instance related information, it should happen on its own if the patch is functional.
3. Need B2B restart after adding the above properties to tip.properties.

Monday, February 18, 2008

Large EDI File Processing

This challenge is addressed by writing the payload to a input directory. The corresponding translated payload will also be written to an output directory.

p.s As a pre-requisite always apply the latest patch and set the appropriate heap size as per the performance best practice post.

1. Set the heap size as discussed in the peformance post.
2. Apply the latest patch.
3. You will need to set following two properties in tip.properties

1) oracle.tip.adapter.b2b.edi.incoming.wiremessage.size
.
Specify the size of incoming EDI message that must be treated as large enough
to be kept in file system instead of memory, during message processing. The size
specified is in bytes.

Default is 300 MB (300000000)

2) oracle.tip.adapter.b2b.edi.incoming.wiremessage.directory
Specify directory where large incoming message must be saved.
Example:
oracle.tip.adapter.b2b.edi.incoming.wiremessage.directory=/scratch/mdsharma/edi_files_dir/globalchips

4. For outbound consider File batching as well as Disk caching.

These are the parameters needed to set for this in tip.properties file -

# entries to support large file outbound processing
oracle.tip.adapter.b2b.edi.fileBased=true
oracle.tip.adapter.b2b.edi.outputDirectory=E:\\oracle\\product\\DVAPPSRV01\\ip\\log\\edioutput
#outputSize is expressed in bytes
oracle.tip.adapter.b2b.edi.outputSize=102400

#entries to support no-lock processing of batched outbound messages
oracle.tip.adapter.b2b.sqltablelock=false

#entries to support splitting large batched outbound into smaller batches
#value determines size of smaller batches split off from the large batch
#if this property exists and is set to a value, then #oracle.tip.adapter.b2b.edi.outputDirectory
#and oracle.tip.adapter.b2b.edi.outputSize must be specified.
#if this property exists and is set to a value, oracle.tip.adapter.b2b.edi.fileBased #can be either true or false. true is preferred.
oracle.tip.adapter.b2b.edi.mergeMsgSize=500
oracle.tip.adapter.b2b.qMsgRatio=20

#Entry for file-based processing across multiple B2B instances.
oracle.tip.adapter.b2b.edi.fileBased.directory=E:\\Oracle\\Product\\DVAPPSRV01\\ip\\log\\filebased.

Tuesday, February 5, 2008

Variable Retry Interval for HTTP Transport

Use case : There is a notion of Retry Count and Time to Acknowledgement in Oracle B2B for HTTP Transport where by B2B Engine retries for a Retry Count number of times with an interval of Time to Acknowedgement between every retries. Consider a practical case where in Partner server is down and it takes few hours to bring it up, hence it may not be practical to retry it immediately.

Details :

Using the Variable Retry Interval it is possible to schedule the retry activity during appropriate time. This will make the retry feature more effective.

To enable this feature set

oracle.tip.transport.HttpSender.TimeToAck = 1,20,120

where it will retry after 1 minute, 20 minute and 2 hour after previous retries.



Stacking Feature in B2B to handle the scheduled outage of Trading Partner

Use case

1. Should be able to configure the scheduled outage of a TP on the host.
2. During the outage, B2B should be able to store the messages without any processing and not error them out.
3. At the end of outage should be able to send the messages to TP in a controlled manner i.e batch mode. The batches can be defined either using message id or time range or it can be partner-wise

This Use case is handled by Quesing all the appropriate Agreement related to the Trading partner during the begging of the down time and is done by using public API.

java oracle.tip.configuration.ConfigurationManager -quiesce

and to reactivate the configuration at the end of Scheduled down time.

java oracle.tip.configuration.ConfigurationManager -reactivate

Resubmit :

InstanceMessageUtil is enhanced to get the instance messages based on Start time, End time , Agreement Name and status.

getInstanceMessages(String startDateStr,String endDateStr,
String agrmtName,String status)

This will provide all the messageID and the resubmission utility can be used in manual mode to resubmit all the messages.

Please note In case of a planned outage of the trading Partner, you can use the Stacking feature mentioned above, in which case B2B will not post the message to the Trading partner end point. If it is not a planned outage, it errors out in the transport layer


and you can use B2B in Auto/Manual mode to resubmit. HTH. Let us know.




Monday, February 4, 2008

Resubmission Feature

Resubmission feature which is part of the latest patch.

Introduction

Oracle AS B2B is a B2B Product with very rich protocol stack and is based on Standard based Scalable Architecture managed through Oracle Application server. This product has a rich Exception handling framework to capture the error/Exception at various stages in the Engine, and send the exception message to IP_IN_QUEUE with B2BERRORUSER. With the increased customer base over the recent past, resubmission of error/Exception message in B2B is the key feature identified to be supported. There have been many best practices used by several of our customer to get the Exception message and to resubmit the business message using the Workflow driven BPEL Process. This is just an initial pilot project undertaken to provide the Resubmission feature out of the box. It is expected to go for multiple enhancements depending on the customer drive and the acceptance.

Use Case Addressed

1. Basic Resubmission feature with Retry count and Interval for both inbound and outbound.
2. Notification to B2B Administrator.
3. Resubmission based on message ID, Agreement and Status.
4. Payload based resubmission. This is ideally for error/Exception based on payload.
5. Outbound resubmission using IP_OUT_QUEUE and inbound Resubmission through Event queue. This will get the inbound message goes through all the layer of B2B as if it has come from Trading Partner.
6. Deletion of duplication message and correlation of business message with appropriate Acknowledgement.
7. Support Stacking feature to handle the B2B Downtime and Resubmission after the same.
8. Variable Resubmission interval.

Outbound Scenario
B2Bresubmit Utility runs in two modes.

Auto Mode:
B2Bresubmit Utility runs in infinite listening mode to IP_IN_QUEUE with B2BERRORUSER. For every exception message, it gets the messageID and uses InstanceMessageUtil to obtain the From Party, To Party, DocType , Revision and the payload . It uses the above information to enque the message to IP_OUT_QUEUE to be picked up by B2B.

Depending on the configured Retry Count and Interval it resubmit the message and send a notification to the configured email ID once after exhausting all the attempt to resubmit the message. Email subject contain the messageID and the body contain Error Description.


Variable Resubmission Interval

Be default the Retry Interval is constant for all the retry effort during resubmission. However there is an option to define variable resubmission Interval for every resubmission. This will enable the B2BAdministrator enough time to debug and bring up the partner server in case of any issues.

If the value for ResubmitWithInterval is set to true, the utility will resubmit every message with interval mentioned for the property

oracle.tip.adapter.b2b.data.ReSubmit.ResubmitIntervals.


In this example,

First resubmission will happen after 1 minutes of first failure
Second resubmission will happen after 1 minutes of first resubmission

Also ensure that the value for oracle.tip.adapter.b2b.data.ReSubmit.ReSubmitCount is same as number of intervals mentioned.
Manual Mode
B2Bresubmit utility resubmits messages based on
1. Message ID,
2. Agreement ID and Status.

MessageId based
Once after B2BAdministrator gets the notification for a failed resubmission, he will extract the messageID from the email, Identify the root cause of the problem by referring b2b.log/Report, fix the problem and use Resubmission utility in manual mode to resubmit the message based on messageID.
Agreement name and message status

Ideally this feature is used in Bulk Resubmission after the Trading partner Downtime and is based on Agreement name, Status, Start time and End time.

The typical way to execute is as below.

Example:

java oracle.tip.adapter.b2b.data.ReSubmit "2008/01/28 16:00" "2008/01/28 16:15" Agreement Error

The time format is: yyyy/MM/dd HH24:MI

Inbound Scenario

Inbound Resubmission is pretty much the same as Outbound with both Auto and Manual mode, however the resubmission is based on the event queue, which will enable the resubmission messages to go through the respective exchange layer as if it has come from Trading Partner.

Resubmission Configuration

Complete List of configurations used for this utility



Wednesday, January 16, 2008

Turn off TPA Validation for Delivery channel Information

This feature is used for re-submission. Assuming the inbound essage has come through AS2/EBMS exchange plugin, which needs to be re-submitted through a File Delivery channel which is encapsulated using a Dummy Agreement. This may not be feasible as B2B performs TPA validation for delivery channel (checking if the delivery channel info on which message arrived is same as the delivery channel
info present in matching trading partner agreement).

In order to turn off this validation, there a tip.property
oracle.tip.adapter.b2b.tpa.validateTPA

If the value of this property is set to false in tip.properties, B2B will not
perform TPA validation