Over the past two years, IBM has expanded its ability to give you greater visibility into B2B transactions. We’ve incorporated the power of AI, machine learning and blockchain to make information more accessible and provide greater insights in near real-time for IBM Sterling Supply Chain Business Network. Now, we are excited to announce that those capabilities are available for IBM Sterling B2B Integrator and you can try them out for free with our 120-day trial.
In the first part of this series, you will learn what IBM Sterling Business Transaction Intelligence (BTI) can do for you and the basics of connecting from Sterling BTI to Sterling B2B Integrator. Then, in the rest of the series, we will dig deeper into how to put the integration into production and how to quickly demonstrate the value to your business. So, let’s get started.
Why IBM Sterling Business Transaction Intelligence
Briefly, Sterling BTI is available for use with Sterling B2B Integrator in two levels:
Enterprise Edition brings even greater AI and machine learning capabilities such as cycle time predictions, so you can monitor the orders that may not make your “on time, in full” expectations. You can see the probability of when a shipment will be complete and understand what to do to get ahead of disruptions.
Multi-Enterprise Edition also incorporates IBM Blockchain capabilities to remove transaction blind spots between partners, with permission-based shared visibility from order through delivery. Each participating partner maintains control of what is shared and with whom in the relationship. And with early warning signals and a single version of the truth, you can proactively address discrepancies before they become disputes.
Whichever edition you choose, Sterling BTI makes it easy for both IT and business users, regardless of skill level, to find out where a specific order is in its lifecycle using natural language search. Self-service visibility of transaction data in real time and in context frees-up more of your time to stay focused on your real job – maintaining systems, monitoring system performance and deploying new technologies – not getting bogged down in business data you shouldn’t have to worry about.
Get started
As a B2B Integrator customer, you can take advantage of Sterling BTI capabilities with a few easy steps.
First, work with your sales contact to add Sterling BTI to your account entitlement, so you can take advantage of the free trial. Once entitled, you will need the following data to configure B2B Integrator to talk to Sterling BTI:
- BTI REST URL
- Partner ID
- Client ID
- Client Secret
Now you can instrument your EDI flows to send EDI documents to Sterling BTI using the built-in HTTP Client Adapter. You can do this directly in the flow or you can put the document into a staging location (filesystem directory, mailbox queue) and send to Sterling BTI in a different thread. For high performance/high load systems, we recommend performing send to Sterling BTI in a different thread to prevent your system from slowing down if Sterling BTI is slow or falls behind.
Also note that the Sterling BTI endpoint is capped at 10,000 documents per hour. If you expect to send more than that, your sales or support contact can provide additional assistance.
Whichever approach you take toinstrument your flows, the initial set-up steps are the same:
- Fetch the SSL certification from the BTI REST URL, and put it into the B2Bi trust store. Remember the certificate ID. It is required when invoking the B2BI HTTP Client Services.
- Place the BTI REST API related data into a property file, instead of hard coding it in the BP. Create a property file called b2bi_bti.properties with the following entries:
- BTI_HOST=api.ibm.com
- BTI_PORT=443
- BTI_URI=/scsharedledgers/run/api/input/v1/ODCO00188865/doc?
- x-ibm-client-id=83ff82f5-aaaa-bbbb-9ca5-aaaaaaaaaaaa
- x-ibm-client-secret=PUTYOURBTISECRETHERE
- CACertificateId=544176171d6242cebnode1
- accept=application/json
Data specifics and mapping options
The Sterling BTI endpoint accepts data in a variety of formats but does expect and require specific data elements to be present to be able link documents together in a flow. These are generally “standard” EDI data elements. Details on these data elements are available here.
If the data is in the standard fields, you are all set. If your document format doesn’t directly match what Sterling BTI expects, don’t worry as you can perform some custom mapping through the Sterling BTI interface. You can customize Sterling BTIby using the Document configurationtool to adjust how the data in your documents is mapped to the fields used by BTI.
Company administrators can upload sample documents as a model and configure the way that each field is used by Sterling BTI. This allows company administrators to adjust how data is interpreted to facilitate nuances in the data. Document configuration includes training maps for each document type so that a customer sample EDI document can be uploaded to create custom-mapping configurations. Configuration can be done by partner or globally.
Supported document types
Sterling BTI supports the following document types shown below, and also listed here. We will continue to add more document types over time, so please check this link for the most up-to-date list.
Sterling Business Transaction Intelligence Enterprise and Multi-Enterprise Editions support the following EDI X12 document types starting with X12 version 4010.
- 214 Transportation carrier shipment status message
- 315 Status details (Ocean)
- 810 Invoice
- 820 Payment Order/Remittance Advice
- 850 Purchase order
- 855 Acknowledgment
- 856 Ship Notice/Manifest
- 860 Purchase Order Change Request - Buyer Initiated
- 865 Purchase Order Change Acknowledgment/Request - Seller Initiated
- 875 Grocery products purchase order
- 876 Grocery products purchase order change
- 880 Grocery products invoice
- 997 Functional Acknowledgment
Sterling BTI access details
To see your data in Sterling BTI or to configure Sterling BTI, log in to the IBM Sterling Customer Center here. The credentials to login are provided when you onboard and are entitled for Sterling BTI.
Once logged in to the IBM Sterling Customer Center, click on “Business Transaction Intelligence Plus” to launch the Sterling BTI user interface. Now you are ready to instrument flows to connect to Sterling BTI.
Sample flow to connect to Sterling BTI
The business process that sends to Sterling BTI looks as follows and must set the document direction as ‘inbound’ or ‘outbound’ as the query parameter and also must set these http headers: x-ibm-client-id and x-ibm-client-secret.
<process name="B2BI_BTI_Integration">
<sequence>
<assign to="Doc1" from="PrimaryDocument/@SCIObjectID" />
<operation name="Assign ID for Doc 1">
<participant name="This"/>
<output message="giveDocumentRequest">
<assign to="." from="*"/>
<assign to="documentKey" from="'Doc1'"/>
</output>
<input message="giveDocumentResponse">
<assign to="Doc1/doc:document-id" from="documentId/text()" append="true"/>
</input>
</operation>
<operation name="HTTP Client Begin Session Service">
<participant name="HTTPClientBeginSession"/>
<output message="HTTPClientBeginSessionServiceTypeInputMessage">
<assign to="." from="*"></assign>
<assign to="HTTPClientAdapter">HTTPClientAdapter</assign>
<assign to="RemoteHost" from="sci-get-property('b2bi_bti', 'BTI_HOST')"></assign>
<assign to="RemotePort" from="sci-get-property('b2bi_bti', 'BTI_PORT')"></assign>
<assign to="SSL">Must</assign>
<assign to="CipherStrength">Strong</assign>
<assign to="CACertificateId" from="sci-get-property('b2bi_bti', 'CACertificateId')"></assign>
</output>
<input message="inmsg">
<assign to="." from="*"></assign>
</input>
</operation>
<assign to="MIMEtemp/mime:message/mime:header" from="sci-get-property('b2bi_bti', 'accept')" append="true"/>
<assign to="MIMEtemp/mime:message/mime:header/@name" from="'Accept'" append="true"/>
<assign to="MIMEtemp/mime:message/mime:header" from="sci-get-property('b2bi_bti', 'x-ibm-client-id')" append="true"/>
<assign to="MIMEtemp/mime:message/mime:header/@name" from="'x-ibm-client-id'" append="true"/>
<assign to="MIMEtemp/mime:message/mime:header" from="sci-get-property('b2bi_bti', 'x-ibm-client-secret')" append="true"/>
<assign to="MIMEtemp/mime:message/mime:header/@name" from="'x-ibm-client-secret'" append="true"/>
<assign to="MIMEtemp/mime:message/mime:body" from="Doc1/doc:document-id"/>
<operation name="MIME encode documents">
<participant name="MIME"/>
<output message="packRequest">
<assign to="mime-document" from="MIMEtemp/mime:message"/>
</output>
<input message="packResponse">
<assign to="." from="*"/>
</input>
</operation>
<assign to="PrimaryDocument" from="mime-document/@*" />
<operation name="Timestamp Utility">
<participant name="TimestampUtilService"/>
<output message="TimestampUtilServiceTypeInputMessage">
<assign to="action">current_time</assign>
<assign to="format">yyyy-MM-dd'T'HH:mm:ss'Z'</assign>
<assign to="." from="*"></assign>
</output>
<input message="processed">
<assign to="." from="*"></assign>
</input>
</operation>
<assign to="btiURI" from="sci-get-property('b2bi_bti', 'BTI_URI')"></assign>
<assign to="btiURI1" from="concat('&direction=',//direction)" />
<assign to="btiTime" from="concat('&processed=',//time)" />
<assign to="btiURI2" from="concat(btiURI1, btiTime)" append="true" />
<assign to="btiURI3" from="concat(btiURI,btiURI2)" />
<operation name="HTTP Client POST Service">
<participant name="HTTPClientPost"/>
<output message="HTTPClientPostServiceTypeInputMessage">
<assign to="." from="*"></assign>
<assign to="URI" from="/ProcessData/btiURI3/text()"></assign>
<assign to="RawRequest">true</assign>
<assign to="RawResponse">true</assign>
</output>
<input message="inmsg">
<assign to="." from="*"></assign>
</input>
</operation>
<operation name="HTTP Client End Session Service">
<participant name="HTTPClientEndSession"/>
<output message="HTTPClientEndSessionServiceTypeInputMessage">
<assign to="." from="*"></assign>
</output>
<input message="inmsg">
<assign to="." from="*"></assign>
</input>
</operation>
<onFault>
<sequence name="End Session">
<operation name="HTTP Client End Session Service">
<participant name="HTTPClientEndSession"/>
<output message="HTTPClientEndSessionServiceTypeInputMessage">
<assign to="." from="*"></assign>
</output>
<input message="inmsg">
<assign to="." from="*"></assign>
</input>
</operation>
</sequence>
</onFault>
</sequence>
</process>
For additional instructions on how to put the integration into production, read part 2 in this blog series.