OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

ebxml-cppa message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]


Subject: RE: [ebxml-cppa] Pim's proposal on reuse of BusinessTransactionCharacteristics and MessagingCharacteristics, and some initial comments to open


 
Hello,
 
To follow up on Dale's note,  please see the attached stylesheet as a proof-of-concept to show how an upgrade from CPA 2 to a (an uncompatible) CPA3 with reusable BusinessTransactionCharacteristics might work.  The stylesheet generates a copy of the original CPA, except that it:
 
-  adds a @tns:businessTransactionCharacteristics attribute to tns:ThisPartyActionBinding, which would be of type IDREF
-  omits the BusinessTransactionCharacteristics element from the result tree for  tns:ThisPartyActionBinding.
-  inserts a series of BusinessTransactionCharacteristics elements after DocExchange with the corresponding ID attributes.
 
When used against a sample CPA taken from the CPA TC site, the benefits of reuse are clear for Partner A:  A_ABID2, A_ABID4, A_ABID5, A_ABID8 are indentical.  The CPA3 could be simplified by deleting three of them, and changing the IDREF elements to point to the single remaining element.
The same is true for partner B, with identical characteristics elements B_ABID2, B_ABID3, B_ABID5 and B_ABID8.  This would remove 34 lines of redundant XML code from the CPA.
 
The XSLT stylesheet doesn't fix the redundancy, so the redundancy is not actually reduced by the script, but a person responsible for CPA maintenance in an organization could manually fix the output after running the script.  (Some additional manual changes may be needed any way way when the move from CPA2 to CPA3 coincides with other changes, e.g. an upgrade to ebMS3).  New CPAs could be written from scratch using a small set of referenced patterns. The patterns to use could be derived from a community's deployment guide. 
 
General comments:
[1] The result of the script is obviously not valid according to the current CPA2 XML Schema.
 
[2] Viewing conversion of CPAs (using tools like this stylesheet) as a step in upgrading to CPA3 would allow the CPA3 schema to be incompatible with CPA2, and simplify its XML Schema. Compatibility is important for existing users, but if (as I expect) adoption will increase when an ebMS3/CPA3 is released, there are benefits in having a simpler schema for new users too.
 
[3] There may be benefits for allowing both a reuse (using IDREF) and inline definition of business transaction characteristics.  The attribute and sub-element tns:businessTransactionCharacteristics could be assumed to be mutually exclusive.  Or, both could be allowed, with "defaults" taken from the referenced pattern. Each ThisPartyActionBinding could add additional information (or overrule) the pattern.  In the example A_BID1, A_BID3, A_BID6 and A_BID7 actually use the same patterns as A_ABID2 and the three others, except that they specify values for timeToAcknowledgeReceipt and timeToPerform.
 
[4] We've been discussing "flattening" CPA.  We could extend [3] and move the business transaction characteristic attributes up one level.
Only the attributes that are added to the referenced BT characteristics element need to be referenced.  ABID7 only adds an interval to acknowledge receipt, the six other attribute-value pairs are the same as ABID2, ABID4, ABID5, ABID8.  This would allow us to collapse:
 
          <tp:CanReceive>
            <tp:ThisPartyActionBinding
              tp:id="companyA_ABID7"
              tp:action="Purchase Order Confirmation Action"
              tp:packageId="CompanyA_SyncReplyPackage">
              <tp:BusinessTransactionCharacteristics
                tp:isNonRepudiationRequired="true"
                tp:isNonRepudiationReceiptRequired="true"
                tp:isConfidential="transient"
                tp:isAuthenticated="persistent"
                tp:isTamperProof="persistent"
                tp:isAuthorizationRequired="true"
                tp:timeToAcknowledgeReceipt="PT5M"/>
              <tp:ActionContext
                tp:binaryCollaboration="Request Purchase Order"
                tp:businessTransactionActivity="Request Purchase Order"
                tp:requestOrResponseAction="Purchase Order Confirmation Action"/>
              <tp:ChannelId>syncChannelA1</tp:ChannelId>
            </tp:ThisPartyActionBinding>
            <tp:OtherPartyActionBinding>companyB_ABID7</tp:OtherPartyActionBinding>
          </tp:CanReceive>
into something like:
 
               <tp:CanReceive>
                  <tp:ThisPartyActionBinding
                     tp:businessTransactionCharacteristics="BTC_companyA_ABID_merged"
                     tp:timeToAcknowledgeReceipt="PT5M"
                     tp:id="companyA_ABID7"
                     tp:action="Purchase Order Confirmation Action"
                     tp:packageId="CompanyA_SyncReplyPackage">
                    <tp:ActionContext tp:binaryCollaboration="Request Purchase Order"
                       tp:businessTransactionActivity="Request Purchase Order"
                       tp:requestOrResponseAction="Purchase Order Confirmation Action"/>
                    <tp:ChannelId>syncChannelA1</tp:ChannelId>
                  </tp:ThisPartyActionBinding>
                  <tp:OtherPartyActionBinding>companyB_ABID7</tp:OtherPartyActionBinding>
               </tp:CanReceive>
With [3], this would allow a further reduction of another sixty or lines of XML code in the sample CPA without loss of information.
 
[5] The elements are now still maintained per partner.  But they could also be moved to the top-level, like packaging, if  traffic from A to B has similar characteristics as traffic in the other direction. Again, a major reduction in code in the case of the example CPA. 
 
[6] The same approach could be taken for MessagingCharacteristics. This is not in the script, but could easily be added. However, the sample CPA would not benefit from it at all. 
 
[7] This could all be combined with Dale's proposal for flattening (http://lists.oasis-open.org/archives/ebxml-cppa/200606/msg00003.html).
 
[8] The benefits in terms of code reduction depend on how representative the sample CPA is for the typical ebXML project.  In the few projects I've been in, people have adopted a small number of "patterns", sometimes less than half a dozen.  There may be dozens or more Action Bindings for partners in large projects.  These would have similar benefits to the ones noted for the sample CPA.
 
Pim

From: Dale Moberg [mailto:dmoberg@cyclonecommerce.com]
Sent: 10 June 2006 22:43
To: OASIS ebXML CPPA TC
Subject: [ebxml-cppa] Pim's proposal on reuse of BusinessTransactionCharacteristics and MessagingCharacteristics, and some initial comments to open

Pim proposed that both BusinessTransactionCharacteristics and MessagingCharacteristics be considered for reuse within action bindings.

 

Two general kinds of mechanism for reuse are under consideration in the TC

 

1. using xinclude., (not currently utilized in CPPA but used in ebMS BPSS 2.0)

 

2. using our usual mechanism of IDREF.

 

To use mechanism 2, we would probably need several supporting changes:

 

1. PartyInfo would need to be modified to allow sequences of these elements as children.

2. An ID attribute needs to be added to the elements.

either

3a. Add an attribute for containing the ID value under DeliveryChannel (for idrefs to MessagingCharacteristics)) and under the various container elements for action bindings (for idrefs to BusinessTransactionCharacteristics)

or

3b Somehow modify the type for both MessagingCharacteristics and BusinessTransactionCharacteristics to allow for either a reference or to contain the attributes currently used).

 

There are certainly a lot of other alternatives.

 

Consider that MessagingCharacteristics will most probably need to be generalized for ebMS 3.0 support.

 

My action item to post the general issue and some potential ways to implement reuse is fulfilled. More specific proposals on changes to these elements are welcome.

 

We would like to have, if possible, instances of CPPA 2.* validate (after changes to the namespace and possibly prefixes) against the new schema).

We would also like to allow for writing simple xslt transforms to update previous CPPA instances to use new features.

 

 

 

 

<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright UN/CEFACT and OASIS, 2001. All Rights Reserved. --><tp:CollaborationProtocolAgreement xmlns:tp="http://www.oasis-open.org/committees/ebxml-cppa/schema/cpp-cpa-2_0.xsd";
                                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
                                   xmlns:xlink="http://www.w3.org/1999/xlink";
                                   xmlns:ds="http://www.w3.org/2000/09/xmldsig#";
                                   xmlns:xsd="http://www.w3.org/2001/XMLSchema";
                                   xsi:schemaLocation="http://www.oasis-open.org/committees/ebxml-cppa/schema/cpp-cpa-2_0.xsd    http://www.oasis-open.org/committees/ebxml-cppa/schema/cpp-cpa-2_0.xsd";
                                   tp:cpaid="uri:companyA-and-companyB-cpa"
                                   tp:version="2_0b">
  <tp:Status tp:value="proposed"/>
  <tp:Start>2001-05-20T07:21:00Z</tp:Start>
  <tp:End>2002-05-20T07:21:00Z</tp:End>
  <tp:ConversationConstraints tp:invocationLimit="100" tp:concurrentConversations="10"/>
  <!-- Party info for CompanyA -->
  <tp:PartyInfo tp:partyName="CompanyA" tp:defaultMshChannelId="asyncChannelA1"
                 tp:defaultMshPackageId="CompanyA_MshSignalPackage">
      <tp:PartyId tp:type="urn:oasis:names:tc:ebxml-cppa:partyid-type:duns">123456789</tp:PartyId>
      <tp:PartyRef xlink:href="http://CompanyA.com/about.html"/>
      <tp:CollaborationRole>
         <tp:ProcessSpecification tp:version="2.0" tp:name="PIP3A4RequestPurchaseOrder" xlink:type="simple"
                                  xlink:href="http://www.rosettanet.org/processes/3A4.xml";
                                  tp:uuid="urn:icann:rosettanet.org:bpid:3A4$2.0"/>
         <tp:Role tp:name="Buyer" xlink:type="simple"
                  xlink:href="http://www.rosettanet.org/processes/3A4.xml#Buyer"/>
         <tp:ApplicationCertificateRef tp:certId="CompanyA_AppCert"/>
         <tp:ServiceBinding>
            <tp:Service>bpid:icann:rosettanet.org:3A4$2.0</tp:Service>
            <tp:CanSend>
               <tp:ThisPartyActionBinding tp:businessTransactionCharacteristics="BTC_companyA_ABID1"
                                          tp:id="companyA_ABID1"
                                          tp:action="Purchase Order Request Action"
                                          tp:packageId="CompanyA_RequestPackage">
            
                  <tp:ActionContext tp:binaryCollaboration="Request Purchase Order"
                                    tp:businessTransactionActivity="Request Purchase Order"
                                    tp:requestOrResponseAction="Purchase Order Request Action"/>
                  <tp:ChannelId>asyncChannelA1</tp:ChannelId>
               </tp:ThisPartyActionBinding>
               <tp:OtherPartyActionBinding>companyB_ABID4</tp:OtherPartyActionBinding>
            </tp:CanSend>
            <tp:CanSend>
               <tp:ThisPartyActionBinding tp:businessTransactionCharacteristics="BTC_companyA_ABID2"
                                          tp:id="companyA_ABID2"
                                          tp:action="ReceiptAcknowledgement"
                                          tp:packageId="CompanyA_ReceiptAcknowledgmentPackage">
            
                  <tp:ChannelId>asyncChannelA1</tp:ChannelId>
               </tp:ThisPartyActionBinding>
               <tp:OtherPartyActionBinding>companyB_ABID5</tp:OtherPartyActionBinding>
            </tp:CanSend>
            <!-- The next binding uses a synchronous delivery channel -->
        <tp:CanSend>
               <tp:ThisPartyActionBinding tp:businessTransactionCharacteristics="BTC_companyA_ABID6"
                                          tp:id="companyA_ABID6"
                                          tp:action="Purchase Order Request Action"
                                          tp:packageId="CompanyA_RequestPackage">
            
                  <tp:ActionContext tp:binaryCollaboration="Request Purchase Order"
                                    tp:businessTransactionActivity="Request Purchase Order"
                                    tp:requestOrResponseAction="Purchase Order Request Action"/>
                  <tp:ChannelId>syncChannelA1</tp:ChannelId>
               </tp:ThisPartyActionBinding>
               <tp:OtherPartyActionBinding>companyB_ABID6</tp:OtherPartyActionBinding>
               <tp:CanReceive>
                  <tp:ThisPartyActionBinding tp:businessTransactionCharacteristics="BTC_companyA_ABID7"
                                             tp:id="companyA_ABID7"
                                             tp:action="Purchase Order Confirmation Action"
                                             tp:packageId="CompanyA_SyncReplyPackage">
              
                     <tp:ActionContext tp:binaryCollaboration="Request Purchase Order"
                                       tp:businessTransactionActivity="Request Purchase Order"
                                       tp:requestOrResponseAction="Purchase Order Confirmation Action"/>
                     <tp:ChannelId>syncChannelA1</tp:ChannelId>
                  </tp:ThisPartyActionBinding>
                  <tp:OtherPartyActionBinding>companyB_ABID7</tp:OtherPartyActionBinding>
               </tp:CanReceive>
               <tp:CanReceive>
                  <tp:ThisPartyActionBinding tp:businessTransactionCharacteristics="BTC_companyA_ABID8"
                                             tp:id="companyA_ABID8"
                                             tp:action="Exception"
                                             tp:packageId="CompanyA_ExceptionPackage">
              
                     <tp:ChannelId>syncChannelA1</tp:ChannelId>
                  </tp:ThisPartyActionBinding>
                  <tp:OtherPartyActionBinding>companyB_ABID8</tp:OtherPartyActionBinding>
               </tp:CanReceive>
            </tp:CanSend>
            <tp:CanReceive>
               <tp:ThisPartyActionBinding tp:businessTransactionCharacteristics="BTC_companyA_ABID3"
                                          tp:id="companyA_ABID3"
                                          tp:action="Purchase Order Confirmation Action"
                                          tp:packageId="CompanyA_ResponsePackage">
            
                  <tp:ActionContext tp:binaryCollaboration="Request Purchase Order"
                                    tp:businessTransactionActivity="Request Purchase Order"
                                    tp:requestOrResponseAction="Purchase Order Confirmation Action"/>
                  <tp:ChannelId>asyncChannelA1</tp:ChannelId>
               </tp:ThisPartyActionBinding>
               <tp:OtherPartyActionBinding>companyB_ABID1</tp:OtherPartyActionBinding>
            </tp:CanReceive>
            <tp:CanReceive>
               <tp:ThisPartyActionBinding tp:businessTransactionCharacteristics="BTC_companyA_ABID4"
                                          tp:id="companyA_ABID4"
                                          tp:action="ReceiptAcknowledgment"
                                          tp:packageId="CompanyA_ReceiptAcknowledgmentPackage">
            
                  <tp:ChannelId>asyncChannelA1</tp:ChannelId>
               </tp:ThisPartyActionBinding>
               <tp:OtherPartyActionBinding>companyB_ABID2</tp:OtherPartyActionBinding>
            </tp:CanReceive>
            <tp:CanReceive>
               <tp:ThisPartyActionBinding tp:businessTransactionCharacteristics="BTC_companyA_ABID5"
                                          tp:id="companyA_ABID5"
                                          tp:action="Exception"
                                          tp:packageId="CompanyA_ExceptionPackage">
            
                  <tp:ChannelId>asyncChannelA1</tp:ChannelId>
               </tp:ThisPartyActionBinding>
               <tp:OtherPartyActionBinding>companyB_ABID3</tp:OtherPartyActionBinding>
            </tp:CanReceive>
         </tp:ServiceBinding>
      </tp:CollaborationRole>
      <!-- Certificates used by the "Buyer" company -->
    <tp:Certificate tp:certId="CompanyA_AppCert">
         <ds:KeyInfo>
            <ds:KeyName>CompanyA_AppCert_Key</ds:KeyName>
         </ds:KeyInfo>
      </tp:Certificate>
      <tp:Certificate tp:certId="CompanyA_SigningCert">
         <ds:KeyInfo>
            <ds:KeyName>CompanyA_SigningCert_Key</ds:KeyName>
         </ds:KeyInfo>
      </tp:Certificate>
      <tp:Certificate tp:certId="CompanyA_EncryptionCert">
         <ds:KeyInfo>
            <ds:KeyName>CompanyA_EncryptionCert_Key</ds:KeyName>
         </ds:KeyInfo>
      </tp:Certificate>
      <tp:Certificate tp:certId="CompanyA_ServerCert">
         <ds:KeyInfo>
            <ds:KeyName>CompanyA_ServerCert_Key</ds:KeyName>
         </ds:KeyInfo>
      </tp:Certificate>
      <tp:Certificate tp:certId="CompanyA_ClientCert">
         <ds:KeyInfo>
            <ds:KeyName>CompanyA_ClientCert_Key</ds:KeyName>
         </ds:KeyInfo>
      </tp:Certificate>
      <tp:Certificate tp:certId="TrustedRootCertA1">
         <ds:KeyInfo>
            <ds:KeyName>TrustedRootCertA1_Key </ds:KeyName>
         </ds:KeyInfo>
      </tp:Certificate>
      <tp:Certificate tp:certId="TrustedRootCertA2">
         <ds:KeyInfo>
            <ds:KeyName>TrustedRootCertA2_Key</ds:KeyName>
         </ds:KeyInfo>
      </tp:Certificate>
      <tp:Certificate tp:certId="TrustedRootCertA3">
         <ds:KeyInfo>
            <ds:KeyName>TrustedRootCertA3_Key</ds:KeyName>
         </ds:KeyInfo>
      </tp:Certificate>
      <tp:Certificate tp:certId="TrustedRootCertA4">
         <ds:KeyInfo>
            <ds:KeyName>TrustedRootCertA4_Key</ds:KeyName>
         </ds:KeyInfo>
      </tp:Certificate>
      <tp:Certificate tp:certId="TrustedRootCertA5">
         <ds:KeyInfo>
            <ds:KeyName>TrustedRootCertA5_Key</ds:KeyName>
         </ds:KeyInfo>
      </tp:Certificate>
      <tp:SecurityDetails tp:securityId="CompanyA_TransportSecurity">
         <tp:TrustAnchors>
            <tp:AnchorCertificateRef tp:certId="TrustedRootCertA1"/>
            <tp:AnchorCertificateRef tp:certId="TrustedRootCertA2"/>
            <tp:AnchorCertificateRef tp:certId="TrustedRootCertA4"/>
         </tp:TrustAnchors>
      </tp:SecurityDetails>
      <tp:SecurityDetails tp:securityId="CompanyA_MessageSecurity">
         <tp:TrustAnchors>
            <tp:AnchorCertificateRef tp:certId="TrustedRootCertA3"/>
            <tp:AnchorCertificateRef tp:certId="TrustedRootCertA5"/>
         </tp:TrustAnchors>
      </tp:SecurityDetails>
      <tp:DeliveryChannel tp:channelId="asyncChannelA1" tp:transportId="transportA1"
                          tp:docExchangeId="docExchangeA1">
         <tp:MessagingCharacteristics tp:syncReplyMode="none" tp:ackRequested="always"
                                      tp:ackSignatureRequested="always"
                                      tp:duplicateElimination="always"/>
      </tp:DeliveryChannel>
      <tp:DeliveryChannel tp:channelId="syncChannelA1" tp:transportId="transportA2"
                          tp:docExchangeId="docExchangeA1">
         <tp:MessagingCharacteristics tp:syncReplyMode="signalsAndResponse" tp:ackRequested="always"
                                      tp:ackSignatureRequested="always"
                                      tp:duplicateElimination="always"/>
      </tp:DeliveryChannel>
      <tp:Transport tp:transportId="transportA1">
         <tp:TransportSender>
            <tp:TransportProtocol tp:version="1.1">HTTP</tp:TransportProtocol>
            <tp:AccessAuthentication>basic</tp:AccessAuthentication>
            <tp:TransportClientSecurity>
               <tp:TransportSecurityProtocol tp:version="3.0">SSL</tp:TransportSecurityProtocol>
               <tp:ClientCertificateRef tp:certId="CompanyA_ClientCert"/>
               <tp:ServerSecurityDetailsRef tp:securityId="CompanyA_TransportSecurity"/>
            </tp:TransportClientSecurity>
         </tp:TransportSender>
         <tp:TransportReceiver>
            <tp:TransportProtocol tp:version="1.1">HTTP</tp:TransportProtocol>
            <tp:AccessAuthentication>basic</tp:AccessAuthentication>
            <tp:Endpoint tp:uri="https://www.CompanyA.com/servlets/ebxmlhandler/async";
                         tp:type="allPurpose"/>
            <tp:TransportServerSecurity>
               <tp:TransportSecurityProtocol tp:version="3.0">SSL</tp:TransportSecurityProtocol>
               <tp:ServerCertificateRef tp:certId="CompanyA_ServerCert"/>
               <tp:ClientSecurityDetailsRef tp:securityId="CompanyA_TransportSecurity"/>
            </tp:TransportServerSecurity>
         </tp:TransportReceiver>
      </tp:Transport>
      <tp:Transport tp:transportId="transportA2">
         <tp:TransportSender>
            <tp:TransportProtocol tp:version="1.1">HTTP</tp:TransportProtocol>
            <tp:AccessAuthentication>basic</tp:AccessAuthentication>
            <tp:TransportClientSecurity>
               <tp:TransportSecurityProtocol tp:version="3.0">SSL</tp:TransportSecurityProtocol>
               <tp:ClientCertificateRef tp:certId="CompanyA_ClientCert"/>
               <tp:ServerSecurityDetailsRef tp:securityId="CompanyA_TransportSecurity"/>
            </tp:TransportClientSecurity>
         </tp:TransportSender>
         <tp:TransportReceiver>
            <tp:TransportProtocol tp:version="1.1">HTTP</tp:TransportProtocol>
            <tp:AccessAuthentication>basic</tp:AccessAuthentication>
            <tp:Endpoint tp:uri="https://www.CompanyA.com/servlets/ebxmlhandler/sync";
                         tp:type="allPurpose"/>
            <tp:TransportServerSecurity>
               <tp:TransportSecurityProtocol tp:version="3.0">SSL</tp:TransportSecurityProtocol>
               <tp:ServerCertificateRef tp:certId="CompanyA_ServerCert"/>
               <tp:ClientSecurityDetailsRef tp:securityId="CompanyA_TransportSecurity"/>
            </tp:TransportServerSecurity>
         </tp:TransportReceiver>
      </tp:Transport>
      <tp:DocExchange tp:docExchangeId="docExchangeA1">
         <tp:ebXMLSenderBinding tp:version="2.0">
            <tp:ReliableMessaging>
               <tp:Retries>3</tp:Retries>
               <tp:RetryInterval>PT2H</tp:RetryInterval>
               <tp:MessageOrderSemantics>Guaranteed</tp:MessageOrderSemantics>
            </tp:ReliableMessaging>
            <tp:PersistDuration>P1D</tp:PersistDuration>
            <tp:SenderNonRepudiation>
               <tp:NonRepudiationProtocol>http://www.w3.org/2000/09/xmldsig#</tp:NonRepudiationProtocol>
               <tp:HashFunction>http://www.w3.org/2000/09/xmldsig#sha1</tp:HashFunction>
               <tp:SignatureAlgorithm>http://www.w3.org/2000/09/xmldsig#dsa-sha1</tp:SignatureAlgorithm>
               <tp:SigningCertificateRef tp:certId="CompanyA_SigningCert"/>
            </tp:SenderNonRepudiation>
            <tp:SenderDigitalEnvelope>
               <tp:DigitalEnvelopeProtocol tp:version="2.0">S/MIME</tp:DigitalEnvelopeProtocol>
               <tp:EncryptionAlgorithm>DES-CBC</tp:EncryptionAlgorithm>
               <tp:EncryptionSecurityDetailsRef tp:securityId="CompanyA_MessageSecurity"/>
            </tp:SenderDigitalEnvelope>
         </tp:ebXMLSenderBinding>
         <tp:ebXMLReceiverBinding tp:version="2.0">
            <tp:ReliableMessaging>
               <tp:Retries>3</tp:Retries>
               <tp:RetryInterval>PT2H</tp:RetryInterval>
               <tp:MessageOrderSemantics>Guaranteed</tp:MessageOrderSemantics>
            </tp:ReliableMessaging>
            <tp:PersistDuration>P1D</tp:PersistDuration>
            <tp:ReceiverNonRepudiation>
               <tp:NonRepudiationProtocol>http://www.w3.org/2000/09/xmldsig#</tp:NonRepudiationProtocol>
               <tp:HashFunction>http://www.w3.org/2000/09/xmldsig#sha1</tp:HashFunction>
               <tp:SignatureAlgorithm>http://www.w3.org/2000/09/xmldsig#dsa-sha1</tp:SignatureAlgorithm>
               <tp:SigningSecurityDetailsRef tp:securityId="CompanyA_MessageSecurity"/>
            </tp:ReceiverNonRepudiation>
            <tp:ReceiverDigitalEnvelope>
               <tp:DigitalEnvelopeProtocol tp:version="2.0">S/MIME</tp:DigitalEnvelopeProtocol>
               <tp:EncryptionAlgorithm>DES-CBC</tp:EncryptionAlgorithm>
               <tp:EncryptionCertificateRef tp:certId="CompanyA_EncryptionCert"/>
            </tp:ReceiverDigitalEnvelope>
         </tp:ebXMLReceiverBinding>
      </tp:DocExchange>
      <tp:BusinessTransactionCharacteristics id="BTC_companyA_ABID1" tp:isNonRepudiationRequired="true"
                                             tp:isNonRepudiationReceiptRequired="true"
                                             tp:isConfidential="transient"
                                             tp:isAuthenticated="persistent"
                                             tp:isTamperProof="persistent"
                                             tp:isAuthorizationRequired="true"
                                             tp:timeToAcknowledgeReceipt="PT2H"
                                             tp:timeToPerform="P1D"/>
      <tp:BusinessTransactionCharacteristics id="BTC_companyA_ABID2" tp:isNonRepudiationRequired="true"
                                             tp:isNonRepudiationReceiptRequired="true"
                                             tp:isConfidential="transient"
                                             tp:isAuthenticated="persistent"
                                             tp:isTamperProof="persistent"
                                             tp:isAuthorizationRequired="true"/>
      <tp:BusinessTransactionCharacteristics id="BTC_companyA_ABID6" tp:isNonRepudiationRequired="true"
                                             tp:isNonRepudiationReceiptRequired="true"
                                             tp:isConfidential="transient"
                                             tp:isAuthenticated="persistent"
                                             tp:isTamperProof="persistent"
                                             tp:isAuthorizationRequired="true"
                                             tp:timeToAcknowledgeReceipt="PT5M"
                                             tp:timeToPerform="PT5M"/>
      <tp:BusinessTransactionCharacteristics id="BTC_companyA_ABID7" tp:isNonRepudiationRequired="true"
                                             tp:isNonRepudiationReceiptRequired="true"
                                             tp:isConfidential="transient"
                                             tp:isAuthenticated="persistent"
                                             tp:isTamperProof="persistent"
                                             tp:isAuthorizationRequired="true"
                                             tp:timeToAcknowledgeReceipt="PT5M"/>
      <tp:BusinessTransactionCharacteristics id="BTC_companyA_ABID8" tp:isNonRepudiationRequired="true"
                                             tp:isNonRepudiationReceiptRequired="true"
                                             tp:isConfidential="transient"
                                             tp:isAuthenticated="persistent"
                                             tp:isTamperProof="persistent"
                                             tp:isAuthorizationRequired="true"/>
      <tp:BusinessTransactionCharacteristics id="BTC_companyA_ABID3" tp:isNonRepudiationRequired="true"
                                             tp:isNonRepudiationReceiptRequired="true"
                                             tp:isConfidential="transient"
                                             tp:isAuthenticated="persistent"
                                             tp:isTamperProof="persistent"
                                             tp:isAuthorizationRequired="true"
                                             tp:timeToAcknowledgeReceipt="PT2H"/>
      <tp:BusinessTransactionCharacteristics id="BTC_companyA_ABID4" tp:isNonRepudiationRequired="true"
                                             tp:isNonRepudiationReceiptRequired="true"
                                             tp:isConfidential="transient"
                                             tp:isAuthenticated="persistent"
                                             tp:isTamperProof="persistent"
                                             tp:isAuthorizationRequired="true"/>
      <tp:BusinessTransactionCharacteristics id="BTC_companyA_ABID5" tp:isNonRepudiationRequired="true"
                                             tp:isNonRepudiationReceiptRequired="true"
                                             tp:isConfidential="transient"
                                             tp:isAuthenticated="persistent"
                                             tp:isTamperProof="persistent"
                                             tp:isAuthorizationRequired="true"/>
   </tp:PartyInfo>
  <!-- Party info for CompanyB -->
  <tp:PartyInfo tp:partyName="CompanyB" tp:defaultMshChannelId="asyncChannelB1"
                 tp:defaultMshPackageId="CompanyB_MshSignalPackage">
      <tp:PartyId tp:type="urn:oasis:names:tc:ebxml-cppa:partyid-type:duns">987654321</tp:PartyId>
      <tp:PartyRef xlink:type="simple" xlink:href="http://CompanyB.com/about.html"/>
      <tp:CollaborationRole>
         <tp:ProcessSpecification tp:version="2.0" tp:name="PIP3A4RequestPurchaseOrder" xlink:type="simple"
                                  xlink:href="http://www.rosettanet.org/processes/3A4.xml";
                                  tp:uuid="urn:icann:rosettanet.org:bpid:3A4$2.0"/>
         <tp:Role tp:name="Seller" xlink:type="simple"
                  xlink:href="http://www.rosettanet.org/processes/3A4.xml#seller"/>
         <tp:ApplicationCertificateRef tp:certId="CompanyB_AppCert"/>
         <tp:ServiceBinding>
            <tp:Service>bpid:icann:rosettanet.org:3A4$2.0</tp:Service>
            <tp:CanSend>
               <tp:ThisPartyActionBinding tp:businessTransactionCharacteristics="BTC_companyB_ABID1"
                                          tp:id="companyB_ABID1"
                                          tp:action="Purchase Order Confirmation Action"
                                          tp:packageId="CompanyB_ResponsePackage">
            
                  <tp:ActionContext tp:binaryCollaboration="Request Purchase Order"
                                    tp:businessTransactionActivity="Request Purchase Order"
                                    tp:requestOrResponseAction="Purchase Order Confirmation Action"/>
                  <tp:ChannelId>asyncChannelB1</tp:ChannelId>
               </tp:ThisPartyActionBinding>
               <tp:OtherPartyActionBinding>companyA_ABID3</tp:OtherPartyActionBinding>
            </tp:CanSend>
            <tp:CanSend>
               <tp:ThisPartyActionBinding tp:businessTransactionCharacteristics="BTC_companyB_ABID2"
                                          tp:id="companyB_ABID2"
                                          tp:action="ReceiptAcknowledgement"
                                          tp:packageId="CompanyB_ReceiptAcknowledgmentPackage">
            
                  <tp:ChannelId>asyncChannelB1</tp:ChannelId>
               </tp:ThisPartyActionBinding>
               <tp:OtherPartyActionBinding>companyA_ABID4</tp:OtherPartyActionBinding>
            </tp:CanSend>
            <tp:CanSend>
               <tp:ThisPartyActionBinding tp:businessTransactionCharacteristics="BTC_companyB_ABID3"
                                          tp:id="companyB_ABID3"
                                          tp:action="Exception"
                                          tp:packageId="CompanyB_ExceptionPackage">
            
                  <tp:ChannelId>asyncChannelB1</tp:ChannelId>
               </tp:ThisPartyActionBinding>
               <tp:OtherPartyActionBinding>companyA_ABID5</tp:OtherPartyActionBinding>
            </tp:CanSend>
            <tp:CanReceive>
               <tp:ThisPartyActionBinding tp:businessTransactionCharacteristics="BTC_companyB_ABID4"
                                          tp:id="companyB_ABID4"
                                          tp:action="Purchase Order Request Action"
                                          tp:packageId="CompanyB_RequestPackage">
            
                  <tp:ActionContext tp:binaryCollaboration="Request Purchase Order"
                                    tp:businessTransactionActivity="Request Purchase Order"
                                    tp:requestOrResponseAction="Purchase Order Request Action"/>
                  <tp:ChannelId>asyncChannelB1</tp:ChannelId>
               </tp:ThisPartyActionBinding>
               <tp:OtherPartyActionBinding>companyA_ABID1</tp:OtherPartyActionBinding>
            </tp:CanReceive>
            <tp:CanReceive>
               <tp:ThisPartyActionBinding tp:businessTransactionCharacteristics="BTC_companyB_ABID5"
                                          tp:id="companyB_ABID5"
                                          tp:action="ReceiptAcknowledgment"
                                          tp:packageId="CompanyB_ReceiptAcknowledgmentPackage">
            
                  <tp:ChannelId>asyncChannelB1</tp:ChannelId>
               </tp:ThisPartyActionBinding>
               <tp:OtherPartyActionBinding>companyA_ABID2</tp:OtherPartyActionBinding>
            </tp:CanReceive>
            <!-- The next binding uses a synchronous delivery channel -->
        <tp:CanReceive>
               <tp:ThisPartyActionBinding tp:businessTransactionCharacteristics="BTC_companyB_ABID6"
                                          tp:id="companyB_ABID6"
                                          tp:action="Purchase Order Request Action"
                                          tp:packageId="CompanyB_RequestPackage">
            
                  <tp:ActionContext tp:binaryCollaboration="Request Purchase Order"
                                    tp:businessTransactionActivity="Request Purchase Order"
                                    tp:requestOrResponseAction="Purchase Order Request Action"/>
                  <tp:ChannelId>syncChannelB1</tp:ChannelId>
               </tp:ThisPartyActionBinding>
               <tp:OtherPartyActionBinding>companyA_ABID6</tp:OtherPartyActionBinding>
               <tp:CanSend>
                  <tp:ThisPartyActionBinding tp:businessTransactionCharacteristics="BTC_companyB_ABID7"
                                             tp:id="companyB_ABID7"
                                             tp:action="Purchase Order Confirmation Action"
                                             tp:packageId="CompanyB_SyncReplyPackage">
              
                     <tp:ActionContext tp:binaryCollaboration="Request Purchase Order"
                                       tp:businessTransactionActivity="Request Purchase Order"
                                       tp:requestOrResponseAction="Purchase Order Confirmation Action"/>
                     <tp:ChannelId>syncChannelB1</tp:ChannelId>
                  </tp:ThisPartyActionBinding>
                  <tp:OtherPartyActionBinding>companyA_ABID7</tp:OtherPartyActionBinding>
               </tp:CanSend>
               <tp:CanSend>
                  <tp:ThisPartyActionBinding tp:businessTransactionCharacteristics="BTC_companyB_ABID8"
                                             tp:id="companyB_ABID8"
                                             tp:action="Exception"
                                             tp:packageId="CompanyB_ExceptionPackage">
              
                     <tp:ChannelId>syncChannelB1</tp:ChannelId>
                  </tp:ThisPartyActionBinding>
                  <tp:OtherPartyActionBinding>companyA_ABID8</tp:OtherPartyActionBinding>
               </tp:CanSend>
            </tp:CanReceive>
         </tp:ServiceBinding>
      </tp:CollaborationRole>
      <!-- Certificates used by the "Seller" company -->
    <tp:Certificate tp:certId="CompanyB_AppCert">
         <ds:KeyInfo>
            <ds:KeyName>CompanyB_AppCert_Key</ds:KeyName>
         </ds:KeyInfo>
      </tp:Certificate>
      <tp:Certificate tp:certId="CompanyB_SigningCert">
         <ds:KeyInfo>
            <ds:KeyName>CompanyB_Signingcert_Key</ds:KeyName>
         </ds:KeyInfo>
      </tp:Certificate>
      <tp:Certificate tp:certId="CompanyB_EncryptionCert">
         <ds:KeyInfo>
            <ds:KeyName>CompanyB_EncryptionCert_Key</ds:KeyName>
         </ds:KeyInfo>
      </tp:Certificate>
      <tp:Certificate tp:certId="CompanyB_ServerCert">
         <ds:KeyInfo>
            <ds:KeyName>CompanyB_ServerCert_Key</ds:KeyName>
         </ds:KeyInfo>
      </tp:Certificate>
      <tp:Certificate tp:certId="CompanyB_ClientCert">
         <ds:KeyInfo>
            <ds:KeyName>CompanyB_ClientCert_Key</ds:KeyName>
         </ds:KeyInfo>
      </tp:Certificate>
      <tp:Certificate tp:certId="TrustedRootCertB4">
         <ds:KeyInfo>
            <ds:KeyName>TrustedRootCertB4_Key</ds:KeyName>
         </ds:KeyInfo>
      </tp:Certificate>
      <tp:Certificate tp:certId="TrustedRootCertB5">
         <ds:KeyInfo>
            <ds:KeyName>TrustedRootCertB5_Key</ds:KeyName>
         </ds:KeyInfo>
      </tp:Certificate>
      <tp:Certificate tp:certId="TrustedRootCertB6">
         <ds:KeyInfo>
            <ds:KeyName>TrustedRootCertB6_Key</ds:KeyName>
         </ds:KeyInfo>
      </tp:Certificate>
      <tp:Certificate tp:certId="TrustedRootCertB7">
         <ds:KeyInfo>
            <ds:KeyName>TrustedRootCertB7_Key</ds:KeyName>
         </ds:KeyInfo>
      </tp:Certificate>
      <tp:Certificate tp:certId="TrustedRootCertB8">
         <ds:KeyInfo>
            <ds:KeyName>TrustedRootCertB8_Key</ds:KeyName>
         </ds:KeyInfo>
      </tp:Certificate>
      <tp:SecurityDetails tp:securityId="CompanyB_TransportSecurity">
         <tp:TrustAnchors>
            <tp:AnchorCertificateRef tp:certId="TrustedRootCertB5"/>
            <tp:AnchorCertificateRef tp:certId="TrustedRootCertB6"/>
            <tp:AnchorCertificateRef tp:certId="TrustedRootCertB4"/>
         </tp:TrustAnchors>
      </tp:SecurityDetails>
      <tp:SecurityDetails tp:securityId="CompanyB_MessageSecurity">
         <tp:TrustAnchors>
            <tp:AnchorCertificateRef tp:certId="TrustedRootCertB8"/>
            <tp:AnchorCertificateRef tp:certId="TrustedRootCertB7"/>
         </tp:TrustAnchors>
      </tp:SecurityDetails>
      <!-- An asynchronous delivery channel -->
    <tp:DeliveryChannel tp:channelId="asyncChannelB1" tp:transportId="transportB1"
                          tp:docExchangeId="docExchangeB1">
         <tp:MessagingCharacteristics tp:syncReplyMode="none" tp:ackRequested="always"
                                      tp:ackSignatureRequested="always"
                                      tp:duplicateElimination="always"/>
      </tp:DeliveryChannel>
      <!-- A synchronous delivery channel -->
    <tp:DeliveryChannel tp:channelId="syncChannelB1" tp:transportId="transportB2"
                          tp:docExchangeId="docExchangeB1">
         <tp:MessagingCharacteristics tp:syncReplyMode="signalsAndResponse" tp:ackRequested="always"
                                      tp:ackSignatureRequested="always"
                                      tp:duplicateElimination="always"/>
      </tp:DeliveryChannel>
      <tp:Transport tp:transportId="transportB1">
         <tp:TransportSender>
            <tp:TransportProtocol tp:version="1.1">HTTP</tp:TransportProtocol>
            <tp:AccessAuthentication>basic</tp:AccessAuthentication>
            <tp:TransportClientSecurity>
               <tp:TransportSecurityProtocol tp:version="3.0">SSL</tp:TransportSecurityProtocol>
               <tp:ClientCertificateRef tp:certId="CompanyB_ClientCert"/>
               <tp:ServerSecurityDetailsRef tp:securityId="CompanyB_TransportSecurity"/>
            </tp:TransportClientSecurity>
         </tp:TransportSender>
         <tp:TransportReceiver>
            <tp:TransportProtocol tp:version="1.1">HTTP</tp:TransportProtocol>
            <tp:AccessAuthentication>basic</tp:AccessAuthentication>
            <tp:Endpoint tp:uri="https://www.CompanyB.com/servlets/ebxmlhandler/async";
                         tp:type="allPurpose"/>
            <tp:TransportServerSecurity>
               <tp:TransportSecurityProtocol tp:version="3.0">SSL</tp:TransportSecurityProtocol>
               <tp:ServerCertificateRef tp:certId="CompanyB_ServerCert"/>
               <tp:ClientSecurityDetailsRef tp:securityId="CompanyB_TransportSecurity"/>
            </tp:TransportServerSecurity>
         </tp:TransportReceiver>
      </tp:Transport>
      <tp:Transport tp:transportId="transportB2">
         <tp:TransportSender>
            <tp:TransportProtocol tp:version="1.1">HTTP</tp:TransportProtocol>
            <tp:AccessAuthentication>basic</tp:AccessAuthentication>
            <tp:TransportClientSecurity>
               <tp:TransportSecurityProtocol tp:version="3.0">SSL</tp:TransportSecurityProtocol>
               <tp:ClientCertificateRef tp:certId="CompanyB_ClientCert"/>
               <tp:ServerSecurityDetailsRef tp:securityId="CompanyB_TransportSecurity"/>
            </tp:TransportClientSecurity>
         </tp:TransportSender>
         <tp:TransportReceiver>
            <tp:TransportProtocol tp:version="1.1">HTTP</tp:TransportProtocol>
            <tp:AccessAuthentication>basic</tp:AccessAuthentication>
            <tp:Endpoint tp:uri="https://www.CompanyB.com/servlets/ebxmlhandler/sync";
                         tp:type="allPurpose"/>
            <tp:TransportServerSecurity>
               <tp:TransportSecurityProtocol tp:version="3.0">SSL</tp:TransportSecurityProtocol>
               <tp:ServerCertificateRef tp:certId="CompanyB_ServerCert"/>
               <tp:ClientSecurityDetailsRef tp:securityId="CompanyB_TransportSecurity"/>
            </tp:TransportServerSecurity>
         </tp:TransportReceiver>
      </tp:Transport>
      <tp:DocExchange tp:docExchangeId="docExchangeB1">
         <tp:ebXMLSenderBinding tp:version="2.0">
            <tp:ReliableMessaging>
               <tp:Retries>3</tp:Retries>
               <tp:RetryInterval>PT2H</tp:RetryInterval>
               <tp:MessageOrderSemantics>Guaranteed</tp:MessageOrderSemantics>
            </tp:ReliableMessaging>
            <tp:PersistDuration>P1D</tp:PersistDuration>
            <tp:SenderNonRepudiation>
               <tp:NonRepudiationProtocol>http://www.w3.org/2000/09/xmldsig#</tp:NonRepudiationProtocol>
               <tp:HashFunction>http://www.w3.org/2000/09/xmldsig#sha1</tp:HashFunction>
               <tp:SignatureAlgorithm>http://www.w3.org/2000/09/xmldsig#dsa-sha1</tp:SignatureAlgorithm>
               <tp:SigningCertificateRef tp:certId="CompanyB_SigningCert"/>
            </tp:SenderNonRepudiation>
            <tp:SenderDigitalEnvelope>
               <tp:DigitalEnvelopeProtocol tp:version="2.0">S/MIME</tp:DigitalEnvelopeProtocol>
               <tp:EncryptionAlgorithm>DES-CBC</tp:EncryptionAlgorithm>
               <tp:EncryptionSecurityDetailsRef tp:securityId="CompanyB_MessageSecurity"/>
            </tp:SenderDigitalEnvelope>
         </tp:ebXMLSenderBinding>
         <tp:ebXMLReceiverBinding tp:version="2.0">
            <tp:ReliableMessaging>
               <tp:Retries>3</tp:Retries>
               <tp:RetryInterval>PT2H</tp:RetryInterval>
               <tp:MessageOrderSemantics>Guaranteed</tp:MessageOrderSemantics>
            </tp:ReliableMessaging>
            <tp:PersistDuration>P1D</tp:PersistDuration>
            <tp:ReceiverNonRepudiation>
               <tp:NonRepudiationProtocol>http://www.w3.org/2000/09/xmldsig#</tp:NonRepudiationProtocol>
               <tp:HashFunction>http://www.w3.org/2000/09/xmldsig#sha1</tp:HashFunction>
               <tp:SignatureAlgorithm>http://www.w3.org/2000/09/xmldsig#dsa-sha1</tp:SignatureAlgorithm>
               <tp:SigningSecurityDetailsRef tp:securityId="CompanyB_MessageSecurity"/>
            </tp:ReceiverNonRepudiation>
            <tp:ReceiverDigitalEnvelope>
               <tp:DigitalEnvelopeProtocol tp:version="2.0">S/MIME</tp:DigitalEnvelopeProtocol>
               <tp:EncryptionAlgorithm>DES-CBC</tp:EncryptionAlgorithm>
               <tp:EncryptionCertificateRef tp:certId="CompanyB_EncryptionCert"/>
            </tp:ReceiverDigitalEnvelope>
         </tp:ebXMLReceiverBinding>
      </tp:DocExchange>
      <tp:BusinessTransactionCharacteristics id="BTC_companyB_ABID1" tp:isNonRepudiationRequired="true"
                                             tp:isNonRepudiationReceiptRequired="true"
                                             tp:isConfidential="transient"
                                             tp:isAuthenticated="persistent"
                                             tp:isTamperProof="persistent"
                                             tp:isAuthorizationRequired="true"
                                             tp:timeToAcknowledgeReceipt="PT2H"/>
      <tp:BusinessTransactionCharacteristics id="BTC_companyB_ABID2" tp:isNonRepudiationRequired="true"
                                             tp:isNonRepudiationReceiptRequired="true"
                                             tp:isConfidential="transient"
                                             tp:isAuthenticated="persistent"
                                             tp:isTamperProof="persistent"
                                             tp:isAuthorizationRequired="true"/>
      <tp:BusinessTransactionCharacteristics id="BTC_companyB_ABID3" tp:isNonRepudiationRequired="true"
                                             tp:isNonRepudiationReceiptRequired="true"
                                             tp:isConfidential="transient"
                                             tp:isAuthenticated="persistent"
                                             tp:isTamperProof="persistent"
                                             tp:isAuthorizationRequired="true"/>
      <tp:BusinessTransactionCharacteristics id="BTC_companyB_ABID4" tp:isNonRepudiationRequired="true"
                                             tp:isNonRepudiationReceiptRequired="true"
                                             tp:isConfidential="transient"
                                             tp:isAuthenticated="persistent"
                                             tp:isTamperProof="persistent"
                                             tp:isAuthorizationRequired="true"
                                             tp:timeToAcknowledgeReceipt="PT2H"
                                             tp:timeToPerform="P1D"/>
      <tp:BusinessTransactionCharacteristics id="BTC_companyB_ABID5" tp:isNonRepudiationRequired="true"
                                             tp:isNonRepudiationReceiptRequired="true"
                                             tp:isConfidential="transient"
                                             tp:isAuthenticated="persistent"
                                             tp:isTamperProof="persistent"
                                             tp:isAuthorizationRequired="true"/>
      <tp:BusinessTransactionCharacteristics id="BTC_companyB_ABID6" tp:isNonRepudiationRequired="true"
                                             tp:isNonRepudiationReceiptRequired="true"
                                             tp:isConfidential="transient"
                                             tp:isAuthenticated="persistent"
                                             tp:isTamperProof="persistent"
                                             tp:isAuthorizationRequired="true"
                                             tp:timeToAcknowledgeReceipt="PT5M"
                                             tp:timeToPerform="PT5M"/>
      <tp:BusinessTransactionCharacteristics id="BTC_companyB_ABID7" tp:isNonRepudiationRequired="true"
                                             tp:isNonRepudiationReceiptRequired="true"
                                             tp:isConfidential="transient"
                                             tp:isAuthenticated="persistent"
                                             tp:isTamperProof="persistent"
                                             tp:isAuthorizationRequired="true"
                                             tp:timeToAcknowledgeReceipt="PT5M"/>
      <tp:BusinessTransactionCharacteristics id="BTC_companyB_ABID8" tp:isNonRepudiationRequired="true"
                                             tp:isNonRepudiationReceiptRequired="true"
                                             tp:isConfidential="transient"
                                             tp:isAuthenticated="persistent"
                                             tp:isTamperProof="persistent"
                                             tp:isAuthorizationRequired="true"/>
   </tp:PartyInfo>
  <!-- SimplePart corresponding to the SOAP Envelope -->
  <tp:SimplePart tp:id="CompanyA_MsgHdr" tp:mimetype="text/xml">
      <tp:NamespaceSupported tp:location="http://www.oasis-open.org/committees/ebxml-msg/schema/msg-header-2_0.xsd";
                             tp:version="2.0">
      http://www.oasis-open.org/committees/ebxml-msg/schema/msg-header-2_0.xsd
  </tp:NamespaceSupported>
  </tp:SimplePart>
  <tp:SimplePart tp:id="CompanyB_MsgHdr" tp:mimetype="text/xml">
      <tp:NamespaceSupported tp:location="http://www.oasis-open.org/committees/ebxml-msg/schema/msg-header-2_0.xsd";
                             tp:version="2.0">
      http://www.oasis-open.org/committees/ebxml-msg/schema/msg-header-2_0.xsd
  </tp:NamespaceSupported>
  </tp:SimplePart>
  <!-- SimplePart corresponding to a Receipt Acknowledgment business signal -->
  <tp:SimplePart tp:id="CompanyA_ReceiptAcknowledgment" tp:mimetype="application/xml">
      <tp:NamespaceSupported tp:location="http://www.ebxml.org/bpss/ReceiptAcknowledgment.xsd";
                             tp:version="2.0">http://www.ebxml.org/bpss/ReceiptAcknowledgment.xsd
    </tp:NamespaceSupported>
  </tp:SimplePart>
  <tp:SimplePart tp:id="CompanyB_ReceiptAcknowledgment" tp:mimetype="application/xml">
      <tp:NamespaceSupported tp:location="http://www.ebxml.org/bpss/ReceiptAcknowledgment.xsd";
                             tp:version="2.0">
      http://www.ebxml.org/bpss/ReceiptAcknowledgment.xsd
    </tp:NamespaceSupported>
  </tp:SimplePart>
  <!-- SimplePart corresponding to an Exception business signal -->
  <tp:SimplePart tp:id="CompanyA_Exception" tp:mimetype="application/xml">
      <tp:NamespaceSupported tp:location="http://www.oasis-open.org/committees/ebxml-msg/schema/msg-header-2_0.xsd";
                             tp:version="2.0">
      http://www.ebxml.org/bpss/Exception.xsd
    </tp:NamespaceSupported>
  </tp:SimplePart>
  <tp:SimplePart tp:id="CompanyB_Exception" tp:mimetype="application/xml">
      <tp:NamespaceSupported tp:location="http://www.oasis-open.org/committees/ebxml-msg/schema/msg-header-2_0.xsd";
                             tp:version="2.0">
      http://www.ebxml.org/bpss/Exception.xsd
    </tp:NamespaceSupported>
  </tp:SimplePart>
  <!-- SimplePart corresponding to a request action -->
  <tp:SimplePart tp:id="CompanyA_Request" tp:mimetype="application/xml">
      <tp:NamespaceSupported tp:location="http://www.rosettanet.org/schemas/PIP3A4RequestPurchaseOrder.xsd";
                             tp:version="1.0">
      http://www.rosettanet.org/schemas/PIP3A4RequestPurchaseOrder.xsd
    </tp:NamespaceSupported>
  </tp:SimplePart>
  <tp:SimplePart tp:id="CompanyB_Request" tp:mimetype="application/xml">
      <tp:NamespaceSupported tp:location="http://www.rosettanet.org/schemas/PIP3A4RequestPurchaseOrder.xsd";
                             tp:version="1.0">
      http://www.rosettanet.org/schemas/PIP3A4RequestPurchaseOrder.xsd
    </tp:NamespaceSupported>
  </tp:SimplePart>
  <!-- SimplePart corresponding to a response action -->
  <tp:SimplePart tp:id="CompanyA_Response" tp:mimetype="application/xml">
      <tp:NamespaceSupported tp:location="http://www.rosettanet.org/schemas/PurchaseOrderConfirmation.xsd";
                             tp:version="1.0">
      http://www.rosettanet.org/schemas/PIP3A4PurchaseOrderConfirmation.xsd
    </tp:NamespaceSupported>
  </tp:SimplePart>
  <tp:SimplePart tp:id="CompanyB_Response" tp:mimetype="application/xml">
      <tp:NamespaceSupported tp:location="http://www.rosettanet.org/schemas/PurchaseOrderConfirmation.xsd";
                             tp:version="1.0">
      http://www.rosettanet.org/schemas/PIP3A4PurchaseOrderConfirmation.xsd
    </tp:NamespaceSupported>
  </tp:SimplePart>
  <!-- An ebXML message with a SOAP Envelope only -->
  <tp:Packaging tp:id="CompanyA_MshSignalPackage">
      <tp:ProcessingCapabilities tp:parse="true" tp:generate="true"/>
      <tp:CompositeList>
         <tp:Composite tp:id="CompanyA_MshSignal" tp:mimetype="multipart/related"
                       tp:mimeparameters="type=text/xml">
            <tp:Constituent tp:idref="CompanyA_MsgHdr"/>
         </tp:Composite>
      </tp:CompositeList>
  </tp:Packaging>
  <tp:Packaging tp:id="CompanyB_MshSignalPackage">
      <tp:ProcessingCapabilities tp:parse="true" tp:generate="true"/>
      <tp:CompositeList>
         <tp:Composite tp:id="CompanyB_MshSignal" tp:mimetype="multipart/related"
                       tp:mimeparameters="type=text/xml">
            <tp:Constituent tp:idref="CompanyB_MsgHdr"/>
         </tp:Composite>
      </tp:CompositeList>
  </tp:Packaging>
  <!-- An ebXML message with a SOAP Envelope plus a request action payload -->
  <tp:Packaging tp:id="CompanyA_RequestPackage">
      <tp:ProcessingCapabilities tp:parse="true" tp:generate="true"/>
      <tp:CompositeList>
         <tp:Composite tp:id="CompanyA_RequestMsg" tp:mimetype="multipart/related"
                       tp:mimeparameters="type=text/xml">
            <tp:Constituent tp:idref="CompanyA_MsgHdr"/>
            <tp:Constituent tp:idref="CompanyA_Request"/>
         </tp:Composite>
      </tp:CompositeList>
  </tp:Packaging>
  <tp:Packaging tp:id="CompanyB_RequestPackage">
      <tp:ProcessingCapabilities tp:parse="true" tp:generate="true"/>
      <tp:CompositeList>
         <tp:Composite tp:id="CompanyB_RequestMsg" tp:mimetype="multipart/related"
                       tp:mimeparameters="type=text/xml">
            <tp:Constituent tp:idref="CompanyB_MsgHdr"/>
            <tp:Constituent tp:idref="CompanyB_Request"/>
         </tp:Composite>
      </tp:CompositeList>
  </tp:Packaging>
  <!-- An ebXML message with a SOAP Envelope plus a response action payload -->
  <tp:Packaging tp:id="CompanyA_ResponsePackage">
      <tp:ProcessingCapabilities tp:parse="true" tp:generate="true"/>
      <tp:CompositeList>
         <tp:Composite tp:id="CompanyA_ResponseMsg" tp:mimetype="multipart/related"
                       tp:mimeparameters="type=text/xml">
            <tp:Constituent tp:idref="CompanyA_MsgHdr"/>
            <tp:Constituent tp:idref="CompanyA_Response"/>
         </tp:Composite>
      </tp:CompositeList>
  </tp:Packaging>
  <tp:Packaging tp:id="CompanyB_ResponsePackage">
      <tp:ProcessingCapabilities tp:parse="true" tp:generate="true"/>
      <tp:CompositeList>
         <tp:Composite tp:id="CompanyB_ResponseMsg" tp:mimetype="multipart/related"
                       tp:mimeparameters="type=text/xml">
            <tp:Constituent tp:idref="CompanyB_MsgHdr"/>
            <tp:Constituent tp:idref="CompanyB_Response"/>
         </tp:Composite>
      </tp:CompositeList>
  </tp:Packaging>
  <!-- An ebXML message with a SOAP Envelope plus a Receipt Acknowledgment payload -->
  <tp:Packaging tp:id="CompanyA_ReceiptAcknowledgmentPackage">
      <tp:ProcessingCapabilities tp:parse="true" tp:generate="true"/>
      <tp:CompositeList>
         <tp:Composite tp:id="CompanyA_ReceiptAcknowledgmentMsg" tp:mimetype="multipart/related"
                       tp:mimeparameters="type=text/xml">
            <tp:Constituent tp:idref="CompanyA_MsgHdr"/>
            <tp:Constituent tp:idref="CompanyA_ReceiptAcknowledgment"/>
         </tp:Composite>
      </tp:CompositeList>
  </tp:Packaging>
  <tp:Packaging tp:id="CompanyB_ReceiptAcknowledgmentPackage">
      <tp:ProcessingCapabilities tp:parse="true" tp:generate="true"/>
      <tp:CompositeList>
         <tp:Composite tp:id="CompanyB_ReceiptAcknowledgmentMsg" tp:mimetype="multipart/related"
                       tp:mimeparameters="type=text/xml">
            <tp:Constituent tp:idref="CompanyB_MsgHdr"/>
            <tp:Constituent tp:idref="CompanyB_ReceiptAcknowledgment"/>
         </tp:Composite>
      </tp:CompositeList>
  </tp:Packaging>
  <!-- An ebXML message with a SOAP Envelope plus an Exception payload -->
  <tp:Packaging tp:id="CompanyA_ExceptionPackage">
      <tp:ProcessingCapabilities tp:parse="true" tp:generate="true"/>
      <tp:CompositeList>
         <tp:Composite tp:id="CompanyA_ExceptionMsg" tp:mimetype="multipart/related"
                       tp:mimeparameters="type=text/xml">
            <tp:Constituent tp:idref="CompanyA_MsgHdr"/>
            <tp:Constituent tp:idref="CompanyA_Exception"/>
         </tp:Composite>
      </tp:CompositeList>
  </tp:Packaging>
  <tp:Packaging tp:id="CompanyB_ExceptionPackage">
      <tp:ProcessingCapabilities tp:parse="true" tp:generate="true"/>
      <tp:CompositeList>
         <tp:Composite tp:id="CompanyB_ExceptionMsg" tp:mimetype="multipart/related"
                       tp:mimeparameters="type=text/xml">
            <tp:Constituent tp:idref="CompanyB_MsgHdr"/>
            <tp:Constituent tp:idref="CompanyB_Exception"/>
         </tp:Composite>
      </tp:CompositeList>
  </tp:Packaging>
  <!-- An ebXML message with a Receipt Acknowledgment signal, plus a business response,
       or an ebXML message with an Exception signal -->
  <tp:Packaging tp:id="CompanyA_SyncReplyPackage">
      <tp:ProcessingCapabilities tp:parse="true" tp:generate="true"/>
      <tp:CompositeList>
         <tp:Composite tp:id="CompanyA_SignalAndResponseMsg" tp:mimetype="multipart/related"
                       tp:mimeparameters="type=text/xml">
            <tp:Constituent tp:idref="CompanyA_MsgHdr"/>
            <tp:Constituent tp:idref="CompanyA_ReceiptAcknowledgment"/>
            <tp:Constituent tp:idref="CompanyA_Response"/>
         </tp:Composite>
      </tp:CompositeList>
  </tp:Packaging>
  <tp:Packaging tp:id="CompanyB_SyncReplyPackage">
      <tp:ProcessingCapabilities tp:parse="true" tp:generate="true"/>
      <tp:CompositeList>
         <tp:Composite tp:id="CompanyB_SignalAndResponseMsg" tp:mimetype="multipart/related"
                       tp:mimeparameters="type=text/xml">
            <tp:Constituent tp:idref="CompanyB_MsgHdr"/>
            <tp:Constituent tp:idref="CompanyB_ReceiptAcknowledgment"/>
            <tp:Constituent tp:idref="CompanyB_Response"/>
         </tp:Composite>
      </tp:CompositeList>
  </tp:Packaging>
  <tp:Comment xml:lang="en-US">buy/sell agreement between CompanyA.com and CompanyB.com</tp:Comment>
</tp:CollaborationProtocolAgreement>
<?xml version="1.0" ?>
<xsl:stylesheet 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"; 
    xmlns:tp="http://www.oasis-open.org/committees/ebxml-cppa/schema/cpp-cpa-2_0.xsd"; 
    xmlns:ds="http://www.w3.org/2000/09/xmldsig#"; 
    xmlns:xlink="http://www.w3.org/1999/xlink"; 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
    xsi:schemaLocation="http://www.oasis-open.org/committees/ebxml-cppa/schema/cpp-cpa-2_0.xsd 
    http://www.oasis-open.org/committees/ebxml-cppa/schema/cpp-cpa-2_0.xsd"; 
    xmlns:StUF="http://www.egem.nl/StUF/StUF0204"; 
    xmlns:ns="http://www.egem.nl/StUF/sector/bg/0204";
    exclude-result-prefixes="ns StUF"
    version="2.0"
    >

<xsl:output  method="xml" encoding="utf-8" indent="yes" />

<!-- Parameters -->    

<xsl:template match="tp:BusinessTransactionCharacteristics">
    <!-- donothing -->
</xsl:template>
 
    <xsl:template match="@*|node()">
        <xsl:copy>
            <xsl:apply-templates select="@*" />
            <xsl:apply-templates />
        </xsl:copy>
    </xsl:template>
 
    
    <xsl:template match="tp:ThisPartyActionBinding">
        <xsl:copy>
            <xsl:attribute name="tp:businessTransactionCharacteristics">BTC_<xsl:value-of select="@tp:id" /></xsl:attribute>
            <xsl:apply-templates select="@*" />
            <xsl:apply-templates />
        </xsl:copy>
    </xsl:template>
    
    <xsl:template match="tp:PartyInfo">
        <xsl:copy>
            <xsl:apply-templates select="@*" />
            <xsl:apply-templates />
            <xsl:apply-templates mode="normalize"></xsl:apply-templates>
        </xsl:copy>
    </xsl:template>
    
    <xsl:template match="tp:BusinessTransactionCharacteristics" mode="normalize">
        <!-- copy subtree, with added attribute-->
     <xsl:copy>
         <xsl:attribute name="id">BTC_<xsl:value-of select="parent::node()/@tp:id" /></xsl:attribute>
         <xsl:apply-templates select="@*"></xsl:apply-templates>
         <xsl:apply-templates />
     </xsl:copy>
 </xsl:template>
    
    <xsl:template match="node()" mode="normalize">
        <xsl:apply-templates mode="normalize"></xsl:apply-templates>
    </xsl:template>
   
    
   
</xsl:stylesheet>
<?xml version="1.0"?>
<!-- Copyright UN/CEFACT and OASIS, 2001. All Rights Reserved. -->
<tp:CollaborationProtocolAgreement
  xmlns:tp="http://www.oasis-open.org/committees/ebxml-cppa/schema/cpp-cpa-2_0.xsd";
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
  xmlns:xlink="http://www.w3.org/1999/xlink";
  xmlns:ds="http://www.w3.org/2000/09/xmldsig#";
  xmlns:xsd="http://www.w3.org/2001/XMLSchema";
  xsi:schemaLocation="http://www.oasis-open.org/committees/ebxml-cppa/schema/cpp-cpa-2_0.xsd 
  http://www.oasis-open.org/committees/ebxml-cppa/schema/cpp-cpa-2_0.xsd"; 
  tp:cpaid="uri:companyA-and-companyB-cpa" tp:version="2_0b">
  <tp:Status tp:value="proposed"/>
  <tp:Start>2001-05-20T07:21:00Z</tp:Start>
  <tp:End>2002-05-20T07:21:00Z</tp:End>
  <tp:ConversationConstraints tp:invocationLimit="100" tp:concurrentConversations="10"/>
  <!-- Party info for CompanyA -->
  <tp:PartyInfo
    tp:partyName="CompanyA"
    tp:defaultMshChannelId="asyncChannelA1"
    tp:defaultMshPackageId="CompanyA_MshSignalPackage">
    <tp:PartyId tp:type="urn:oasis:names:tc:ebxml-cppa:partyid-type:duns">123456789</tp:PartyId>
    <tp:PartyRef xlink:href="http://CompanyA.com/about.html"/>
    <tp:CollaborationRole>
      <tp:ProcessSpecification
        tp:version="2.0"
        tp:name="PIP3A4RequestPurchaseOrder"
        xlink:type="simple"
        xlink:href="http://www.rosettanet.org/processes/3A4.xml";
        tp:uuid="urn:icann:rosettanet.org:bpid:3A4$2.0"/>
      <tp:Role
        tp:name="Buyer"
        xlink:type="simple"
        xlink:href="http://www.rosettanet.org/processes/3A4.xml#Buyer"/>
      <tp:ApplicationCertificateRef tp:certId="CompanyA_AppCert"/>
      <tp:ServiceBinding>
        <tp:Service>bpid:icann:rosettanet.org:3A4$2.0</tp:Service>
        <tp:CanSend>
          <tp:ThisPartyActionBinding
            tp:id="companyA_ABID1"
            tp:action="Purchase Order Request Action"
            tp:packageId="CompanyA_RequestPackage">
            <tp:BusinessTransactionCharacteristics
              tp:isNonRepudiationRequired="true"
              tp:isNonRepudiationReceiptRequired="true"
              tp:isConfidential="transient"
              tp:isAuthenticated="persistent"
              tp:isTamperProof="persistent"
              tp:isAuthorizationRequired="true"
              tp:timeToAcknowledgeReceipt="PT2H"
              tp:timeToPerform="P1D"/>
            <tp:ActionContext
              tp:binaryCollaboration="Request Purchase Order"
              tp:businessTransactionActivity="Request Purchase Order"
              tp:requestOrResponseAction="Purchase Order Request Action"/>
            <tp:ChannelId>asyncChannelA1</tp:ChannelId>
          </tp:ThisPartyActionBinding>
          <tp:OtherPartyActionBinding>companyB_ABID4</tp:OtherPartyActionBinding>
        </tp:CanSend>
        <tp:CanSend>
          <tp:ThisPartyActionBinding
            tp:id="companyA_ABID2"
            tp:action="ReceiptAcknowledgement"
            tp:packageId="CompanyA_ReceiptAcknowledgmentPackage">
            <tp:BusinessTransactionCharacteristics
              tp:isNonRepudiationRequired="true"
              tp:isNonRepudiationReceiptRequired="true"
              tp:isConfidential="transient"
              tp:isAuthenticated="persistent"
              tp:isTamperProof="persistent"
              tp:isAuthorizationRequired="true"/>
            <tp:ChannelId>asyncChannelA1</tp:ChannelId>
          </tp:ThisPartyActionBinding>
          <tp:OtherPartyActionBinding>companyB_ABID5</tp:OtherPartyActionBinding>
        </tp:CanSend>
        <!-- The next binding uses a synchronous delivery channel -->
        <tp:CanSend>
          <tp:ThisPartyActionBinding
            tp:id="companyA_ABID6"
            tp:action="Purchase Order Request Action"
            tp:packageId="CompanyA_RequestPackage">
            <tp:BusinessTransactionCharacteristics
              tp:isNonRepudiationRequired="true"
              tp:isNonRepudiationReceiptRequired="true"
              tp:isConfidential="transient"
              tp:isAuthenticated="persistent"
              tp:isTamperProof="persistent"
              tp:isAuthorizationRequired="true"
              tp:timeToAcknowledgeReceipt="PT5M"
              tp:timeToPerform="PT5M"/>
            <tp:ActionContext
              tp:binaryCollaboration="Request Purchase Order"
              tp:businessTransactionActivity="Request Purchase Order"
              tp:requestOrResponseAction="Purchase Order Request Action"/>
            <tp:ChannelId>syncChannelA1</tp:ChannelId>
          </tp:ThisPartyActionBinding>
          <tp:OtherPartyActionBinding>companyB_ABID6</tp:OtherPartyActionBinding>
          <tp:CanReceive>
            <tp:ThisPartyActionBinding
              tp:id="companyA_ABID7"
              tp:action="Purchase Order Confirmation Action"
              tp:packageId="CompanyA_SyncReplyPackage">
              <tp:BusinessTransactionCharacteristics
                tp:isNonRepudiationRequired="true" 
                tp:isNonRepudiationReceiptRequired="true"
                tp:isConfidential="transient"
                tp:isAuthenticated="persistent"
                tp:isTamperProof="persistent"
                tp:isAuthorizationRequired="true"
                tp:timeToAcknowledgeReceipt="PT5M"/>
              <tp:ActionContext
                tp:binaryCollaboration="Request Purchase Order"
                tp:businessTransactionActivity="Request Purchase Order"
                tp:requestOrResponseAction="Purchase Order Confirmation Action"/>
              <tp:ChannelId>syncChannelA1</tp:ChannelId>
            </tp:ThisPartyActionBinding>
            <tp:OtherPartyActionBinding>companyB_ABID7</tp:OtherPartyActionBinding>
          </tp:CanReceive>
          <tp:CanReceive>
            <tp:ThisPartyActionBinding
              tp:id="companyA_ABID8"
              tp:action="Exception"
              tp:packageId="CompanyA_ExceptionPackage">
              <tp:BusinessTransactionCharacteristics
                tp:isNonRepudiationRequired="true"
                tp:isNonRepudiationReceiptRequired="true"
                tp:isConfidential="transient"
                tp:isAuthenticated="persistent"
                tp:isTamperProof="persistent"
                tp:isAuthorizationRequired="true"/>
              <tp:ChannelId>syncChannelA1</tp:ChannelId>
            </tp:ThisPartyActionBinding>
            <tp:OtherPartyActionBinding>companyB_ABID8</tp:OtherPartyActionBinding>
          </tp:CanReceive>
        </tp:CanSend>
        <tp:CanReceive>
          <tp:ThisPartyActionBinding
            tp:id="companyA_ABID3"
            tp:action="Purchase Order Confirmation Action"
            tp:packageId="CompanyA_ResponsePackage">
            <tp:BusinessTransactionCharacteristics
              tp:isNonRepudiationRequired="true"
              tp:isNonRepudiationReceiptRequired="true"
              tp:isConfidential="transient"
              tp:isAuthenticated="persistent"
              tp:isTamperProof="persistent"
              tp:isAuthorizationRequired="true"
              tp:timeToAcknowledgeReceipt="PT2H"/>
            <tp:ActionContext
              tp:binaryCollaboration="Request Purchase Order"
              tp:businessTransactionActivity="Request Purchase Order"
              tp:requestOrResponseAction="Purchase Order Confirmation Action"/>
            <tp:ChannelId>asyncChannelA1</tp:ChannelId>
          </tp:ThisPartyActionBinding>
          <tp:OtherPartyActionBinding>companyB_ABID1</tp:OtherPartyActionBinding>
        </tp:CanReceive>
        <tp:CanReceive>
          <tp:ThisPartyActionBinding
            tp:id="companyA_ABID4"
            tp:action="ReceiptAcknowledgment"
            tp:packageId="CompanyA_ReceiptAcknowledgmentPackage">
            <tp:BusinessTransactionCharacteristics
              tp:isNonRepudiationRequired="true"
              tp:isNonRepudiationReceiptRequired="true"
              tp:isConfidential="transient"
              tp:isAuthenticated="persistent"
              tp:isTamperProof="persistent"
              tp:isAuthorizationRequired="true"/>
            <tp:ChannelId>asyncChannelA1</tp:ChannelId>
          </tp:ThisPartyActionBinding>
          <tp:OtherPartyActionBinding>companyB_ABID2</tp:OtherPartyActionBinding>
        </tp:CanReceive>
        <tp:CanReceive>
          <tp:ThisPartyActionBinding
            tp:id="companyA_ABID5"
            tp:action="Exception"
            tp:packageId="CompanyA_ExceptionPackage">
            <tp:BusinessTransactionCharacteristics
              tp:isNonRepudiationRequired="true"
              tp:isNonRepudiationReceiptRequired="true"
              tp:isConfidential="transient"
              tp:isAuthenticated="persistent"
              tp:isTamperProof="persistent"
              tp:isAuthorizationRequired="true"/>
            <tp:ChannelId>asyncChannelA1</tp:ChannelId>
          </tp:ThisPartyActionBinding>
          <tp:OtherPartyActionBinding>companyB_ABID3</tp:OtherPartyActionBinding>
        </tp:CanReceive>
      </tp:ServiceBinding>
    </tp:CollaborationRole>
    <!-- Certificates used by the "Buyer" company -->
    <tp:Certificate tp:certId="CompanyA_AppCert">
      <ds:KeyInfo>
        <ds:KeyName>CompanyA_AppCert_Key</ds:KeyName>
      </ds:KeyInfo>
    </tp:Certificate>
    <tp:Certificate tp:certId="CompanyA_SigningCert">
      <ds:KeyInfo>
        <ds:KeyName>CompanyA_SigningCert_Key</ds:KeyName>
      </ds:KeyInfo>
    </tp:Certificate>
    <tp:Certificate tp:certId="CompanyA_EncryptionCert">
      <ds:KeyInfo>
        <ds:KeyName>CompanyA_EncryptionCert_Key</ds:KeyName>
      </ds:KeyInfo>
    </tp:Certificate>
    <tp:Certificate tp:certId="CompanyA_ServerCert">
      <ds:KeyInfo>
        <ds:KeyName>CompanyA_ServerCert_Key</ds:KeyName>
      </ds:KeyInfo>
    </tp:Certificate>
    <tp:Certificate tp:certId="CompanyA_ClientCert">
      <ds:KeyInfo>
        <ds:KeyName>CompanyA_ClientCert_Key</ds:KeyName>
      </ds:KeyInfo>
    </tp:Certificate>
    <tp:Certificate tp:certId="TrustedRootCertA1">
      <ds:KeyInfo>
        <ds:KeyName>TrustedRootCertA1_Key </ds:KeyName>
      </ds:KeyInfo>
    </tp:Certificate>
    <tp:Certificate tp:certId="TrustedRootCertA2">
      <ds:KeyInfo>
        <ds:KeyName>TrustedRootCertA2_Key</ds:KeyName>
      </ds:KeyInfo>
    </tp:Certificate>
    <tp:Certificate tp:certId="TrustedRootCertA3">
      <ds:KeyInfo>
        <ds:KeyName>TrustedRootCertA3_Key</ds:KeyName>
      </ds:KeyInfo>
    </tp:Certificate>
    <tp:Certificate tp:certId="TrustedRootCertA4">
      <ds:KeyInfo>
        <ds:KeyName>TrustedRootCertA4_Key</ds:KeyName>
      </ds:KeyInfo>
    </tp:Certificate>
    <tp:Certificate tp:certId="TrustedRootCertA5">
      <ds:KeyInfo>
        <ds:KeyName>TrustedRootCertA5_Key</ds:KeyName>
      </ds:KeyInfo>
    </tp:Certificate>
    <tp:SecurityDetails tp:securityId="CompanyA_TransportSecurity">
      <tp:TrustAnchors>
        <tp:AnchorCertificateRef tp:certId="TrustedRootCertA1"/>
        <tp:AnchorCertificateRef tp:certId="TrustedRootCertA2"/>
        <tp:AnchorCertificateRef tp:certId="TrustedRootCertA4"/>
      </tp:TrustAnchors>
    </tp:SecurityDetails>
    <tp:SecurityDetails tp:securityId="CompanyA_MessageSecurity">
      <tp:TrustAnchors>
        <tp:AnchorCertificateRef tp:certId="TrustedRootCertA3"/>
        <tp:AnchorCertificateRef tp:certId="TrustedRootCertA5"/>
      </tp:TrustAnchors>
    </tp:SecurityDetails>
    <tp:DeliveryChannel
      tp:channelId="asyncChannelA1"
      tp:transportId="transportA1"
      tp:docExchangeId="docExchangeA1">
      <tp:MessagingCharacteristics
        tp:syncReplyMode="none"
        tp:ackRequested="always"
        tp:ackSignatureRequested="always"
        tp:duplicateElimination="always"/>
    </tp:DeliveryChannel>
    <tp:DeliveryChannel
      tp:channelId="syncChannelA1"
      tp:transportId="transportA2"
      tp:docExchangeId="docExchangeA1">
      <tp:MessagingCharacteristics
        tp:syncReplyMode="signalsAndResponse"
        tp:ackRequested="always"
        tp:ackSignatureRequested="always"
        tp:duplicateElimination="always"/>
    </tp:DeliveryChannel>
    <tp:Transport tp:transportId="transportA1">
      <tp:TransportSender>
        <tp:TransportProtocol tp:version="1.1">HTTP</tp:TransportProtocol>
        <tp:AccessAuthentication>basic</tp:AccessAuthentication>
        <tp:TransportClientSecurity>
          <tp:TransportSecurityProtocol tp:version="3.0">SSL</tp:TransportSecurityProtocol>
          <tp:ClientCertificateRef tp:certId="CompanyA_ClientCert"/>
          <tp:ServerSecurityDetailsRef tp:securityId="CompanyA_TransportSecurity"/>
        </tp:TransportClientSecurity>
      </tp:TransportSender>
      <tp:TransportReceiver>
        <tp:TransportProtocol tp:version="1.1">HTTP</tp:TransportProtocol>
        <tp:AccessAuthentication>basic</tp:AccessAuthentication>
        <tp:Endpoint
          tp:uri="https://www.CompanyA.com/servlets/ebxmlhandler/async";
          tp:type="allPurpose"/>
        <tp:TransportServerSecurity>
          <tp:TransportSecurityProtocol tp:version="3.0">SSL</tp:TransportSecurityProtocol>
          <tp:ServerCertificateRef tp:certId="CompanyA_ServerCert"/>
          <tp:ClientSecurityDetailsRef tp:securityId="CompanyA_TransportSecurity"/>
        </tp:TransportServerSecurity>
      </tp:TransportReceiver>
    </tp:Transport>
    <tp:Transport tp:transportId="transportA2">
      <tp:TransportSender>
        <tp:TransportProtocol tp:version="1.1">HTTP</tp:TransportProtocol>
        <tp:AccessAuthentication>basic</tp:AccessAuthentication>
        <tp:TransportClientSecurity>
          <tp:TransportSecurityProtocol tp:version="3.0">SSL</tp:TransportSecurityProtocol>
          <tp:ClientCertificateRef tp:certId="CompanyA_ClientCert"/>
          <tp:ServerSecurityDetailsRef tp:securityId="CompanyA_TransportSecurity"/>
        </tp:TransportClientSecurity>
      </tp:TransportSender>
      <tp:TransportReceiver>
        <tp:TransportProtocol tp:version="1.1">HTTP</tp:TransportProtocol>
        <tp:AccessAuthentication>basic</tp:AccessAuthentication>
        <tp:Endpoint
          tp:uri="https://www.CompanyA.com/servlets/ebxmlhandler/sync";
          tp:type="allPurpose"/>
        <tp:TransportServerSecurity>
          <tp:TransportSecurityProtocol tp:version="3.0">SSL</tp:TransportSecurityProtocol>
          <tp:ServerCertificateRef tp:certId="CompanyA_ServerCert"/>
          <tp:ClientSecurityDetailsRef tp:securityId="CompanyA_TransportSecurity"/>
        </tp:TransportServerSecurity>
      </tp:TransportReceiver>
    </tp:Transport>
    <tp:DocExchange tp:docExchangeId="docExchangeA1">
      <tp:ebXMLSenderBinding tp:version="2.0">
        <tp:ReliableMessaging>
          <tp:Retries>3</tp:Retries>
          <tp:RetryInterval>PT2H</tp:RetryInterval>
          <tp:MessageOrderSemantics>Guaranteed</tp:MessageOrderSemantics>
        </tp:ReliableMessaging>
        <tp:PersistDuration>P1D</tp:PersistDuration>
        <tp:SenderNonRepudiation>
          <tp:NonRepudiationProtocol>http://www.w3.org/2000/09/xmldsig#</tp:NonRepudiationProtocol>
          <tp:HashFunction>http://www.w3.org/2000/09/xmldsig#sha1</tp:HashFunction>
          <tp:SignatureAlgorithm>http://www.w3.org/2000/09/xmldsig#dsa-sha1</tp:SignatureAlgorithm>
          <tp:SigningCertificateRef tp:certId="CompanyA_SigningCert"/>
        </tp:SenderNonRepudiation>
        <tp:SenderDigitalEnvelope>
          <tp:DigitalEnvelopeProtocol tp:version="2.0">S/MIME</tp:DigitalEnvelopeProtocol>
          <tp:EncryptionAlgorithm>DES-CBC</tp:EncryptionAlgorithm>
          <tp:EncryptionSecurityDetailsRef tp:securityId="CompanyA_MessageSecurity"/>
        </tp:SenderDigitalEnvelope>
      </tp:ebXMLSenderBinding>
      <tp:ebXMLReceiverBinding tp:version="2.0">
        <tp:ReliableMessaging>
          <tp:Retries>3</tp:Retries>
          <tp:RetryInterval>PT2H</tp:RetryInterval>
          <tp:MessageOrderSemantics>Guaranteed</tp:MessageOrderSemantics>
        </tp:ReliableMessaging>
        <tp:PersistDuration>P1D</tp:PersistDuration>
        <tp:ReceiverNonRepudiation>
          <tp:NonRepudiationProtocol>http://www.w3.org/2000/09/xmldsig#</tp:NonRepudiationProtocol>
          <tp:HashFunction>http://www.w3.org/2000/09/xmldsig#sha1</tp:HashFunction>
          <tp:SignatureAlgorithm>http://www.w3.org/2000/09/xmldsig#dsa-sha1</tp:SignatureAlgorithm>
          <tp:SigningSecurityDetailsRef tp:securityId="CompanyA_MessageSecurity"/>
        </tp:ReceiverNonRepudiation>
        <tp:ReceiverDigitalEnvelope>
          <tp:DigitalEnvelopeProtocol tp:version="2.0">S/MIME</tp:DigitalEnvelopeProtocol>
          <tp:EncryptionAlgorithm>DES-CBC</tp:EncryptionAlgorithm>
          <tp:EncryptionCertificateRef tp:certId="CompanyA_EncryptionCert"/>
        </tp:ReceiverDigitalEnvelope>
      </tp:ebXMLReceiverBinding>
    </tp:DocExchange>
  </tp:PartyInfo>
  <!-- Party info for CompanyB -->
  <tp:PartyInfo
    tp:partyName="CompanyB"
    tp:defaultMshChannelId="asyncChannelB1"
    tp:defaultMshPackageId="CompanyB_MshSignalPackage">
    <tp:PartyId tp:type="urn:oasis:names:tc:ebxml-cppa:partyid-type:duns">987654321</tp:PartyId>
    <tp:PartyRef xlink:type="simple" xlink:href="http://CompanyB.com/about.html"/>
    <tp:CollaborationRole>
      <tp:ProcessSpecification
        tp:version="2.0"
        tp:name="PIP3A4RequestPurchaseOrder"
        xlink:type="simple"
        xlink:href="http://www.rosettanet.org/processes/3A4.xml";
        tp:uuid="urn:icann:rosettanet.org:bpid:3A4$2.0"/>
      <tp:Role
        tp:name="Seller"
        xlink:type="simple"
        xlink:href="http://www.rosettanet.org/processes/3A4.xml#seller"/>
      <tp:ApplicationCertificateRef tp:certId="CompanyB_AppCert"/>
      <tp:ServiceBinding>
        <tp:Service>bpid:icann:rosettanet.org:3A4$2.0</tp:Service>
        <tp:CanSend>
          <tp:ThisPartyActionBinding
            tp:id="companyB_ABID1"
            tp:action="Purchase Order Confirmation Action"
            tp:packageId="CompanyB_ResponsePackage">
            <tp:BusinessTransactionCharacteristics
              tp:isNonRepudiationRequired="true"
              tp:isNonRepudiationReceiptRequired="true"
              tp:isConfidential="transient"
              tp:isAuthenticated="persistent"
              tp:isTamperProof="persistent"
              tp:isAuthorizationRequired="true"
              tp:timeToAcknowledgeReceipt="PT2H"/>
            <tp:ActionContext
              tp:binaryCollaboration="Request Purchase Order"
              tp:businessTransactionActivity="Request Purchase Order"
              tp:requestOrResponseAction="Purchase Order Confirmation Action"/>
            <tp:ChannelId>asyncChannelB1</tp:ChannelId>
          </tp:ThisPartyActionBinding>
          <tp:OtherPartyActionBinding>companyA_ABID3</tp:OtherPartyActionBinding>
        </tp:CanSend>
        <tp:CanSend>
          <tp:ThisPartyActionBinding
            tp:id="companyB_ABID2"
            tp:action="ReceiptAcknowledgement"
            tp:packageId="CompanyB_ReceiptAcknowledgmentPackage">
            <tp:BusinessTransactionCharacteristics
              tp:isNonRepudiationRequired="true"
              tp:isNonRepudiationReceiptRequired="true"
              tp:isConfidential="transient"
              tp:isAuthenticated="persistent"
              tp:isTamperProof="persistent"
              tp:isAuthorizationRequired="true"/>
            <tp:ChannelId>asyncChannelB1</tp:ChannelId>
          </tp:ThisPartyActionBinding>
          <tp:OtherPartyActionBinding>companyA_ABID4</tp:OtherPartyActionBinding>
        </tp:CanSend>
        <tp:CanSend>
          <tp:ThisPartyActionBinding
            tp:id="companyB_ABID3"
            tp:action="Exception"
            tp:packageId="CompanyB_ExceptionPackage">
            <tp:BusinessTransactionCharacteristics
              tp:isNonRepudiationRequired="true"
              tp:isNonRepudiationReceiptRequired="true"
              tp:isConfidential="transient"
              tp:isAuthenticated="persistent"
              tp:isTamperProof="persistent"
              tp:isAuthorizationRequired="true"/>
            <tp:ChannelId>asyncChannelB1</tp:ChannelId>
          </tp:ThisPartyActionBinding>
          <tp:OtherPartyActionBinding>companyA_ABID5</tp:OtherPartyActionBinding>
        </tp:CanSend>
        <tp:CanReceive>
          <tp:ThisPartyActionBinding
            tp:id="companyB_ABID4"
            tp:action="Purchase Order Request Action"
            tp:packageId="CompanyB_RequestPackage">
            <tp:BusinessTransactionCharacteristics
              tp:isNonRepudiationRequired="true"
              tp:isNonRepudiationReceiptRequired="true"
              tp:isConfidential="transient"
              tp:isAuthenticated="persistent"
              tp:isTamperProof="persistent"
              tp:isAuthorizationRequired="true"
              tp:timeToAcknowledgeReceipt="PT2H"
              tp:timeToPerform="P1D"/>
            <tp:ActionContext
              tp:binaryCollaboration="Request Purchase Order"
              tp:businessTransactionActivity="Request Purchase Order"
              tp:requestOrResponseAction="Purchase Order Request Action"/>
            <tp:ChannelId>asyncChannelB1</tp:ChannelId>
          </tp:ThisPartyActionBinding>
          <tp:OtherPartyActionBinding>companyA_ABID1</tp:OtherPartyActionBinding>
        </tp:CanReceive>
        <tp:CanReceive>
          <tp:ThisPartyActionBinding
            tp:id="companyB_ABID5"
            tp:action="ReceiptAcknowledgment"
            tp:packageId="CompanyB_ReceiptAcknowledgmentPackage">
            <tp:BusinessTransactionCharacteristics
              tp:isNonRepudiationRequired="true"
              tp:isNonRepudiationReceiptRequired="true"
              tp:isConfidential="transient"
              tp:isAuthenticated="persistent"
              tp:isTamperProof="persistent"
              tp:isAuthorizationRequired="true"/>
            <tp:ChannelId>asyncChannelB1</tp:ChannelId>
          </tp:ThisPartyActionBinding>
          <tp:OtherPartyActionBinding>companyA_ABID2</tp:OtherPartyActionBinding>
        </tp:CanReceive>
        <!-- The next binding uses a synchronous delivery channel -->
        <tp:CanReceive>
          <tp:ThisPartyActionBinding
            tp:id="companyB_ABID6"
            tp:action="Purchase Order Request Action"
            tp:packageId="CompanyB_RequestPackage">
            <tp:BusinessTransactionCharacteristics
              tp:isNonRepudiationRequired="true"
              tp:isNonRepudiationReceiptRequired="true"
              tp:isConfidential="transient"
              tp:isAuthenticated="persistent"
              tp:isTamperProof="persistent"
              tp:isAuthorizationRequired="true"
              tp:timeToAcknowledgeReceipt="PT5M"
              tp:timeToPerform="PT5M"/>
            <tp:ActionContext
              tp:binaryCollaboration="Request Purchase Order"
              tp:businessTransactionActivity="Request Purchase Order"
              tp:requestOrResponseAction="Purchase Order Request Action"/>
            <tp:ChannelId>syncChannelB1</tp:ChannelId>
          </tp:ThisPartyActionBinding>
          <tp:OtherPartyActionBinding>companyA_ABID6</tp:OtherPartyActionBinding>
          <tp:CanSend>
            <tp:ThisPartyActionBinding
              tp:id="companyB_ABID7"
              tp:action="Purchase Order Confirmation Action"
              tp:packageId="CompanyB_SyncReplyPackage">
              <tp:BusinessTransactionCharacteristics
                tp:isNonRepudiationRequired="true"
                tp:isNonRepudiationReceiptRequired="true"
                tp:isConfidential="transient"
                tp:isAuthenticated="persistent"
                tp:isTamperProof="persistent"
                tp:isAuthorizationRequired="true"
                tp:timeToAcknowledgeReceipt="PT5M"/>
              <tp:ActionContext
                tp:binaryCollaboration="Request Purchase Order"
                tp:businessTransactionActivity="Request Purchase Order"
                tp:requestOrResponseAction="Purchase Order Confirmation Action"/>
              <tp:ChannelId>syncChannelB1</tp:ChannelId>
            </tp:ThisPartyActionBinding>
            <tp:OtherPartyActionBinding>companyA_ABID7</tp:OtherPartyActionBinding>
          </tp:CanSend>
          <tp:CanSend>
            <tp:ThisPartyActionBinding
              tp:id="companyB_ABID8"
              tp:action="Exception"
              tp:packageId="CompanyB_ExceptionPackage">
              <tp:BusinessTransactionCharacteristics
                tp:isNonRepudiationRequired="true"
                tp:isNonRepudiationReceiptRequired="true"
                tp:isConfidential="transient"
                tp:isAuthenticated="persistent"
                tp:isTamperProof="persistent"
                tp:isAuthorizationRequired="true"/>
              <tp:ChannelId>syncChannelB1</tp:ChannelId>
            </tp:ThisPartyActionBinding>
            <tp:OtherPartyActionBinding>companyA_ABID8</tp:OtherPartyActionBinding>
          </tp:CanSend>
        </tp:CanReceive>
      </tp:ServiceBinding>
    </tp:CollaborationRole>
    <!-- Certificates used by the "Seller" company -->
    <tp:Certificate tp:certId="CompanyB_AppCert">
      <ds:KeyInfo>
        <ds:KeyName>CompanyB_AppCert_Key</ds:KeyName>
      </ds:KeyInfo>
    </tp:Certificate>
    <tp:Certificate tp:certId="CompanyB_SigningCert">
      <ds:KeyInfo>
        <ds:KeyName>CompanyB_Signingcert_Key</ds:KeyName>
      </ds:KeyInfo>
    </tp:Certificate>
    <tp:Certificate tp:certId="CompanyB_EncryptionCert">
      <ds:KeyInfo>
        <ds:KeyName>CompanyB_EncryptionCert_Key</ds:KeyName>
      </ds:KeyInfo>
    </tp:Certificate>
    <tp:Certificate tp:certId="CompanyB_ServerCert">
      <ds:KeyInfo>
        <ds:KeyName>CompanyB_ServerCert_Key</ds:KeyName>
      </ds:KeyInfo>
    </tp:Certificate>
    <tp:Certificate tp:certId="CompanyB_ClientCert">
      <ds:KeyInfo>
        <ds:KeyName>CompanyB_ClientCert_Key</ds:KeyName>
      </ds:KeyInfo>
    </tp:Certificate>
    <tp:Certificate tp:certId="TrustedRootCertB4">
      <ds:KeyInfo>
        <ds:KeyName>TrustedRootCertB4_Key</ds:KeyName>
      </ds:KeyInfo>
    </tp:Certificate>
    <tp:Certificate tp:certId="TrustedRootCertB5">
      <ds:KeyInfo>
        <ds:KeyName>TrustedRootCertB5_Key</ds:KeyName>
      </ds:KeyInfo>
    </tp:Certificate>
    <tp:Certificate tp:certId="TrustedRootCertB6">
      <ds:KeyInfo>
        <ds:KeyName>TrustedRootCertB6_Key</ds:KeyName>
      </ds:KeyInfo>
    </tp:Certificate>
    <tp:Certificate tp:certId="TrustedRootCertB7">
      <ds:KeyInfo>
        <ds:KeyName>TrustedRootCertB7_Key</ds:KeyName>
      </ds:KeyInfo>
    </tp:Certificate>
    <tp:Certificate tp:certId="TrustedRootCertB8">
      <ds:KeyInfo>
        <ds:KeyName>TrustedRootCertB8_Key</ds:KeyName>
      </ds:KeyInfo>
    </tp:Certificate>
    <tp:SecurityDetails tp:securityId="CompanyB_TransportSecurity">
      <tp:TrustAnchors>
        <tp:AnchorCertificateRef tp:certId="TrustedRootCertB5"/>
        <tp:AnchorCertificateRef tp:certId="TrustedRootCertB6"/>
        <tp:AnchorCertificateRef tp:certId="TrustedRootCertB4"/>
      </tp:TrustAnchors>
    </tp:SecurityDetails>
    <tp:SecurityDetails tp:securityId="CompanyB_MessageSecurity">
      <tp:TrustAnchors>
        <tp:AnchorCertificateRef tp:certId="TrustedRootCertB8"/>
        <tp:AnchorCertificateRef tp:certId="TrustedRootCertB7"/>
      </tp:TrustAnchors>
    </tp:SecurityDetails>
    <!-- An asynchronous delivery channel -->
    <tp:DeliveryChannel
      tp:channelId="asyncChannelB1"
      tp:transportId="transportB1"
      tp:docExchangeId="docExchangeB1">
      <tp:MessagingCharacteristics
        tp:syncReplyMode="none"
        tp:ackRequested="always"
        tp:ackSignatureRequested="always"
        tp:duplicateElimination="always"/>
    </tp:DeliveryChannel>
    <!-- A synchronous delivery channel -->
    <tp:DeliveryChannel
      tp:channelId="syncChannelB1"
      tp:transportId="transportB2"
      tp:docExchangeId="docExchangeB1">
      <tp:MessagingCharacteristics
        tp:syncReplyMode="signalsAndResponse"
        tp:ackRequested="always"
        tp:ackSignatureRequested="always"
        tp:duplicateElimination="always"/>
    </tp:DeliveryChannel>
    <tp:Transport tp:transportId="transportB1">
      <tp:TransportSender>
        <tp:TransportProtocol tp:version="1.1">HTTP</tp:TransportProtocol>
        <tp:AccessAuthentication>basic</tp:AccessAuthentication>
        <tp:TransportClientSecurity>
          <tp:TransportSecurityProtocol tp:version="3.0">SSL</tp:TransportSecurityProtocol>
          <tp:ClientCertificateRef tp:certId="CompanyB_ClientCert"/>
          <tp:ServerSecurityDetailsRef tp:securityId="CompanyB_TransportSecurity"/>
        </tp:TransportClientSecurity>
      </tp:TransportSender>
      <tp:TransportReceiver>
        <tp:TransportProtocol tp:version="1.1">HTTP</tp:TransportProtocol>
        <tp:AccessAuthentication>basic</tp:AccessAuthentication>
        <tp:Endpoint
          tp:uri="https://www.CompanyB.com/servlets/ebxmlhandler/async";
          tp:type="allPurpose"/>
        <tp:TransportServerSecurity>
          <tp:TransportSecurityProtocol tp:version="3.0">SSL</tp:TransportSecurityProtocol>
          <tp:ServerCertificateRef tp:certId="CompanyB_ServerCert"/>
          <tp:ClientSecurityDetailsRef tp:securityId="CompanyB_TransportSecurity"/>
        </tp:TransportServerSecurity>
      </tp:TransportReceiver>
    </tp:Transport>
    <tp:Transport tp:transportId="transportB2">
      <tp:TransportSender>
        <tp:TransportProtocol tp:version="1.1">HTTP</tp:TransportProtocol>
        <tp:AccessAuthentication>basic</tp:AccessAuthentication>
        <tp:TransportClientSecurity>
          <tp:TransportSecurityProtocol tp:version="3.0">SSL</tp:TransportSecurityProtocol>
          <tp:ClientCertificateRef tp:certId="CompanyB_ClientCert"/>
          <tp:ServerSecurityDetailsRef tp:securityId="CompanyB_TransportSecurity"/>
        </tp:TransportClientSecurity>
      </tp:TransportSender>
      <tp:TransportReceiver>
        <tp:TransportProtocol tp:version="1.1">HTTP</tp:TransportProtocol>
        <tp:AccessAuthentication>basic</tp:AccessAuthentication>
        <tp:Endpoint
          tp:uri="https://www.CompanyB.com/servlets/ebxmlhandler/sync";
          tp:type="allPurpose"/>
        <tp:TransportServerSecurity>
          <tp:TransportSecurityProtocol tp:version="3.0">SSL</tp:TransportSecurityProtocol>
          <tp:ServerCertificateRef tp:certId="CompanyB_ServerCert"/>
          <tp:ClientSecurityDetailsRef tp:securityId="CompanyB_TransportSecurity"/>
        </tp:TransportServerSecurity>
      </tp:TransportReceiver>
    </tp:Transport>
    <tp:DocExchange tp:docExchangeId="docExchangeB1">
      <tp:ebXMLSenderBinding tp:version="2.0">
        <tp:ReliableMessaging>
          <tp:Retries>3</tp:Retries>
          <tp:RetryInterval>PT2H</tp:RetryInterval>
          <tp:MessageOrderSemantics>Guaranteed</tp:MessageOrderSemantics>
        </tp:ReliableMessaging>
        <tp:PersistDuration>P1D</tp:PersistDuration>
        <tp:SenderNonRepudiation>
          <tp:NonRepudiationProtocol>http://www.w3.org/2000/09/xmldsig#</tp:NonRepudiationProtocol>
          <tp:HashFunction>http://www.w3.org/2000/09/xmldsig#sha1</tp:HashFunction>
          <tp:SignatureAlgorithm>http://www.w3.org/2000/09/xmldsig#dsa-sha1</tp:SignatureAlgorithm>
          <tp:SigningCertificateRef tp:certId="CompanyB_SigningCert"/>
        </tp:SenderNonRepudiation>
        <tp:SenderDigitalEnvelope>
          <tp:DigitalEnvelopeProtocol tp:version="2.0">S/MIME</tp:DigitalEnvelopeProtocol>
          <tp:EncryptionAlgorithm>DES-CBC</tp:EncryptionAlgorithm>
          <tp:EncryptionSecurityDetailsRef tp:securityId="CompanyB_MessageSecurity"/>
        </tp:SenderDigitalEnvelope>
      </tp:ebXMLSenderBinding>
      <tp:ebXMLReceiverBinding tp:version="2.0">
        <tp:ReliableMessaging>
          <tp:Retries>3</tp:Retries>
          <tp:RetryInterval>PT2H</tp:RetryInterval>
          <tp:MessageOrderSemantics>Guaranteed</tp:MessageOrderSemantics>
        </tp:ReliableMessaging>
        <tp:PersistDuration>P1D</tp:PersistDuration>
        <tp:ReceiverNonRepudiation>
          <tp:NonRepudiationProtocol>http://www.w3.org/2000/09/xmldsig#</tp:NonRepudiationProtocol>
          <tp:HashFunction>http://www.w3.org/2000/09/xmldsig#sha1</tp:HashFunction>
          <tp:SignatureAlgorithm>http://www.w3.org/2000/09/xmldsig#dsa-sha1</tp:SignatureAlgorithm>
          <tp:SigningSecurityDetailsRef tp:securityId="CompanyB_MessageSecurity"/>
        </tp:ReceiverNonRepudiation>
        <tp:ReceiverDigitalEnvelope>
          <tp:DigitalEnvelopeProtocol tp:version="2.0">S/MIME</tp:DigitalEnvelopeProtocol>
          <tp:EncryptionAlgorithm>DES-CBC</tp:EncryptionAlgorithm>
          <tp:EncryptionCertificateRef tp:certId="CompanyB_EncryptionCert"/>
        </tp:ReceiverDigitalEnvelope>
      </tp:ebXMLReceiverBinding>
    </tp:DocExchange>
  </tp:PartyInfo>
  <!-- SimplePart corresponding to the SOAP Envelope -->
  <tp:SimplePart
    tp:id="CompanyA_MsgHdr"
    tp:mimetype="text/xml">
    <tp:NamespaceSupported
      tp:location="http://www.oasis-open.org/committees/ebxml-msg/schema/msg-header-2_0.xsd";
      tp:version="2.0">
      http://www.oasis-open.org/committees/ebxml-msg/schema/msg-header-2_0.xsd
  </tp:NamespaceSupported>
  </tp:SimplePart>
  <tp:SimplePart
    tp:id="CompanyB_MsgHdr"
    tp:mimetype="text/xml">
    <tp:NamespaceSupported
      tp:location="http://www.oasis-open.org/committees/ebxml-msg/schema/msg-header-2_0.xsd";
      tp:version="2.0">
      http://www.oasis-open.org/committees/ebxml-msg/schema/msg-header-2_0.xsd
  </tp:NamespaceSupported>
  </tp:SimplePart>
  <!-- SimplePart corresponding to a Receipt Acknowledgment business signal -->
  <tp:SimplePart
    tp:id="CompanyA_ReceiptAcknowledgment"
    tp:mimetype="application/xml">
    <tp:NamespaceSupported
      tp:location="http://www.ebxml.org/bpss/ReceiptAcknowledgment.xsd";
      tp:version="2.0">http://www.ebxml.org/bpss/ReceiptAcknowledgment.xsd
    </tp:NamespaceSupported>
  </tp:SimplePart>
  <tp:SimplePart
    tp:id="CompanyB_ReceiptAcknowledgment"
    tp:mimetype="application/xml">
    <tp:NamespaceSupported
      tp:location="http://www.ebxml.org/bpss/ReceiptAcknowledgment.xsd";
      tp:version="2.0">
      http://www.ebxml.org/bpss/ReceiptAcknowledgment.xsd
    </tp:NamespaceSupported>
  </tp:SimplePart>
  <!-- SimplePart corresponding to an Exception business signal -->
  <tp:SimplePart
    tp:id="CompanyA_Exception"
    tp:mimetype="application/xml">
    <tp:NamespaceSupported
      tp:location="http://www.oasis-open.org/committees/ebxml-msg/schema/msg-header-2_0.xsd";
      tp:version="2.0">
      http://www.ebxml.org/bpss/Exception.xsd
    </tp:NamespaceSupported>
  </tp:SimplePart>
  <tp:SimplePart
    tp:id="CompanyB_Exception"
    tp:mimetype="application/xml">
    <tp:NamespaceSupported
      tp:location="http://www.oasis-open.org/committees/ebxml-msg/schema/msg-header-2_0.xsd";
      tp:version="2.0">
      http://www.ebxml.org/bpss/Exception.xsd
    </tp:NamespaceSupported>
  </tp:SimplePart>
  <!-- SimplePart corresponding to a request action -->
  <tp:SimplePart
    tp:id="CompanyA_Request"
    tp:mimetype="application/xml">
    <tp:NamespaceSupported
      tp:location="http://www.rosettanet.org/schemas/PIP3A4RequestPurchaseOrder.xsd";
      tp:version="1.0">
      http://www.rosettanet.org/schemas/PIP3A4RequestPurchaseOrder.xsd
    </tp:NamespaceSupported>
  </tp:SimplePart>
  <tp:SimplePart
    tp:id="CompanyB_Request"
    tp:mimetype="application/xml">
    <tp:NamespaceSupported
      tp:location="http://www.rosettanet.org/schemas/PIP3A4RequestPurchaseOrder.xsd";
      tp:version="1.0">
      http://www.rosettanet.org/schemas/PIP3A4RequestPurchaseOrder.xsd
    </tp:NamespaceSupported>
  </tp:SimplePart>
  <!-- SimplePart corresponding to a response action -->
  <tp:SimplePart
    tp:id="CompanyA_Response"
    tp:mimetype="application/xml">
    <tp:NamespaceSupported
      tp:location="http://www.rosettanet.org/schemas/PurchaseOrderConfirmation.xsd";
      tp:version="1.0">
      http://www.rosettanet.org/schemas/PIP3A4PurchaseOrderConfirmation.xsd
    </tp:NamespaceSupported>
  </tp:SimplePart>
  <tp:SimplePart
    tp:id="CompanyB_Response"
    tp:mimetype="application/xml">
    <tp:NamespaceSupported
      tp:location="http://www.rosettanet.org/schemas/PurchaseOrderConfirmation.xsd";
      tp:version="1.0">
      http://www.rosettanet.org/schemas/PIP3A4PurchaseOrderConfirmation.xsd
    </tp:NamespaceSupported>
  </tp:SimplePart>
  <!-- An ebXML message with a SOAP Envelope only -->
  <tp:Packaging
    tp:id="CompanyA_MshSignalPackage">
    <tp:ProcessingCapabilities
      tp:parse="true"
      tp:generate="true"/>
    <tp:CompositeList>
      <tp:Composite
        tp:id="CompanyA_MshSignal"
        tp:mimetype="multipart/related"
        tp:mimeparameters="type=text/xml">
        <tp:Constituent tp:idref="CompanyA_MsgHdr"/>
      </tp:Composite>
    </tp:CompositeList>
  </tp:Packaging>
  <tp:Packaging
    tp:id="CompanyB_MshSignalPackage">
    <tp:ProcessingCapabilities
      tp:parse="true"
      tp:generate="true"/>
    <tp:CompositeList>
      <tp:Composite
        tp:id="CompanyB_MshSignal"
        tp:mimetype="multipart/related"
        tp:mimeparameters="type=text/xml">
        <tp:Constituent tp:idref="CompanyB_MsgHdr"/>
      </tp:Composite>
    </tp:CompositeList>
  </tp:Packaging>
  <!-- An ebXML message with a SOAP Envelope plus a request action payload -->
  <tp:Packaging tp:id="CompanyA_RequestPackage">
    <tp:ProcessingCapabilities
      tp:parse="true"
      tp:generate="true"/>
    <tp:CompositeList>
      <tp:Composite
        tp:id="CompanyA_RequestMsg"
        tp:mimetype="multipart/related"
        tp:mimeparameters="type=text/xml">
        <tp:Constituent tp:idref="CompanyA_MsgHdr"/>
        <tp:Constituent tp:idref="CompanyA_Request"/>
      </tp:Composite>
    </tp:CompositeList>
  </tp:Packaging>
  <tp:Packaging tp:id="CompanyB_RequestPackage">
    <tp:ProcessingCapabilities
      tp:parse="true"
      tp:generate="true"/>
    <tp:CompositeList>
      <tp:Composite
        tp:id="CompanyB_RequestMsg"
        tp:mimetype="multipart/related"
        tp:mimeparameters="type=text/xml">
        <tp:Constituent tp:idref="CompanyB_MsgHdr"/>
        <tp:Constituent tp:idref="CompanyB_Request"/>
      </tp:Composite>
    </tp:CompositeList>
  </tp:Packaging>
  <!-- An ebXML message with a SOAP Envelope plus a response action payload -->
  <tp:Packaging tp:id="CompanyA_ResponsePackage">
    <tp:ProcessingCapabilities tp:parse="true" tp:generate="true"/>
    <tp:CompositeList>
      <tp:Composite
        tp:id="CompanyA_ResponseMsg"
        tp:mimetype="multipart/related"
        tp:mimeparameters="type=text/xml">
        <tp:Constituent tp:idref="CompanyA_MsgHdr"/>
        <tp:Constituent tp:idref="CompanyA_Response"/>
      </tp:Composite>
    </tp:CompositeList>
  </tp:Packaging>
  <tp:Packaging tp:id="CompanyB_ResponsePackage">
    <tp:ProcessingCapabilities
      tp:parse="true"
      tp:generate="true"/>
    <tp:CompositeList>
      <tp:Composite
        tp:id="CompanyB_ResponseMsg"
        tp:mimetype="multipart/related"
        tp:mimeparameters="type=text/xml">
        <tp:Constituent tp:idref="CompanyB_MsgHdr"/>
        <tp:Constituent tp:idref="CompanyB_Response"/>
      </tp:Composite>
    </tp:CompositeList>
  </tp:Packaging>
  <!-- An ebXML message with a SOAP Envelope plus a Receipt Acknowledgment payload -->
  <tp:Packaging tp:id="CompanyA_ReceiptAcknowledgmentPackage">
    <tp:ProcessingCapabilities
      tp:parse="true"
      tp:generate="true"/>
    <tp:CompositeList>
      <tp:Composite
        tp:id="CompanyA_ReceiptAcknowledgmentMsg"
        tp:mimetype="multipart/related"
        tp:mimeparameters="type=text/xml">
        <tp:Constituent tp:idref="CompanyA_MsgHdr"/>
        <tp:Constituent tp:idref="CompanyA_ReceiptAcknowledgment"/>
      </tp:Composite>
    </tp:CompositeList>
  </tp:Packaging>
  <tp:Packaging tp:id="CompanyB_ReceiptAcknowledgmentPackage">
    <tp:ProcessingCapabilities
      tp:parse="true"
      tp:generate="true"/>
    <tp:CompositeList>
      <tp:Composite
        tp:id="CompanyB_ReceiptAcknowledgmentMsg"
        tp:mimetype="multipart/related"
        tp:mimeparameters="type=text/xml">
        <tp:Constituent tp:idref="CompanyB_MsgHdr"/>
        <tp:Constituent tp:idref="CompanyB_ReceiptAcknowledgment"/>
      </tp:Composite>
    </tp:CompositeList>
  </tp:Packaging>
  <!-- An ebXML message with a SOAP Envelope plus an Exception payload -->
  <tp:Packaging tp:id="CompanyA_ExceptionPackage">
    <tp:ProcessingCapabilities
      tp:parse="true"
      tp:generate="true"/>
    <tp:CompositeList>
      <tp:Composite
        tp:id="CompanyA_ExceptionMsg"
        tp:mimetype="multipart/related"
        tp:mimeparameters="type=text/xml">
        <tp:Constituent tp:idref="CompanyA_MsgHdr"/>
        <tp:Constituent tp:idref="CompanyA_Exception"/>
      </tp:Composite>
    </tp:CompositeList>
  </tp:Packaging>
  <tp:Packaging tp:id="CompanyB_ExceptionPackage">
    <tp:ProcessingCapabilities
      tp:parse="true"
      tp:generate="true"/>
    <tp:CompositeList>
      <tp:Composite
        tp:id="CompanyB_ExceptionMsg"
        tp:mimetype="multipart/related"
        tp:mimeparameters="type=text/xml">
        <tp:Constituent tp:idref="CompanyB_MsgHdr"/>
        <tp:Constituent tp:idref="CompanyB_Exception"/>
      </tp:Composite>
    </tp:CompositeList>
  </tp:Packaging>
  <!-- An ebXML message with a Receipt Acknowledgment signal, plus a business response,
       or an ebXML message with an Exception signal -->
  <tp:Packaging tp:id="CompanyA_SyncReplyPackage">
    <tp:ProcessingCapabilities
      tp:parse="true"
      tp:generate="true"/>
    <tp:CompositeList>
      <tp:Composite
        tp:id="CompanyA_SignalAndResponseMsg"
        tp:mimetype="multipart/related"
        tp:mimeparameters="type=text/xml">
        <tp:Constituent tp:idref="CompanyA_MsgHdr"/>
        <tp:Constituent tp:idref="CompanyA_ReceiptAcknowledgment"/>
        <tp:Constituent tp:idref="CompanyA_Response"/>
      </tp:Composite>
    </tp:CompositeList>
  </tp:Packaging>
  <tp:Packaging tp:id="CompanyB_SyncReplyPackage">
    <tp:ProcessingCapabilities
      tp:parse="true"
      tp:generate="true"/>
    <tp:CompositeList>
      <tp:Composite
        tp:id="CompanyB_SignalAndResponseMsg"
        tp:mimetype="multipart/related"
        tp:mimeparameters="type=text/xml">
        <tp:Constituent tp:idref="CompanyB_MsgHdr"/>
        <tp:Constituent tp:idref="CompanyB_ReceiptAcknowledgment"/>
        <tp:Constituent tp:idref="CompanyB_Response"/>
      </tp:Composite>
    </tp:CompositeList>
  </tp:Packaging>
  <tp:Comment xml:lang="en-US">buy/sell agreement between CompanyA.com and CompanyB.com</tp:Comment>
</tp:CollaborationProtocolAgreement>


[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]