Introduction
This article explains how trading partner agreements can be configured and used in webmethods.io B2B using the RNIF protocol
Audience
It is assumed that readers of this article know how to set up B2B setup using RNIF protocol. In case you skipped the previous article follow the link below webMethods.io B2B processing message using RNIF 2.0
Pre-Requisites
Set up B2B enterprise profile, partner profile, Business Document and Processing rule for RNIF and flow service to submit B2B document.
Topics Covered
- Introduction to TPA
- Use case
- Assets development
- End to End working flow
What is Trading partner agreement (TPA)?
Trading Partner Agreement (TPA) definitions are a set of parameters that help you tailor how documents are exchanged between two trading partners.
Each TPA contains specific information about how documents must be exchanged between two trading partners.
- The partner that represents the sender of the documents.
- The partner that represents the receiver of the documents.
- An agreement ID that identifies the type of TPA (for example, TPAs for EDI business documents use the agreement ID EDITPA).
What’s the use of TPA?
- webMethods.io B2B does not use TPAs when determining the processing rules to use for a document.
- Parameters that we specify in the TPA are available for our own use. For example, we can access the TPA information from integrations called by a processing rule.
- Accessing this information allows you to build a document exchange application that uses the TPA to tailor the exchange of documents between partners.
Use case
- In our use case Buyer is “XYZ” and Seller is “XYZ”.
- In this case we will deal with Purchase order request (RNIF PO) and its acknowledgement and response.
- In the diagram below it can be seen buyers send the Purchase order request to Seller.
- Seller sends the acknowledgement back to Buyer and after that response to the purchase order is sent to Buyer.
- When Buyer receives the response (Purchase order confirmation), an acknowledgment is sent from Buyer to Seller.
- PIP info and process info (like sender role, receiver role, etc.) are fetched using TPA definition.

Requirement on webmethods.io B2B
This use case is similar to webMethods.io B2B processing message using RNIF 2.0. We will utilise the existing setup we did in the above-mentioned article, create TPA at both tenants and make the necessary changes in channels configuration and flow services
Create TPA definition at Buyer side And Seller Side
- Click on Agreements > TPA definitions > Add Definition.
- Provide name as ‘RNIF3A4PO’.
- Select ‘ABC’ as Sender.
- Select ‘XYZ’ as Receiver.
- Select the appropriate RNIF document under Template Structure.
- We can either provide TPA details (ProcessInfo, PipInfo, etc) manually or use attached file to upload the same using the ‘Upload TPA data’ button. (File name: RNIFPO_TPA_Data.json)

- Click on Create and change the TPA status from Proposed to Agreed.
Repeat the same steps and create TPA at seller side as well.
Modify XYZ_To_XYZ_RNIF_Outchannel at Buyer Side
- Click on XYZ_To_XYZ_RNIF_Outchannel channel and deactivate it.
- Click on configuration and under Message enable Defer to TPA.
- Click on Update and Activate the channel.

Modify Rcv_RNIF3A4_Response_InChannel at Buyer Side
- Click on Rcv_RNIF3A4_Response_InChannel channel and deactivate it.
- Click on configuration and under Message enable Defer to TPA. Also, enable Defer to TPA under PIP Information
- Click on Update and Activate the channel.

Modify XYZ_To_XYZ__3A4_PO_RNIFIN and RNIF_3A4_ResponseChannel_out at Seller Side
Follow the same steps to enable Defer to TPA in the above-mentioned channels.
Modify Submit3A4RNIF FlowService in webmethods.io Integration
Since PIP information will be fetched from TPA we don’t need to pass that information which submitting the request to B2B. To achieve the same, we would delete the mapping for the document which was used to send PIP information to B2B.

End to End Testing
Submit the request from source tenant.
Monitoring in B2B
Source Tenant

RosettaNet Object:
------=_Part_9_1597229536.1668751483613
Date: Fri, 18 Nov 2022 06:04:43 +0000 (GMT)
MIME-Version: 1.0
Content-Type: multipart/related;
boundary="----=_Part_8_1529683090.1668751483565";
type="application/xml"
Content-ID: <JTSBNEXQNOUGCPKQBJNY-1668751483565-PXXJFLKGSC>
Content-Description: This is the RosettaNet Business Message
------=_Part_8_1529683090.1668751483565
Date: Fri, 18 Nov 2022 06:04:43 +0000 (GMT)
Content-Type: Application/XML
Content-Transfer-Encoding: quoted-printable
Content-Location: RN-Preamble
Content-ID: <PreambleHeader.0.1259514869206232.1668751483565@sag-b2b-v1012-f8cd5795c-xjmdm>
<?xml version=3D"1.0" encoding=3D"UTF-8"?>
<!DOCTYPE Preamble SYSTEM "Preamble_MS_V02_00.dtd">
<Preamble>
<standardName>
<GlobalAdministeringAuthorityCode>RosettaNet</GlobalAdministeringAuthorityC=
ode>
</standardName>
<standardVersion>
<VersionIdentifier>V02.00</VersionIdentifier>
</standardVersion>
</Preamble>
------=_Part_164_122116326.1658905850670
Date: Wed, 27 Jul 2022 07:10:50 +0000 (UTC)
Content-Type: Application/XML
Content-Transfer-Encoding: quoted-printable
Content-Location: RN-Delivery-Header
Content-ID: DeliveryHeader.0.7868256363823055.1658905850669@sag-b2b-v1011-59bcc6c7b4-tfxvp
Delivery Header:
<?xml version=3D"1.0" encoding=3D"UTF-8"?>
<!DOCTYPE DeliveryHeader SYSTEM "DeliveryHeader_MS_V02_00.dtd">
<DeliveryHeader>
<isSecureTransportRequired>
<AffirmationIndicator>No</AffirmationIndicator>
</isSecureTransportRequired>
<messageDateTime>
<DateTimeStamp>20221118T060443.565Z</DateTimeStamp>
</messageDateTime>
<messageReceiverIdentification>
<PartnerIdentification>
<domain>
<FreeFormText>DUNS</FreeFormText>
</domain>
<GlobalBusinessIdentifier>987659999</GlobalBusinessIdentifier>
</PartnerIdentification>
</messageReceiverIdentification>
<messageSenderIdentification>
<PartnerIdentification>
<domain>
<FreeFormText>DUNS</FreeFormText>
</domain>
<GlobalBusinessIdentifier>123451111</GlobalBusinessIdentifier>
</PartnerIdentification>
</messageSenderIdentification>
<messageTrackingID>
<InstanceIdentifier>0a18586c0000956e000000071668751483570</InstanceIdentifi=
er>
</messageTrackingID>
</DeliveryHeader>
Service Header:
------=_Part_8_1529683090.1668751483565
Date: Fri, 18 Nov 2022 06:04:43 +0000 (GMT)
Content-Type: Application/XML
Content-Transfer-Encoding: quoted-printable
Content-Location: RN-Service-Header
Content-ID: <ServiceHeader.0.1259514869206232.1668751483565@sag-b2b-v1012-f8cd5795c-xjmdm>
Content-Description: RosettaNet-Service-Header
<?xml version=3D"1.0" encoding=3D"UTF-8"?>
<!DOCTYPE ServiceHeader SYSTEM "ServiceHeader_MS_V02_00.dtd">
<ServiceHeader>
<ProcessControl>
<ActivityControl>
<BusinessActivityIdentifier>Create Purchase Order</BusinessActivityIdentifi=
er>
<MessageControl>
<fromRole>
<GlobalPartnerRoleClassificationCode>Buyer</GlobalPartnerRoleClassification=
Code>
</fromRole>
<fromService>
<GlobalBusinessServiceCode>Buyer Service</GlobalBusinessServiceCode>
</fromService>
<Manifest>
<numberOfAttachments>
<CountableAmount>0</CountableAmount>
</numberOfAttachments>
<ServiceContentControl>
<ActionIdentity>
<GlobalBusinessActionCode>Purchase Order Request Action</GlobalBusinessActi=
onCode>
</ActionIdentity>
</ServiceContentControl>
</Manifest>
<toRole>
<GlobalPartnerRoleClassificationCode>Seller</GlobalPartnerRoleClassificatio=
nCode>
</toRole>
<toService>
<GlobalBusinessServiceCode>Seller Service</GlobalBusinessServiceCode>
</toService>
</MessageControl>
</ActivityControl>
<GlobalUsageCode>Production</GlobalUsageCode>
<pipCode>
<GlobalProcessIndicatorCode>3A4</GlobalProcessIndicatorCode>
</pipCode>
<pipInstanceId>
<InstanceIdentifier>0a18586c0000956e000000061668751483564</InstanceIdentifi=
er>
</pipInstanceId>
<pipVersion>
<VersionIdentifier>1.1</VersionIdentifier>
</pipVersion>
<KnownInitiatingPartner>
<PartnerIdentification>
<domain>
<FreeFormText>DUNS</FreeFormText>
</domain>
<GlobalBusinessIdentifier>123451111</GlobalBusinessIdentifier>
</PartnerIdentification>
</KnownInitiatingPartner>
</ProcessControl>
</ServiceHeader>
Service Content:
------=_Part_8_1529683090.1668751483565
Date: Fri, 18 Nov 2022 06:04:43 +0000 (GMT)
Content-Type: Application/XML
Content-Transfer-Encoding: quoted-printable
Content-Location: RN-Service-Content
Content-ID: <ServiceContent.0.1259514869206232.1668751483565@sag-b2b-v1012-f8cd5795c-xjmdm>
Content-Description: RosettaNet-Service-Content
Then actual payload is sent
Target Tenant:


Note:
- Attached the flow service for source tenant and target tenant
- Attaching the payload
- TPA data
Details:
RNIFPO_TPA_Data: TPA data for both buyer and seller side.
Submit3A4RNIF: flow service at source tenant. To submit the purchase order request
SendRNIF3A4ResponseConfirmation: flow service at target tenant. To send the PO confirmation response
3A4PayloadRequestSample: PO Sample request submitted from source flow service (Submit3A4RNIF)