IBM Support

Isolate the problem – A guide to using simpler business processes with your communication issues

Technical Blog Post


Abstract

Isolate the problem – A guide to using simpler business processes with your communication issues

Body

Whenever a customer reports a communication issue with one of Sterling B2B Integrator's client adapters, I always recommend we attempt to isolate the issue.

Most times, the communication steps are embedded in nested business processes or even called from a Sterling FileGateway generic business process or an AS2 flow.

To isolate the issue, if the problem is any of the client steps, then create a simple business process which will only do those particular client steps. I suggest to even hard code values in the business process for simplicitly purposes.

Here are a few examples of simple business processes with FTPClient, HTTPClient and SFTPClient steps which can help you in isolating your communication issues. You can certainly use these examples as basis to your own scenario, but the idea is to simplify the communication process.

FTP Client Put:

 

<process name = "simple_ftp_put">

 

<sequence name="Sequence Start">

 

<operation name="FTP Client Begin Session Service">

<participant name="FTPClientBeginSession"/>

<output message="FTPClientBeginSessionServiceTypeInputMessage">

<assign to="FTPClientAdapter">FTPClientAdapter</assign>

<assign to="RemoteHost">REPLACE_WITH_FTPSERVER</assign>

<assign to="RemotePort">REPLACE_WITH_PORT</assign>

<assign to="RemoteUserId">REPLACE_WITH_USERID</assign>

<assign to="RemotePasswd">REPLACE_WITH_PASSWD</assign>

<assign to="ResponseTimeout">600</assign>

<assign to="UsingRevealedPasswd">true</assign>

<assign to="." from="*"></assign>

</output>

<input message="inmsg">

<assign to="." from="*"></assign>

</input>

</operation>

 

<operation name="FTP Client CD Service">

<participant name="FTPClientCd"/>

<output message="CdRequest">

<assign to="SessionToken" from="/ProcessData/SessionToken/text()"/>

<assign to="Directory">REPLACE_WITH_DIR</assign>

</output>

<input message="inmsg">

<assign to="FTPClientCdResults" from="*"/>

</input>

</operation>

 

 

<operation name="FTP Client PUT Service">

<participant name="FTPClientPut"/>

<output message="FTPClientPutServiceTypeInputMessage">

<assign to="SessionToken" from="/ProcessData/SessionToken/text()"/>

<assign to="DocumentId" from='PrimaryDocumentId/text()'/>

<assign to="ConnectionType">PASSIVE</assign>

<assign to="." from="*"/>

</output>

<input message="inmsg">

<assign to="FTPClientPutServiceResults" from="*"/>

</input>

</operation>

 

 

<operation name="FTP Client End Session Service">

<participant name="FTPClientEndSession"/>

<output message="FTPClientEndSessionServiceTypeInputMessage">

<assign to="SessionToken">/ProcessData/SessionToken/text()</assign>

<assign to="." from="*"></assign>

</output>

<input message="inmsg">

<assign to="." from="*"></assign>

</input>

</operation>

 

</sequence>

</process>

 

 

HTTP Client Get:

 

<process name="Simple_HTTP_Get">

<sequence name="Sequence Start">

<operation name="HTTP Client Begin Session Service">

<participant name="HTTPClientBeginSession"/>

<output message="HTTPClientBeginSessionServiceTypeInputMessage">

<assign to="HTTPClientAdapter">HTTPClientAdapter</assign>

<assign to="RemoteHost">REPLACE_WITH_REMOTE_HOST</assign>

<assign to="RemotePort">REPLACE_WITH_REMOTE_PORT</assign>

<assign to="." from="*"></assign>

</output>

<input message="inmsg">

<assign to="HTTPClientBeginSessionServiceResults" from="*"></assign>

</input>

</operation>

 

<!-- GET URI / to reach the final page -->

<operation name="Http Client Get Service">

<participant name="HTTPClientGet"/>

<output message="HTTPClientGetServiceTypeInputMessage">

<assign to="SessionToken" from="HTTPClientBeginSessionServiceResults/SessionToken/text()"></assign>

<assign to="URI">REPLACE_WITH_URI</assign>

<assign to="RawResponse">true</assign>

<assign to="ResponseTimeout">1200</assign>

<assign to="." from="*"></assign>

</output>

<input message="inmsg">

<assign to="HTTPClientGetServiceResults" from="*" append="true"></assign>

</input>

</operation>

 

<operation name="HTTP Client End Session Service">

<participant name="HTTPClientEndSession"/>

<output message="HTTPClientEndSessionServiceTypeInputMessage">

<assign to="SessionToken" from="HTTPClientBeginSessionServiceResults/SessionToken/text()"></assign>

<assign to="." from="*"></assign>

</output>

<input message="inmsg">

<assign to="." from="*"></assign>

</input>

</operation>

 

</sequence>

</process>

 

 

SFTP Client Get:

<process name="Simple_GetSFTP">

<sequence name="SFTP_SIMPLE">

 

<operation name="SFTP Client Begin Session Service">

<participant name="SFTPClientBeginSession"/>

<output message="SFTPClientBeginSessionServiceTypeInputMessage">

<assign to="ProfileId">REPLACE_WITH_PROFILE_ID</assign>

<assign to="SFTPClientAdapter">SFTPClientAdapter</assign>

<assign to="." from="*"/>

</output>

<input message="inmsg">

<assign to="SFTPBeginSessionServiceResults" from="*"/>

</input>

</operation>

 

<operation name="SFTP Client CD Service">

<participant name="SFTPClientCd"/>

<output message="SFTPClientCdServiceTypeInputMessage">

<assign to="Directory">REPLACE_WITH_REMOTE_DIR</assign>

<assign to="SessionToken" from="/ProcessData/SFTPBeginSessionServiceResults/SessionToken/text()"/>

<assign to="." from="*"/>

</output>

<input message="inmsg">

<assign to="." from="*"/>

</input>

</operation>

 

 

<operation name="SFTP GET ">

<participant name="SFTPClientGet"/>

<output message="GetRequest">

<assign to="." from="*"/>

<assign to="SessionToken" from="/ProcessData/SFTPBeginSessionServiceResults/SessionToken/text()"/>

<assign to="RemoteFileName">*.txt</assign>

</output>

<input message="inmsg">

<assign to="SFTPGetResults" from="PrimaryDocument"/>

<assign to="SFTPGetResults" from="DocumentList"/>

</input>

</operation>

 

<operation name="SFTP END SESSION SERVICE">

<participant name="SFTPClientEndSession"/>

<output message="EndSessionRequest">

<assign to="SessionToken" from="/ProcessData/SFTPBeginSessionServiceResults/SessionToken/text()"/>

</output>

<input message="inmsg">

<assign to="SFTPEndSessionResults" from="*"/>

</input>

</operation>

 

</sequence>

</process>

 

 If you are able to reproduce the issue with these simple business processes, then you have better control of the test. If you are not able to reproduce the issue with the simple business process, and the original error is in one of the steps you are attempting to reproduce, then you can start adding the customizations from the original business process that fails. This way you can slowly attempt to reproduce the issue and see where the breaking point is.

I have found this approach very helpful and I hope it helps you as well.

[{"Business Unit":{"code":"BU059","label":"IBM Software w\/o TPS"},"Product":{"code":"SS3JSW","label":"IBM Sterling B2B Integrator"},"Component":"","Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"","Edition":"","Line of Business":{"code":"LOB59","label":"Sustainability Software"}}]

UID

ibm11121649