Standard Business Reporting SBR ebMS3 Software Developer Kit (SDK) Developer Guide Date: 18th June 2015 Final This document and its attachments are Unclassified For further information or questions, contact the SBR Service Desk at SBRServiceDesk@sbr.gov.au or call 1300 488 231. International callers may use +61-2-6216 5577 SDK DEVELOPER GUIDE SBR ebMS3 VERSION 1.3 STATUS: Final ENDORSEMENT/VERSION CONTROL APPROVED VERSION NUMBER Version 1.0 DATE 20 June 2014 APPROVAL Chris Thorne Assistant Commissioner endorsed 23 June 2014 Neil Tothill A/g Assistant Commissioner endorsed 23 June 2014 VERSION CONTROL Version Revision Date Summary of Change 0.1 25/11/2013 Initial Draft. 0.2 26/11/2013 Incorporated review feedback from internal review. 0.3 28/11/2013 Added Java API samples for two way synchronous request. 0.4 29/11/2013 Incorporated review feedback from internal review. 0.5 05/03/2014 Incorporated review feedback from internal review and added the Code Snippet document previously shared with the software developers. 0.6 03/04/2014 Added one way push and one way pull interaction patterns and also added on the wire samples for the three interaction patterns. 0.7 19/05/2014 Added Single-Asyn-Chatty interaction Pattern Added on the wire samples for pull error 0.8 10/06/2014 Added details for packaging ELS Requests. Updated Pull requests to contain the saml token. 0.9 11/06/2014 References to SBR1 changed to SBR Core Services; references to SBR2 changed to SBR ebMS3. Minor formatting and branding changes. 1.0 20/06/2014 Document base line suitable for use. 1.1 11/08/2014 Updated the sample messages to fix incorrect signing cid references. Updated the sample messages to align ebMS3 header values with Common MIG Added a footnote in section 3.1.4.1 regarding new Profile API Addressed Review Comments from SBR (Ted Simes) Added note on attachment compression Updated wire samples to reflect compression 1.2 13/01/2015 Added the JRE requirements for Embeddable Client UNCLASSIFIED VERSION 1.3 PAGE 2 OF 113 SDK DEVELOPER GUIDE SBR ebMS3 STATUS: Final Version Revision Date VERSION 1.3 Summary of Change Fixed embeddable client package names as per the latest release. Updated the case of Message Property “ProductID” to match with the implementation 1.3 18/06/2015 UNCLASSIFIED Section 3: Updated API details for Java and .NET versions of the Embeddable Client. Section 5: Updated details on adding the ‘SoftwareSubscriptionId’ for Online Service Provider scenarios. Section 5.3: Updated sample request/response messages to align with the platform implementation. VERSION 1.3 PAGE 3 OF 113 SDK DEVELOPER GUIDE SBR ebMS3 STATUS: Final VERSION 1.3 Contents 1. 2. 3. INTRODUCTION ................................................................................................................ 5 1.1 Objective and Purpose .............................................................................................. 5 1.2 Scope .......................................................................................................................... 5 1.3 Glossary ..................................................................................................................... 5 1.4 Audience .................................................................................................................... 6 1.5 Reference Documents ............................................................................................... 6 SDK .................................................................................................................................... 7 2.1 Overview ..................................................................................................................... 7 2.2 Component Overview ................................................................................................ 7 ebMS3 Embeddable Client ............................................................................................... 9 JRE requirement for the Embeddable Client ...................................................................... 9 4. 5. 3.1 Java Version............................................................................................................... 9 3.2 .NET Version ............................................................................................................ 29 Reference client .............................................................................................................. 43 4.1 Features.................................................................................................................... 43 4.2 Forms Included in the SBR Reference Client ........................................................ 43 Message Packaging Examples ...................................................................................... 44 5.1 Java API .................................................................................................................... 44 5.2 .NET API ................................................................................................................... 57 5.3 HTTP Request/Response Samples ......................................................................... 71 UNCLASSIFIED VERSION 1.3 PAGE 4 OF 113 SDK DEVELOPER GUIDE SBR ebMS3 STATUS: Final 1. INTRODUCTION 1.1 Objective and Purpose VERSION 1.3 The purpose of this document is to describe the functionality of Standard Business Reporting (SBR) ebMS3 software developer kit (SDK). This document identifies the key components of the SDK solution. Some of these components are re-used from the previously released SBR Core Service SDK and hence the reader is pointed to the reference for existing documentation. For the new components, this document will outline the usage details and the API specification (where applicable). 1.2 Scope The SBR ebMS3 SDK will ultimately support Java, .NET and C programming languages; however this version of the SDK only covers Java and .NET application programming interfaces (API) for the SDK. 1.3 Glossary Term / Acronym Definition AS4 AS4 is a Conformance Profile of the OASIS ebMS 3.0 specification ebMS3 Version 3.0 of the OASIS ebXML Messaging Service specification ebMS3 Advanced Features Specification that complements the ebMS3.0 Core specification by specifying advanced messaging functionality for: messaging across intermediaries (multihop), message bundling, compressing, splitting and joining large messages, and advanced processing modes. SBR Core Services The current ‘legacy’ Whole of Government platform that: provides the interface for SBR services for Business to Government reporting; and routes received requests to the appropriate government agency system. SBR ebMS3 The strategic Whole of Government platform that: provides ebMS3 based SBR services for Business to Government reporting; and routes received requests to the appropriate government agency system. SDK The software developer kit supplied by SBR to software developers to support integration of software packages with the SBR ebMS3 Platform. It includes the ebMS3 embeddable client and a ‘reference client’ that illustrates how to use the ebMS3 embedded client as well as other APIs such as the Vanguard Security Token Service (STS). MSH ebXML Messaging Service Handler (MSH), that implements the ebMS3 messaging functions. Embeddable The ebMS3 MSH implementation that can be embedded in business UNCLASSIFIED VERSION 1.3 PAGE 5 OF 113 SDK DEVELOPER GUIDE SBR ebMS3 VERSION 1.3 STATUS: Final Term / Acronym Definition Client management software for ebMS3 interactions with SBR ebMS3. BMS Business Management Software: Software used by businesses and intermediaries to manage business finances and reporting obligations. It may include desktop accounting software, payroll software, components integrated with ERP systems, cloud based systems etc. eg, MYOB (accounting package) and SAP (payroll package). 1.4 Audience This document is intended for use by Software Developers who are integrating business applications with SBR ebMS3. It assumes knowledge of software development, understanding of the ebMS3 specifications and Web service security concepts etc. Developers should already be familiar with SBR ebMS3 concepts and should have read the SBR ebMS3 Web Services Implementation Guide (WIG). 1.5 Reference Documents Ref Name Location 1. SBR Glossary Glossary of terms used in the SBR Program. http://www.sbr.gov.au/softw are-developers/developertools/glossary 2. SBR Developer SDK Guide Contains links to a number of documents which provide essential information required to understand the SBR SDK. TBC 3 SBR ebMS3 WIG Essential reading to understand SBR ebMS3. TBC 4 SBR SDK User Guide – IMClient User guide for the ABR Security Token Manager API Available in .NET and Java versions. Included in the IMClient package 5 SBR Authentication Client SDK Developer Guide User guide for the ABR AUSkey Manager (IMClient Keystore API) Available in .NET and Java versions. Included in the IMClient package 6 Agency Message Implementation Guides (MIGs) Provide information specific to reporting requirements for agencies. TBC 7 SBR Taxonomy Describes the SBR reportable items and how these relate to agency reporting obligations. https://www.taxonomycollaboration.sbr.gov.au/yeti/re asources/yeti-gwt/yeti.jsp 8 SDK XBRL API User’s Guide User guide for the SDK XBRL API. Available in .NET and Java versions. Included in the SDK XBRL API package. UNCLASSIFIED VERSION 1.3 PAGE 6 OF 113 SDK DEVELOPER GUIDE SBR ebMS3 VERSION 1.3 STATUS: Final 2. SDK SBR ebMS3 SDK is provided to assist Software Developers in adopting the SBR ebMS3 solution within their own software applications. 2.1 Overview The following diagram illustrates, at a high level, the design time and run time environment of the end-to-end SBR ebMS3solution. ABR AUSkey Manager (IMClient Keystore API) SDK_XBRL_API Gets Credentials Using Creates and Consumes XBRL document Instances using Business Accounting Software Package Gets Security Token Using Calls SBR Core Services using Calls SBR ebMS3 Requester (ebMS3 Embeddable Client) SBR Core Services Requester Calls VANguard Security Token Service Calls SBR Core Services ABR Security Token Manager (IMClient Token Request API) SBR ebMS3 Legend: SBR ebMS3 Supplied Components SWD Responsibility SBR Core Services SDK supplied Components Web Service Figure 1: SBR SDK Component Diagram 2.2 Component Overview This section provides an overview of the components that are included in the SBR ebMS3 SDK. 2.2.1 Reference Client The Reference Client is aimed at giving Software Developers an example of how to connect to the SBR ebMS3 using the SDK components provided by SBR. It demonstrates how to interact UNCLASSIFIED VERSION 1.3 PAGE 7 OF 113 SDK DEVELOPER GUIDE SBR ebMS3 STATUS: Final VERSION 1.3 with an AUSkey store, use a credential from the store to call the VANguard Security Token Service, submit requests and interpret the responses received. The Reference Client is provided as an example only. The Reference Client is included in the SDK to provide an example implementation of the components and APIs provided in the SDK. The Reference Client provides a guide for how software developers could use these in their developed products. The Reference Client is not supported for production use. It is not intended that the Reference Client be used by software developers for use with or embedded in their developed products. Ongoing support for the Reference Client and inclusion of the Reference Client in future SDK versions is not guaranteed. 2.2.2 ABR AUSkey Manager (IMClient Keystore API) The ABR AUSkey Manager (IMClient Keystore API) provides functionality for managing and accessing the business client’s SBR credential(s). Use of the AUSkey Manager API to access credentials stored in a Keystore is demonstrated in the Reference Client supplied with the SDK. Refer to the SBR Authentication Java Client SDK Developer Guide for further details on its use and configuration. 2.2.3 ABR Security Token Manager API The ABR Security Token Manager API provides functionality for accessing the VANguard Security Token Service to obtain Proof Tokens and Assertions required to access SBR ebMS3. Use of the Security Token Manager to request a security token to connect to Core Services is demonstrated in the SBR Reference Client. Refer to the SBR SDK User Guide Java Identity Management Client for further details on its use and configuration. 2.2.4 SDK XBRL API The SDK XBRL API provides functionality for creating, validating, and consuming XBRL business documents which contain the business information required for an interaction with an Agency. Refer to the SDK XBRL API User’s Guide for further details on the SDK XBRL API. 2.2.5 SBR ebMS3 Requester (ebMS3 embeddable client) The embeddable client is a client-side ebMS3 Message Service Handler (MSH) implementation that is intended to be used by Independent Software Vendors (ISVs) that wish to embed SBR ebMS3 compatible MSH functionality within their software products. The embeddable client will enable API-based integration with the ISV software packages. Section 3 ‘ebMS3 Embeddable Client’ provides details regarding the use of embeddable client. UNCLASSIFIED VERSION 1.3 PAGE 8 OF 113 SDK DEVELOPER GUIDE SBR ebMS3 STATUS: Final 3. VERSION 1.3 ebMS3 EMBEDDABLE CLIENT The embeddable client allows independent software vendors (ISV) to embed ebMS3 processing function in their application. This client API facilitates the communication between SBR ebMS3 and the BMS using the ebMS3 protocol. Embeddable Client V1.0.0.3 (AS4Client-Windows) is supplied as part of the SBR ebMS3 SDK. Please see the release notes in the Embeddable Client package provided in the SDK for the list of supported operating systems and versions. Notes: A software developer can use any ebMS3 sender/client MSH that is available in the market and are not restricted to using the ebMS3 embeddable client provided in the SBR ebMS3 SDK. The ebMS3 embeddable client is ONLY licensed for software developers to use for the purpose of Tax Agents using their software product to communicate with SBR ebMS3. Inline with the ebMS3 standard specifications, the embeddable client performs compression for message attachments using GZIP. All the exchange profiles provided with SBR ebMS3 SDK are pre-configured so that the embeddable client will compress message attachments which are larger than 10KB in size. JRE requirement for the Embeddable Client Java runtime environment (JRE) is required to use Embeddable Client (Java, .NET and C). The JRE version required to use Embeddable Client vary depending on the oprating system. The following table provides information about the JRE requirements to use the Embeddable client on the supported operating systems. Embeddable client Operating System Required JRE Version Java, C, .NET Windows 7 Windows 8 Windows XP SP2 and SP3 Windows Vista Windows 2012 IBM/Oracle JRE 1.7 or higher Java, C Linux: IBM/Oracle JRE 1.7 or higher Ubuntu 12.04LTS Ubuntu 10.04LTS Java, C FreeBSD Open JDK Java, C OS 10.9.2 Oracle JRE 1.7 or higher IBM JRE is shipped with the embeddable client (under the JRE folder); however embeddable client is not dependent on the use of IBM JRE and will work with compatible version of Oracle JDK/JRE as well 3.1 Java Version This section provides details regarding the Java version of the embeddable client. 3.1.1 Client Structure UNCLASSIFIED VERSION 1.3 PAGE 9 OF 113 SDK DEVELOPER GUIDE SBR ebMS3 STATUS: Final VERSION 1.3 The Java version of the embeddable client is packaged as an archive file called AS4EmbeddableClient-Base-1.X.X.X. Please see the release notes in the Embeddable Client package for details regarding unarchiving this file. The folders and files in the AS4-EmbeddableClient-Base-1.X.X.X folder contain information and executable programs that are required to embed and use the embeddable client. The following list provides details about the folders and files that are part of the client package: Folder File config Description Contains the jumpstart xml files, property files, and the Java keystore files. Make sure that the config folder does not contain any malformed or excessively large XML files or XML files that are intended for some other application. The embeddable client reads every XML file in the config folder into memory, to determine the jumpstart XML file that must be processed and to determine the XML files that resulted from the jumpstart XML conversion. Jumpstart Exchange Profiles The jumpstart configuration contains settings that are required to initiate and complete a transaction with a trading partner. The settings include: The exchange profile, Conformance policy, Destination, Certificates, and Other configuration. The profile information is required to transact with the trading partner. The Jumstart exchange profiles will be published at SBR website. The ISVs should download these and add to the .\config folder. For more information about jumpstart XML file, see the Jumpstart configuration overview topic in the documentation provided with the Embeddable Client Package. client.properties UNCLASSIFIED Contains information about the application that embeds the embeddable client. The information is passed to the trading partner through ebMS message properties. The information that is sent to the trading partner includes the name and version of the message service handler software and the vendor. Note: Additionally, the following properties are passed to the trading partner: - IBMMEIGClient - Always set to true, indicating that the request was generated from IBM Embeddable AS4 Client. - IBMMEIGClientVersion - Provides information about the client version. VERSION 1.3 PAGE 10 OF 113 SDK DEVELOPER GUIDE SBR ebMS3 STATUS: Final Folder VERSION 1.3 File Description commonslogging.properti es This file is used by some Apache Java libraries that underlie the embeddable client. The file contains a directive to send all Apache library log output to the standard Java logging facility which is governed by the logging.properties file. Generally, users are not expected to modify this file. However, if there is a requirement to process the Apache library logs separately, then this file can be modified as required. logging.properti es The file is used by the standard Java logging facility (java.util.logging) to control the logging levels for both event logging and audit logging. mainKeyStore.j ks This is the embeddable client’s main keystore. It should contain the certificate chain of SBR. The certificate is used by the embeddable client to verify the signature of the response and receipt. Please note that this keystore is different from and should not be confused with the AUSKey keystore which will contain the sender’s AUSKey. The mainKeyStore.jks is essential for the proper functioning of the AS4 client. You must add the certificates that are used to verify response (received from the trading partner) to mainKeyStore.jks. The certificates can be root certificate authority (CA), intermediary CA, and public certificate that is provided by the trading partner. The certificate is also used to establish a TLS connection with the trading partner's HTTPS server. After you download the AS4 Client, you must change the default password (change-immediately) of the mainKeyStore.jks. To change the password, you must use the Java keytool command. The keytool command is available with the JRE that is used to run the embeddable client. For more information about the keytool command, see http://docs.oracle.com/javase/tutorial/security/toolsign/rstep 2.html. copyright.txt Contains copyright information about the embeddable client. license Contains the license information of the embeddable client. data Initially the “data” folder is a blank. When a BMS transacts with the trading partner, the embeddable client creates one or more temporary files that contain information about the packaged request and the response received from SBR. Do not modify the temporary files and directories in the data folder. The format of the files and directories is proprietary UNCLASSIFIED VERSION 1.3 PAGE 11 OF 113 SDK DEVELOPER GUIDE SBR ebMS3 STATUS: Final Folder File VERSION 1.3 Description and subject to change without a notice. Do not write code that relies on the contents of the data folder. The AS4 Client uses the data directory that is provided or specified by the ISV application. As the data directory may contain potentially sensitive information, the ISV application must ensure that only appropriate users have access to it. The user who runs the ISV application must have read write access to the data directory. Whenever the application embedding the AS4 Client is restarted, the contents of the data directory is deleted based on the settings of the Client.properties/DefaultDataCleanupThresholdInDays property. By default the value of the property is set to 3, which means that files within the data directory that were created earlier than 3 days from the day of restart are located and deleted. If there are lots of sub-directories in the data directory, this process may take some time. lib Contains the core jar files for the embeddable client that must be included in the class path of the ISV’s application. jre Contains IBM version of the Windows 32-bit and 64-bit Java Runtime Engines (JRE). Documentati on Java Doc for the embeddable client API Table 1: Structure for Embeddable Client Java Version UNCLASSIFIED VERSION 1.3 PAGE 12 OF 113 SDK DEVELOPER GUIDE SBR ebMS3 STATUS: Final 3.1.2 VERSION 1.3 Class Descriptions This section has the summary of key classes in the embeddable client JAVA API and their purpose. Figure 2: Class Diagram Embeddable Client Java API UNCLASSIFIED VERSION 1.3 PAGE 13 OF 113 SDK DEVELOPER GUIDE SBR ebMS3 STATUS: Final VERSION 1.3 Class Purpose AS4ClientFactory Entry point for AS4 client development. Returns AS4Client objects. Only one AS4Client should be retrieved per JVM, and it should be used in a single threaded fashion. The AS4Client created by this class follows the singleton pattern. If the method was previously invoked with the same configuration directory, the previously returned object will be returned again. Having more than one client instance per jvm is unsupported. To access a different client configuration, the calling application is required to close() the existing AS4Client and then call getClient() anew. AS4Client AS4 Client interface to create messages, add and get P-Mode profiles, get MSH details, vendor and version. Implementations are available via static methods of the AS4ClientFactory class. The AS4Client object is created in a singleton pattern; you can only have one instance at a time (for a configuration directory) in the JVM and is thread safe. The implementation of AS4Client returned by the getClient method of AS4ClientFactory is the entry point to the capabilities offered Embeddable Client. Profile Profile is a cohesive collection of configuration settings that control almost every aspect of how AS4 communication must be performed with the Trading Partner's AS4 server. Most but not all of these parameters correspond to the concept of AS4 Processing Mode Parameters. Profiles are created by calling AS4Client.getProfile and are used to create Requests that will then behave according to the configuration of the supplied Profile. A Profile should be initialized properly and completely before it is used to create any Requests; attempting to change the configuration on a Profile while a Request has been created can lead to undefined behavior. The Profile can also be saved to an OutputStream for export. The profile object is not thread safe and should only be used in the thread that created it. Request Represents a single Request that can be issued to the server, yielding a single Response. This object is returned by calling the AS4Client.createRequest method. The request object is not thread safe and should only be used in the thread that created it. RequestMessage An interface that is the base for RequestUserMessage and RequestSignalMessage. RequestUserMessage Representation of the portion of the request that carries a UserMessage, including the payload and attachments contained therein. RequestSignalMessage Representation of the portion of the request that carries SignalMessages, specifically a PullRequest with optional selective UNCLASSIFIED VERSION 1.3 PAGE 14 OF 113 SDK DEVELOPER GUIDE SBR ebMS3 STATUS: Final VERSION 1.3 Class Purpose pull criteria. RequestPart RequestPart is the holder of data sent by the end user that is to be carried in the AS4 request. Each RequestPart corresponds to an eb:Messaging/eb:UserMessage/eb:PayloadInfo/eb:PartInfo element in the ebMS 3.0 specification and holds a contiguous series of bytes. The UserMessage in a request may contain one or more RequestParts. These are set using the RequestUserMessage.setPayloadPart(), and RequestUserMessage.addAttachmentPart() methods. PullRequest Represents the parameters that can be specified for a selective pull request. Fields set will match corresponding header fields in the pulled message. If multiple criteria are selected, the selection will be the boolean conjunction (i.e. AND) of all criteria. Response Represents the response returned by the Trading Partner's AS4 server in reaction to the invocation of the Request.send() method on a Request object. It may hold a UserMessage and/or a list of SignalMessages ResponseUserMessage Representation of the portion of the response that carries a UserMessage, including the payload and attachments contained therein. ResponsePart Represents data in the response intended for the end user. Each ResponsePart corresponds to an eb:Messaging/eb:UserMessage/eb:PayloadInfo/eb:PartInfo element in the ebMS 3.0 specification and holds a contiguous series of bytes. The UserMessage in a response may contain one or more ResponseParts. These can be retrieved using the ResponseUserMessage.getPayload() and ResponseUserMessage.getAttachments() methods. AS4ClientException A checked exception thrown by the AS4 embeddable client implementation under various conditions (from various methods). This exception is also a base for several other AS4 embeddable client exceptions. AS4ClientEbMSException An exception that is thrown when a response is received from the Trading Partner's AS4 server that contains eb:Error elements. More precisely, this is thrown when such eb:Error elements indicate that the attempted Request has failed. Table 2: Class Descriptions Embeddable Client Java API 3.1.3 Using the Embeddable Client Some basic Java setup is required to use the embeddable client API. 3.1.3.1 JRE Configuration The Java path on the BMS host machine must point to the appropriate JRE. 3.1.3.2 JAVA Class Path Configuration UNCLASSIFIED VERSION 1.3 PAGE 15 OF 113 SDK DEVELOPER GUIDE SBR ebMS3 STATUS: Final VERSION 1.3 To use the AS4 function, the embeddable client JAR must be set in the Java class path for the BMS host machine. To set embedded Client in the Java class path, complete the following steps: 1. Extract the archive file (AS4Client-Windows.zip) to a required location. 2. Specify the absolute path of the lib folder in the Java class path of application. For example, if you extracted the contents of AS4Client-Windows.zip folder to c:\ drive, then specify c:\AS4Client-Windows\lib\ in the Java class path. 3.1.3.3 Jumpstart Exchange Profiles A jumpstart XML file contains settings that are required to initiate and complete a transaction with a trading partner. The settings include the exchange profile, conformance policy, destination, certificates, and other configuration. The jumpstart XML contains the elements that are enabled on the trading partner's system. For example, if signing is disabled for exchanges, the signing cert element is not included in the jumpstart XML. More details about the structure and contents of these files are available in Chapter 10 (Java) and Chapter 8 (.NET) of the embeddable client’s product documentation provided as part of the SDK. The jumpstart xml files for the services offered by SBR ebMS3 are provided as part of the External Vendor Test Environment Conformance Suite. These exchange profiles should be copied as is in the “config” directory of embeddable client. 3.1.4 Embeddable Client API The Javadoc for embeddable client API is provided under the documentation folder. This section outlines the high level flow in terms of API calls involved in realisation of SBR service invocation types as listed in SBR ebMS3 WIG. 3.1.4.1 Single-Sync-Chatty As described in SBR ebMS3 WIG, the Single–Sync–Chatty invocation type involves BMS sending an ebMS request and receiving a response synchronously. This invocation type is implemented using the Two-Way/Sync MEP from the ebMS3 standard. Request Flow Figure 3 ‘API Invocation Flow for Single-Sync-Chatty Request’ shows the high level flow for embeddable client API invocation involved in Single-Sync-Chatty Request. Table 3 ‘Invocation Flow Description’ for Single-Sync-Chatty Request provides the details for these API calls. UNCLASSIFIED VERSION 1.3 PAGE 16 OF 113 SDK DEVELOPER GUIDE SBR ebMS3 STATUS: Final VERSION 1.3 Figure 3: API Invocation Flow for Single-Sync-Chatty Request UNCLASSIFIED VERSION 1.3 PAGE 17 OF 113 SDK DEVELOPER GUIDE SBR ebMS3 STATUS: Final VERSION 1.3 Step API Call Description 1 AS4ClientFactory.getClient(Path ,Path,String,Path) Getting a reference to an instance of the embeddable client: To get a reference to an instance of the embeddable client, call the getClient() method on the AS4ClientFactory class. This method takes as input: Path to the Config directory, and Path to the Data directory String representing the pass phrase for the embeddable client’s mainkeyStore.jks file. Path to the Audit directory: the events that take place when a message is exchanged between the embeddable client and an AS4 server can be logged to a location as specified by this attribute. 2 AS4Client.getProfile(String profileName)1 Exchange profile look up: To look up the exchange profile that is required to communicate with the appropriate server, call the getProfile() method on the client instance. This method takes a String input, which must match the file name of the exchange profile XML that is in the “config” folder without the .xml extension. For example, if the name of the exchange profile XML file is AS4OutboundXPTwoWaySync.xml, specify AS4OutboundXPTwoWaySync as the profileName. 3 AS4Client.createRequest(Profile ) Create a request: using the looked up exchange profile, call the createRequest(Profile) method on the client instance. The input to this method is the profile object retrieved in previous step. 4 Request.getUserMessage() Retrieve User Message from ebMS3 Request: From the Request object, call getUserMessage(). This method call will return the user message section of ebMS request. 5 RequestUserMessage.setAction Name(String ActionName) RequestUserMessage.setServic eName(String ServiceName) RequestUserMessage.setConve rsationID(String ConversationID) Set ebMS3 CollaborationInfo header values: Invoke these methods on the request user message object, retrieved in last step to set corresponding values in the CollaborationInfo section of ebMS3 header. These methods take String values as input. 6 RequestUserMessage.setMessa geProperty(String name, String value) Set ebMS3 MessageProperties header values: Invoke this method on the request user message object to set values in the MessageProperties section of ebMS3 header. This method takes as 1 Since Embeddable Client version 1.0.0.2, Profile API allows the caller to supply the jumpstart XML information programmatically and not rely on the config dir. For more details see samples provided with the embeddable client. UNCLASSIFIED VERSION 1.3 PAGE 18 OF 113 SDK DEVELOPER GUIDE SBR ebMS3 STATUS: Final Step API Call VERSION 1.3 Description input a String value representing property name and a String value representing header value. BMS should invoke this method multiple times to set following properties: ProductID BMS Vendor BMS Name BMS Version These values are described in Section 3 of SBR ebMS3 WIG. For Online Service Provider (OSP) scenarios, the BMS also needs to send and additional message property with name “SoftwareSubscriptionId”, as discussed in ATO Common MIG. 7 RequestUserMessage.setSAML Token(String SAMLToken) Set SAML Token: Invoke this operation on the UserMessage part of the Request object retrieved in step 4. This method call will set the SAML Token in the WSSE security header. The input is a String SAML Token value. This value must hold well-formed XML otherwise the client will throw an error. The SAML token should be retrieved by BMS from the VANguard Security Token Service (STS) using the ABR Security Token Manager API provided as part of the SDK. 8 RequestUserMessage.createPa rt() Create MIME Part: As discussed in section 4 of SBR ebMS3 WIG, Single requests should package business documents as separate MIME parts in the ebMS3 request. Invoke this operation on the RequestUserMessage object retrieved in step 4 to create an instance of RequestPart. 9a RequestPart.setInputStream(Inp utStream inputStream) Set Part InputStream: Invoke this method on the part object created in last step to set the input stream that will be used to retrieve the data of this part. The BMS will be responsible for closing this stream after it has been read completely. 9b RequestPart.setInputFile(String inputFileName) Set Input File Name: Invoke this method on the part object created in last step to set the input file name that will be used to retrieve the data of this part. Either of 9a or 9b can be used for loading part data. 10 RequestPart.setContentID(Strin g contentID) Set ContentID: Invoke this method on the part object retrieved in step 8 to set the ContentID header value for this part object. UNCLASSIFIED VERSION 1.3 PAGE 19 OF 113 SDK DEVELOPER GUIDE SBR ebMS3 STATUS: Final VERSION 1.3 Step API Call Description 11 RequestPart.setContentType(co ntentType) Set ContentType: Invoke this method on the part object retrieved in step 8 to set the ContentType header value for this part object e.g. “text/xml”. 12 RequestPart.setProperty(String name, String value) Set ebMS3 PayloadInfo.PartInfo/PartProperties header values: Invoke this method on the request part object created in step 8 to set values in the PartProperties section of ebMS3 header. This method takes as input a String value representing property name and a String value representing header value. BMS should invoke this method multiple times to set following properties: PartID DocType AttachmentType These values are described in Section 3 of SBR ebMS3 WIG. 13 RequestUserMessage.addAtatc hmentPart(RequestPart) Add part to Request User Message: Invoke this method on the request user message created in step 4, to add the part object as a MIME part to this user message. This method will take as input a RequestPart object created in step 8. 14a Request.setSigningCertificate(n ew KeyStore.PrivateKeyEntry(privat eKey, certificateChain ) Sign the message: Invoke this operation on the Request object retrieved in step 3 to add message signature to the WSSE security header. This method takes as input a java.security.KeyStore.PrivateKeyEntry object, which can be instantiated by the BMS using the java.Security.PrivateKey object and the java.Security.cert.Certificate [ ] array retrieved using the ABR AUSkey Manager API provided as part of the SDK. 14b Request.setSigningCertificate(b Sign the message: Invoke this operation on the yte[] pkcs12Data, String alias, Request object retrieved in step 3 to add message String passphrase ) signature to the WSSE security header. This method takes as input a: byte Array, which represents all the cryptographic details for the sender’s private key, including the certificate chain as a P12 byte array. String value representing the certificate alias for the corresponding private key. String value representing the passphrase for AUSKey keystore. Either of 14a or 14b can be used for message signing. UNCLASSIFIED VERSION 1.3 PAGE 20 OF 113 SDK DEVELOPER GUIDE SBR ebMS3 VERSION 1.3 STATUS: Final Step API Call Description 15 Request.send() Send Request: Invoke this method on the request object created in step 3 to send the packaged ebMS3 request message to SBR ebMS3. Table 3: Invocation Flow Description for Single-Sync-Chatty Request Response Flow Figure 4 ‘API Invocation Flow for Two-Way Sync Response’ shows the high level flow for embeddable client API invocation involved in Single-Sync-Chatty Response. The send() method will return a response object when the ebMS partner (SBR ebMS3) successfully sends back a response to the embeddable client, otherwise an exception is thrown. Send ebMS message Response = RequestMessage.send() Catch Exceptions Yes Check Exception Type No Retrieve Response UserMessage Response.getResponseUserMessage() AS4ClientEBMSException Retrieve Response Payload Response.getResponsePayload() AS4ClientException Retrieve Response Attachments ResponsePart [] = Response.getResponseAttachments() Figure 4: API Invocation Flow for Two-Way Sync Response API Call Description Response.getResponseUserMessage () To retrieve the user message portion of ebMS3 response. If a response is received from the trading partner, the response is processed according to the configuration of the message exchange profile and the conformance policy ResponseUserMessage.getResponse Payload() To retrieve response payload, An output stream must be provided as a parameter to where the payload must be written. Note: All SBR ebMS3 interactions have empty payloads in request and response messages. ResponseUserMessage.getAttachme nts() Returns an array of the ResponsePart class instance that contains an input stream which is used to read the attachment data. If the response has multiple attachments, a separate input stream is returned for each attachment. UNCLASSIFIED VERSION 1.3 PAGE 21 OF 113 SDK DEVELOPER GUIDE SBR ebMS3 STATUS: Final API Call VERSION 1.3 Description If an error occurs while transferring a message to SBR ebMS3 or when SBR ebMS3 is processing the message, appropriate exceptions are returned. The following types of exceptions are supported: AS4ClientEbMSException This exception is thrown for ebMS processing errors encountered when the trading partner is processing the received message. AS4ClientException This exception is thrown for errors that are encountered when transferring a message to the trading partner. Table 4: Invocation Flow Description for Two-Way Sync Response 3.1.4.2 Batch-Async-Intermediate, Batch-Async-Delayed and Bulk-Async-Delayed As described in SBR ebMS3 WIG, the Batch-Async-Intermediate, the Batch-Async-Delayed and the Bulk-Async-Delayed invocation types all follow the same sequence of interactions between the BMS and SBR ebMS3. These invocation types are realized using the One-Way Push MEP from the ebMS3 standard for the request flow and the One-Way Pull MEP from the ebMS3 standard for the response flow. Request Flow In terms of API invocation there is no difference between a Single-Chatty-Sync Request Flow and asynchronous Batch/Bulk Request flow. All the steps listed in Figure 3 ‘API Invocation Flow for Single-Sync-Chatty Request’ and their descriptions in Table 3 ‘Invocation Flow Description’ apply to the request flow for the Batch-Async-Intermediate, the Batch-Async-Delayed and the Bulk-Async-Delayed invocation types. The only differences are that a Batch/Bulk request (as per ATO Common MIG) will always have a single attachment so steps 8-13 should always be invoked once. Also, the response received in step 15 will be an ebMS3 receipt from the trading partner containing only the signal message portion. Response Flow The response flow for asynchronous Batch/Bulk requests is realized using the One-Way Pull MEP. Figure 5Error! Reference source not found. ‘API Invocation Flow for Bulk/Batch Response’ shows the high level flow for embeddable client API invocation involved in Bulk/Batch response flow. Table 5 ‘Invocation Flow Description for Batch/Bulk Response’ provides the details for these API calls. UNCLASSIFIED VERSION 1.3 PAGE 22 OF 113 SDK DEVELOPER GUIDE SBR ebMS3 STATUS: Final VERSION 1.3 Figure 5: API Invocation Flow for Bulk/Batch Response Step API Call Description 1 AS4ClientFactory.getClient(Path ,Path,String,Path) Getting a reference to an instance of the embeddable client: To get a reference to an instance of the embeddable client, call the getClient() method on the AS4ClientFactory class. This method takes as input: Path to the Config directory, and Path to the Data directory String representing the pass phrase for the embeddable client’s mainkeyStore.jks file. Path to the Audit directory: the events that take place when a message is exchanged UNCLASSIFIED VERSION 1.3 PAGE 23 OF 113 SDK DEVELOPER GUIDE SBR ebMS3 STATUS: Final VERSION 1.3 Step API Call Description between the embeddable client and an AS4 server can be logged to a location as specified by this attribute. 2 AS4Client.getProfile(String profileName) Exchange profile look up: To look up the exchange profile that is required to communicate with the appropriate server, call the getProfile() method on the client instance. This method takes a String input, which must match the file name of the exchange profile XML that is in the “config” folder without the .xml extension. For example, if the name of the exchange profile XML file is AS4OutboundXPTwoWaySync.xml, specify AS4OutboundXPTwoWaySync as the profileName. 3 AS4Client.createRequest(Profile ) Create a request: using the looked up exchange profile, call the createRequest(Profile) method on the client instance. The input to this method is the profile object retrieved in previous step. 4 Request.getSignalMessage() Retrieve Signal Message from ebMS3 Request: From the Request object, call getSignalMessage(). This method call will return the signal message section of ebMS request. 5 RequestSignal.getPullRequest() Retrieve the pull request for this signal message: From the RequestSignal object call getPullRequest() method to retrieve the PullRequest object. 6 PullRequest.setRefToMessageI d(String selectionID) Set selective pulling criteria: The input to this method is the message ID of original One-way Push request (Bulk/Batch Request flow). This will result in ebMS3 partner only sending back the responses which have ‘refToMessageId’ field in the ebMS3 header matching the ‘selectionID’ value. 7 RequestSignal.setSAMLToken( String token) Set SAML Token: Invoke this operation on the SignalMessage part of the Request object retrieved in step 4. This method call will set the SAML Token in the WSSE security header. The input is a String SAML Token value. This value must hold well-formed XML otherwise the client will throw an error. The SAML token should be retrieved by BMS from the VANguard Security Token Service (STS) using the ABR Security Token Manager API provided as part of the SDK. 8a Request.setSigningCertificate(n ew KeyStore.PrivateKeyEntry(privat eKey, certificateChain ) Sign the message: Invoke this operation on the Request object retrieved in step 3 to add message signature to the WSSE security header. This method takes as input a UNCLASSIFIED VERSION 1.3 PAGE 24 OF 113 SDK DEVELOPER GUIDE SBR ebMS3 VERSION 1.3 STATUS: Final Step API Call 8b Request.setSigningCertificate(b Sign the message: Invoke this operation on the yte[] pkcs12Data, String alias, Request object retrieved in step 3 to add message String passphrase ) signature to the WSSE security header. This method takes as input a: byte Array, which represents all the cryptographic details for the sender’s private key, including the certificate chain as a P12 byte array. String value representing the certificate alias for the corresponding private key. String value representing the passphrase for AUSKey keystore. Either of 7a or 7b can be used for message signing. 9 Request.send() Send Request: Invoke this method on the request object created in step 3 to send the packaged ebMS3 request message to SBR ebMS3. 10 Response.getUserMessage() To retrieve the user message portion of ebMS3 response. If a response is received from the trading partner, the response is processed according to the configuration of the message exchange profile and the conformance policy 11 ResponseUserMessage.getAtta chments() Retrieve attachments in the response. Invoke this method on the ResponseUserMessage object retrieved in step 10 to get an Array of ResponsePart objects. As per Ato Common MIG, there can only be one attachment in the bulk/batch response. 12 ResponsePart.getInputStream() Retrieve the input stream for this response part. This input stream should be read to extract the response data for this part. The caller of this method will be responsible for calling InputStream.close() on this stream after it has been consumed. It is recommended that this be done in a finally block. This method should not be used in combination with writeToFile(String) on a single object. 13 ResponsePart.writeToFile(String ) Wrapper around getInputStream, so that the response data for this part can be extracted from the InputStream and written to a File, where the filename is specified by the caller This method should not be used in combination with getInputStream() on a single object. 14 ResponsePart.getProperties() Retrieve UNCLASSIFIED Description java.security.KeyStore.PrivateKeyEntry object, which can be instantiated by the BMS using the java.Security.PrivateKey object and the java.Security.cert.Certificate [ ] array retrieved using the ABR AUSkey Manager API provided as part of the SDK. VERSION 1.3 all attachment properties in the PAGE 25 OF 113 SDK DEVELOPER GUIDE SBR ebMS3 STATUS: Final Step API Call VERSION 1.3 Description eb:PartInfo/eb:Properties section of ebMS3 header by calling this method on the ResponsePart object. Table 5: Invocation Flow Description for Batch/Bulk Response 3.1.4.3 Single-Async-Chatty As described in SBR ebMS3 WIG, the Single–Async–Chatty invocation type involves BMS sending an ebMS push request and retrieving a response asynchronously via ebMS pull at a later time. The BMS must wait for at least the specified SLA response time for the serviceaction being invoked before polling for the response message. This invocation type is implemented using the Two-Way/Push-and-Pull MEP from the ebMS3 standard. Request Flow In terms of API invocation there is no difference between a Single-Sync-Chatty Request Flow and Single-Async-Chatty Request flow. All the steps listed in Figure 3 ‘API Invocation Flow for Single-Sync-Chatty Request’ and their descriptions in Table 3 ‘Invocation Flow Description’ apply to the request flow for this invocation type. The only difference is that the response received in step 15 will be an ebMS3 receipt from the trading partner containing only the signal message portion. Response Flow The response flow for Single-Async-Chatty requests is realized using the Pull part of the TwoWay/Push-and-Pull MEP. Figure 5 shows the high level flow for embeddable client API invocation involved in this response flow. Table 5 provides the details for these API calls. UNCLASSIFIED VERSION 1.3 PAGE 26 OF 113 SDK DEVELOPER GUIDE SBR ebMS3 STATUS: Final VERSION 1.3 Figure 6: API Invocation Flow for Single-Async-Chatty Response Step API Call Description 1 Response.followUp() Initialise pull request: Returns a subordinate Pull Request object to be used to follow up on the Push Request from which this Response originated. The Pull Request object that's returned is initialized just the same way as the original Push Request had been (for instance, it behaves as if the same setters were called on it as were called on the original Push Request). The profile that the returned Pull Request will use is the one that the original Push Request was created with. The Pull Request returned from followUp() must be used from the very thread that initialized the UNCLASSIFIED VERSION 1.3 PAGE 27 OF 113 SDK DEVELOPER GUIDE SBR ebMS3 STATUS: Final VERSION 1.3 Step API Call Description original Push Request from which it was derived. This method returns null for all MEPs except Two Way Push and Pull. 2 Request.send() Send Request: Invoke this method on the request object created in step 1 to send the packaged ebMS3 request message to SBR ebMS3. 3 Response.getUserMessage() To retrieve the user message portion of ebMS3 response. If a response is received from the trading partner, the response is processed according to the configuration of the message exchange profile and the conformance policy 4 ResponseUserMessage.getAtta chments() Retrieve attachments in the response. Returns an array of the ResponsePart class instance that contains an input stream which is used to read the attachment data. If the response has multiple attachments, a separate input stream is returned for each attachment. 5a ResponsePart.getInputStream() Retrieve the input stream for this response part. This input stream should be read to extract the response data for this part. The caller of this method will be responsible for calling InputStream.close() on this stream after it has been consumed. It is recommended that this be done in a finally block. This method should not be used in combination with writeToFile(String) on a single object. 5b ResponsePart.writeToFile(String ) Wrapper around getInputStream, so that the response data for this part can be extracted from the InputStream and written to a File, where the filename is specified by the caller This method should not be used in combination with getInputStream() on a single object. 6 ResponsePart.getProperties() Retrieve all attachment properties in the eb:PartInfo/eb:Properties section of ebMS3 header by calling this method on the ResponsePart object. Table 6: Invocation Flow Description for Single-Async-Chatty Response UNCLASSIFIED VERSION 1.3 PAGE 28 OF 113 SDK DEVELOPER GUIDE SBR ebMS3 VERSION 1.3 STATUS: Final 3.2 .NET Version The .NET version of the embeddable client is built on top of the JAVA version using the Java Native Interface (JNI) 3.2.1 Prerequisite Software The prerequisite software for .NET version of embeddable client is: Windows 7 / Windows 8 / Windows XP SP2 or SP3 / Windows Vista/ Windows 2012 Microsoft .NET Framework version 3.5 and above Microsoft Visual C++ 2008 Redistributable Package (x64) Java version of the embeddable client 3.2.2 Client Structure The .NET version of embeddable client requires two package files: File Description AS4-EmbeddableClient-Base-1.0.0.X.zip The Java™ API package AS4-DOTNET_Client-Windows_x64-1.0.0.X.zip, or AS4-DOTNET_Client-Windows_x86-1.0.0.X.zip The .NET API package. For the embeddable client to function properly, you must install the prerequisite software and download and extract the embeddable client Java API and .NET API packages. Both these packages must be extracted under the same folder to get the right directory structure. The Java API package includes a JRE that must also be extracted. Once both the above mentioned packages have been extracted it will result in a directory structure similar to Table 1. The only addition is a new directory named DotNet. The following list provides details about the folders and files that are part of the DotNet folder: Folder File Description AS4Client.dll The .dll that the BMS will communicate with. AS4ClientCpp_JNI.dll The .dll that communicates with the Java classes. AS4ClientDotNet.chm API Documentation for the .NET version. DotNet Table 7: Structure for Embeddable Client .NET Version 3.2.3 Class Descriptions This section has the summary of key classes in the embeddable client .NET API and their purpose. UNCLASSIFIED VERSION 1.3 PAGE 29 OF 113 SDK DEVELOPER GUIDE SBR ebMS3 STATUS: Final VERSION 1.3 Figure 7: Class Diagram Embeddable Client .NET API Class Purpose AS4ClientFactory Entry point for AS4 client development. Returns AS4Client objects. Only one AS4Client should be retrieved per JVM, and it should be used in a single threaded fashion. The AS4Client created by this class follows the singleton pattern. If the method was previously invoked with the same configuration directory, the previously returned object will be returned again. Having more than one client instance per jvm is unsupported. To access a different client configuration, the calling application is required to close() the existing AS4Client and then call getClient() anew. AS4Client AS4 Client interface to create messages, add and get P-Mode profiles, get MSH details, vendor and version. Implementations are available via static methods of the AS4ClientFactory class. The AS4Client object is created in a singleton pattern; you can only have one instance at a time (for a configuration directory) in the JVM and is thread safe. The implementation of AS4Client returned by the getClient method of UNCLASSIFIED VERSION 1.3 PAGE 30 OF 113 SDK DEVELOPER GUIDE SBR ebMS3 VERSION 1.3 STATUS: Final Class Purpose AS4ClientFactory is the entry point to the capabilities offered Embeddable Client. Profile Profile is a cohesive collection of configuration settings that control almost every aspect of how AS4 communication must be performed with the Trading Partner's AS4 server. Most but not all of these parameters correspond to the concept of AS4 Processing Mode Parameters. Profiles are created by calling AS4Client.getProfile and are used to create Requests that will then behave according to the configuration of the supplied Profile. A Profile should be initialized properly and completely before it is used to create any Requests; attempting to change the configuration on a Profile while a Request has been created can lead to undefined behavior. The Profile can also be saved to an OutputStream for export. The profile object is not thread safe and should only be used in the thread that created it. Request Represents a single Request that can be issued to the server, yielding a single Response. This object is returned by calling the AS4Client.createRequest method. The request object is not thread safe and should only be used in the thread that created it. RequestMessage An interface that is the RequestSignalMessage. RequestUserMess age Representation of the portion of the request that carries a UserMessage, including the payload and attachments contained therein. RequestSignalMes sage Representation of the portion of the request that carries SignalMessages, specifically a PullRequest with optional selective pull criteria. RequestPart RequestPart is the holder of data sent by the end user that is to be carried in the AS4 request. Each RequestPart corresponds to an eb:Messaging/eb:UserMessage/eb:PayloadInfo/eb:PartInfo element in the ebMS 3.0 specification and holds a contiguous series of bytes. The UserMessage in a request may contain one or more RequestParts. These are set using the RequestUserMessage.setPayloadPart(), and RequestUserMessage.addAttachmentPart() methods. PullRequest Represents the parameters that can be specified for a selective pull request. Fields set will match corresponding header fields in the pulled message. If multiple criteria are selected, the selection will be the boolean conjunction (i.e. AND) of all criteria. Response Represents the response returned by the Trading Partner's AS4 server in reaction to the invocation of the Request.send() method on a Request object. It may hold a UserMessage and/or a list of SignalMessages ResponseUserMes sage Representation of the portion of the response that carries a UserMessage, including the payload and attachments contained therein. ResponsePart Represents data in the response intended for the end user. Each ResponsePart corresponds to an eb:Messaging/eb:UserMessage/eb:PayloadInfo/eb:PartInfo element in the ebMS 3.0 specification and holds a contiguous series of bytes. The UNCLASSIFIED VERSION 1.3 base for RequestUserMessage and PAGE 31 OF 113 SDK DEVELOPER GUIDE SBR ebMS3 STATUS: Final Class VERSION 1.3 Purpose UserMessage in a response may contain one or more ResponseParts. These can be retrieved using the ResponseUserMessage.getPayload() and ResponseUserMessage.getAttachments() methods. AS4ClientExceptio n A checked exception thrown by the AS4 embeddable client implementation under various conditions (from various methods). This exception is also a base for several other AS4 embeddable client exceptions. AS4ClientEbMSEx ception An exception that is thrown when a response is received from the Trading Partner's AS4 server that contains eb:Error elements. More precisely, this is thrown when such eb:Error elements indicate that the attempted Request has failed. Table 8: Class Descriptions Embeddable Client DotNet API 3.2.4 Using the Embeddable Client For the embeddable client to function correctly, following environment variables should be configured: AS4CLIENT_HOME: Location where the Java and .NET packages are extracted. JRE_HOME: Location where the JRE is located. 3.2.5 Embeddable Client API This section outlines the high level flow in terms of API calls involved in different message exchange patterns. 3.2.5.1 Single-Sync-Chatty As described in SBR ebMS3 WIG, the Single–Sync–Chatty invocation type involves BMS sending an ebMS request and receiving a response synchronously. This invocation type is implemented using the Two-Way/Sync MEP from the ebMS3 standard. Request Flow Figure 8Error! Reference source not found. shows the high level flow for embeddable client API invocation involved in Two-Way Sync Request. Table 9 provides the details for these API calls. UNCLASSIFIED VERSION 1.3 PAGE 32 OF 113 SDK DEVELOPER GUIDE SBR ebMS3 STATUS: Final VERSION 1.3 Figure 8: API Invocation Flow for Single-Sync-Chatty Request Step API Call Description 1 AS4ClientFactory.getClient(strin g,string,string,string) Getting a reference to an instance of the embeddable client: To get a reference to an instance of the embeddable client, call the getClient() method on the AS4ClientFactory class. This method takes as input: String representing the path to Config directory String representing the path to Data directory String representing the pass phrase for the embeddable client’s mainKeyStore.jks file. String representing the path to audit directory. 2 AS4Client.getProfile(string profileName) Exchange profile look up: To look up the exchange profile that is required to communicate with the appropriate server, call the getProfile() method on the client instance. This method takes a String input, which must match the file name of the exchange profile XML that is in the “config” folder without the .xml extension. For UNCLASSIFIED VERSION 1.3 PAGE 33 OF 113 SDK DEVELOPER GUIDE SBR ebMS3 STATUS: Final VERSION 1.3 Step API Call Description example, if the name of the exchange profile XML file is TwoWaySync.xml, specify TwoWaySync as the profileName. 3 AS4Client.createRequest(Profile ) Create a request: using the looked up exchange profile, call the createRequest(Profile) method on the client instance. The input to this method is the profile object retrieved in previous step. 4 Request.getUserMessage() Retrieve User Message from ebMS3 Request: From the Request object, call getUserMessage(). This method call will return the user message section of ebMS request. 5 RequestUserMessage.setAction Name(string ActionName) RequestUserMessage.setServic e(String ServiceName, String ServiceType) RequestUserMessage.setConve rsationID(string ConversationID) Set ebMS3 CollaborationInfo header values: Invoke these methods on the request user message object, retrieved in last step to set corresponding values in the CollaborationInfo section of ebMS3 header. These methods take string values as input. The ServiceType parameter in setService operation is optional (This will be set to null as ATO MSH doesn’t use service type) 6 RequestUserMessage.setMessa geProperty(string property, string value) Set ebMS3 MessageProperties header values: Invoke this method on the request user message object to set values in the MessageProperties section of ebMS3 header. This method takes as input a string value representing property name and a string value representing header value. BMS should invoke this method multiple times to set following properties: ProductID BMS Vendor BMS Name BMS Version These values are described in Section 3 of the SBR ebMS3 WIG. For Online Service Provider (OSP) scenarios, the BMS also needs to send and additional message property with name “SoftwareSubscriptionId”, as discussed in ATO Common MIG. 7 RequestUserMessage.setSAML Token(string token) UNCLASSIFIED Set SAML Token: Invoke this operation on the UserMessage part of the Request object retrieved in step 4. This method call will set the SAML Token in the WSSE security header. The input is a String SAML Token value. This value must hold well-formed XML otherwise the client will throw an error. This value should be retrieved by BMS from the VANguard Security Token Service (STS) using the ABR Security Token Manager API provided as part of the SDK. VERSION 1.3 PAGE 34 OF 113 SDK DEVELOPER GUIDE SBR ebMS3 STATUS: Final VERSION 1.3 Step API Call Description 8 RequestUserMessage.createPa rt() Create MIME Part: As discussed in section 4 of SBR ebMS WIG, Single requests should package business documents as separate MIME parts in the ebMS3 request. Invoke this operation on the RequestUserMessage object retrieved in step 4 to create an instance of RequestPart. 9a RequestPart.setInputFile(string inputFilename) Set Part File Name: Invoke this method on the part object created in last step to specify the file name that will be used to retrieve the data for this part. 9b RequestPart.setData(string contentData) Set Part Data: Invoke this method on the part object created in last step to set the part data from the string value passed as an input argument. Use either of 9a or 9b to set part data. * This method has been tested by IBM labs to successfully send up to 20MB of data. Testing with larger data set is under progress. 10 RequestPart.setContentID(string contentID) Set ContentID: Invoke this method on the part object retrieved in step 8 to set the ContentID header value for this part object. 11 RequestPart.setContentType(str ing contentType) Set ContentType: Invoke this method on the part object retrieved in step 8 to set the ContentType header value for this part object e.g. “text/xml”. 12 RequestPart.setProperty(string name, string value) Set ebMS3 PayloadInfo.PartInfo/PartProperties header values: Invoke this method on the request part object created in step 8 to set values in the PartProperties section of ebMS3 header. This method takes as input a string value representing property name and a string value representing header value. BMS should invoke this method multiple times to set following properties: PartID DocType AttachmentType These values are described in Section 3 of the SBR ebMS3 WIG. 13 RequestUserMessage.addAttac hmentPart(RequestPart attachmentPart) Add part to Request User Message: Invoke this method on the request user message created in step 4, to add the part object as a MIME part to this user message. This method will take as input RequestPart object created in step 8. 14 Request.setSigningCertificate(b Sign the message: Invoke this operation on the yte[] pkcs12Data, string alias, Request object retrieved in step 3 to add message string passphrase) signature to the WSSE security header. This method takes as input: byte Array, which represents all the cryptographic details for the sender’s private key, including the certificate chain as a P12 UNCLASSIFIED VERSION 1.3 PAGE 35 OF 113 SDK DEVELOPER GUIDE SBR ebMS3 VERSION 1.3 STATUS: Final Step API Call Description byte array. This byte array can be retrieved by calling the AbrKeyStore.GetPrivateKeyAsP12ByteArray method in the ABR AUSkey Manager (IMClient Keystore API). string value representing the certificate alias for the corresponding private key. Since the pkcs12Data has cryptographic details corresponding to a single certificate alias, therefore this value should be set to null. string value representing the passphrase for AUSKey keystore. 15 Request.send() Send Request: Invoke this method on the request object created in step 3 to send the packaged ebMS3 request message to the SBR ebMS3. Table 9: Invocation Flow Description for Single-Sync-Chatty Request Response Flow Figure 9 shows the high level flow for embeddable client API invocation involved in Two-Way Sync Response. The send() method will return a response object when the ebMS partner (SBR Core) successfully sends back a response to the embeddable client, otherwise an exception is thrown. Send ebMS message Response = RequestMessage.send() Catch Exceptions Yes Check Exception Type No Retrieve Response UserMessage Response.getUserMessage() AS4ClientEBMSException Retrieve Response Payload ResponseUserMessage.getPayload() AS4ClientException Retrieve Response Attachments ResponsePart [] = ResponseUserMessage.getAttachments() Figure 9: API Invocation Flow for Two-Way Sync Response API Call Description Response.getUserMessage() To Receive a response from the trading partner: for a user message. If a response is received from the trading partner, the response is UNCLASSIFIED VERSION 1.3 PAGE 36 OF 113 SDK DEVELOPER GUIDE SBR ebMS3 STATUS: Final API Call VERSION 1.3 Description processed according to the configuration of the message exchange profile and the conformance policy ResponseUserMessage.getPayload() To retrieve response payload, call this method on the ResponseUserMessage to retrieve a ResponsePart object Note: All ELS2SBR interactions have empty payloads in request and response messages. ResponseUserMessage.getAttachments() Get all attachments of the response as parts, this method with return a list of ResponsePart objects. The embeddable client API provides methods to retrieve various ebMS3 header values for the response part and also to save the part content to a file. If an error occurs while transferring a message to SBR Core or when SBR Core is processing the message, appropriate exceptions are returned. The following types of exceptions are supported: AS4ClientEbMSException This exception is thrown for ebMS processing errors encountered when the trading partner is processing the received message. AS4ClientException This exception is thrown for errors that are encountered when transferring a message to the trading partner. Table 10: Invocation Flow Description for Single-Sync-Chatty Response 3.2.5.2 Batch-Async-Intermediate, Batch-Async-Delayed and Bulk-Async-Delayed As described in SBR ebMS3 WIG, the Batch-Async-Intermediate, the Batch-Async-Delayed and the Bulk-Async-Delayed invocation types all follow the same sequence of interactions between the BMS and SBR ebMS3. These invocation types are realized using the One-Way Push MEP from the ebMS3 standard for the request flow and the One-Way Pull MEP from the ebMS3 standard for the response flow. Request Flow In terms of API invocation there is no difference between a Single-Chatty-Sync Request Flow and asynchronous Batch/Bulk Request flow. All the steps listed in Figure 8 and their descriptions in Table 9 apply to the request flow for the Batch-Async-Intermediate, the BatchAsync-Delayed and the Bulk-Async-Delayed invocation types. The only differences are that a Batch/Bulk request (as per ATO Common MIG) will always have a single attachment so steps 8-13 should always be invoked once. Also, the response received in step 15 will be an ebMS3 receipt from the trading partner containing only the signal message portion. UNCLASSIFIED VERSION 1.3 PAGE 37 OF 113 SDK DEVELOPER GUIDE SBR ebMS3 STATUS: Final VERSION 1.3 Response Flow The response flow for asynchronous Batch/Bulk requests is realized using the One-Way Pull MEP. Figure 10 shows the high level flow for embeddable client API invocation involved in Bulk/Batch response flow. Table 11 provides the details for these API calls. Figure 10: API Invocation Flow for Batch/Bulk Response Step API Call Description 1 AS4ClientFactory.getClient(strin g,string,string,string) Getting a reference to an instance of the embeddable client: To get a reference to an instance of the embeddable client, call the getClient() method on the AS4ClientFactory class. This method takes as input: String representing the path to Config directory String representing the path to Data directory String representing the pass phrase for the embeddable client’s mainKeyStore.jks file. String representing the path to audit directory. 2 AS4Client.getProfile(string profileName) Exchange profile look up: To look up the exchange profile that is required to communicate with the appropriate server, call the getProfile() method on the client instance. This method takes a String input, which must match the file name of the exchange profile XML that is in the “config” folder without the .xml extension. For example, if the name of the exchange profile XML file is TwoWaySync.xml, specify TwoWaySync as UNCLASSIFIED VERSION 1.3 PAGE 38 OF 113 SDK DEVELOPER GUIDE SBR ebMS3 STATUS: Final VERSION 1.3 the profileName. 3 AS4Client.createRequest(Profile ) Create a request: using the looked up exchange profile, call the createRequest(Profile) method on the client instance. The input to this method is the profile object retrieved in previous step. 4 Request.getSignalMessage() Retrieve Signal Message from ebMS3 Request: From the Request object, call getSignalMessage(). This method call will return the signal message section of ebMS request. 5 RequestSignalMessage.getPull Request() Retrieve the pull request for this signal message: From the RequestSignalMessage object call getPullRequest() method to retrieve the PullRequest object. 6 RequestSignalMessage.SetSA MLToken(String token) Set SAML Token: Invoke this operation on the SignalMessage part of the Request object retrieved in step 4. This method call will set the SAML Token in the WSSE security header. The input is a String SAML Token value. This value must hold well-formed XML otherwise the client will throw an error. This value should be retrieved by BMS from the VANguard Security Token Service (STS) using the ABR Security Token Manager API provided as part of the SDK. 7 PullRequest.setRefToMessageI d(String selectionID) Set selective pulling criteria: The input to this method is the message ID of original One-way Push request (Bulk/Batch Request flow). This will result in ebMS3 partner only sending back the responses which have ‘refToMessageId’ field in the ebMS3 header matching the ‘selectionID’ value. 8 Request.setSigningCertificate(b Sign the message: Invoke this operation on the yte[] pkcs12Data, string alias, Request object retrieved in step 3 to add message string passphrase) signature to the WSSE security header. This method takes as input: byte Array, which represents all the cryptographic details for the sender’s private key, including the certificate chain as a P12 byte array. This byte array can be retrieved by calling the AbrKeyStore.GetPrivateKeyAsP12ByteArray method in the ABR AUSkey Manager (IMClient Keystore API). string value representing the certificate alias for the corresponding private key. Since the pkcs12Data has cryptographic details corresponding to a single certificate alias, therefore this value should be set to null. string value representing the passphrase for AUSKey keystore. 9 Request.send() UNCLASSIFIED Send Request: Invoke this method on the request object created in step 3 to send the packaged ebMS3 request message to SBR ebMS3. VERSION 1.3 PAGE 39 OF 113 SDK DEVELOPER GUIDE SBR ebMS3 STATUS: Final VERSION 1.3 10 Response.getUserMessage() To retrieve the user message portion of ebMS3 response. If a response is received from the trading partner, the response is processed according to the configuration of the message exchange profile and the conformance policy. 11 ResponseUserMessage.getAtta chments() Retrieve attachments in the response. Invoke this method on the ResponseUserMessage object retrieved in step 10 to get a List of ResponsePart objects. As per Ato Common MIG, there can only be one attachment in the bulk/batch response. 12a ResponsePart.writeToFile(String ) Write ResponsePart data to file. 12b ResponsePart.getData() Retrieve part data: by invoking this method on the part object. This method will return a string containing part data. Use either of 12a or 12b to retrieve part data. * This method has been tested by IBM labs to successfully retrieve up to 20MB of data. Testing with larger data set is under progress. 13 ResponsePart.getProperties() Retrieve all attachment properties in the eb:PartInfo/eb:Properties section of ebMS3 header by calling this method on the ResponsePart object. Table 11: Invocation flow description for Batch/Bulk Response 3.2.5.3 Single Async-Chatty As described in SBR ebMS3 WIG, the Single–Async–Chatty invocation type involves BMS sending an ebMS push request and retrieving a response asynchronously via ebMS pull at a later time. The BMS must wait for at least the specified SLA response time for the serviceaction being invoked before polling for the response message. This invocation type is implemented using the Two-Way/Push-and-Pull MEP from the ebMS3 standard. Request Flow In terms of API invocation there is no difference between a Single-Sync-Chatty Request Flow and Single-Async-Chatty Request flow. All the steps listed in Figure 8 and their descriptions in Table 9 apply to the request flow for this invocation type. The only difference is that the response received in step 15 will be an ebMS3 receipt from the trading partner containing only the signal message portion. Response Flow The response flow for Single-Async-Chatty requests is realized using the Pull part of the TwoWay/Push-and-Pull MEP. Figure 11 shows the high level flow for embeddable client API invocation involved in this response flow. Table 12 provides the details for these API calls. UNCLASSIFIED VERSION 1.3 PAGE 40 OF 113 SDK DEVELOPER GUIDE SBR ebMS3 STATUS: Final VERSION 1.3 Figure 11: API Invocation Flow for Single-Async-Chatty Response Step API Call Description 1 Response.FollowUp() Initialise pull request: Returns a subordinate Pull Request object to be used to follow up on the Push Request from which this Response originated. The Pull Request object that's returned is initialized just the same way as the original Push Request had been (for instance, it behaves as if the same setters were called on it as were called on the original Push Request). The profile that the returned Pull Request will use is the one that the original Push Request was created with. The Pull Request returned from followUp() must be used from the very thread that initialized the original Push Request from which it was derived. This method returns null for all MEPs except Two Way Push and Pull. 2 Request.send() Send Request: Invoke this method on the request object created in step 1 to send the packaged ebMS3 request message to SBR ebMS3. 3 Response.getUserMessage() To retrieve the user message portion of ebMS3 response. If a response is received from the trading partner, the response is processed according to the configuration of the message exchange profile and UNCLASSIFIED VERSION 1.3 PAGE 41 OF 113 SDK DEVELOPER GUIDE SBR ebMS3 STATUS: Final VERSION 1.3 Step API Call Description the conformance policy. 4 ResponseUserMessage.getAtta chments() Retrieve attachments in the response. Invoke this method on the ResponseUserMessage object retrieved in step 3 to get a List of ResponsePart objects. 5a ResponsePart.writeToFile(String ) Write ResponsePart data to file. 5b ResponsePart.getData() Retrieve part data: by invoking this method on the part object. This method will return a string containing part data. Use either of 5a or 5b to retrieve part data. * This method has been tested by IBM labs to successfully retrieve up to 20MB of data. Testing with larger data set is under progress. 6 ResponsePart.getProperties() Retrieve all attachment properties in the eb:PartInfo/eb:Properties section of ebMS3 header by calling this method on the ResponsePart object. Table 12: Invocation Flow Description for Single-Async-Chatty Response UNCLASSIFIED VERSION 1.3 PAGE 42 OF 113 SDK DEVELOPER GUIDE SBR ebMS3 STATUS: Final 4. VERSION 1.3 REFERENCE CLIENT The SBR Reference Client is aimed at giving Software Developers an example of how to connect to the SBR ebMS3 using the SDK components provided by SBR. It demonstrates how to interact with an AUSkey store, use a credential from the store to call the VANguard Security Token Service, package bulk/batch requests, submit requests and interpret the responses received. The Reference Client is provided as an example only. The Reference Client is included in the SDK to provide an example implementation of the components and APIs provided in the SDK. The Reference Client provides a guide for how software developers could use these in their developed products. The Reference Client is not supported for production use. It is not intended that the Reference Client be used by software developers for use with or embedded in their developed products. Ongoing support for the Reference Client and inclusion of the Reference Client in future SDK versions is not guaranteed. 4.1 Features This version of the SBR Reference Client demonstrates the following aspects ABR AUSkey Manager (IMClient Keystore API) to access stored credentials ABR Security Token Manager API to connect to the Secure Token Service Embeddable Client API usage to connect to SBR ebMS3 Package Bulk XBRL Payloads It also demonstrates the Error management techniques detailed in the SBR ebMS3 WIG. 4.2 Forms Included in the SBR Reference Client The SBR Reference Client contains Form information for a small subset of SBR Forms which are available for Software Developer testing. The set of forms included with the SBR Reference Client is an example only and is not intended to be a complete list of available forms. As the Form metadata included with the SBR Reference Client represents a subset of the form versions supported at the time of release, and as the forms and their versions evolve over time, it is recommended that developers contact the SBR testing team to check whether specific forms are still current and hence available for testing. The values defined in the forms metadata may change with Agency updates so the values provided in the SBR Reference Client should be checked against the current MIGs and Conformance Suites prior to use. UNCLASSIFIED VERSION 1.3 PAGE 43 OF 113 SDK DEVELOPER GUIDE SBR ebMS3 STATUS: Final 5. MESSAGE PACKAGING EXAMPLES 5.1 Java API VERSION 1.3 This section provides code samples to invoke embeddable client Java API for the invocation types supported by SBR. 5.1.1 Singe-Sync-Chatty 5.1.1.1 Request The code sample below shows an example for packaging a synchronous request to lodge a CTR form with one IEE schedule. Step 1: Get an instance of the AS4Client, using the AS4ClientFactory which is the entry point for AS4 client development. // Create AS4Client Instance AS4Client client = AS4ClientFactory.getClient(configDir, mainKeyStorePassPhrase, auditDir); dataDir, The getClient() method has following signature: Parameter Type Description configDir Input Either the Path object or the location for the configuration directory. dataDir Input Either the Path object or the location for the data directory. mainKeyStorePassPhrase Input String representing the pass phrase for the embeddable client’s main key store. Please note that mainkeystore is different from and should not be confused with the AUSKey keystore which will contain the sender’s AUSKey. auditDir Input Either the Path object or the location for the audit directory. The choice of Path/Location should be same for configDir, dataDir and auditDir parameters. AS4Client Return The method creates and returns the instance of AS4Client if necessary. Step 2: Create an ebMS Profile object. // Retrieve profile information using the file name for the exchange profile Profile profile = client.getProfile(profileName); The getProfile() method has following signature. Parameter Type Description profileName Input String representing the name of the XML configuration file for the required exchange profile. The file name should be specified without the .xml extension. UNCLASSIFIED VERSION 1.3 PAGE 44 OF 113 SDK DEVELOPER GUIDE SBR ebMS3 STATUS: Final VERSION 1.3 Parameter Type Description Profile Return The method will look for the input XML file under the config directory specified while creating the client object. If the file exists a Profile object will be created and returned based on the loaded configuration. Step 3: Create an instance of the request object // Create an instance of ebMS3 request using the Profile Object Request request = client.createRequest(profile); The createRequest method has following signature. Parameter Type Description profile Input Profile object created in step 2. request Return An object of type Request. Throws AS4ClientException, if the profile is not previously loaded in the client using the getProfile() method. Step 4: Retrieve the ebMS user message from ebMS request created in previous step. // Retrieve the UserMessage element from the ebMS3 request RequestUserMessage requestUserMessage = request.getUserMessage(); The getUserMessage() has following signature. Parameter Type Description requestUserMessage Return An object of type RequestUserMessage. Step 5: Populate the eb:CollaborationInfo header, see ATO Common MIG for details regarding ebMS headers and values. // Set ebMS3 header values for the CollaborationInfo node // Set Action Name requestUserMessage.setActionName("Submit.005.00"); // Set Service Name requestUserMessage.setServiceName("http://sbr.gov.au/ato/ctr/2014"); // Set conversation ID requestUserMessage.setConversationId(GLOBALY_UNIQUE_IDENTIFIER); The signature for these methods is explained below: UNCLASSIFIED VERSION 1.3 PAGE 45 OF 113 SDK DEVELOPER GUIDE SBR ebMS3 STATUS: Final VERSION 1.3 Operation Parameter Type Parameter Value setActionName String Set to one of [List, Get, Validate, Lodge] concatenated with "Action.nnn.nn" where: nnn.nn is the version number of the ATO interaction (Service-Action) that is sought to be invoked by the BMS. setServiceName String Form or business obligation name. setConversationID String Set to value generated by BMS which must be a unique Sequence Number within the User organisation submitting the request identified by the PartyId Step 6: Populate the eb:MessageProperties header, see ATO Common MIG for details regarding ebMS headers and values. // Set ebMS3 header values for the MessageProperties Node // Set Product ID requestUserMessage.setMessageProperty("ProductID", "987"); // Set BMS Vendor requestUserMessage.setMessageProperty("BMS Vendor", "XYZ"); // Set BMS Name requestUserMessage.setMessageProperty("BMS Name", "XYZ BMS"); // Set BMS Version requestUserMessage.setMessageProperty("BMS Version", "05.00.01"); // Optionally for Online Service Provider scenario set Software Subscription ID requestUserMessage.setMessageProperty("SoftwareSubscriptionId", "0120520319"); The above methods will take as input Name/Value pairs which are String values. Step 7: Set the SAML token in the wsse security header, see the SBR ebMS3 WIG for details regarding SAML token. // Set Request SAML Token requestUserMessage.setSAMLToken("[Encrypted_Token_Retrieved_From_VanGuard]"); The setSAMLToken takes as input a String value which will be the encrypted SAML token obtained from Vanguard. Step 8: Create MIME part for the CTR base form, see ATO Common MIG for more details on packaging synchronous single requests. The creation of XBRL document is out of the scope of this developer guide and it assumes that XBRL documents for CTR base form and schedules are available as separate .XML files. The MIME part creation involves following steps: a) Part Creation // Create a MIME part UNCLASSIFIED VERSION 1.3 PAGE 46 OF 113 SDK DEVELOPER GUIDE SBR ebMS3 STATUS: Final VERSION 1.3 RequestPart attachmentPart = requestUserMessage.createPart(); The createPart() method will create a new part for use in the requestUserMessage. b) Set Content Type // Set Content Type attachmentPart.setContentType("text/xml"); The set ContentType will set the type of content in the MIME part. c) Set PayloadInfo header values Set values for the eb:PayloadInfo section in ebMS header, see section 4.3.5 in the SBR ebMS3 WIG for more details on eb:PayloadInfo // Set PayloadInfo header values attachmentPart.setContentID("cid:ctr_0023"); The signatures for these methods are explained below: Operation Parameter Parameter Value Type setContentID String cid:{Attachment Filename} {Attachment Filename} must be unique amongst the Payload Parts within the Message Package d) Set PartProperties header values Set values for the eb:PartProperties section in ebMS header, see section 4.3.5 in the SBR ebMS3 WIG for more details on eb:PartProperties // Set PartProperties header values attachmentPart.setProperty("PartID", "ctr-base-2014"); attachmentPart.setProperty("DocumentName", "CTR"); attachmentPart.setProperty("DocumentType", "Base"); The setProperty() method takes as input String Name/Value pairs. Name Value PartID Unique identifier within this message for this payload part (which will allow the BMS to match a payload part specific response with the corresponding request payload part). DocumentName Set to the "Business Name" of the type of document contained in the MIME Part. e.g. in case of ATO as the relevant agency, CTR or "NIPSS" DocumentType Describes the message packaging used to transport the business document/s. Set to "Base" if this Property is for a Base form. UNCLASSIFIED VERSION 1.3 PAGE 47 OF 113 SDK DEVELOPER GUIDE SBR ebMS3 VERSION 1.3 STATUS: Final Name Value Set to "Schedule" if this Property is for a Schedule to a Base form. e) Load Part Content Load the actual content into the MIME part; this is done via loading the XBRL document as an XML file using a FileInputStream // Load Part Content FileInputStream attachmentFileInputStream FileInputStream("[PATH_TO_THE_XBRL_FILE"); = new attachmentPart.setInputStream(attachmentFileInputStream); f) Add Part to the RequestUserMessage Add the MIME Part into the user message // Add Part to the userMessage requestUserMessage.addAttachmentPart(attachmentPart); Step 8: Add one IEE Schedule // Add CTR Schedule # 1 attachmentPart = requestUserMessage.createPart(); attachmentPart.setContentID("cid:ctr_0012_iee"); attachmentPart.setContentType("text/xml"); attachmentPart.setProperty("PartID", "ctr-iee-1"); attachmentPart.setProperty("DocumentName", "IEE"); attachmentPart.setProperty("DocumentType", "Schedule"); FileInputStream attachmentFileInputStreamSch1 = new FileInputStream("[PATH_TO_XBRL_CONTENT”"); attachmentPart.setInputStream(attachmentFileInputStreamSch1); requestUserMessage.addAttachmentPart(attachmentPart); The above code is similar to what is explained in Step 7. The only difference being the values for different properties. Step 9: Sign the message using the AUS key. This is done by passing the PrivateKey and CertificateChain to the embeddable client API. // Sign the Message request.setSigningCertificate( privateKey,certificateChain ) ); new KeyStore.PrivateKeyEntry( (PrivateKey) The PrivateKey and CertificateChain can be loaded using the ABR AUSKey Manager. For further details please see SBR SDK User Guide Java Identity Management Client. Step 10: The final step is to send the message UNCLASSIFIED VERSION 1.3 PAGE 48 OF 113 SDK DEVELOPER GUIDE SBR ebMS3 STATUS: Final VERSION 1.3 // Send Message request.send(); Invoking the send() method on request object will send the ebMS request. This method will return a Response object on successful submission and an AS4ClientException if unable to read or send input MIME part XBL documents. 5.1.1.2 Response The code sample below shows an example for retrieving response payload for a Single-SyncChatty request (CTR base form and one schedule). Step 1: The first step is to create a response object and use it to receive ebMS response // Send Message Response response = request.send(); Step 2: For Single-Sync-Chatty invocations the response message should contain a user message. To retrieve the user message from the ebMS response. // Retrieve User Message ResponseUserMessage responseUserMessage = response.getUserMessage(); Step 3: Check if the response user message has any message properties, and retrieve these. // Retrieve Message Properties if ( responseUserMessage.getMessageProperties() != null ) { HashMap<String,String> userMessageProperties = (HashMap<String, String>)responseUserMessage.getMessageProperties(); } The getMessageProperties() will return a map having a name/value pair for each message property. Step 4: Retrieve response MIME parts. As per the response packaging structure discussed in ATO Common MIG, a CTR request with one IEE schedule will result in a response having two MIME parts in addition to the main MIME part encapsulating the SOAP envelope. // Retrieve Message Attachments ResponsePart[] parts = responseUserMessage.getAttachments(); The getAttachments() method will return the additional MIME parts as instances of ResponsePart. These MIME parts are structured as: Order Description First MIME part Overall Event Message: Contains Request Level validation responses or errors and other backend errors. Second MIME part Consolidated Validation Responses for base form and schedules. UNCLASSIFIED VERSION 1.3 PAGE 49 OF 113 SDK DEVELOPER GUIDE SBR ebMS3 STATUS: Final VERSION 1.3 Step 5: Retrieve the content for each ResponsePart // Save Attachments Content int i = 0; byte[] buffer = new byte[1024]; int n; for ( ResponsePart part : parts ) { String responseAttachmentFilename = "response-attachment-" + ++i + ".dat"; FileOutputStream responseAttachmentFileStream = new FileOutputStream( responseAttachmentFilename, false ); while ( ( n = part.getInputStream().read( buffer ) ) > 0 ) { responseAttachmentFileStream.write( buffer, 0, n ); } } The above code snippet will write each MIME part to a separate file. Alternatively, the BMS can read the contents for each MIME part to read the event message or business response and perform any logic accordingly. BMS is responsible for closing any streams opened during the above process. The response MIME part properties can also be retrieved using the below code snippet // Retrieve Part properties for ( ResponsePart part : parts ) { if ( part.getProperties() != null ) { HashMap<String,String> partProperties = (HashMap<String, String>) part.getProperties(); } 5.1.2 Batch-Async-Intermediate, Batch-Async-Delayed and Bulk-Async-Delayed In terms of API calls there is no difference between a batch-async-intermediate, batch-asyncdelayed and bulk-async-delayed interactions. 5.1.2.1 Request (One Way Push) The code sample below shows an example for packaging a batch request to lodge a CTR form with five IEE schedules. Steps 1-7 are same as for Single-Sync-Chatty requests as defined in the previous section. The only difference is to use the appropriate exchange profile file in step 2. Step 8: Create MIME part for the Batch request. There should be only one attachment in a bulk/batch request. As per ATO common MIG the individual XBRL documents should be packaged together in the single attachment with a ‘record delimiter’ (a.k.a. ‘metadata tag’) inserted before each document. The record delimiter contains information similar to the PartProperties sections within the ebMS3 header. See ATO Common MIG for more details on packaging batch/bulk requests. UNCLASSIFIED VERSION 1.3 PAGE 50 OF 113 SDK DEVELOPER GUIDE SBR ebMS3 STATUS: Final VERSION 1.3 The embeddable client API doesn’t provide any support for constructing batch/bulk attachment payload and it is expected that the BMS will provide a correctly formatted bulk/batch payload using individual XBRL documents (with Record delimiter tags inserted in between). The MIME part creation involves following steps: a) Part Creation // Create a MIME part RequestPart attachmentPart = requestUserMessage.createPart(); The createPart() method will create a new part for use in the requestUserMessage. b) Set Content Type // Set Content Type attachmentPart.setContentType("text/xml"); The set ContentType will set the type of content in the MIME part. c) Set PayloadInfo header values Set values for the eb:PayloadInfo section in ebMS header, see ATO Common MIG for more details on eb:PayloadInfo // Set PayloadInfo header values attachmentPart.setContentID("cid:ctr_0023"); The signatures for these methods are explained below: Operation Parameter Parameter Value Type setContentID String cid:{Attachment Filename} {Attachment Filename} must be unique amongst the Payload Parts within the Message Package d) Set PartProperties header values Set values for the eb:PartProperties section in ebMS header, see ATO Common MIG for more details on eb:PartProperties // Set PartProperties header values attachmentPart.setProperty("PartID", "ctr-base-2014-with-iee"); attachmentPart.setProperty("DocumentName", "CTR"); attachmentPart.setProperty("DocumentType", "Base"); The setProperty() method takes as input String Name/Value pairs. Name Value PartID Unique identifier within this message for this payload part (which will allow the BMS to match a payload part specific response with UNCLASSIFIED VERSION 1.3 PAGE 51 OF 113 SDK DEVELOPER GUIDE SBR ebMS3 VERSION 1.3 STATUS: Final the corresponding request payload part). DocumentName Set to the "Business Name" of the type of document contained in the MIME Part. e.g. in case of ATO as the relevant agency, CTR or "NIPSS". DocumentType Describes the message packaging used to transport the business document/s. Set to "Base" if this Property is for a Base form. Set to "Schedule" if this Property is for a Schedule to a Base form. e) Load Part Content Load the actual content into the MIME part; this is done via loading the packaged bulk/batch payload in a FileInputStream // Load Part Content FileInputStream attachmentFileInputStream FileInputStream("[PATH_TO_THE_PACKAGED_PAYLOAD"); = new attachmentPart.setInputStream(attachmentFileInputStream); f) Add Part to the RequestUserMessage Add the MIME Part into the user message // Add Part to the userMessage requestUserMessage.addAttachmentPart(attachmentPart); Step 8: Sign the message using the AUS key. This is done by passing the PrivateKey and CertificateChain to the embeddable client API. // Sign the Message request.setSigningCertificate( privateKey,certificateChain ) ); new KeyStore.PrivateKeyEntry( (PrivateKey) The PrivateKey and CertificateChain can be loaded using the ABR AUSKey Manager. For further details please see SBR SDK User Guide Java Identity Management Client. Step 9: Send the message // Send Message request.send(); Invoking the send() method on request object will send the ebMS request. This method will return a Response object on successful submission and an AS4ClientException if unable to read or send the packaged Bulk/Batch payload. Step 10: The response returned in case of one-way-push request is an ebMS3 receipt containing a signal message with non-repudiation information. 5.1.2.2 Response (One Way Pull) UNCLASSIFIED VERSION 1.3 PAGE 52 OF 113 SDK DEVELOPER GUIDE SBR ebMS3 VERSION 1.3 STATUS: Final The code sample below shows an example for packaging a one way pull request to asynchronously retrieve the response for batch/bulk invocation. Steps 1-3 are identical to the request flow with only difference being the use of appropriate exchange profile in step 2. Step 4: Retrieve the ebMS signal message from ebMS request created in previous step. // Retrieve the SignalMessage element from the ebMS3 request RequestSignalMessage requestSignalMessage = request.getSignalMessage(); The getSignalMessage() has following signature. Parameter Type Description requestSignalMessage Return An object of type RequestSignalMessage. Step 5: Set the SAML token in the wsse security header, see SBR WIG for details regarding SAML token. // Set Request SAML Token requestSignalMessage.setSAMLToken("[Encrypted_Token_Retrieved_From_VanGuard]"); The setSAMLToken takes as input a String value which will be the encrypted SAML token obtained from Vanguard. Step 6: Retrieve the PullRequest element from the signal message and set the selective pulling criteria. // Retrieve the PullRequest and set selective pulling criteria requestMessage.getSignalMessage().getPullRequest().setRefToMessageId(messageId); The setRefToMessageId() has following signature. Parameter Type Description setRefToMessageId String The ebms message id for the request submitted in the One Way Push (request) flow for this invocation. Step 7: Sign the message using the AUS key. This is done by passing the PrivateKey and CertificateChain to the embeddable client API. // Sign the Message request.setSigningCertificate( privateKey,certificateChain ) ); new KeyStore.PrivateKeyEntry( (PrivateKey) The PrivateKey and CertificateChain can be loaded using the ABR AUSKey Manager. For further details please see SBR SDK User Guide Java Identity Management Client. Step 8: Send the pull request message // Send Message Response response = request.send(); UNCLASSIFIED VERSION 1.3 PAGE 53 OF 113 SDK DEVELOPER GUIDE SBR ebMS3 STATUS: Final VERSION 1.3 Invoking the send() method on request object will send the ebMS request. This method will return a Response object on successful submission and an AS4ClientException if unable to read or send input MIME part XBL documents. Step 9: The response message should contain a user message. The next step is to retrieve user message from the ebMS response. // Retrieve User Message ResponseUserMessage responseUserMessage = response.getUserMessage(); Step 10: Check if the message has any message properties, and retrieve these. // Retrieve Message Properties if ( responseUserMessage.getMessageProperties() != null ) { HashMap<String,String> userMessageProperties = (HashMap<String, String>)responseUserMessage.getMessageProperties(); } The getMessageProperties() will return a map having a name/value pair for each message property. Step 11: As per the response packaging structure discussed in ATO Common MIG, batch/bulk requests will always have two MIME parts. The first MIME part will contain the soap envelope with ebMS3 headers and an empty soap body and the second MIME part will contain single attachment. // Retrieve Message Attachments ResponsePart[] parts = responseUserMessage.getAttachments(); The getAttachments() method will return the second MIME part as instance of ResponsePart. Step 12: Retrieve the content for ResponsePart // Save Attachments Content int i = 0; byte[] buffer = new byte[1024]; int n; String responseAttachmentFilename = "response-attachment" + ".dat"; FileOutputStream responseAttachmentFileStream = new FileOutputStream( responseAttachmentFilename, false ); while ( ( n = parts.get(0).getInputStream().read( buffer ) ) > 0 ) { responseAttachmentFileStream.write( buffer, 0, n ); } The above code snippet will write the single MIME part to a file. Alternatively, the BMS can read the contents for the MIME part. The embeddable client API doesn’t provide any support for processing the response attachment. It is left for the BMS to process this response as per the rules stated in ATO Common MIG. Please refer to ATO Common MIG to see how the bulk/batch response attachment will be structured. The response MIME part properties can also be retrieved using the below code snippet UNCLASSIFIED VERSION 1.3 PAGE 54 OF 113 SDK DEVELOPER GUIDE SBR ebMS3 STATUS: Final VERSION 1.3 // Retrieve Part properties if ( parts.get(0).getProperties() != null ) { HashMap<String,String> partProperties = (HashMap<String, String>) parts.get(0).getProperties(); 5.1.3 ELS Requests 5.1.3.1 Request Flow As described in ATO Common MIG, the ELS requests for prior year returns will be packaged as a batch request. The code sample below shows an example for packaging an ELS request. Steps 1-4 are same as for Single-Sync-Chatty requests as defined in the section 5.1.1.1Error! Reference source not found.. The only difference is to use the appropriate exchange profile file in step 2. Step 5: Populate the eb:CollaborationInfo header, see SBR Common MIG for details regarding ebMS headers and values. // Set ebMS3 header values for the CollaborationInfo node // Set Action Name requestUserMessage.setActionName("lodge"); // Set Service Name requestUserMessage.setServiceName("ELStagFormat"); // Set conversation ID requestUserMessage.setConversationId(GLOBALY_UNIQUE_IDENTIFIER); Steps 6-7 are same as for Single-Sync-Chatty requests as defined in section 5.1.1.1. Step 8: Create MIME part for the ELS Batch request. As described in ATO Common MIG the ELS requests will have only one attachment in the ELS transmission format (zip file with TXID and return files). The MIME part creation involves following steps: a) Part Creation // Create a MIME part RequestPart attachmentPart = requestUserMessage.createPart(); The createPart() method will create a new part for use in the requestUserMessage. b) Set Content Type // Set Content Type attachmentPart.setContentType("application/zip"); The set ContentType will set the type of content in the MIME part. UNCLASSIFIED VERSION 1.3 PAGE 55 OF 113 SDK DEVELOPER GUIDE SBR ebMS3 VERSION 1.3 STATUS: Final c) Set PayloadInfo header values Set values for the eb:PayloadInfo section in ebMS header, see ATO Common MIG for more details on eb:PayloadInfo // Set PayloadInfo header values attachmentPart.setContentID("cid:els_prior_year"); The signatures for these methods are explained below: Operation Parameter Parameter Value Type setContentID String cid:{Attachment Filename} {Attachment Filename} must be unique amongst the Payload Parts within the Message Package d) Set PartProperties header values Set values for the eb:PartProperties section in ebMS header, see ATO Common MIG for more details on eb:PartProperties // Set PartProperties header values attachmentPart.setProperty("PartID", "els_prior_year"); attachmentPart.setProperty("DocumentName", "ELS_PRIOR_YEAR"); attachmentPart.setProperty("DocumentType", "ELS_PRIOR_YEAR"); attachmentPart.setProperty("ELS Approval Number ", "53465"); The setProperty() method takes as input String Name/Value pairs. As per ATO Common MIG the property “ELS Approval Number” is a 5 digit number, please see ATO Common MIG for details. e) Load Part Content Load the actual content into the MIME part; this is done via loading the packaged ELS payload in a FileInputStream // Load Part Content FileInputStream attachmentFileInputStream FileInputStream("[PATH_TO_THE_PACKAGED_PAYLOAD"); = new attachmentPart.setInputStream(attachmentFileInputStream); f) Add Part to the RequestUserMessage Add the MIME Part into the user message // Add Part to the userMessage requestUserMessage.addAttachmentPart(attachmentPart); The remaining steps 8-10 are same as for other Batch requests (section 5.1.2.1). 5.1.3.2 Response Flow UNCLASSIFIED VERSION 1.3 PAGE 56 OF 113 SDK DEVELOPER GUIDE SBR ebMS3 STATUS: Final VERSION 1.3 The response flow for ELS requests is similar to other (non-ELS) batch requests. All the steps listed in section 5.1.2.2 apply for ELS response flow. 5.1.4 Single-Async-Chatty 5.1.4.1 Request For Single-Async-Chatty the request flow is identical to Single-Sync-Chatty. All the steps listed in Section 5.1.1.1 apply to Single-Async-Chatty for sending a CTR form with one IEE schedule. The only difference is to use the appropriate exchange profile file in step 2. 5.1.4.2 Response The code sample below shows an example for retrieving response payload for a Single-AsyncChatty request (CTR base form and one schedule). Step 1: The first step is to create a response object and use it to receive ebMS response // Send Message Response pushResponse = request.send(); Step 2: For Single-Async-Chatty invocations the response to a user message will be an ebMS3 signal message. This message will be used to retrieve a subsequent pull request. // Retrieve Follow up pull request Request pullRequest = pushResponse.followUp(); The BMS must wait for at least the specified SLA response time for the service-action being invoked before polling for the response message. If a pull request is sent prior to the response being available, SBR ebMS3 will return an ebMS3 error with error code EBMS:0006 and description “EmptyMessagePartitionChannel”. Step 3: Send the pull request message // Send Message Response response = pullRequest.send(); Invoking the send() method on request object will send the ebMS request. This method will return a Response object on successful submission and an AS4ClientException if unable to read or send input MIME part XBL documents. In terms of API invocation, the handling of pull response is identical to how Single-Sync-Chatty responses are handled. Steps 2-5 in section 5.1.1.1 are therefore used to handle the response. 5.2 .NET API This section provides code samples to invoke embeddable client .NET API for the message exchange patterns (MEP) supported by SBR. 5.2.1 Single-Sync-Chatty 5.2.1.1 Request The code sample below shows an example for the steps required to package the Single-SyncChatty requests. The example shows packaging of a CTR form with one IEE schedule. UNCLASSIFIED VERSION 1.3 PAGE 57 OF 113 SDK DEVELOPER GUIDE SBR ebMS3 STATUS: Final VERSION 1.3 Step 1: Get an instance of the AS4Client, using the AS4ClientFactory which is the entry point for AS4 client development. // Create AS4Client Instance AS4Client client = AS4ClientFactory.getClient(configDir, mainKeyStorePassphrase, auditDir); dataDir, The getClient() method has following signature: Parameter Type Description configDir Input String representing the location for the configuration directory. dataDir Input String representing the location for the data directory. mainKeyStorePassPhrase Input String representing the pass phrase for the embeddable client’s main key store. Please note that mainkeystore is different from and should not be confused with the AUSKey keystore which will contain the sender’s AUSKey. auditDir Input String representing the location for the audit directory. AS4Client Return The method creates and returns the instance of AS4Client if necessary. If the method was previously created with same configuration directory, the previously returned object will be returned again. Step 2: Create an ebMS Profile object. // Retrieve profile information using the file name for the exchange profile Profile profile = client.getProfile(profileName); The getProfile() method has following signature. Parameter Type Description profileName Input String representing the name of the XML configuration file for the required exchange profile. The file name should be specified without the .xml extension. Profile Return The method will look for the input XML file under the config directory specified while creating the client object. If the file exists a Profile object will be created and returned based on the loaded configuration. Step 3: Create an instance of the request object // Create an instance of ebMS3 request using the Profile Object Request request = client.createRequest(profile); The createRequest method has following signature. UNCLASSIFIED VERSION 1.3 PAGE 58 OF 113 SDK DEVELOPER GUIDE SBR ebMS3 STATUS: Final VERSION 1.3 Parameter Type Description Profile Input Profile object created in step 2. Request Return An object of type Request. Throws AS4ClientException, if the profile is not previously loaded in the client using the getProfile() method. Step 4: Retrieve the ebMS user message from ebMS request created in previous step. // Retrieve the UserMessage element from the ebMS3 request RequestUserMessage requestUserMessage = request.getUserMessage(); The getUserMessage() has following signature. Parameter Type Description requestUserMessage Return An object of type RequestUserMessage. Step 5: Populate the eb:CollaborationInfo header, see ATO Common MIG for details regarding ebMS headers and values. // Set ebMS3 header values for the CollaborationInfo node // Set Action Name requestUserMessage.setActionName ("Submit.005.00"); // Set Service Name requestUserMessage.setService ("http://sbr.gov.au/ato/ctr/2014",null); // Set conversation ID requestUserMessage.setConversationId (GLOBALY_UNIQUE_IDENTIFIER); The signature for these methods is explained below: Operation Parameter Parameter Value Type setActionName string Set to one of [List, Get, Validate, Lodge] concatenated with "Action.nnn.nn" where: nnn.nn is the version number of the ATO interaction (Service-Action) that is sought to be invoked by the BMS. setService string Form or business obligation name. setService string Service type, should be null as currently this is not used by SBR setConversationID string Set to value generated by BMS which must be a unique Sequence Number within the User organisation submitting the request identified by the PartyId UNCLASSIFIED VERSION 1.3 PAGE 59 OF 113 SDK DEVELOPER GUIDE SBR ebMS3 STATUS: Final VERSION 1.3 Step 6: Populate the eb:MessageProperties header, see ATO Common MIG for details regarding ebMS headers and values. // Set ebMS3 header values for the MessageProperties Node // Set Product ID requestUserMessage.setMessageProperty ("ProductID", "BMS-1"); // Set BMS Vendor requestUserMessage.setMessageProperty ("BMS Vendor", "XYZ"); // Set BMS Name requestUserMessage.setMessageProperty ("BMS Name", "XYZ BMS"); // Set BMS Version requestUserMessage.setMessageProperty ("BMS Version", "05.00.01"); // Optionally for Online Service Provider scenario set Software Subscription ID requestUserMessage.setMessageProperty("SoftwareSubscriptionId", "0120520319"); The above methods will take as input Name/Value pairs which are string values. Step 7: Set the SAML token in the wsse security header, see SBR ebMS3 WIG for details regarding SAML token. // Set Request SAML Token requestUserMessage.setSAMLToken ("[Encrypted_Token_Retrieved_From_VanGuard]"); The setSAMLToken takes as input a String value which will be the encrypted SAML token obtained from Vanguard. This will be the SecuirtyToken.AssertionAsString attribute in ABR Security Token Manager API. Step 8: Create MIME part for the CTR base form, see ATO Common MIG for more details on packaging Single-Sync-Chatty requests. The creation of XBRL document is out of the scope of this developer guide and it assumes that XBRL documents for CTR base form and IEE schedule are available as separate .XML files. The MIME part creation involves following steps: a) Part Creation // Create a MIME part RequestPart attachmentPart = requestUserMessage.createPart(); The createPart() method will create a new part for use in the requestUserMessage. b) Set Content Type // Set Content Type attachmentPart.setContentType("text/xml"); The set ContentType will set the type of content in the MIME part. UNCLASSIFIED VERSION 1.3 PAGE 60 OF 113 SDK DEVELOPER GUIDE SBR ebMS3 STATUS: Final VERSION 1.3 c) Set PayloadInfo header values Set values for the eb:PayloadInfo section in ebMS header, see ATO Common MIG for more details on eb:PayloadInfo // Set PayloadInfo header values attachmentPart.setContentID("cid:ctr_0023"); The signatures for these methods are explained below: Operation Parameter Parameter Value Type setContentID string cid:{Attachment Filename} {Attachment Filename} must be unique amongst the Payload Parts within the Message Package d) Set PartProperties header values Set values for the eb:PartProperties section in ebMS header, see section 4.3.5 in the SBR ebMS3 WIG for more details on eb:PartProperties // Set PartProperties header values attachmentPart.setProperty("PartID", "ctr-base-2014"); attachmentPart.setProperty("DocumentName", "CTR"); attachmentPart.setProperty("DocumentType", "Base"); The setProperty() method takes as input String Name/Value pairs. Name Value PartID Unique identifier within this message for this payload part (which will allow the BMS to match a payload part specific response with the corresponding request payload part). DocumentName Set to the "Business Name" of the type of document contained in the MIME Part. e.g. in case of ATO as the relevant agency, CTR or "NIPSS". DocumentType Set to "Base" if this Property is for a Base form. Set to "Schedule" if this Property is for a Schedule to a Base form. e) Load Part Content Load the actual content into the MIME part; this is done by passing a string representing the path to XBRL document to the setInputFile method: // Load Part Content attachmentPart.setInputFile("[PATH_TO_THE_XBRL_FILE"); f) Add Part to the RequestUserMessage Add the MIME Part into the user message UNCLASSIFIED VERSION 1.3 PAGE 61 OF 113 SDK DEVELOPER GUIDE SBR ebMS3 STATUS: Final VERSION 1.3 // Add Part to the userMessage requestUserMessage.addAttachmentPart(attachmentPart); Step 8: Add IEE schedule // Add CTR Schedule # 1 attachmentPart = requestUserMessage.createPart(); attachmentPart.setContentID("cid:ctr_0012_iee"); attachmentPart.setContentType("text/xml"); attachmentPart.setProperty("PartID", "ctr-iee-1"); attachmentPart.setProperty("DocumentName", "IEE"); attachmentPart.setProperty("DocumentType", "Schedule"); attachmentPart.setInputFile("[PATH_TO_XBRL_CONTENT”"); requestUserMessage.addAttachmentPart(attachmentPart); The above code is similar to what is explained in Step 7. The only difference being the values for different properties. Step 9: Sign the message using the AUS key. This is done by passing the P12 byte array, certificate alias corresponding to the private key entry in the byte array and keystore passowrd to setSigningCertificate method. This P12 byte array byte Array will contain the cryptographic details for the sender’s private key including the certificate chain. This can be retrieved by calling the AbrKeyStore.GetPrivateKeyAsP12ByteArray method in the ABR AUSkey Manager (IMClient Keystore API). For further details please see SBRA .NET Client SDK Developer Guide. // Sign the Message byte[] certBytes = keystore.GetPrivateKeyAsP12ByteArray(certAlias, keystorePassword); request.setSigningCertificate(certBytes, certAlias, keystorePassword); Step 10: The final step is to send the message // Send Message request.send(); Invoking the send() method on request object will send the ebMS request. This method will return a Response object on successful submission and an AS4ClientException if unable to read or send input MIME part XBL documents. 5.2.1.2 Response The code sample below shows an example for retrieving response payload for a Single-SyncChatty request (CTR base form and one IEE schedule). Step 1: Retrieve the response object and use it to receive ebMS response // Send Message Response response = request.send(); UNCLASSIFIED VERSION 1.3 PAGE 62 OF 113 SDK DEVELOPER GUIDE SBR ebMS3 STATUS: Final VERSION 1.3 Step 2: For single-sync-chatty scenarios the response message should contain a user message. The next step is to retrieve user message from the ebMS response. // Retrieve User Message ResponseUserMessage responseUserMessage = response.getUserMessage(); Step 3: Check if the response user message has any message properties, and retrieve these. // Retrieve Message Properties if ( responseUserMessage.getMessageProperties() != null ) { Dictionary<String,String> userMessageProperties = (Dictionary<String, String>)responseUserMessage.getMessageProperties(); } The getMessageProperties() will return a Dictionary having a name/value pair for each message property. Step 4: Retrieve response MIME parts. As per the response packaging structure discussed in ATO Common MIG, a CTR request with one schedule will result in a response having three MIME parts in addition to the main MIME part encapsulating the SOAP envelope. // Retrieve Message Attachments List<ResponsePart> parts = responseUserMessage.getAttachments(); The getAttachments() method will return the additional MIME parts as instances of ResponsePart. These MIME parts are structured as: Order Description First MIME part Overall Event Message: Contains Request Level validation responses or errors and other backend errors. Second MIME part Consolidated validation responses for base form and any schedules. Step 5: Retrieve the content for each ResponsePart // Save Attachments Content int i = 0; foreach (ResponsePart part in parts) { String responseAttachmentFilename = "response-attachment-" + ++i + ".dat"; part.writeToFile(responseAttachmentFilename); } The above code snippet will write each MIME part to a separate file. Alternatively, the BMS can read the contents for each MIME part to read the event message or business response and perform any logic accordingly. UNCLASSIFIED VERSION 1.3 PAGE 63 OF 113 SDK DEVELOPER GUIDE SBR ebMS3 STATUS: Final VERSION 1.3 The response MIME part properties can also be retrieved using the below code snippet // Retrieve Part properties if ( part.getProperties() != null ) { Dictionary<String,String> partProperties = (Dictionary<String, String>)aprt.getProperties(); } 5.2.2 Batch-Async-Intermediate, Batch-Async-Delayed and Bulk-Async-Delayed In terms of API calls there is no difference between a batch-async-intermediate, batch-asyncdelayed and bulk-async-delayed interactions. 5.2.2.1 Request (One Way Push) The code sample below shows an example for packaging a batch request to lodge a CTR form with five IEE schedules. Steps 1-7 are same as for Single-Sync-Chatty requests as defined in the previous section. Step 8: Create MIME part for the Batch request. There should be only one attachment in a bulk/batch request. As per ATO Common MIG the individual XBRL documents should be packaged together in the single attachment with a ‘record delimiter’ (a.k.a. ‘metadata tag’) inserted before each document. The record delimiter contains information similar to the PartProperties sections within the ebMS3 header. See ATO Common MIG for more details on packaging batch/bulk requests. The embeddable client API doesn’t provide any support for constructing batch/bulk attachment payload and it is expected that the BMS will provide a correctly formatted bulk/batch payload using individual XBRL documents (with Record delimiter tags inserted in between). The MIME part creation involves following steps: a) Part Creation // Create a MIME part RequestPart attachmentPart = requestUserMessage.createPart(); The createPart() method will create a new part for use in the requestUserMessage. b) Set Content Type // Set Content Type attachmentPart.setContentType("text/xml"); The set ContentType will set the type of content in the MIME part. c) Set PayloadInfo header values Set values for the eb:PayloadInfo section in ebMS header, see ATO Common MIG for more details on eb:PayloadInfo // Set PayloadInfo header values attachmentPart.setContentID("cid:ctr_0023"); The signatures for these methods are explained below: UNCLASSIFIED VERSION 1.3 PAGE 64 OF 113 SDK DEVELOPER GUIDE SBR ebMS3 STATUS: Final Operation Parameter Parameter Value Type setContentID String VERSION 1.3 cid:{Attachment Filename} {Attachment Filename} must be unique amongst the Payload Parts within the Message Package. d) Set PartProperties header values Set values for the eb:PartProperties section in ebMS header, see ATO Common MIG for more details on eb:PartProperties // Set PartProperties header values attachmentPart.setProperty("PartID", "ctr-base-2014-with-iee"); attachmentPart.setProperty("DocumentName", "CTR"); attachmentPart.setProperty("DocumentType", "Base"); The setProperty() method takes as input String Name/Value pairs. Name Value PartID Unique identifier within this message for this payload part (which will allow the BMS to match a payload part specific response with the corresponding request payload part). DocumentName Set to the "Business Name" of the type of document contained in the MIME Part. e.g. in case of ATO as the relevant agency, CTR or "NIPSS". DocumentType Describes the message packaging used to transport the business document/s. Set to "Base" if this Property is for a Base form. Set to "Schedule" if this Property is for a Schedule to a Base form. e) Load Part Content Load the actual content into the MIME part; this is done by passing a string representing the path to XBRL document to the setInputFile method: // Load Part Content attachmentPart.setInputFile("[PATH_TO_THE_XBRL_FILE"); f) Add Part to the RequestUserMessage Add the MIME Part into the user message // Add Part to the userMessage requestUserMessage.addAttachmentPart(attachmentPart); Step 8: Sign the message using the AUS key. This is done by passing the P12 byte array, certificate alias corresponding to the private key entry in the byte array and keystore passowrd to setSigningCertificate method. This P12 byte array byte Array will contain the cryptographic details for the sender’s private key including the certificate chain. This can be retrieved by calling the AbrKeyStore.GetPrivateKeyAsP12ByteArray method in the ABR AUSkey Manager UNCLASSIFIED VERSION 1.3 PAGE 65 OF 113 SDK DEVELOPER GUIDE SBR ebMS3 STATUS: Final VERSION 1.3 (IMClient Keystore API). For further details please see SBRA .NET Client SDK Developer Guide. // Sign the Message byte[] certBytes = keystore.GetPrivateKeyAsP12ByteArray(certAlias, keystorePassword); request.setSigningCertificate(certBytes, certAlias, keystorePassword); Step 9: Send the message // Send Message request.send(); Invoking the send() method on request object will send the ebMS request. This method will return a Response object on successful submission and an AS4ClientException if unable to read or send the packaged Bulk/Batch payload. Step 10: The response returned in case of one-way-push request is an ebMS3 receipt containing a signal message with non-repudiation information. 5.2.2.2 Response (One Way Pull) The code sample below shows an example for packaging a one way pull request to asynchronously retrieve the response for batch/bulk invocation. Steps 1-3 are identical to the request flow with only difference being the use of appropriate exchange profile in step 2. Step 4: Retrieve the ebMS signal message from ebMS request created in previous step. // Retrieve the SignalMessage element from the ebMS3 request RequestSignalMessage requestSignalMessage = request.getSignalMessage(); The getSignalMessage() has following signature. Parameter Type Description requestSignalMessage Return An object of type RequestSignalMessage. Step 5: Set the SAML token in the wsse security header, see SBR 2 WIG for details regarding SAML token. // Set Request SAML Token requestSignalMessage.setSAMLToken ("[Encrypted_Token_Retrieved_From_VanGuard]"); The setSAMLToken takes as input a String value which will be the encrypted SAML token obtained from Vanguard. This will be the SecuirtyToken.AssertionAsString attribute in ABR Security Token Manager API. Step 6: Retrieve the PullRequest element from the signal message and set the selective pulling criteria. // Retrieve the PullRequest and set selective pulling criteria requestMessage.getSignalMessage().getPullRequest().setRefToMessageId(messageId); UNCLASSIFIED VERSION 1.3 PAGE 66 OF 113 SDK DEVELOPER GUIDE SBR ebMS3 STATUS: Final VERSION 1.3 The setRefToMessageId() has following signature. Parameter Type Description setRefToMessageId String The ebms message id for the request submitted in the One Way Push (request) flow for this invocation. Step 7: Sign the message using the AUS key. This is done by passing the P12 byte array, certificate alias corresponding to the private key entry in the byte array and keystore passowrd to setSigningCertificate method. This P12 byte array byte Array will contain the cryptographic details for the sender’s private key including the certificate chain. This can be retrieved by calling the AbrKeyStore.GetPrivateKeyAsP12ByteArray method in the ABR AUSkey Manager (IMClient Keystore API). For further details please see SBRA .NET Client SDK Developer Guide. // Sign the Message byte[] certBytes = keystore.GetPrivateKeyAsP12ByteArray(certAlias, keystorePassword); request.setSigningCertificate(certBytes, certAlias, keystorePassword); Step 8: Send the pull request message // Send Message Response response = request.send(); Invoking the send() method on request object will send the ebMS request. This method will return a Response object on successful submission and an AS4ClientException if unable to read or send input MIME part XBL documents. Step 9: The response message should contain a user message. The next step is to retrieve user message from the ebMS response. // Retrieve User Message ResponseUserMessage responseUserMessage = response.getUserMessage(); Step 10: Check if the response user message has any message properties, and retrieve these. // Retrieve Message Properties if ( responseUserMessage.getMessageProperties() != null ) { Dictionary<String,String> userMessageProperties = (Dictionary<String, String>)responseUserMessage.getMessageProperties(); } The getMessageProperties() will return a Dictionary having a name/value pair for each message property. Step 11: As per the response packaging structure discussed in ATO Common MIG, batch/bulk requests will always have two MIME parts. The first MIME part will contain the soap envelope UNCLASSIFIED VERSION 1.3 PAGE 67 OF 113 SDK DEVELOPER GUIDE SBR ebMS3 STATUS: Final VERSION 1.3 with ebMS3 headers and an empty soap body and the second MIME part will contain single attachment. // Retrieve Message Attachments ResponsePart[] parts = responseUserMessage.getAttachments(); The getAttachments() method will return the second MIME part as instance of ResponsePart. Step 12: Retrieve the content for ResponsePart // Save Attachments Content int i = 0; foreach (ResponsePart part in parts) { String responseAttachmentFilename = "response-attachment-" + ++i + ".dat"; part.writeToFile(responseAttachmentFilename); } The above code snippet will write the single MIME part to a file. Alternatively, the BMS can read the contents for the MIME part. The embeddable client API doesn’t provide any support for processing the response attachment. It is left for the BMS to process this response as per the rules stated in ATO Common MIG. Please refer to ATO Common MIG to see how the bulk/batch response attachment will be structured. The response MIME part properties can also be retrieved using the below code snippet // Retrieve Part properties if ( part.getProperties() != null ) { Dictionary<String,String> partProperties = (Dictionary<String, String>)aprt.getProperties(); } 5.2.3 ELS Requests 5.2.3.1 Request Flow As described in ATO Common MIG, the ELS requests for prior year returns will be packaged as a batch request. The code sample below shows an example for packaging an ELS request. Steps 1-4 are same as for Single-Sync-Chatty requests as defined in the section 5.2.1.1. The only difference is to use the appropriate exchange profile file in step 2. Step 5: Populate the eb:CollaborationInfo header, see SBR Common MIG for details regarding ebMS headers and values. // Set ebMS3 header values for the CollaborationInfo node // Set Action Name requestUserMessage.setActionName("lodge"); // Set Service Name UNCLASSIFIED VERSION 1.3 PAGE 68 OF 113 SDK DEVELOPER GUIDE SBR ebMS3 STATUS: Final VERSION 1.3 requestUserMessage.setServiceName("ELStagFormat"); // Set conversation ID requestUserMessage.setConversationId(GLOBALY_UNIQUE_IDENTIFIER); Steps 6-7 are same as for Single-Sync-Chatty requests as defined in the section 5.2.1.1. Step 8: Create MIME part for the ELS Batch request. As described in ATO common MIG the ELS requests will have only one attachment in the ELS transmission format (zip file with TXID and return files). The MIME part creation involves following steps: a) Part Creation // Create a MIME part RequestPart attachmentPart = requestUserMessage.createPart(); The createPart() method will create a new part for use in the requestUserMessage. b) Set Content Type // Set Content Type attachmentPart.setContentType("application/zip"); The set ContentType will set the type of content in the MIME part. c) Set PayloadInfo header values Set values for the eb:PayloadInfo section in ebMS header, see ATO Common MIG for more details on eb:PayloadInfo // Set PayloadInfo header values attachmentPart.setContentID("cid:els_prior_year"); The signatures for these methods are explained below: Operation Parameter Parameter Value Type setContentID String cid:{Attachment Filename} {Attachment Filename} must be unique amongst the Payload Parts within the Message Package. d) Set PartProperties header values Set values for the eb:PartProperties section in ebMS header, see ATO Common MIG for more details on eb:PartProperties // Set PartProperties header values attachmentPart.setProperty("PartID", "els_prior_year"); attachmentPart.setProperty("DocumentName", "ELS_PRIOR_YEAR"); attachmentPart.setProperty("DocumentType", "ELS_PRIOR_YEAR"); UNCLASSIFIED VERSION 1.3 PAGE 69 OF 113 SDK DEVELOPER GUIDE SBR ebMS3 STATUS: Final VERSION 1.3 attachmentPart.setProperty("ELS Approval Number ", "53465"); The setProperty() method takes as input String Name/Value pairs. As per ATO Common MIG the property “ELS Approval Number” is a 5 digit number, please see ATO Common MIG for details. e) Load Part Content Load the actual content into the MIME part; this is done by passing a string representing the path to XBRL document to the setInputFile method: // Load Part Content attachmentPart.setInputFile("[PATH_TO_THE_XBRL_FILE"); f) Add Part to the RequestUserMessage Add the MIME Part into the user message // Add Part to the userMessage requestUserMessage.addAttachmentPart(attachmentPart); The remaining steps 8-10 are same as for other Batch requests (section 5.2.2.1). 5.2.3.2 Response Flow The response flow for ELS requests is similar to other (non-ELS) batch requests. All the steps listed in section 5.2.2.2 apply for ELS response flow. 5.2.4 Single-Async-Chatty 5.2.4.1 Request For Single-Async-Chatty the request flow is identical to Single-Sync-Chatty. All the steps listed in Section 5.2.1 apply to Single-Async-Chatty for sending a CTR form with one IEE schedule. The only difference is to use the appropriate exchange profile file in step 2. 5.2.4.2 Response The code sample below shows an example for retrieving response payload for a Single-AsyncChatty request (CTR base form and one schedule). Step 1: The first step is to create a response object and use it to receive ebMS response // Send Message Response pushResponse = request.Send(); Step 2: For Single-Async-Chatty invocations the response to a user message will be an ebMS3 signal message. This message will be used to retrieve a subsequent pull request. // Retrieve Follow up pull request Request pullRequest = pushResponse.FollowUp(); UNCLASSIFIED VERSION 1.3 PAGE 70 OF 113 SDK DEVELOPER GUIDE SBR ebMS3 STATUS: Final VERSION 1.3 The BMS must wait for at least the specified SLA response time for the service-action being invoked before polling for the response message. If a pull request is sent prior to the response being available, SBR ebMS3 will return an ebMS3 error with error code EBMS:0006 and description “EmptyMessagePartitionChannel”. Step 3: Send the pull request message // Send Message Response response = pullRequest.Send(); Invoking the send() method on request object will send the ebMS request. This method will return a Response object on successful submission and an AS4ClientException if unable to read or send input MIME part XBL documents. In terms of API invocation, the handling of pull response is identical to how Single-Sync-Chatty responses are handled. Steps 2-5 in section 5.2.1.2 are therefore used to handle the response. 5.3 HTTP Request/Response Samples This section provides raw HTTP request and response messages for different invocation types supported by SBR ebMS3. The XBRL data in these forms has been obfuscated as the purpose is to show the usage of ebMS3 header. Note: in the samples below the message properties MSHIdentity, VendorVersion, Vendor, IBMMEIGClientVersion, IBMMEIGClient and MSHVersion are specific to IBM ebMS3 Embeddable client. These are implicitly generated by the embeddable client (values for these properties can be changed via the Client.peroperties file in the config folder) but are not used by the SBR ebMS3 platform. SWDs building their own MSH should not add these properties and should align with SBR ebMS3 Web Services Implemenatation Guide section 3.3.4. 5.3.1 Singe-Sync-Chatty 5.3.1.1 Request Figure 12 shows on the wire data for a Single-Sync-Chatty request having a CTR base form with one IEE schedule. POST /services/Single-sync HTTP/1.1 Transfer-Encoding: chunked Host: test.ato.sbr.gov.au:443 Content-Type: multipart/related; boundary="----=_Part_0_-1103602072.1407382197573"; start="<ffc67b92-9448-4131-8dba-b3ae8bfbec5d@ATODE-EDG7CAWHJ>"; type="application/soap+xml"; action=Submit.005.00 ------=_Part_0_-1103602072.1407382197573 Content-Type: application/soap+xml Content-Transfer-Encoding: 8bit Content-ID: <ffc67b92-9448-4131-8dba-b3ae8bfbec5d@ATODE-EDG7CAWHJ> <?xml version="1.0" encoding="utf-8"?> <soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope"> <soapenv:Header> <eb:Messaging xmlns:eb="http://docs.oasis-open.org/ebxmlmsg/ebms/v3.0/ns/core/200704/" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis200401-wss-wssecurity-utility-1.0.xsd" soapenv:mustUnderstand="true" wsu:Id="soapheader1"> <ns2:UserMessage xmlns:ns2="http://docs.oasis-open.org/ebxmlmsg/ebms/v3.0/ns/core/200704/"> <ns2:MessageInfo> <ns2:Timestamp>2014-08- UNCLASSIFIED VERSION 1.3 PAGE 71 OF 113 SDK DEVELOPER GUIDE SBR ebMS3 STATUS: Final VERSION 1.3 07T03:29:56.819Z</ns2:Timestamp> <ns2:MessageId>A1407382195316.794492cb-e22a-48ac-98abbfee2b5dea60@1407382195316</ns2:MessageId> </ns2:MessageInfo> <ns2:PartyInfo> <ns2:From> <ns2:PartyId type="http://ato.gov.au/PartyIdType/TAN">11110000</ns2:PartyId> <ns2:Role>http://sbr.gov.au/ato/Role/Registered Agent</ns2:Role> </ns2:From> <ns2:To> <ns2:PartyId type="http://abr.gov.au/PartyIdType/ABN">51824753556</ns2:PartyId> <ns2:Role>http://sbr.gov.au/agency</ns2:Role> </ns2:To> </ns2:PartyInfo> <ns2:CollaborationInfo> <eb:AgreementRef>http://sbr.gov.au/agreement/Gateway/1.0/TwoWaySync/PKI</eb:Agreem entRef> <ns2:Service>http://sbr.gov.au/ato/ctr/2014</ns2:Service> <ns2:Action>Submit.005.00</ns2:Action> <ns2:ConversationId>19305c21-2140-4c48-ab5a851d76ccc34b</ns2:ConversationId> </ns2:CollaborationInfo> <ns2:MessageProperties> <ns2:Property name="MSHIdentity">IBM ebMS/AS4 Client</ns2:Property> <ns2:Property name="VendorVersion">1.0.0.3</ns2:Property> <ns2:Property name="Vendor">Sample</ns2:Property> <ns2:Property name="IBMMEIGClientVersion">1.0.0.3</ns2:Property> <ns2:Property name="BMS\ Name">TESTBMS</ns2:Property> <ns2:Property name="ProductID">1</ns2:Property> <ns2:Property name="IBMMEIGClient">true</ns2:Property> <ns2:Property name="BMS\ Vendor">XYZ</ns2:Property> <ns2:Property name="MSHVersion">1.0.0.2</ns2:Property> <ns2:Property name="BMS\ Version">05.00.01</ns2:Property> </ns2:MessageProperties> <ns2:PayloadInfo> <ns2:PartInfo href="cid:Attachment1"> <ns2:Schema/> <ns2:PartProperties> <ns2:Property name="DocumentName">CTR</ns2:Property> <ns2:Property name="PartID">1</ns2:Property> <ns2:Property name="DocumentType">Base</ns2:Property> <ns2:Property name="MimeType">text/xml</ns2:Property> <ns2:Property name="filename">Part1</ns2:Property> <ns2:Property name="CompressionType">application/gzip</ns2:Property> </ns2:PartProperties> </ns2:PartInfo> <ns2:PartInfo href="cid:Attachment2"> <ns2:Schema/> <ns2:PartProperties> UNCLASSIFIED VERSION 1.3 PAGE 72 OF 113 SDK DEVELOPER GUIDE SBR ebMS3 STATUS: Final VERSION 1.3 <ns2:Property name="DocumentName">IEE</ns2:Property> <ns2:Property name="PartID">2</ns2:Property> <ns2:Property name="DocumentType">SCHEDULE</ns2:Property> <ns2:Property name="MimeType">text/xml</ns2:Property> <ns2:Property name="filename">Part1</ns2:Property> <ns2:Property name="CompressionType">application/gzip</ns2:Property> </ns2:PartProperties> </ns2:PartInfo> </ns2:PayloadInfo> </ns2:UserMessage> </eb:Messaging> <wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis200401-wss-wssecurity-secext-1.0.xsd" soapenv:mustUnderstand="true"> <saml2:EncryptedAssertion xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion" xmlns:wsu="http://docs.oasisopen.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="soapheader-2"> <xenc:EncryptedData xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" Type="http://www.w3.org/2001/04/xmlenc#Element"> <xenc:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes128-cbc"/> <dsig:KeyInfo xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"> <xenc:EncryptedKey Recipient="name:RelyingPartyTest-STS"> <xenc:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5"/> <dsig:KeyInfo> <o:SecurityTokenReference xmlns:o="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext1.0.xsd"> <X509Data xmlns="http://www.w3.org/2000/09/xmldsig#"> <X509IssuerSerial> <X509IssuerName>CN=RelyingParty-Test-STS, O=ATO, C=AU</X509IssuerName> <X509SerialNumber>1524265890</X509SerialNumber> </X509IssuerSerial> </X509Data> </o:SecurityTokenReference> </dsig:KeyInfo> <xenc:CipherData> <xenc:CipherValue>GPhD8yHfg7DYuKNsaeoYm1N+qfxAAfWvRJ5awg1BDRvArRhoS6syFv43Zz3DTA8y brwYzfC0knaS6V5j88Vd83lJFxbd7IyDmm6jLOiQbrLXU51heXm/zGQWDxfsPwKRxYpzd+6vwNc8E9NgcmeZo4mLA mQhit94hyL+oGDi/4U=</xenc:CipherValue> </xenc:CipherData> </xenc:EncryptedKey> </dsig:KeyInfo> <xenc:CipherData> <xenc:CipherValue>hav1RX9f+Y250vxtB96scvj4SN5Lfs2LaFdr+lwv89kN6lJjTfy3SU0oWqdlK8LY KiqKdtvvX/09ihezCgk7Gu8U92slVHh7BrStDkwbRCCcWveMOVw5Fiyoy2GemGyrPxNsaVh9WrvvhNI6pFU7OyvT3 n/uXHFvWPy2HZAKOw3DnToR0lyWI5L89FXJSqvzMbMy+NaObj8cYHpsSHnAHcB3em+0eTSxwud/s55sU0mOPsTfyG 0x49DXaYgPjKUR0xZSMXhq3D1mmDIKEAyUOAqk8Qv3IBhz5ThFUMYFYM8+m00R6r38hQ+6zO1OPvXNBA0CFqblnvP IVCdH/gtaulsHXOksJGJI+XMG8zY+MhWfuGwrVBC5mLSMXV3/X+vLjCyM0pdEb0C6ZA3FjflvGpip2atRBIQ7bL2W mr+/HEIriDxrsmXTltQNFfxviPO/n9dvKfWQ3273jKqwzxCq35cZng/UM/vV6MozmSAqfHO4LQR2P1r13zr6mdFXQ wiF9uKPfBlEWHdqiK9SQRVPaYYkwciYPlESO5aUf8PfCPMwRIJG8MfkLUseol564jYTveAl+1Ac3lUWxxlXaYRhg5 UNCLASSIFIED VERSION 1.3 PAGE 73 OF 113 SDK DEVELOPER GUIDE SBR ebMS3 STATUS: Final VERSION 1.3 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 UNCLASSIFIED VERSION 1.3 PAGE 74 OF 113 SDK DEVELOPER GUIDE SBR ebMS3 STATUS: Final VERSION 1.3 kPa3U+5fWnGD7t9d4VJEoiVayzBMBj4Wz28ASDXqY8IFS/UDewUvjCeMTnouITimqjKW2MDdKwQTF/myQ+KuqC4zv GtUCfiGELRvQOPMNNJHhOxSZwtEDfvjZt2ENDBM9IkLZuzqB/1aqhVQgFZ5qZTgssBtkGPSG1nXnQ2KU2xKgvST3d HOCBjK80NJCLRp6OYKdcB1L5E+O4ymG2/wDGi/ouEKQ03FIO48V3JwnuGkia6zHrXtf9e10cpQ/m96cnMvrEYPJJU IlMv4t6bJZ35fGGoDiOBHHnx9HqIdDPBgcatIh7IH/LdLar1nxfvUSS6Tr56x9r0P+C4NUpMQWuHVvcU168nlPqpF QV9yL4+nN8OxemLow4F78fZBb4MR95OXgE62L95b02kcY6aWPEqIbwFlaNZfuID7WhXbIuSh9IYIvzAneuyv0BTIY Qwmu9VZtXARNqQZjD12KGRXzl+x9glyMCPseP00D/gQwQNCklPKQYlH0ZKIAc3y8aQYkolacoCQMOHy9t1gDrPFgq FVG+j+y1/8GCPvvLh6ZNKixdzz5bpqdB+2cJD28LaI1QT6Btv5eCU2auQ4G1622bKcbjeNFPfF1n1JkbdngHd7rNY VrJ/5ztTCLFbrNEkmxYxL8XJKR02j/EjdyQhTgNwDX9J1bW6SHaxrFbcBkRIbeSThQg99PwfbtepmFWs8CIAfBSHF joVrToPV6MxsXWVCIHHLGO0l5sdPJoRTyNJqNZOmkF/jqSBHmxKKb6Nko8iNa79uLtJOtNpv3FElO8z06dQLGkliM Yzxa4Y3K2L3ZgdSb7jWBud9+n+4O+8NJHls/sKlY3SufcqF1sun/Po8WPvuK4CTlsXH+9XFzGwuKPApjhjoCBMsiG R7ct3dmb1bzwt1P/avIkru3sR0UAKAlAFsDXb6A3Nrft5UoJRtf3Tlh4n80X/bMFJsRPBWMWFN198xB/NTcc2dQFv 40CADP0NCP6eVlh1On3HeO7kYLGZB2F31WSuR/9c1qg2ChZquPDwrRSQ14zmvsfrP1JaW9Ua7gNPEk62kRBz4egM0 kycP3JTONL1d6SuAKKKRjzo6UNsc9HFRF/myYyQ3wmmB2VHAweW1CQpufA/TM26W7H3lx00YS8Wfp/dMr4HsSzZVU N13TXU/m1Ebp</xenc:CipherValue> </xenc:CipherData> </xenc:EncryptedData> </saml2:EncryptedAssertion> <wsse:BinarySecurityToken xmlns:wsu="http://docs.oasisopen.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-messagesecurity-1.0#Base64Binary" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis200401-wss-x509-token-profile-1.0#X509v3" wsu:Id="signingCert">MIIEGDCCAwCgAwIBAgIDAhK+MA0GCSqGSIb3DQEBBQUAMIGFMQswCQYDVQQGEwJBVTEl MCMGA1UEChMcQXVzdHJhbGlhbiBCdXNpbmVzcyBSZWdpc3RlcjEgMB4GA1UECxMXQ2VydGlmaWNhdGlvbiBBdXRob 3JpdHkxLTArBgNVBAMTJFRlc3QgQXVzdHJhbGlhbiBCdXNpbmVzcyBSZWdpc3RlciBDQTAeFw0xMzA1MDcwNDQ0NT FaFw0xNTA1MDcwNDQ0NTFaMEwxETAPBgNVBC4TCDI0NDQyMjIyMQswCQYDVQQGEwJBVTEUMBIGA1UEChMLNzgzMzA zNDc1MjkxFDASBgNVBAMTC0FsYW4gRG9uYWxkMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCxtCGPfqSVN1T7 G0cEClI3M7B8FR/MrIw8ka9WTRFvPxTIh0AwImHDU5ZTm2V7frCneIhoc386R+M7z4R0LxELoUjUsl9MgECkTtVDA Gj7bPo7X4yVr590LOLSUkpiETsVtpj8FHf2BKsppdxiLu1CwhTWmWogz8WkGbxfCT6OmQIDAQABo4IBSzCCAUcwDA YDVR0TAQH/BAIwADCB7AYDVR0gBIHkMIHhMIHeBgkqJAGXOWUBBwEwgdAwga4GCCsGAQUFBwICMIGhGoGeVGhpcyB jZXJ0aWZpY2F0ZSBtYXkgb25seSBiZSB1c2VkIGZvciB0aGUgcHVycG9zZSBwZXJtaXR0ZWQgaW4gdGhlIGFwcGxp Y2FibGUgQ2VydGlmaWNhdGUgUG9saWN5LiBMaW1pdGVkIGxpYWJpbGl0eSBhcHBsaWVzIC0gcmVmZXIgdG8gdGhlI ENlcnRpZmljYXRlIFBvbGljeS4wHQYIKwYBBQUHAgEWEXd3dy50ZXN0YWJyY2EuY29tMBcGBiokAYJNAQQNFgs3OD MzMDM0NzUyOTAOBgNVHQ8BAf8EBAMCBPAwHwYDVR0jBBgwFoAUjSUnvF+gmnHnk3f5sBliLJl2Wv0wDQYJKoZIhvc NAQEFBQADggEBAEMAIl3Y3uZoTmXCX1hrcAPL2/WMBJGIOfBK197V0s6QsOlHMYVpqWHn7Ad9eyB53x4n+QhoXSEJ NbC2zVolVgOpdPY5PsfIEbcD8xLWYxpof6GeAa+iFrBmUCYQ0EXq6GMuZ617xOHeXwou1pkejVyTKgGNZSbGrN+yg tVJVtIELC3/NLFZggV21i7tdntMvLWO07jQHzSsoqZnDr174c4l1u7jpmvvscS5gwbWALzQE/7uY/wWdOzhkCRyoQ G1+5gC/Vvu/WornvKbn17sYjxhIb8OS13F2dqOqi2iS3ZBgHjN/iTQs7F58wDRr4cCSSqKZGm0dT5qVC3RpD1aMLg =</wsse:BinarySecurityToken> <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> <ds:SignedInfo> <ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> <ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/> <ds:Reference URI="#soapheader-1"> <ds:Transforms> <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> </ds:Transforms> <ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <ds:DigestValue>UMk8la3sNWTdA+zxJjL02ExIN0VXUe3OSZnCINER8ZY=</ds:DigestValue> </ds:Reference> <ds:Reference URI="#soapheader-2"> <ds:Transforms> <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> </ds:Transforms> <ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <ds:DigestValue>aKEMRTGQz+Xl3YsRAkMTrubkOYYHyNdMFdfUhWyRXZE=</ds:DigestValue> </ds:Reference> UNCLASSIFIED VERSION 1.3 PAGE 75 OF 113 SDK DEVELOPER GUIDE SBR ebMS3 STATUS: Final VERSION 1.3 <ds:Reference URI="#soapbody"> <ds:Transforms> <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> </ds:Transforms> <ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <ds:DigestValue>MuXTb3M4BFAClqp28AnKQQJPuH1XxCZZle+49qRiZVk=</ds:DigestValue> </ds:Reference> <ds:Reference URI="cid:Attachment1"> <ds:Transforms> <ds:Transform Algorithm="http://docs.oasis-open.org/wss/oasis-wss-SwAProfile-1.1#Attachment-ContentSignature-Transform"/> </ds:Transforms> <ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <ds:DigestValue>dhE9oDV6+6rt/HiMnd5O49CqLDIkMDaqNO0Tie/uKvo=</ds:DigestValue> </ds:Reference> <ds:Reference URI="cid:Attachment2"> <ds:Transforms> <ds:Transform Algorithm="http://docs.oasis-open.org/wss/oasis-wss-SwAProfile-1.1#Attachment-ContentSignature-Transform"/> </ds:Transforms> <ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <ds:DigestValue>afPM6rAL71Kv4ineZQ8scpUOaEK1Puekx4S4shsatAo=</ds:DigestValue> </ds:Reference> </ds:SignedInfo> <ds:SignatureValue> kZZTT89dRhErd72/iRJtatqJEH4eZM/OunXDjAkmdylnGU8zQ4LJFAMkz7cvDuIxMwqqD7Q9Ffdi nCyxj5lm8MFfJZ0tvxVN5rAwr//Z6YUwverZZV6MzSmT0NFPvIFHAakBpug9XB70KN493ZWWNaeJ bKujprPU1rfSB1zm/k8= </ds:SignatureValue> <ds:KeyInfo Id="KeyId-DC89E59EB81911A19514073821973821"> <wsse:SecurityTokenReference xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility1.0.xsd" wsu:Id="STRId-DC89E59EB81911A19514073821973852"> <wsse:Reference URI="#signingCert" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile1.0#X509v3"/> </wsse:SecurityTokenReference> </ds:KeyInfo> </ds:Signature> </wsse:Security> </soapenv:Header> <soapenv:Body xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wsswssecurity-utility-1.0.xsd" wsu:Id="soapbody"/> </soapenv:Envelope> ------=_Part_0_-1103602072.1407382197573 Content-Type: application/gzip Content-Transfer-Encoding: binary Content-Disposition: attachment; filename="Part1" Content-ID: <Attachment1> [COMPRESSED_BINARY_CTR_FORM] ------=_Part_0_-1103602072.1407382197573 Content-Type: application/gzip Content-Transfer-Encoding: binary Content-Disposition: attachment; filename="Part1" Content-ID: <Attachment2> UNCLASSIFIED VERSION 1.3 PAGE 76 OF 113 SDK DEVELOPER GUIDE SBR ebMS3 STATUS: Final VERSION 1.3 [COMPRESSED_BINARY_IEE_SCHEDULE] ------=_Part_0_-1103602072.1407382197573-- Figure 12: On the wire sample for Single-Sync-Chatty Request 5.3.1.2 Response Figure 13 shows on the wire data for the response to the Single-Sync-Chatty request shown in Figure 12. Transfer-Encoding: chunked Date: Thu, 7 Aug 2014 03:30:45 Connection: Close Content-Type: multipart/related; boundary="_=05508400645498346IBM05508400645498346MOKO"; type="application/soap+xml"; start=51589140-c4e2-43eb-b479-c32cf5a50072; charset=UTF-8; action="urn:DefaultAS4InAxisServiceOperationResponse" Cache-Control: private --_=05508400645498346IBM05508400645498346MOKO Content-Transfer-Encoding: 8bit Content-ID: 51589140-c4e2-43eb-b479-c32cf5a50072 Content-Type: application/soap+xml; charset=UTF-8 <?xml version="1.0" encoding="utf-8"?> <soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope"> <soapenv:Header xmlns:wsa="http://www.w3.org/2005/08/addressing"> <eb:Messaging xmlns:eb="http://docs.oasis-open.org/ebxmlmsg/ebms/v3.0/ns/core/200704/" soapenv:mustUnderstand="true"> <ns2:UserMessage xmlns:ns2="http://docs.oasis-open.org/ebxmlmsg/ebms/v3.0/ns/core/200704/"> <ns2:MessageInfo> <ns2:Timestamp>2014-0807T03:30:45.622Z</ns2:Timestamp> <ns2:MessageId>2f6b0afe-0eda-4147-a0af3de5166ddbea@1407382245622</ns2:MessageId> <ns2:RefToMessageId>A1407382195316.794492cb-e22a-48ac98ab-bfee2b5dea60@1407382195316</ns2:RefToMessageId> </ns2:MessageInfo> <ns2:PartyInfo> <ns2:From> <ns2:PartyId type="http://abr.gov.au/PartyIdType/ABN">51824753556</ns2:PartyId> <ns2:Role>http://sbr.gov.au/agency</ns2:Role> </ns2:From> <ns2:To> <ns2:PartyId type="http://ato.gov.au/PartyIdType/TAN">11110000</ns2:PartyId> <ns2:Role>http://sbr.gov.au/ato/Role/Registered Agent</ns2:Role> </ns2:To> </ns2:PartyInfo> <ns2:CollaborationInfo> <eb:AgreementRef>http://sbr.gov.au/agreement/Gateway/1.0/TwoWaySync/PKI</eb:Agreem entRef> <ns2:Service>http://sbr.gov.au/ato/ctr/2014</ns2:Service> <ns2:Action>Submit.005.00</ns2:Action> <ns2:ConversationId>19305c21-2140-4c48-ab5a851d76ccc34b</ns2:ConversationId> </ns2:CollaborationInfo> <ns2:MessageProperties> <ns2:Property name="MSHIdentity">IBM ebMS/AS4 Client</ns2:Property> UNCLASSIFIED VERSION 1.3 PAGE 77 OF 113 SDK DEVELOPER GUIDE SBR ebMS3 STATUS: Final VERSION 1.3 <ns2:Property name="VendorVersion">1.0.0.3</ns2:Property> <ns2:Property name="Vendor">Sample</ns2:Property> <ns2:Property name="BMS\ Name">TESTBMS</ns2:Property> <ns2:Property name="IBMMEIGClientVersion">1.0.0.3</ns2:Property> <ns2:Property name="ProductID">1</ns2:Property> <ns2:Property name="BMS\ Vendor">XYZ</ns2:Property> <ns2:Property name="IBMMEIGClient">true</ns2:Property> <ns2:Property name="BMS\ Version">05.00.01</ns2:Property> <ns2:Property name="MSHVersion">1.0.0.2</ns2:Property> <ns2:Property name="DistinguishedNames">CN=XXXX XXXXXX, O=XXXXXXXXXXX, C=AU, DNQUALIFIER=XXXXXXX</ns2:Property> <ns2:Property name="ABN">XXXXXXXXXXX</ns2:Property> </ns2:MessageProperties> <ns2:PayloadInfo> <ns2:PartInfo href="cid:AttachmentEventSummaryBlock"> <ns2:PartProperties> <ns2:Property name="MimeType">text/xml</ns2:Property> <ns2:Property name="filename">OverallEventMessage</ns2:Property> </ns2:PartProperties> </ns2:PartInfo> <ns2:PartInfo href="cid:BaseEventMessage"> <ns2:Property name="MimeType">text/xml</ns2:Property> <ns2:Property name="filename">BaseEventMessage</ns2:Property> </ns2:PartProperties> </ns2:PartInfo> </ns2:PayloadInfo> </ns2:UserMessage> </eb:Messaging> <wsa:Action>urn:DefaultAS4InAxisServiceOperationResponse</wsa:Action> </soapenv:Header> <soapenv:Body/> </soapenv:Envelope> --_=05508400645498346IBM05508400645498346MOKO Content-Transfer-Encoding: binary Content-ID: <AttachmentEventSummaryBlock> Content-Type: text/xml <?xml version="1.0" encoding="UTF-8"?> <Event xmlns="http://sbr.com.au/comn/event.02.data"> <MaximumSeverity.Code/> <EventItems> <EventItem> <Error.Code>SBR.GEN.INFO.1</Error.Code> <Severity.Code>Information</Severity.Code> <Short.Description>Transmission successful</Short.Description> </EventItem> <EventItem> <Error.Code>SBR.GEN.INFO.2</Error.Code> <Severity.Code>Information</Severity.Code> <Short.Description>Total number of transactions in the transmission is {number}</Short.Description> <Parameters> <Parameter> <Parameter.Identifier>number</Parameter.Identifier> <Parameter.Text>1</Parameter.Text> </Parameter> </Parameters> </EventItem> <EventItem> UNCLASSIFIED VERSION 1.3 PAGE 78 OF 113 SDK DEVELOPER GUIDE SBR ebMS3 STATUS: Final VERSION 1.3 <Error.Code>SBR.GEN.INFO.3</Error.Code> <Severity.Code>Information</Severity.Code> <Short.Description>Processing completion indicator is {indicator}</Short.Description> <Parameters> <Parameter> <Parameter.Identifier>indicator</Parameter.Identifier> <Parameter.Text>TRUE</Parameter.Text> </Parameter> </Parameters> </EventItem> <EventItem> <Error.Code>SBR.GEN.INFO.4</Error.Code> <Severity.Code>Information</Severity.Code> <Short.Description>Number of transactions passed authorisation check is {number}</Short.Description> <Parameters> <Parameter> <Parameter.Identifier>number</Parameter.Identifier> <Parameter.Text>1</Parameter.Text> </Parameter> </Parameters> </EventItem> <EventItem> <Error.Code>SBR.GEN.INFO.5</Error.Code> <Severity.Code>Information</Severity.Code> <Short.Description>Number of transactions failed authorisation check is {number}</Short.Description> <Parameters> <Parameter> <Parameter.Identifier>number</Parameter.Identifier> <Parameter.Text>0</Parameter.Text> </Parameter> </Parameters> </EventItem> <EventItem> <Error.Code>SBR.GEN.INFO.6</Error.Code> <Severity.Code>Information</Severity.Code> <Short.Description>Number of transactions passed channel validation is {number}</Short.Description> <Parameters> <Parameter> <Parameter.Identifier>number</Parameter.Identifier> <Parameter.Text>1</Parameter.Text> </Parameter> </Parameters> </EventItem> <EventItem> <Error.Code>SBR.GEN.INFO.7</Error.Code> <Severity.Code>Information</Severity.Code> <Short.Description>Number of transactions failed channel validation is {number}</Short.Description> <Parameters> <Parameter> <Parameter.Identifier>number</Parameter.Identifier> <Parameter.Text>0</Parameter.Text> </Parameter> </Parameters> </EventItem> <EventItem> <Error.Code>SBR.GEN.INFO.8</Error.Code> <Severity.Code>Information</Severity.Code> <Short.Description>Number of transactions successfully processed by the backend is {number}</Short.Description> <Parameters> UNCLASSIFIED VERSION 1.3 PAGE 79 OF 113 SDK DEVELOPER GUIDE SBR ebMS3 STATUS: Final VERSION 1.3 <Parameter> <Parameter.Identifier>number</Parameter.Identifier> <Parameter.Text>1</Parameter.Text> </Parameter> </Parameters> </EventItem> <EventItem> <Error.Code>SBR.GEN.INFO.9</Error.Code> <Severity.Code>Information</Severity.Code> <Short.Description>Number of transactions failed the backend processing is {number}</Short.Description> <Parameters> <Parameter> <Parameter.Identifier>number</Parameter.Identifier> <Parameter.Text>0</Parameter.Text> </Parameter> </Parameters> </EventItem> <EventItem> <Error.Code>SBR.GEN.INFO.10</Error.Code> <Severity.Code>Error</Severity.Code> <Short.Description>Number of unexpected errors is {number}</Short.Description> <Parameters> <Parameter> <Parameter.Identifier>number</Parameter.Identifier> <Parameter.Text>0</Parameter.Text> </Parameter> </Parameters> </EventItem> </EventItems> </Event> --_=05508400645498346IBM05508400645498346MOKO Content-Transfer-Encoding: binary Content-ID: <BaseEventMessage> Content-Type: text/xml <?xml version="1.0" encoding="UTF-8"?> <tns:Event xmlns:tns="http://sbr.gov.au/comn/event.02.data"> <tns:MaximumSeverity.Code>Information</tns:MaximumSeverity.Code> <tns:EventItems> <tns:EventItem> <tns:Error.Code>CMN.ATO.GEN.OK</tns:Error.Code> <tns:Severity.Code>Information</tns:Severity.Code> <tns:Short.Description>Message accepted</tns:Short.Description> <tns:Locations> <tns:Location> <tns:Location.Instance.Identifier>1</tns:Location.Instance.Identifier> </tns:Location> </tns:Locations> </tns:EventItem> </tns:EventItems> </tns:Event> --_=05508400645498346IBM05508400645498346MOKO-- Figure 13: On the wire sample for Single-Sync-Chatty Response 5.3.2 Batch-Async The request is submitted asynchronously using the One-Way-Push MEP. 5.3.2.1 One-Way-Push UNCLASSIFIED VERSION 1.3 PAGE 80 OF 113 SDK DEVELOPER GUIDE SBR ebMS3 STATUS: Final VERSION 1.3 5.3.2.1.1 Request POST /services/BulkBatch-async-push HTTP/1.1 Transfer-Encoding: chunked Host: test.ato.sbr.gov.au:443 Content-Type: multipart/related; boundary="----=_Part_0_-1376531822.1407383196254"; start="<3b85bd14-a8dd-4529-90ea-432093f0734e@ATODE-EDG7CAWHJ>"; type="application/soap+xml"; action=Submit.005.00 ------=_Part_0_-1376531822.1407383196254 Content-Type: application/soap+xml Content-Transfer-Encoding: 8bit Content-ID: <3b85bd14-a8dd-4529-90ea-432093f0734e@ATODE-EDG7CAWHJ> <?xml version="1.0" encoding="utf-8"?> <soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope"> <soapenv:Header> <eb:Messaging xmlns:eb="http://docs.oasis-open.org/ebxmlmsg/ebms/v3.0/ns/core/200704/" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis200401-wss-wssecurity-utility-1.0.xsd" soapenv:mustUnderstand="true" wsu:Id="soapheader1"> <ns2:UserMessage xmlns:ns2="http://docs.oasis-open.org/ebxmlmsg/ebms/v3.0/ns/core/200704/"> <ns2:MessageInfo> <ns2:Timestamp>2014-0807T03:46:35.500Z</ns2:Timestamp> <ns2:MessageId>A1407383194018.daf88baf-b128-4702-b4fe54a19788ad45@1407383194018</ns2:MessageId> </ns2:MessageInfo> <ns2:PartyInfo> <ns2:From> <ns2:PartyId type="http://ato.gov.au/PartyIdType/TAN">11110000</ns2:PartyId> <ns2:Role>http://sbr.gov.au/ato/Role/Registered Agent</ns2:Role> </ns2:From> <ns2:To> <ns2:PartyId type="http://abr.gov.au/PartyIdType/ABN">51824753556</ns2:PartyId> <ns2:Role>http://sbr.gov.au/agency</ns2:Role> </ns2:To> </ns2:PartyInfo> <ns2:CollaborationInfo> <eb:AgreementRef>http://sbr.gov.au/agreement/Gateway/1.0/Push/PKI</eb:AgreementRef > <ns2:Service>http://sbr.gov.au/ato/ctr/2014</ns2:Service> <ns2:Action>Submit.005.00</ns2:Action> <ns2:ConversationId>c222a97d-055e-4a07-944568bfcefa3b98</ns2:ConversationId> </ns2:CollaborationInfo> <ns2:MessageProperties> <ns2:Property name="MSHIdentity">IBM ebMS/AS4 Client</ns2:Property> <ns2:Property name="VendorVersion">1.0.0.3</ns2:Property> <ns2:Property name="Vendor">Sample</ns2:Property> <ns2:Property name="IBMMEIGClientVersion">1.0.0.3</ns2:Property> <ns2:Property name="BMS\ Name">TESTBMS</ns2:Property> <ns2:Property name="ProductID">1</ns2:Property> <ns2:Property name="IBMMEIGClient">true</ns2:Property> <ns2:Property name="BMS\ Vendor">XYZ</ns2:Property> <ns2:Property name="MSHVersion">1.0.0.2</ns2:Property> <ns2:Property name="BMS\ UNCLASSIFIED VERSION 1.3 PAGE 81 OF 113 SDK DEVELOPER GUIDE SBR ebMS3 STATUS: Final VERSION 1.3 Version">05.00.01</ns2:Property> </ns2:MessageProperties> <ns2:PayloadInfo> <ns2:PartInfo href="cid:Attachment1"> <ns2:Schema/> <ns2:PartProperties> <ns2:Property name="DocumentName">CTR</ns2:Property> <ns2:Property name="PartID">1</ns2:Property> <ns2:Property name="DocumentType">Base</ns2:Property> <ns2:Property name="MimeType">text/xml</ns2:Property> <ns2:Property name="filename">Part1</ns2:Property> <ns2:Property name="CompressionType">application/gzip</ns2:Property> </ns2:PartProperties> </ns2:PartInfo> </ns2:PayloadInfo> </ns2:UserMessage> </eb:Messaging> <wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasisopen.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" soapenv:mustUnderstand="true" soapenv:role="ebms" wsu:Id="soapheader-2"> <saml2:EncryptedAssertion xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion"> <xenc:EncryptedData xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" Type="http://www.w3.org/2001/04/xmlenc#Element"> <xenc:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes128-cbc"/> <dsig:KeyInfo xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"> <xenc:EncryptedKey Recipient="name:RelyingPartyTest-STS"> <xenc:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5"/> <dsig:KeyInfo> <o:SecurityTokenReference xmlns:o="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext1.0.xsd"> <X509Data xmlns="http://www.w3.org/2000/09/xmldsig#"> <X509IssuerSerial> <X509IssuerName>CN=RelyingParty-Test-STS, O=ATO, C=AU</X509IssuerName> <X509SerialNumber>1524265890</X509SerialNumber> </X509IssuerSerial> </X509Data> </o:SecurityTokenReference> </dsig:KeyInfo> <xenc:CipherData> <xenc:CipherValue>GPhD8yHfg7DYuKNsaeoYm1N+qfxAAfWvRJ5awg1BDRvArRhoS6syFv43Zz3DTA8y brwYzfC0knaS6V5j88Vd83lJFxbd7IyDmm6jLOiQbrLXU51heXm/zGQWDxfsPwKRxYpzd+6vwNc8E9NgcmeZo4mLA mQhit94hyL+oGDi/4U=</xenc:CipherValue> </xenc:CipherData> </xenc:EncryptedKey> </dsig:KeyInfo> <xenc:CipherData> UNCLASSIFIED VERSION 1.3 PAGE 82 OF 113 SDK DEVELOPER GUIDE SBR ebMS3 STATUS: Final VERSION 1.3 <xenc:CipherValue>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 UNCLASSIFIED VERSION 1.3 PAGE 83 OF 113 SDK DEVELOPER GUIDE SBR ebMS3 STATUS: Final VERSION 1.3 7UVmfExuvrE/FhfpjeeH1RxAs5tKQsEzu8lakqcsU4fL314rrFQRINxrqbyJcnB+5Mcj+ifUdVaQMYeehtWsxDuCP y739Q5GXyM2nJpP85rRb+TR42yzsCPzJ/b1qw2rLW75DXl8DeZco036hpM3/4/w+keCz8ITBalMAZucxGAbIBBedc ohbtFdm3FCdTrJSZ6pFFZeS5kn4s2sVQ9RPayT/le48Bw/etbLr721UlfRtELtVh0rAHjRErvguZJ9UA0MA4qKAsI 2ALDESycTI5sbh9lWcOSl1J4b4KfMZS72hRfjdt9K/hpqm329zlvzc+UBKX9y3hHNpmJ2zPuoKW64ngrR4t+tdoWU HDCAJSTjxKrEJPR+cDdz/afrjS/eua/IVo0ecc/xVRDLdgrrDFKWZozUJOifrGJ6slS2hy6frlnK3inXvu5vhGLzq qhXtr/bxWDQHbAkujyIrxIkpcAWdcZ8A/M24ucmOUWIpqpSsi6ODPOYgsw3ao/LtwP8mMq/7G0J/+PbsVem3IlHn/ D3I7PF7GJ8s0+u5V/KpF1HpSKplDU8lvwV5YYZnBeoMljud7yIBX2JMSafrupNq2ULGZs6UIletDPKCP95t0VUaqA yBndUB4b8coGgt//hPAuDSeKS+AZ1LODIzQ+dOM7mCowL8Ywtdcctn89oVjoq0ge4j/MY+bT+PqTUG/DZripNgq3n kPa3U+5fWnGD7t9d4VJEoiVayzBMBj4Wz28ASDXqY8IFS/UDewUvjCeMTnouITimqjKW2MDdKwQTF/myQ+KuqC4zv GtUCfiGELRvQOPMNNJHhOxSZwtEDfvjZt2ENDBM9IkLZuzqB/1aqhVQgFZ5qZTgssBtkGPSG1nXnQ2KU2xKgvST3d HOCBjK80NJCLRp6OYKdcB1L5E+O4ymG2/wDGi/ouEKQ03FIO48V3JwnuGkia6zHrXtf9e10cpQ/m96cnMvrEYPJJU IlMv4t6bJZ35fGGoDiOBHHnx9HqIdDPBgcatIh7IH/LdLar1nxfvUSS6Tr56x9r0P+C4NUpMQWuHVvcU168nlPqpF QV9yL4+nN8OxemLow4F78fZBb4MR95OXgE62L95b02kcY6aWPEqIbwFlaNZfuID7WhXbIuSh9IYIvzAneuyv0BTIY Qwmu9VZtXARNqQZjD12KGRXzl+x9glyMCPseP00D/gQwQNCklPKQYlH0ZKIAc3y8aQYkolacoCQMOHy9t1gDrPFgq FVG+j+y1/8GCPvvLh6ZNKixdzz5bpqdB+2cJD28LaI1QT6Btv5eCU2auQ4G1622bKcbjeNFPfF1n1JkbdngHd7rNY VrJ/5ztTCLFbrNEkmxYxL8XJKR02j/EjdyQhTgNwDX9J1bW6SHaxrFbcBkRIbeSThQg99PwfbtepmFWs8CIAfBSHF joVrToPV6MxsXWVCIHHLGO0l5sdPJoRTyNJqNZOmkF/jqSBHmxKKb6Nko8iNa79uLtJOtNpv3FElO8z06dQLGkliM Yzxa4Y3K2L3ZgdSb7jWBud9+n+4O+8NJHls/sKlY3SufcqF1sun/Po8WPvuK4CTlsXH+9XFzGwuKPApjhjoCBMsiG R7ct3dmb1bzwt1P/avIkru3sR0UAKAlAFsDXb6A3Nrft5UoJRtf3Tlh4n80X/bMFJsRPBWMWFN198xB/NTcc2dQFv 40CADP0NCP6eVlh1On3HeO7kYLGZB2F31WSuR/9c1qg2ChZquPDwrRSQ14zmvsfrP1JaW9Ua7gNPEk62kRBz4egM0 kycP3JTONL1d6SuAKKKRjzo6UNsc9HFRF/myYyQ3wmmB2VHAweW1CQpufA/TM26W7H3lx00YS8Wfp/dMr4HsSzZVU N13TXU/m1Ebp</xenc:CipherValue> </xenc:CipherData> </xenc:EncryptedData> </saml2:EncryptedAssertion> </wsse:Security> <wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis200401-wss-wssecurity-secext-1.0.xsd" soapenv:mustUnderstand="true"> <wsse:BinarySecurityToken xmlns:wsu="http://docs.oasisopen.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-messagesecurity-1.0#Base64Binary" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis200401-wss-x509-token-profile-1.0#X509v3" wsu:Id="signingCert">MIIEGDCCAwCgAwIBAgIDAhK+MA0GCSqGSIb3DQEBBQUAMIGFMQswCQYDVQQGEwJBVTEl MCMGA1UEChMcQXVzdHJhbGlhbiBCdXNpbmVzcyBSZWdpc3RlcjEgMB4GA1UECxMXQ2VydGlmaWNhdGlvbiBBdXRob 3JpdHkxLTArBgNVBAMTJFRlc3QgQXVzdHJhbGlhbiBCdXNpbmVzcyBSZWdpc3RlciBDQTAeFw0xMzA1MDcwNDQ0NT FaFw0xNTA1MDcwNDQ0NTFaMEwxETAPBgNVBC4TCDI0NDQyMjIyMQswCQYDVQQGEwJBVTEUMBIGA1UEChMLNzgzMzA zNDc1MjkxFDASBgNVBAMTC0FsYW4gRG9uYWxkMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCxtCGPfqSVN1T7 G0cEClI3M7B8FR/MrIw8ka9WTRFvPxTIh0AwImHDU5ZTm2V7frCneIhoc386R+M7z4R0LxELoUjUsl9MgECkTtVDA Gj7bPo7X4yVr590LOLSUkpiETsVtpj8FHf2BKsppdxiLu1CwhTWmWogz8WkGbxfCT6OmQIDAQABo4IBSzCCAUcwDA YDVR0TAQH/BAIwADCB7AYDVR0gBIHkMIHhMIHeBgkqJAGXOWUBBwEwgdAwga4GCCsGAQUFBwICMIGhGoGeVGhpcyB jZXJ0aWZpY2F0ZSBtYXkgb25seSBiZSB1c2VkIGZvciB0aGUgcHVycG9zZSBwZXJtaXR0ZWQgaW4gdGhlIGFwcGxp Y2FibGUgQ2VydGlmaWNhdGUgUG9saWN5LiBMaW1pdGVkIGxpYWJpbGl0eSBhcHBsaWVzIC0gcmVmZXIgdG8gdGhlI ENlcnRpZmljYXRlIFBvbGljeS4wHQYIKwYBBQUHAgEWEXd3dy50ZXN0YWJyY2EuY29tMBcGBiokAYJNAQQNFgs3OD MzMDM0NzUyOTAOBgNVHQ8BAf8EBAMCBPAwHwYDVR0jBBgwFoAUjSUnvF+gmnHnk3f5sBliLJl2Wv0wDQYJKoZIhvc NAQEFBQADggEBAEMAIl3Y3uZoTmXCX1hrcAPL2/WMBJGIOfBK197V0s6QsOlHMYVpqWHn7Ad9eyB53x4n+QhoXSEJ NbC2zVolVgOpdPY5PsfIEbcD8xLWYxpof6GeAa+iFrBmUCYQ0EXq6GMuZ617xOHeXwou1pkejVyTKgGNZSbGrN+yg tVJVtIELC3/NLFZggV21i7tdntMvLWO07jQHzSsoqZnDr174c4l1u7jpmvvscS5gwbWALzQE/7uY/wWdOzhkCRyoQ G1+5gC/Vvu/WornvKbn17sYjxhIb8OS13F2dqOqi2iS3ZBgHjN/iTQs7F58wDRr4cCSSqKZGm0dT5qVC3RpD1aMLg =</wsse:BinarySecurityToken> <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> <ds:SignedInfo> <ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> <ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/> <ds:Reference URI="#soapheader-1"> <ds:Transforms> <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> </ds:Transforms> <ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <ds:DigestValue>6v3RBAu+1Zp6KnFmRbVuiXzgFMqFt//xvNNsyGBw2yI=</ds:DigestValue> UNCLASSIFIED VERSION 1.3 PAGE 84 OF 113 SDK DEVELOPER GUIDE SBR ebMS3 STATUS: Final VERSION 1.3 </ds:Reference> <ds:Reference URI="#soapheader-2"> <ds:Transforms> <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> </ds:Transforms> <ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <ds:DigestValue>aKEMRTGQz+Xl3YsRAkMTrubkOYYHyNdMFdfUhWyRXZE=</ds:DigestValue> </ds:Reference> <ds:Reference URI="#soapbody"> <ds:Transforms> <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> </ds:Transforms> <ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <ds:DigestValue>MuXTb3M4BFAClqp28AnKQQJPuH1XxCZZle+49qRiZVk=</ds:DigestValue> </ds:Reference> <ds:Reference URI="cid:Attachment1"> <ds:Transforms> <ds:Transform Algorithm="http://docs.oasis-open.org/wss/oasis-wss-SwAProfile-1.1#Attachment-ContentSignature-Transform"/> </ds:Transforms> <ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <ds:DigestValue>68Y6+b84jc3PLw5KAM7ElMzy0uM8YtNkWyP+kf6cPvE=</ds:DigestValue> </ds:Reference> </ds:SignedInfo> <ds:SignatureValue> XwRQDKxzz2wEKJFImEktQzR7KJLum2HFjZKQeJOu1pvorFoZ7h/cVlB2tDc52W4A5F2g3rbfabFX N4wnkHICtnS9H/3kKX0+s9+8AXgVG2Oi00ePohLPLVa5o7g7WhTrGs48rN+ZDJROxZKP8KlY9JSa +WfqL+JEDal4I00qsE8= </ds:SignatureValue> <ds:KeyInfo Id="KeyId-1167A721488C93C53714073831960981"> <wsse:SecurityTokenReference xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility1.0.xsd" wsu:Id="STRId-1167A721488C93C53714073831961022"> <wsse:Reference URI="#signingCert" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile1.0#X509v3"/> </wsse:SecurityTokenReference> </ds:KeyInfo> </ds:Signature> </wsse:Security> </soapenv:Header> <soapenv:Body xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wsswssecurity-utility-1.0.xsd" wsu:Id="soapbody"/> </soapenv:Envelope> ------=_Part_0_-1376531822.1407383196254 Content-Type: application/gzip Content-Transfer-Encoding: binary Content-Disposition: attachment; filename="Part1" Content-ID: <Attachment1> [COMPRESSED_BINARY_ATTACHMENT] ------=_Part_0_-1376531822.1407383196254-- Figure 14: On the wire sample for Batch-Async Request UNCLASSIFIED VERSION 1.3 PAGE 85 OF 113 SDK DEVELOPER GUIDE SBR ebMS3 STATUS: Final VERSION 1.3 5.3.2.1.2 Response Figure 15 shows on the wire data for a receipt received by the embeddable client from SBR ebMS3 on successful transmission of the one way push request. Transfer-Encoding: chunked Date: Thu, 7 Aug 2014 03:46:36 Connection: Close Content-Type: multipart/related; boundary="_=7158007444184931IBM7158007444184931MOKO"; type="application/soap+xml"; start=d9ecfda9-d54e-4bd9-8731-03823af2b647; charset=UTF8; action="urn:DefaultAS4InAxisServiceOperationResponse" Cache-Control: private --_=7158007444184931IBM7158007444184931MOKO Content-Transfer-Encoding: 8bit Content-ID: d9ecfda9-d54e-4bd9-8731-03823af2b647 Content-Type: application/soap+xml; charset=UTF-8 <?xml version="1.0" encoding="utf-8"?> <soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope"> <soapenv:Header xmlns:wsa="http://www.w3.org/2005/08/addressing"> <eb:Messaging xmlns:eb="http://docs.oasis-open.org/ebxmlmsg/ebms/v3.0/ns/core/200704/" soapenv:mustUnderstand="true"> <ns2:SignalMessage xmlns:ns2="http://docs.oasis-open.org/ebxmlmsg/ebms/v3.0/ns/core/200704/"> <ns2:MessageInfo> <ns2:Timestamp>2014-0807T03:46:36.736Z</ns2:Timestamp> <ns2:MessageId>5ef2ca77-cfd1-4d9f-91072046ef5c7a73@1407383196736</ns2:MessageId> <ns2:RefToMessageId>A1407383194018.daf88baf-b1284702-b4fe-54a19788ad45@1407383194018</ns2:RefToMessageId> </ns2:MessageInfo> <ns2:Receipt> <ns3:NonRepudiationInformation xmlns:ns3="http://docs.oasis-open.org/ebxml-bp/ebbp-signals-2.0"> <ns3:MessagePartNRInformation> <ns5:Reference xmlns:ns5="http://www.w3.org/2000/09/xmldsig#" URI="#soapheader-1"> <ns5:Transforms> <ns5:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> </ns5:Transforms> <ns5:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <ns5:DigestValue>6v3RBAu+1Zp6KnFmRbVuiXzgFMqFt//xvNNsyGBw2yI=</ns5:DigestValue> </ns5:Reference> </ns3:MessagePartNRInformation> <ns3:MessagePartNRInformation> <ns5:Reference xmlns:ns5="http://www.w3.org/2000/09/xmldsig#" URI="cid:Attachment1"> <ns5:Transforms> <ns5:Transform Algorithm="http://docs.oasis-open.org/wss/oasis-wss-SwAProfile-1.1#Attachment-ContentSignature-Transform"/> </ns5:Transforms> <ns5:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <ns5:DigestValue>68Y6+b84jc3PLw5KAM7ElMzy0uM8YtNkWyP+kf6cPvE=</ns5:DigestValue> </ns5:Reference> </ns3:MessagePartNRInformation> <ns3:MessagePartNRInformation> UNCLASSIFIED VERSION 1.3 PAGE 86 OF 113 SDK DEVELOPER GUIDE SBR ebMS3 STATUS: Final VERSION 1.3 <ns5:Reference xmlns:ns5="http://www.w3.org/2000/09/xmldsig#" URI="#soapbody"> <ns5:Transforms> <ns5:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> </ns5:Transforms> <ns5:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <ns5:DigestValue>MuXTb3M4BFAClqp28AnKQQJPuH1XxCZZle+49qRiZVk=</ns5:DigestValue> </ns5:Reference> </ns3:MessagePartNRInformation> <ns3:MessagePartNRInformation> <ns5:Reference xmlns:ns5="http://www.w3.org/2000/09/xmldsig#" URI="#soapheader-2"> <ns5:Transforms> <ns5:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> </ns5:Transforms> <ns5:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <ns5:DigestValue>aKEMRTGQz+Xl3YsRAkMTrubkOYYHyNdMFdfUhWyRXZE=</ns5:DigestValue> </ns5:Reference> </ns3:MessagePartNRInformation> </ns3:NonRepudiationInformation> </ns2:Receipt> </ns2:SignalMessage> </eb:Messaging> <wsa:Action>urn:DefaultAS4InAxisServiceOperationResponse</wsa:Action> </soapenv:Header> <soapenv:Body/> </soapenv:Envelope> --_=7158007444184931IBM7158007444184931MOKO-- Figure 15: On the wire sample for receipt to the one way push request 5.3.2.2 One-Way-Pull 5.3.2.2.1 Request In order to retrieve the response to a Batch/Bulk async request, the BMS will need to send a PULL request to SBR ebMS3. Figure 16 shows the sample on the wire data for a pull signal request submitted to retrieve the response for Batch-Async invocation. POST /services/BulkBatch-async-pull HTTP/1.1 Transfer-Encoding: chunked Host: test.ato.sbr.gov.au:443 Content-Type: multipart/related; boundary="----=_Part_0_-1207726601.1407383340640"; start="<81092aa3-98cb-43d2-a320-5f0dd71552a8@ATODE-EDG7CAWHJ>"; type="application/soap+xml" ------=_Part_0_-1207726601.1407383340640 Content-Type: application/soap+xml Content-Transfer-Encoding: 8bit Content-ID: <81092aa3-98cb-43d2-a320-5f0dd71552a8@ATODE-EDG7CAWHJ> <?xml version="1.0" encoding="utf-8"?> <soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope"> <soapenv:Header> <eb:Messaging xmlns:eb="http://docs.oasis-open.org/ebxmlmsg/ebms/v3.0/ns/core/200704/" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis200401-wss-wssecurity-utility-1.0.xsd" soapenv:mustUnderstand="true" wsu:Id="soapheader- UNCLASSIFIED VERSION 1.3 PAGE 87 OF 113 SDK DEVELOPER GUIDE SBR ebMS3 STATUS: Final VERSION 1.3 1"> <ns2:SignalMessage xmlns:ns2="http://docs.oasis-open.org/ebxmlmsg/ebms/v3.0/ns/core/200704/"> <ns2:MessageInfo> <ns2:Timestamp>2014-0807T03:48:59.889Z</ns2:Timestamp> <ns2:MessageId>A1407383338619.78f48cd8-2d0f-4934-a74ac4fc3117d78f@1407383338619</ns2:MessageId> <ns2:RefToMessageId>A1407383194018.daf88baf-b128-4702b4fe-54a19788ad45@1407383194018</ns2:RefToMessageId> </ns2:MessageInfo> <ns2:PullRequest> <ns2:RefToMessageId>A1407383194018.daf88baf-b128-4702b4fe-54a19788ad45@1407383194018</ns2:RefToMessageId> </ns2:PullRequest> </ns2:SignalMessage> </eb:Messaging> <wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis200401-wss-wssecurity-secext-1.0.xsd" soapenv:mustUnderstand="true"> <saml2:EncryptedAssertion xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion" xmlns:wsu="http://docs.oasisopen.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="soapheader-2"> <xenc:EncryptedData xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" Type="http://www.w3.org/2001/04/xmlenc#Element"> <xenc:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes128-cbc"/> <dsig:KeyInfo xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"> <xenc:EncryptedKey Recipient="name:RelyingPartyTest-STS"> <xenc:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5"/> <dsig:KeyInfo> <o:SecurityTokenReference xmlns:o="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext1.0.xsd"> <X509Data xmlns="http://www.w3.org/2000/09/xmldsig#"> <X509IssuerSerial> <X509IssuerName>CN=RelyingParty-Test-STS, O=ATO, C=AU</X509IssuerName> <X509SerialNumber>1524265890</X509SerialNumber> </X509IssuerSerial> </X509Data> </o:SecurityTokenReference> </dsig:KeyInfo> <xenc:CipherData> <xenc:CipherValue>GPhD8yHfg7DYuKNsaeoYm1N+qfxAAfWvRJ5awg1BDRvArRhoS6syFv43Zz3DTA8y brwYzfC0knaS6V5j88Vd83lJFxbd7IyDmm6jLOiQbrLXU51heXm/zGQWDxfsPwKRxYpzd+6vwNc8E9NgcmeZo4mLA mQhit94hyL+oGDi/4U=</xenc:CipherValue> </xenc:CipherData> </xenc:EncryptedKey> </dsig:KeyInfo> <xenc:CipherData> <xenc:CipherValue>hav1RX9f+Y250vxtB96scvj4SN5Lfs2LaFdr+lwv89kN6lJjTfy3SU0oWqdlK8LY KiqKdtvvX/09ihezCgk7Gu8U92slVHh7BrStDkwbRCCcWveMOVw5Fiyoy2GemGyrPxNsaVh9WrvvhNI6pFU7OyvT3 n/uXHFvWPy2HZAKOw3DnToR0lyWI5L89FXJSqvzMbMy+NaObj8cYHpsSHnAHcB3em+0eTSxwud/s55sU0mOPsTfyG 0x49DXaYgPjKUR0xZSMXhq3D1mmDIKEAyUOAqk8Qv3IBhz5ThFUMYFYM8+m00R6r38hQ+6zO1OPvXNBA0CFqblnvP IVCdH/gtaulsHXOksJGJI+XMG8zY+MhWfuGwrVBC5mLSMXV3/X+vLjCyM0pdEb0C6ZA3FjflvGpip2atRBIQ7bL2W mr+/HEIriDxrsmXTltQNFfxviPO/n9dvKfWQ3273jKqwzxCq35cZng/UM/vV6MozmSAqfHO4LQR2P1r13zr6mdFXQ wiF9uKPfBlEWHdqiK9SQRVPaYYkwciYPlESO5aUf8PfCPMwRIJG8MfkLUseol564jYTveAl+1Ac3lUWxxlXaYRhg5 UNCLASSIFIED VERSION 1.3 PAGE 88 OF 113 SDK DEVELOPER GUIDE SBR ebMS3 STATUS: Final VERSION 1.3 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 UNCLASSIFIED VERSION 1.3 PAGE 89 OF 113 SDK DEVELOPER GUIDE SBR ebMS3 STATUS: Final VERSION 1.3 kPa3U+5fWnGD7t9d4VJEoiVayzBMBj4Wz28ASDXqY8IFS/UDewUvjCeMTnouITimqjKW2MDdKwQTF/myQ+KuqC4zv GtUCfiGELRvQOPMNNJHhOxSZwtEDfvjZt2ENDBM9IkLZuzqB/1aqhVQgFZ5qZTgssBtkGPSG1nXnQ2KU2xKgvST3d HOCBjK80NJCLRp6OYKdcB1L5E+O4ymG2/wDGi/ouEKQ03FIO48V3JwnuGkia6zHrXtf9e10cpQ/m96cnMvrEYPJJU IlMv4t6bJZ35fGGoDiOBHHnx9HqIdDPBgcatIh7IH/LdLar1nxfvUSS6Tr56x9r0P+C4NUpMQWuHVvcU168nlPqpF QV9yL4+nN8OxemLow4F78fZBb4MR95OXgE62L95b02kcY6aWPEqIbwFlaNZfuID7WhXbIuSh9IYIvzAneuyv0BTIY Qwmu9VZtXARNqQZjD12KGRXzl+x9glyMCPseP00D/gQwQNCklPKQYlH0ZKIAc3y8aQYkolacoCQMOHy9t1gDrPFgq FVG+j+y1/8GCPvvLh6ZNKixdzz5bpqdB+2cJD28LaI1QT6Btv5eCU2auQ4G1622bKcbjeNFPfF1n1JkbdngHd7rNY VrJ/5ztTCLFbrNEkmxYxL8XJKR02j/EjdyQhTgNwDX9J1bW6SHaxrFbcBkRIbeSThQg99PwfbtepmFWs8CIAfBSHF joVrToPV6MxsXWVCIHHLGO0l5sdPJoRTyNJqNZOmkF/jqSBHmxKKb6Nko8iNa79uLtJOtNpv3FElO8z06dQLGkliM Yzxa4Y3K2L3ZgdSb7jWBud9+n+4O+8NJHls/sKlY3SufcqF1sun/Po8WPvuK4CTlsXH+9XFzGwuKPApjhjoCBMsiG R7ct3dmb1bzwt1P/avIkru3sR0UAKAlAFsDXb6A3Nrft5UoJRtf3Tlh4n80X/bMFJsRPBWMWFN198xB/NTcc2dQFv 40CADP0NCP6eVlh1On3HeO7kYLGZB2F31WSuR/9c1qg2ChZquPDwrRSQ14zmvsfrP1JaW9Ua7gNPEk62kRBz4egM0 kycP3JTONL1d6SuAKKKRjzo6UNsc9HFRF/myYyQ3wmmB2VHAweW1CQpufA/TM26W7H3lx00YS8Wfp/dMr4HsSzZVU N13TXU/m1Ebp</xenc:CipherValue> </xenc:CipherData> </xenc:EncryptedData> </saml2:EncryptedAssertion> <wsse:BinarySecurityToken xmlns:wsu="http://docs.oasisopen.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-messagesecurity-1.0#Base64Binary" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis200401-wss-x509-token-profile-1.0#X509v3" wsu:Id="signingCert">MIIEGDCCAwCgAwIBAgIDAhK+MA0GCSqGSIb3DQEBBQUAMIGFMQswCQYDVQQGEwJBVTEl MCMGA1UEChMcQXVzdHJhbGlhbiBCdXNpbmVzcyBSZWdpc3RlcjEgMB4GA1UECxMXQ2VydGlmaWNhdGlvbiBBdXRob 3JpdHkxLTArBgNVBAMTJFRlc3QgQXVzdHJhbGlhbiBCdXNpbmVzcyBSZWdpc3RlciBDQTAeFw0xMzA1MDcwNDQ0NT FaFw0xNTA1MDcwNDQ0NTFaMEwxETAPBgNVBC4TCDI0NDQyMjIyMQswCQYDVQQGEwJBVTEUMBIGA1UEChMLNzgzMzA zNDc1MjkxFDASBgNVBAMTC0FsYW4gRG9uYWxkMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCxtCGPfqSVN1T7 G0cEClI3M7B8FR/MrIw8ka9WTRFvPxTIh0AwImHDU5ZTm2V7frCneIhoc386R+M7z4R0LxELoUjUsl9MgECkTtVDA Gj7bPo7X4yVr590LOLSUkpiETsVtpj8FHf2BKsppdxiLu1CwhTWmWogz8WkGbxfCT6OmQIDAQABo4IBSzCCAUcwDA YDVR0TAQH/BAIwADCB7AYDVR0gBIHkMIHhMIHeBgkqJAGXOWUBBwEwgdAwga4GCCsGAQUFBwICMIGhGoGeVGhpcyB jZXJ0aWZpY2F0ZSBtYXkgb25seSBiZSB1c2VkIGZvciB0aGUgcHVycG9zZSBwZXJtaXR0ZWQgaW4gdGhlIGFwcGxp Y2FibGUgQ2VydGlmaWNhdGUgUG9saWN5LiBMaW1pdGVkIGxpYWJpbGl0eSBhcHBsaWVzIC0gcmVmZXIgdG8gdGhlI ENlcnRpZmljYXRlIFBvbGljeS4wHQYIKwYBBQUHAgEWEXd3dy50ZXN0YWJyY2EuY29tMBcGBiokAYJNAQQNFgs3OD MzMDM0NzUyOTAOBgNVHQ8BAf8EBAMCBPAwHwYDVR0jBBgwFoAUjSUnvF+gmnHnk3f5sBliLJl2Wv0wDQYJKoZIhvc NAQEFBQADggEBAEMAIl3Y3uZoTmXCX1hrcAPL2/WMBJGIOfBK197V0s6QsOlHMYVpqWHn7Ad9eyB53x4n+QhoXSEJ NbC2zVolVgOpdPY5PsfIEbcD8xLWYxpof6GeAa+iFrBmUCYQ0EXq6GMuZ617xOHeXwou1pkejVyTKgGNZSbGrN+yg tVJVtIELC3/NLFZggV21i7tdntMvLWO07jQHzSsoqZnDr174c4l1u7jpmvvscS5gwbWALzQE/7uY/wWdOzhkCRyoQ G1+5gC/Vvu/WornvKbn17sYjxhIb8OS13F2dqOqi2iS3ZBgHjN/iTQs7F58wDRr4cCSSqKZGm0dT5qVC3RpD1aMLg =</wsse:BinarySecurityToken> <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> <ds:SignedInfo> <ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> <ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/> <ds:Reference URI="#soapheader-1"> <ds:Transforms> <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> </ds:Transforms> <ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <ds:DigestValue>HRENa5ROXsnhSH9pZlobBk818AJgOojobuf1OReOvRI=</ds:DigestValue> </ds:Reference> <ds:Reference URI="#soapheader-2"> <ds:Transforms> <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> </ds:Transforms> <ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <ds:DigestValue>aKEMRTGQz+Xl3YsRAkMTrubkOYYHyNdMFdfUhWyRXZE=</ds:DigestValue> </ds:Reference> UNCLASSIFIED VERSION 1.3 PAGE 90 OF 113 SDK DEVELOPER GUIDE SBR ebMS3 STATUS: Final VERSION 1.3 <ds:Reference URI="#soapbody"> <ds:Transforms> <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> </ds:Transforms> <ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <ds:DigestValue>MuXTb3M4BFAClqp28AnKQQJPuH1XxCZZle+49qRiZVk=</ds:DigestValue> </ds:Reference> </ds:SignedInfo> <ds:SignatureValue> YThF71EKBAdBXyULOUB5E24TxHGzeF8uiYWYyo/3bA0dlqGS1WmcygrILLdwZ5wK/ULSiW72NVM7 W2B6O4v1RofbqGgzCWLE8DuOm5qgTsDf76/aCEz94eDm6StfRQDpyhVlrxJ9jP8qAJsltUrbJ+3v M0+PwyOZNHN31/ZZasI= </ds:SignatureValue> <ds:KeyInfo Id="KeyId-E4FCC868C7F4C3298A14073833405161"> <wsse:SecurityTokenReference xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility1.0.xsd" wsu:Id="STRId-E4FCC868C7F4C3298A14073833405192"> <wsse:Reference URI="#signingCert" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile1.0#X509v3"/> </wsse:SecurityTokenReference> </ds:KeyInfo> </ds:Signature> </wsse:Security> </soapenv:Header> <soapenv:Body xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wsswssecurity-utility-1.0.xsd" wsu:Id="soapbody"/> </soapenv:Envelope> ------=_Part_0_-1207726601.1407383340640-- Figure 16: On the wire sample for one way pull request 5.3.2.2.2 Response Figure 17 shows sample on the wire data for one way pull response. This is the response to batch-async invocation which was initiated previously via one way push request having a base CTR form with five IEE schedules. Transfer-Encoding: chunked Date: Thu, 7 Aug 2014 03:49:02 Connection: Close Content-Type: multipart/related; boundary="_=01841543461779993IBM01841543461779993MOKO"; type="application/soap+xml"; start=9f984f2c-6c72-4fab-bb52-97116d394406; charset=UTF-8; action="urn:DefaultAS4InAxisServiceOperationResponse" Cache-Control: private --_=01841543461779993IBM01841543461779993MOKO Content-Transfer-Encoding: 8bit Content-ID: 9f984f2c-6c72-4fab-bb52-97116d394406 Content-Type: application/soap+xml; charset=UTF-8 <?xml version="1.0" encoding="utf-8"?> <soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope"> <soapenv:Header xmlns:wsa="http://www.w3.org/2005/08/addressing"> <eb:Messaging xmlns:eb="http://docs.oasis-open.org/ebxmlmsg/ebms/v3.0/ns/core/200704/" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis200401-wss-wssecurity-utility-1.0.xsd" soapenv:mustUnderstand="true" wsu:Id="soapheader1"> <ns2:UserMessage xmlns:ns2="http://docs.oasis-open.org/ebxmlmsg/ebms/v3.0/ns/core/200704/"> <ns2:MessageInfo> UNCLASSIFIED VERSION 1.3 PAGE 91 OF 113 SDK DEVELOPER GUIDE SBR ebMS3 STATUS: Final VERSION 1.3 <ns2:Timestamp>2014-0807T03:49:01.147Z</ns2:Timestamp> <ns2:MessageId>7611cced-a13d-4205-9eb7141a54217897@1407383207469</ns2:MessageId> <ns2:RefToMessageId>A1407383194018.daf88baf-b128-4702b4fe-54a19788ad45@1407383194018</ns2:RefToMessageId> </ns2:MessageInfo> <ns2:PartyInfo> <ns2:From> <ns2:PartyId type="http://abr.gov.au/PartyIdType/ABN">51824753556</ns2:PartyId> <ns2:Role>http://sbr.gov.au/agency</ns2:Role> </ns2:From> <ns2:To> <ns2:PartyId type="http://ato.gov.au/PartyIdType/TAN">11110000</ns2:PartyId> <ns2:Role>http://sbr.gov.au/ato/Role/Registered Agent</ns2:Role> </ns2:To> </ns2:PartyInfo> <ns2:CollaborationInfo> <eb:AgreementRef>http://sbr.gov.au/agreement/Gateway/1.0/SelectivePull/PKI</eb:Agr eementRef> <ns2:Service>http://sbr.gov.au/ato/ctr/2014</ns2:Service> <ns2:Action>Submit.005.00</ns2:Action> <ns2:ConversationId>c222a97d-055e-4a07-944568bfcefa3b98</ns2:ConversationId> </ns2:CollaborationInfo> <ns2:MessageProperties> <ns2:Property name="MSHIdentity">IBM ebMS/AS4 Client</ns2:Property> <ns2:Property name="VendorVersion">1.0.0.3</ns2:Property> <ns2:Property name="Vendor">Sample</ns2:Property> <ns2:Property name="BMS\ Name">TESTBMS</ns2:Property> <ns2:Property name="IBMMEIGClientVersion">1.0.0.3</ns2:Property> <ns2:Property name="ProductID">1</ns2:Property> <ns2:Property name="BMS\ Vendor">XYZ</ns2:Property> <ns2:Property name="IBMMEIGClient">true</ns2:Property> <ns2:Property name="BMS\ Version">05.00.01</ns2:Property> <ns2:Property name="MSHVersion">1.0.0.2</ns2:Property> <ns2:Property name="DistinguishedNames">CN=XXXX XXXXXX, O=XXXXXXXXXXX, C=AU, DNQUALIFIER=XXXXXXX</ns2:Property> <ns2:Property name="ABN">XXXXXXXXXXX</ns2:Property> </ns2:MessageProperties> <ns2:PayloadInfo> <ns2:PartInfo href="cid:Attachment1"> <ns2:Schema location=""/> <ns2:PartProperties> <ns2:Property name="DocumentName">CTR</ns2:Property> <ns2:Property name="PartID">1</ns2:Property> <ns2:Property name="DocumentType">Base</ns2:Property> <ns2:Property name="MimeType">text/plain</ns2:Property> <ns2:Property name="filename">Part1</ns2:Property> </ns2:PartProperties> UNCLASSIFIED VERSION 1.3 PAGE 92 OF 113 SDK DEVELOPER GUIDE SBR ebMS3 STATUS: Final VERSION 1.3 </ns2:PartInfo> </ns2:PayloadInfo> </ns2:UserMessage> </eb:Messaging> <wsa:Action xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401wss-wssecurity-utility-1.0.xsd" wsu:Id="soapheader2">urn:DefaultAS4InAxisServiceOperationResponse</wsa:Action> <wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis200401-wss-wssecurity-secext-1.0.xsd" soapenv:mustUnderstand="true"> <wsse:BinarySecurityToken xmlns:wsu="http://docs.oasisopen.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-messagesecurity-1.0#Base64Binary" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis200401-wss-x509-token-profile-1.0#X509v3" wsu:Id="signingCert">MIIC1jCCAj+gAwIBAgIJALwrmLhJnWetMA0GCSqGSIb3DQEBBQUAMIGDMQswCQYDVQQG EwJBVTEMMAoGA1UECAwDVklDMRIwEAYDVQQHDAlNRUxCT1VSTkUxDDAKBgNVBAoMA0FUTzEQMA4GA1UECwwHRUxTM lNCUjEMMAoGA1UEAwwDREVWMSQwIgYJKoZIhvcNAQkBFhVkZXZlbHMyc2JyQGF0by5nb3YuYXUwHhcNMTQwMzA0MD IzMzA5WhcNMTkwMzAzMDIzMzA5WjCBgzELMAkGA1UEBhMCQVUxDDAKBgNVBAgMA1ZJQzESMBAGA1UEBwwJTUVMQk9 VUk5FMQwwCgYDVQQKDANBVE8xEDAOBgNVBAsMB0VMUzJTQlIxDDAKBgNVBAMMA0RFVjEkMCIGCSqGSIb3DQEJARYV ZGV2ZWxzMnNickBhdG8uZ292LmF1MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDVSeZUO/V8Y/i0zwmzl2Jiw vrr8U1p0Ugxw0f+J/PPjJy8EQVee/gJFma4Abl2Py/HZELmqh73hIO82KGe+0lsS9dCZY83GQADPBe00u8gYEJKjN rEoOoLL0v8Yi3Rjl/2L8gwh+e1YGkuh400uhdkxQRwbacxUIP5pWPoknTs8wIDAQABo1AwTjAdBgNVHQ4EFgQUPMK DZF7mo/dnJpPVqs11m5Gq9ikwHwYDVR0jBBgwFoAUPMKDZF7mo/dnJpPVqs11m5Gq9ikwDAYDVR0TBAUwAwEB/zAN BgkqhkiG9w0BAQUFAAOBgQCSYqwhSWX95SZji+X511mAw7ENEugM6nC9hByYvpZrCY6EsUZnVmtGzKxTG5jMZMqZl pnySGClmcuUb9G8IhiTvkDEyj/FhbPKGPR2USl5CtJI8pLpbmU+iG7ZPjToA/peguxJUYPr+e65yoYNImdcXgvmzO XHABbXbq49jt9Ssw==</wsse:BinarySecurityToken> <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> <ds:SignedInfo> <ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> <ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/> <ds:Reference URI="#soapheader-1"> <ds:Transforms> <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> </ds:Transforms> <ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <ds:DigestValue>mBANIX+y2UczWnw4g9gRoSOVuKbzB8ErwS58BSgviho=</ds:DigestValue> </ds:Reference> <ds:Reference URI="#soapheader-2"> <ds:Transforms> <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> </ds:Transforms> <ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <ds:DigestValue>iScPUq62b3guvbdnFcRuz82PWOVAMMwKNJPOBSDiJyQ=</ds:DigestValue> </ds:Reference> <ds:Reference URI="#soapbody"> <ds:Transforms> <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> </ds:Transforms> <ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <ds:DigestValue>MuXTb3M4BFAClqp28AnKQQJPuH1XxCZZle+49qRiZVk=</ds:DigestValue> </ds:Reference> <ds:Reference URI="cid:Attachment1"> <ds:Transforms> <ds:Transform UNCLASSIFIED VERSION 1.3 PAGE 93 OF 113 SDK DEVELOPER GUIDE SBR ebMS3 STATUS: Final VERSION 1.3 Algorithm="http://docs.oasis-open.org/wss/oasis-wss-SwAProfile-1.1#Attachment-ContentSignature-Transform"/> </ds:Transforms> <ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <ds:DigestValue>zviZDNO+uakbNkttCtEEOQKekg6xtp2zEN612WemGNQ=</ds:DigestValue> </ds:Reference> </ds:SignedInfo> <ds:SignatureValue> nZN9oRQ/FAVIJFupuho7iL7ne3kuiqZbgzS5BeCX34CVivi9ASPoYEKo8zsP/6bx3vZB9l3qHnnc /7bJQ5qmTZ5DKbfCBKqWBqUbGK8Uxpy053BWj9WYu/FfNsYGDs+xmLLI2wyiutuOqqkIscU+8DyW V2TNoRk21iO8ommT8OA= </ds:SignatureValue> <ds:KeyInfo Id="KeyId-73B79F9BB234E6AD341407383342067153"> <wsse:SecurityTokenReference xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility1.0.xsd" wsu:Id="STRId-73B79F9BB234E6AD341407383342067154"> <wsse:Reference URI="#signingCert" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile1.0#X509v3"/> </wsse:SecurityTokenReference> </ds:KeyInfo> </ds:Signature> </wsse:Security> </soapenv:Header> <soapenv:Body xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wsswssecurity-utility-1.0.xsd" wsu:Id="soapbody"/> </soapenv:Envelope> --_=01841543461779993IBM01841543461779993MOKO Content-Disposition: attachment; filename=Part1 Content-Transfer-Encoding: binary Content-ID: <Attachment1> Content-Type: text/plain <Event xmlns="http://sbr.com.au/comn/event.02.data"> <MaximumSeverity.Code>Information</MaximumSeverity.Code> <EventItems> <EventItem> <Error.Code>SBR.GEN.INFO.1</Error.Code> <Severity.Code>Information</Severity.Code> <Short.Description>Transmission successful</Short.Description> </EventItem> <EventItem> <Error.Code>SBR.GEN.INFO.2</Error.Code> <Severity.Code>Information</Severity.Code> <Short.Description>Total number of transactions in the transmission is {number}</Short.Description> <Parameters> <Parameter> <Parameter.Identifier>number</Parameter.Identifier> <Parameter.Text>1</Parameter.Text> </Parameter> </Parameters> </EventItem> <EventItem> <Error.Code>SBR.GEN.INFO.3</Error.Code> <Severity.Code>Information</Severity.Code> <Short.Description>Processing completion indicator is {indicator}</Short.Description> <Parameters> <Parameter> <Parameter.Identifier>indicator</Parameter.Identifier> <Parameter.Text>TRUE</Parameter.Text> </Parameter> </Parameters> UNCLASSIFIED VERSION 1.3 PAGE 94 OF 113 SDK DEVELOPER GUIDE SBR ebMS3 STATUS: Final VERSION 1.3 </EventItem> <EventItem> <Error.Code>SBR.GEN.INFO.4</Error.Code> <Severity.Code>Information</Severity.Code> <Short.Description>Number of transactions passed authorisation check is {number}</Short.Description> <Parameters> <Parameter> <Parameter.Identifier>number</Parameter.Identifier> <Parameter.Text> <Parameter.Text>NaN</Parameter.Text> </Parameter.Text> </Parameter> </Parameters> </EventItem> <EventItem> <Error.Code>SBR.GEN.INFO.5</Error.Code> <Severity.Code>Information</Severity.Code> <Short.Description>Number of transactions failed authorisation check is {number}</Short.Description> <Parameters> <Parameter> <Parameter.Identifier>number</Parameter.Identifier> <Parameter.Text>NaN</Parameter.Text> </Parameter> </Parameters> </EventItem> <EventItem> <Error.Code>SBR.GEN.INFO.6</Error.Code> <Severity.Code>Information</Severity.Code> <Short.Description>Number of transactions passed channel validation is {number}</Short.Description> <Parameters> <Parameter> <Parameter.Identifier>number</Parameter.Identifier> <Parameter.Text>NaN</Parameter.Text> </Parameter> </Parameters> </EventItem> <EventItem> <Error.Code>SBR.GEN.INFO.7</Error.Code> <Severity.Code>Information</Severity.Code> <Short.Description>Number of transactions failed channel validation is {number}</Short.Description> <Parameters> <Parameter> <Parameter.Identifier>number</Parameter.Identifier> <Parameter.Text>NaN</Parameter.Text> </Parameter> </Parameters> </EventItem> <EventItem> <Error.Code>SBR.GEN.INFO.8</Error.Code> <Severity.Code>Information</Severity.Code> <Short.Description>Number of transactions successfully processed by the backend is {number}</Short.Description> <Parameters> <Parameter> <Parameter.Identifier>number</Parameter.Identifier> <Parameter.Text>0</Parameter.Text> </Parameter> </Parameters> </EventItem> <EventItem> <Error.Code>SBR.GEN.INFO.9</Error.Code> UNCLASSIFIED VERSION 1.3 PAGE 95 OF 113 SDK DEVELOPER GUIDE SBR ebMS3 STATUS: Final VERSION 1.3 <Severity.Code>Information</Severity.Code> <Short.Description>Number of transactions failed the backend processing is {number}</Short.Description> <Parameters> <Parameter> <Parameter.Identifier>number</Parameter.Identifier> <Parameter.Text>0</Parameter.Text> </Parameter> </Parameters> </EventItem> <EventItem> <Error.Code>SBR.GEN.INFO.10</Error.Code> <Severity.Code>Error</Severity.Code> <Short.Description>Number of unexpected errors is {number}</Short.Description> <Parameters> <Parameter> <Parameter.Identifier>number</Parameter.Identifier> <Parameter.Text>0</Parameter.Text> </Parameter> </Parameters> </EventItem> </EventItems> </Event> <Record_Delimiter DocumentID="234356657659900" DocumentName="CTR" DocumentType="BASE" RelatedDocumentID=""/> <?xml version="1.0" encoding="UTF-8"?> <tns:Event xmlns:tns="http://sbr.gov.au/comn/event.02.data"> <tns:MaximumSeverity.Code>Information</tns:MaximumSeverity.Code> <tns:EventItems> <tns:EventItem> <tns:Error.Code>CMN.ATO.GEN.OK</tns:Error.Code> <tns:Severity.Code>Information</tns:Severity.Code> <tns:Short.Description>Message accepted</tns:Short.Description> <tns:Locations> <tns:Location> <tns:Location.Instance.Identifier>234356657659900</tns:Location.Instance.Identifie r> </tns:Location> </tns:Locations> </tns:EventItem> </tns:EventItems> </tns:Event> --_=01841543461779993IBM01841543461779993MOKO-- Figure 17: On the wire sample for one way pull response 5.3.2.2.3 Error Message when the pull response is not available Figure 18 shows sample on the wire data for ebMS3 error when the BMS sends a pull request prior to the response being available for pulling. Transfer-Encoding: chunked Date: Fri, 8 Aug 2014 08:03:53 Connection: Close Content-Type: multipart/related; boundary="_=8361216095775145IBM8361216095775145MOKO"; type="application/soap+xml"; start=5619e272-8bb2-4ce3-a12b-214f92086c04; charset=UTF8; action="http://www.w3.org/2005/08/addressing/soap/fault" Cache-Control: private --_=8361216095775145IBM8361216095775145MOKO Content-Transfer-Encoding: 8bit Content-ID: 5619e272-8bb2-4ce3-a12b-214f92086c04 UNCLASSIFIED VERSION 1.3 PAGE 96 OF 113 SDK DEVELOPER GUIDE SBR ebMS3 STATUS: Final VERSION 1.3 Content-Type: application/soap+xml; charset=UTF-8 <?xml version="1.0" encoding="utf-8"?> <soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope"> <soapenv:Header> <eb:Messaging xmlns:eb="http://docs.oasis-open.org/ebxmlmsg/ebms/v3.0/ns/core/200704/" soapenv:mustUnderstand="true"> <ns2:SignalMessage xmlns:ns2="http://docs.oasis-open.org/ebxmlmsg/ebms/v3.0/ns/core/200704/"> <ns2:MessageInfo> <ns2:Timestamp>2014-0808T08:03:53.246Z</ns2:Timestamp> <ns2:MessageId>1b6213b0-2917-48cd-a7d18fa4acf6c23b@1407485033246</ns2:MessageId> </ns2:MessageInfo> <ns2:Error category="Communication" refToMessageInError="A1407383194018.daf88baf-b128-4702-b4fe54a19788ad45@1407383194018" errorCode="EBMS:0006" origin="EBMS" severity="Warning" shortDescription="EmptyMessagePartitionChannel"> <ns2:Description lang="en">There is no message available for pulling from this MPC at this moment.</ns2:Description> <ns2:ErrorDetail>DeliveryFailureException: Pulling message from pull destination failed</ns2:ErrorDetail> </ns2:Error> </ns2:SignalMessage> </eb:Messaging> </soapenv:Header> <soapenv:Body> <soapenv:Fault xmlns:axis2ns108="http://www.w3.org/2003/05/soapenvelope"> <soapenv:Code> <soapenv:Value>axis2ns108:EBMSInternalError</soapenv:Value> </soapenv:Code> <soapenv:Reason> <soapenv:Text xml:lang="en">There is no message available for pulling from this MPC at this moment.</soapenv:Text> </soapenv:Reason> <soapenv:Detail> <DetailError>DeliveryFailureException: Pulling message from pull destination failed</DetailError> </soapenv:Detail> </soapenv:Fault> </soapenv:Body> </soapenv:Envelope> --_=8361216095775145IBM8361216095775145MOKO-- Figure 18: On the wire sample for pull Error 5.3.3 Single-Async-Chatty 5.3.3.1 Push Request Figure 19 shows on the wire data for a Single-Async-Chatty request having a CTR base form with one IEE schedule. POST /services/Single-async HTTP/1.1 Transfer-Encoding: chunked Host: test.ato.sbr.gov.au:443 Content-Type: multipart/related; boundary="----=_Part_0_1878492840.1407484972025"; start="<d838dbda-4198-442e-a9ac-6349916774b5@ATODE-EDG7CAWHJ>"; type="application/soap+xml"; action=Submit.005.00 ------=_Part_0_1878492840.1407484972025 Content-Type: application/soap+xml UNCLASSIFIED VERSION 1.3 PAGE 97 OF 113 SDK DEVELOPER GUIDE SBR ebMS3 STATUS: Final VERSION 1.3 Content-Transfer-Encoding: 8bit Content-ID: <d838dbda-4198-442e-a9ac-6349916774b5@ATODE-EDG7CAWHJ> <?xml version="1.0" encoding="utf-8"?> <soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope"> <soapenv:Header> <eb:Messaging xmlns:eb="http://docs.oasis-open.org/ebxmlmsg/ebms/v3.0/ns/core/200704/" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis200401-wss-wssecurity-utility-1.0.xsd" soapenv:mustUnderstand="true" wsu:Id="soapheader1"> <ns2:UserMessage xmlns:ns2="http://docs.oasis-open.org/ebxmlmsg/ebms/v3.0/ns/core/200704/"> <ns2:MessageInfo> <ns2:Timestamp>2014-0808T08:02:51.282Z</ns2:Timestamp> <ns2:MessageId>A1407484966755.34bec694-1f42-4a7a-b75f77a0ade40109@1407484966756</ns2:MessageId> </ns2:MessageInfo> <ns2:PartyInfo> <ns2:From> <ns2:PartyId type="http://ato.gov.au/PartyIdType/TAN">11110000</ns2:PartyId> <ns2:Role>http://sbr.gov.au/ato/Role/Registered Agent</ns2:Role> </ns2:From> <ns2:To> <ns2:PartyId type="http://abr.gov.au/PartyIdType/ABN">51824753556</ns2:PartyId> <ns2:Role>http://sbr.gov.au/agency</ns2:Role> </ns2:To> </ns2:PartyInfo> <ns2:CollaborationInfo> <eb:AgreementRef>http://sbr.gov.au/agreement/Gateway/1.0/TwoWayPushAndPull/PKI</eb :AgreementRef> <ns2:Service>http://sbr.gov.au/ato/ctr/2014</ns2:Service> <ns2:Action>Submit.005.00</ns2:Action> <ns2:ConversationId>8d862295-fe17-4419-8efc82ebf38bfb77</ns2:ConversationId> </ns2:CollaborationInfo> <ns2:MessageProperties> <ns2:Property name="MSHIdentity">IBM ebMS/AS4 Client</ns2:Property> <ns2:Property name="VendorVersion">1.0.0.3</ns2:Property> <ns2:Property name="Vendor">Sample</ns2:Property> <ns2:Property name="IBMMEIGClientVersion">1.0.0.3</ns2:Property> <ns2:Property name="BMS\ Name">TESTBMS</ns2:Property> <ns2:Property name="ProductID">1</ns2:Property> <ns2:Property name="IBMMEIGClient">true</ns2:Property> <ns2:Property name="BMS\ Vendor">XYZ</ns2:Property> <ns2:Property name="MSHVersion">1.0.0.2</ns2:Property> <ns2:Property name="BMS\ Version">05.00.01</ns2:Property> </ns2:MessageProperties> <ns2:PayloadInfo> <ns2:PartInfo href="cid:Attachment1"> <ns2:Schema/> <ns2:PartProperties> <ns2:Property name="DocumentName">CTR</ns2:Property> <ns2:Property name="PartID">1</ns2:Property> <ns2:Property UNCLASSIFIED VERSION 1.3 PAGE 98 OF 113 SDK DEVELOPER GUIDE SBR ebMS3 STATUS: Final VERSION 1.3 name="DocumentType">Base</ns2:Property> <ns2:Property name="MimeType">text/xml</ns2:Property> <ns2:Property name="filename">Part1</ns2:Property> <ns2:Property name="CompressionType">application/gzip</ns2:Property> </ns2:PartProperties> </ns2:PartInfo> <ns2:PartInfo href="cid:Attachment2"> <ns2:Schema/> <ns2:PartProperties> <ns2:Property name="DocumentName">IEE</ns2:Property> <ns2:Property name="PartID">2</ns2:Property> <ns2:Property name="DocumentType">SCHEDULE</ns2:Property> <ns2:Property name="MimeType">text/xml</ns2:Property> <ns2:Property name="filename">Part1</ns2:Property> <ns2:Property name="CompressionType">application/gzip</ns2:Property> </ns2:PartProperties> </ns2:PartInfo> </ns2:PayloadInfo> </ns2:UserMessage> </eb:Messaging> <wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis200401-wss-wssecurity-secext-1.0.xsd" soapenv:mustUnderstand="true"> <saml2:EncryptedAssertion xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion" xmlns:wsu="http://docs.oasisopen.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="soapheader-2"> <xenc:EncryptedData xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" Type="http://www.w3.org/2001/04/xmlenc#Element"> <xenc:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes128-cbc"/> <dsig:KeyInfo xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"> <xenc:EncryptedKey Recipient="name:RelyingPartyTest-STS"> <xenc:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5"/> <dsig:KeyInfo> <o:SecurityTokenReference xmlns:o="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext1.0.xsd"> <X509Data xmlns="http://www.w3.org/2000/09/xmldsig#"> <X509IssuerSerial> <X509IssuerName>CN=RelyingParty-Test-STS, O=ATO, C=AU</X509IssuerName> <X509SerialNumber>1524265890</X509SerialNumber> </X509IssuerSerial> </X509Data> </o:SecurityTokenReference> </dsig:KeyInfo> <xenc:CipherData> <xenc:CipherValue>kpA32m6EgQEi+uUlY2nLqcLTxUonkQKzPsfdC38RMRHQWPj9A1XkKnjy3uVMktt4 ZG1HfPB329LFje/mgxMNuo+97ZMVMWm3fiQpRr7nca8+hBtH9gHbF9RRGvEod6UWv7pHS/Lp5pyobFj3tJKdaKheD UNCLASSIFIED VERSION 1.3 PAGE 99 OF 113 SDK DEVELOPER GUIDE SBR ebMS3 STATUS: Final VERSION 1.3 FeoI0ZJUxglumomVqk=</xenc:CipherValue> </xenc:CipherData> </xenc:EncryptedKey> </dsig:KeyInfo> <xenc:CipherData> <xenc:CipherValue>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 UNCLASSIFIED VERSION 1.3 PAGE 100 OF 113 SDK DEVELOPER GUIDE SBR ebMS3 STATUS: Final VERSION 1.3 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 w2hBuyQvxO/p</xenc:CipherValue> </xenc:CipherData> </xenc:EncryptedData> </saml2:EncryptedAssertion> <wsse:BinarySecurityToken xmlns:wsu="http://docs.oasisopen.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-messagesecurity-1.0#Base64Binary" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis200401-wss-x509-token-profile-1.0#X509v3" wsu:Id="signingCert">MIIEGDCCAwCgAwIBAgIDAhK+MA0GCSqGSIb3DQEBBQUAMIGFMQswCQYDVQQGEwJBVTEl MCMGA1UEChMcQXVzdHJhbGlhbiBCdXNpbmVzcyBSZWdpc3RlcjEgMB4GA1UECxMXQ2VydGlmaWNhdGlvbiBBdXRob 3JpdHkxLTArBgNVBAMTJFRlc3QgQXVzdHJhbGlhbiBCdXNpbmVzcyBSZWdpc3RlciBDQTAeFw0xMzA1MDcwNDQ0NT FaFw0xNTA1MDcwNDQ0NTFaMEwxETAPBgNVBC4TCDI0NDQyMjIyMQswCQYDVQQGEwJBVTEUMBIGA1UEChMLNzgzMzA zNDc1MjkxFDASBgNVBAMTC0FsYW4gRG9uYWxkMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCxtCGPfqSVN1T7 G0cEClI3M7B8FR/MrIw8ka9WTRFvPxTIh0AwImHDU5ZTm2V7frCneIhoc386R+M7z4R0LxELoUjUsl9MgECkTtVDA Gj7bPo7X4yVr590LOLSUkpiETsVtpj8FHf2BKsppdxiLu1CwhTWmWogz8WkGbxfCT6OmQIDAQABo4IBSzCCAUcwDA YDVR0TAQH/BAIwADCB7AYDVR0gBIHkMIHhMIHeBgkqJAGXOWUBBwEwgdAwga4GCCsGAQUFBwICMIGhGoGeVGhpcyB jZXJ0aWZpY2F0ZSBtYXkgb25seSBiZSB1c2VkIGZvciB0aGUgcHVycG9zZSBwZXJtaXR0ZWQgaW4gdGhlIGFwcGxp Y2FibGUgQ2VydGlmaWNhdGUgUG9saWN5LiBMaW1pdGVkIGxpYWJpbGl0eSBhcHBsaWVzIC0gcmVmZXIgdG8gdGhlI ENlcnRpZmljYXRlIFBvbGljeS4wHQYIKwYBBQUHAgEWEXd3dy50ZXN0YWJyY2EuY29tMBcGBiokAYJNAQQNFgs3OD MzMDM0NzUyOTAOBgNVHQ8BAf8EBAMCBPAwHwYDVR0jBBgwFoAUjSUnvF+gmnHnk3f5sBliLJl2Wv0wDQYJKoZIhvc NAQEFBQADggEBAEMAIl3Y3uZoTmXCX1hrcAPL2/WMBJGIOfBK197V0s6QsOlHMYVpqWHn7Ad9eyB53x4n+QhoXSEJ NbC2zVolVgOpdPY5PsfIEbcD8xLWYxpof6GeAa+iFrBmUCYQ0EXq6GMuZ617xOHeXwou1pkejVyTKgGNZSbGrN+yg tVJVtIELC3/NLFZggV21i7tdntMvLWO07jQHzSsoqZnDr174c4l1u7jpmvvscS5gwbWALzQE/7uY/wWdOzhkCRyoQ G1+5gC/Vvu/WornvKbn17sYjxhIb8OS13F2dqOqi2iS3ZBgHjN/iTQs7F58wDRr4cCSSqKZGm0dT5qVC3RpD1aMLg =</wsse:BinarySecurityToken> <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> <ds:SignedInfo> <ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> <ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/> <ds:Reference URI="#soapheader-1"> <ds:Transforms> <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> </ds:Transforms> <ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> UNCLASSIFIED VERSION 1.3 PAGE 101 OF 113 SDK DEVELOPER GUIDE SBR ebMS3 STATUS: Final VERSION 1.3 <ds:DigestValue>T6dFaK6PmnymZ8b1m+DE44ziXdt5uiv1lcZs0b+pxZs=</ds:DigestValue> </ds:Reference> <ds:Reference URI="#soapheader-2"> <ds:Transforms> <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> </ds:Transforms> <ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <ds:DigestValue>IZg8qz/2md3OtF/IQ7kkrhq2YTmd7XPzPauUF+dn6t0=</ds:DigestValue> </ds:Reference> <ds:Reference URI="#soapbody"> <ds:Transforms> <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> </ds:Transforms> <ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <ds:DigestValue>MuXTb3M4BFAClqp28AnKQQJPuH1XxCZZle+49qRiZVk=</ds:DigestValue> </ds:Reference> <ds:Reference URI="cid:Attachment1"> <ds:Transforms> <ds:Transform Algorithm="http://docs.oasis-open.org/wss/oasis-wss-SwAProfile-1.1#Attachment-ContentSignature-Transform"/> </ds:Transforms> <ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <ds:DigestValue>dhE9oDV6+6rt/HiMnd5O49CqLDIkMDaqNO0Tie/uKvo=</ds:DigestValue> </ds:Reference> <ds:Reference URI="cid:Attachment2"> <ds:Transforms> <ds:Transform Algorithm="http://docs.oasis-open.org/wss/oasis-wss-SwAProfile-1.1#Attachment-ContentSignature-Transform"/> </ds:Transforms> <ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <ds:DigestValue>afPM6rAL71Kv4ineZQ8scpUOaEK1Puekx4S4shsatAo=</ds:DigestValue> </ds:Reference> </ds:SignedInfo> <ds:SignatureValue> MmJ3HoqOHLU/S4hGO+FfULyOJ1hwO8MykzHIkQ3A4kgq934fgLkul627Fu+R4E6mLLaTBDpm57KS KaU8ySKli6cNJnyCTtTT9xsJN7aiF9dxOP/xePOl6I9bnd1bOFhhKGqKpIKcOSUVIEytRNsUsoyA EGlaOTVjysGhjQi9Lk4= </ds:SignatureValue> <ds:KeyInfo Id="KeyId-CA167B28B71AAA3A3214074849718611"> <wsse:SecurityTokenReference xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility1.0.xsd" wsu:Id="STRId-CA167B28B71AAA3A3214074849718632"> <wsse:Reference URI="#signingCert" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile1.0#X509v3"/> </wsse:SecurityTokenReference> </ds:KeyInfo> </ds:Signature> </wsse:Security> </soapenv:Header> <soapenv:Body xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wsswssecurity-utility-1.0.xsd" wsu:Id="soapbody"/> UNCLASSIFIED VERSION 1.3 PAGE 102 OF 113 SDK DEVELOPER GUIDE SBR ebMS3 STATUS: Final VERSION 1.3 </soapenv:Envelope> ------=_Part_0_1878492840.1407484972025 Content-Type: application/gzip Content-Transfer-Encoding: binary Content-Disposition: attachment; filename="Part1" Content-ID: <Attachment1> [COMPRESSED_BINARY_CTR_FORM] ------=_Part_0_1878492840.1407484972025 Content-Type: application/gzip Content-Transfer-Encoding: binary Content-Disposition: attachment; filename="Part1" Content-ID: <Attachment2> [COMPRESSED_BINARY_IEE_SCHEDULE] ------=_Part_0_1878492840.1407484972025-- Figure 19: On the wire sample for Single-Async-Chatty Request 5.3.3.2 Receipt SBR ebMS3 will return a receipt after successfully processing the Single-Async-Chatty ebMS3 request. Transfer-Encoding: chunked Date: Fri, 8 Aug 2014 08:02:52 Connection: Close Content-Type: multipart/related; boundary="_=5037480037351979IBM5037480037351979MOKO"; type="application/soap+xml"; start=3a86e25b-7022-4efd-820a-f7957759bddf; charset=UTF8; action="urn:DefaultAS4InAxisServiceOperationResponse" Cache-Control: private --_=5037480037351979IBM5037480037351979MOKO Content-Transfer-Encoding: 8bit Content-ID: 3a86e25b-7022-4efd-820a-f7957759bddf Content-Type: application/soap+xml; charset=UTF-8 <?xml version="1.0" encoding="utf-8"?> <soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope"> <soapenv:Header xmlns:wsa="http://www.w3.org/2005/08/addressing"> <eb:Messaging xmlns:eb="http://docs.oasis-open.org/ebxmlmsg/ebms/v3.0/ns/core/200704/" soapenv:mustUnderstand="true"> <ns2:SignalMessage xmlns:ns2="http://docs.oasis-open.org/ebxmlmsg/ebms/v3.0/ns/core/200704/"> <ns2:MessageInfo> <ns2:Timestamp>2014-0808T08:02:52.358Z</ns2:Timestamp> <ns2:MessageId>a67ba01a-5350-4dc8-b260399a78d1fe2f@1407484972358</ns2:MessageId> <ns2:RefToMessageId>A1407484966755.34bec694-1f424a7a-b75f-77a0ade40109@1407484966756</ns2:RefToMessageId> </ns2:MessageInfo> <ns2:Receipt> <ns3:NonRepudiationInformation xmlns:ns3="http://docs.oasis-open.org/ebxml-bp/ebbp-signals-2.0"> <ns3:MessagePartNRInformation> <ns5:Reference xmlns:ns5="http://www.w3.org/2000/09/xmldsig#" URI="#soapheader-1"> <ns5:Transforms> <ns5:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> </ns5:Transforms> <ns5:DigestMethod UNCLASSIFIED VERSION 1.3 PAGE 103 OF 113 SDK DEVELOPER GUIDE SBR ebMS3 STATUS: Final VERSION 1.3 Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <ns5:DigestValue>T6dFaK6PmnymZ8b1m+DE44ziXdt5uiv1lcZs0b+pxZs=</ns5:DigestValue> </ns5:Reference> </ns3:MessagePartNRInformation> <ns3:MessagePartNRInformation> <ns5:Reference xmlns:ns5="http://www.w3.org/2000/09/xmldsig#" URI="cid:Attachment1"> <ns5:Transforms> <ns5:Transform Algorithm="http://docs.oasis-open.org/wss/oasis-wss-SwAProfile-1.1#Attachment-ContentSignature-Transform"/> </ns5:Transforms> <ns5:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <ns5:DigestValue>dhE9oDV6+6rt/HiMnd5O49CqLDIkMDaqNO0Tie/uKvo=</ns5:DigestValue> </ns5:Reference> </ns3:MessagePartNRInformation> <ns3:MessagePartNRInformation> <ns5:Reference xmlns:ns5="http://www.w3.org/2000/09/xmldsig#" URI="#soapbody"> <ns5:Transforms> <ns5:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> </ns5:Transforms> <ns5:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <ns5:DigestValue>MuXTb3M4BFAClqp28AnKQQJPuH1XxCZZle+49qRiZVk=</ns5:DigestValue> </ns5:Reference> </ns3:MessagePartNRInformation> <ns3:MessagePartNRInformation> <ns5:Reference xmlns:ns5="http://www.w3.org/2000/09/xmldsig#" URI="cid:Attachment2"> <ns5:Transforms> <ns5:Transform Algorithm="http://docs.oasis-open.org/wss/oasis-wss-SwAProfile-1.1#Attachment-ContentSignature-Transform"/> </ns5:Transforms> <ns5:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <ns5:DigestValue>afPM6rAL71Kv4ineZQ8scpUOaEK1Puekx4S4shsatAo=</ns5:DigestValue> </ns5:Reference> </ns3:MessagePartNRInformation> <ns3:MessagePartNRInformation> <ns5:Reference xmlns:ns5="http://www.w3.org/2000/09/xmldsig#" URI="#soapheader-2"> <ns5:Transforms> <ns5:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> </ns5:Transforms> <ns5:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <ns5:DigestValue>IZg8qz/2md3OtF/IQ7kkrhq2YTmd7XPzPauUF+dn6t0=</ns5:DigestValue> </ns5:Reference> </ns3:MessagePartNRInformation> </ns3:NonRepudiationInformation> </ns2:Receipt> </ns2:SignalMessage> </eb:Messaging> <wsa:Action>urn:DefaultAS4InAxisServiceOperationResponse</wsa:Action> </soapenv:Header> UNCLASSIFIED VERSION 1.3 PAGE 104 OF 113 SDK DEVELOPER GUIDE SBR ebMS3 STATUS: Final VERSION 1.3 <soapenv:Body/> </soapenv:Envelope> --_=5037480037351979IBM5037480037351979MOKO-- Figure 20: Single-Async-Chatty Receipt 5.3.3.3 Pull Request In order to retrieve the response to a Single-Async-Request request, the BMS will need to send a PULL request to SBR ebMS3. Figure 21 shows the sample on the wire data for a pull signal request submitted to retrieve the response for Single-Async-Chatty request. POST /services/Single-async HTTP/1.1 Transfer-Encoding: chunked Host: test.ato.sbr.gov.au:443 Content-Type: multipart/related; boundary="----=_Part_4_-1651796917.1407485033242"; start="<3c23c1f6-8745-4bf5-a5e7-5db3ab1138fb@ATODE-EDG7CAWHJ>"; type="application/soap+xml" ------=_Part_4_-1651796917.1407485033242 Content-Type: application/soap+xml Content-Transfer-Encoding: 8bit Content-ID: <3c23c1f6-8745-4bf5-a5e7-5db3ab1138fb@ATODE-EDG7CAWHJ> <?xml version="1.0" encoding="utf-8"?> <soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope"> <soapenv:Header> <eb:Messaging xmlns:eb="http://docs.oasis-open.org/ebxmlmsg/ebms/v3.0/ns/core/200704/" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis200401-wss-wssecurity-utility-1.0.xsd" soapenv:mustUnderstand="true" wsu:Id="soapheader1"> <ns2:SignalMessage xmlns:ns2="http://docs.oasis-open.org/ebxmlmsg/ebms/v3.0/ns/core/200704/"> <ns2:MessageInfo> <ns2:Timestamp>2014-0808T08:03:53.151Z</ns2:Timestamp> <ns2:MessageId>A1407484972737.94fe85c1-b94c-4bae-a1e0a3ea3f217caa@1407484972737</ns2:MessageId> <ns2:RefToMessageId>A1407484966755.34bec694-1f42-4a7ab75f-77a0ade40109@1407484966756</ns2:RefToMessageId> </ns2:MessageInfo> <ns2:PullRequest> <ns2:RefToMessageId>A1407484966755.34bec694-1f42-4a7ab75f-77a0ade40109@1407484966756</ns2:RefToMessageId> </ns2:PullRequest> </ns2:SignalMessage> </eb:Messaging> <wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis200401-wss-wssecurity-secext-1.0.xsd" soapenv:mustUnderstand="true"> <saml2:EncryptedAssertion xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion" xmlns:wsu="http://docs.oasisopen.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="soapheader-2"> <xenc:EncryptedData xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" Type="http://www.w3.org/2001/04/xmlenc#Element"> <xenc:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes128-cbc"/> <dsig:KeyInfo xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"> <xenc:EncryptedKey Recipient="name:RelyingPartyTest-STS"> <xenc:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5"/> UNCLASSIFIED VERSION 1.3 PAGE 105 OF 113 SDK DEVELOPER GUIDE SBR ebMS3 STATUS: Final VERSION 1.3 <dsig:KeyInfo> <o:SecurityTokenReference xmlns:o="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext1.0.xsd"> <X509Data xmlns="http://www.w3.org/2000/09/xmldsig#"> <X509IssuerSerial> <X509IssuerName>CN=RelyingParty-Test-STS, O=ATO, C=AU</X509IssuerName> <X509SerialNumber>1524265890</X509SerialNumber> </X509IssuerSerial> </X509Data> </o:SecurityTokenReference> </dsig:KeyInfo> <xenc:CipherData> <xenc:CipherValue>kpA32m6EgQEi+uUlY2nLqcLTxUonkQKzPsfdC38RMRHQWPj9A1XkKnjy3uVMktt4 ZG1HfPB329LFje/mgxMNuo+97ZMVMWm3fiQpRr7nca8+hBtH9gHbF9RRGvEod6UWv7pHS/Lp5pyobFj3tJKdaKheD FeoI0ZJUxglumomVqk=</xenc:CipherValue> </xenc:CipherData> </xenc:EncryptedKey> </dsig:KeyInfo> <xenc:CipherData> <xenc:CipherValue>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 UNCLASSIFIED VERSION 1.3 PAGE 106 OF 113 SDK DEVELOPER GUIDE SBR ebMS3 STATUS: Final VERSION 1.3 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 w2hBuyQvxO/p</xenc:CipherValue> </xenc:CipherData> </xenc:EncryptedData> </saml2:EncryptedAssertion> <wsse:BinarySecurityToken xmlns:wsu="http://docs.oasisopen.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-messagesecurity-1.0#Base64Binary" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis200401-wss-x509-token-profile-1.0#X509v3" wsu:Id="signingCert">MIIEGDCCAwCgAwIBAgIDAhK+MA0GCSqGSIb3DQEBBQUAMIGFMQswCQYDVQQGEwJBVTEl MCMGA1UEChMcQXVzdHJhbGlhbiBCdXNpbmVzcyBSZWdpc3RlcjEgMB4GA1UECxMXQ2VydGlmaWNhdGlvbiBBdXRob 3JpdHkxLTArBgNVBAMTJFRlc3QgQXVzdHJhbGlhbiBCdXNpbmVzcyBSZWdpc3RlciBDQTAeFw0xMzA1MDcwNDQ0NT FaFw0xNTA1MDcwNDQ0NTFaMEwxETAPBgNVBC4TCDI0NDQyMjIyMQswCQYDVQQGEwJBVTEUMBIGA1UEChMLNzgzMzA zNDc1MjkxFDASBgNVBAMTC0FsYW4gRG9uYWxkMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCxtCGPfqSVN1T7 G0cEClI3M7B8FR/MrIw8ka9WTRFvPxTIh0AwImHDU5ZTm2V7frCneIhoc386R+M7z4R0LxELoUjUsl9MgECkTtVDA Gj7bPo7X4yVr590LOLSUkpiETsVtpj8FHf2BKsppdxiLu1CwhTWmWogz8WkGbxfCT6OmQIDAQABo4IBSzCCAUcwDA YDVR0TAQH/BAIwADCB7AYDVR0gBIHkMIHhMIHeBgkqJAGXOWUBBwEwgdAwga4GCCsGAQUFBwICMIGhGoGeVGhpcyB jZXJ0aWZpY2F0ZSBtYXkgb25seSBiZSB1c2VkIGZvciB0aGUgcHVycG9zZSBwZXJtaXR0ZWQgaW4gdGhlIGFwcGxp Y2FibGUgQ2VydGlmaWNhdGUgUG9saWN5LiBMaW1pdGVkIGxpYWJpbGl0eSBhcHBsaWVzIC0gcmVmZXIgdG8gdGhlI ENlcnRpZmljYXRlIFBvbGljeS4wHQYIKwYBBQUHAgEWEXd3dy50ZXN0YWJyY2EuY29tMBcGBiokAYJNAQQNFgs3OD UNCLASSIFIED VERSION 1.3 PAGE 107 OF 113 SDK DEVELOPER GUIDE SBR ebMS3 STATUS: Final VERSION 1.3 MzMDM0NzUyOTAOBgNVHQ8BAf8EBAMCBPAwHwYDVR0jBBgwFoAUjSUnvF+gmnHnk3f5sBliLJl2Wv0wDQYJKoZIhvc NAQEFBQADggEBAEMAIl3Y3uZoTmXCX1hrcAPL2/WMBJGIOfBK197V0s6QsOlHMYVpqWHn7Ad9eyB53x4n+QhoXSEJ NbC2zVolVgOpdPY5PsfIEbcD8xLWYxpof6GeAa+iFrBmUCYQ0EXq6GMuZ617xOHeXwou1pkejVyTKgGNZSbGrN+yg tVJVtIELC3/NLFZggV21i7tdntMvLWO07jQHzSsoqZnDr174c4l1u7jpmvvscS5gwbWALzQE/7uY/wWdOzhkCRyoQ G1+5gC/Vvu/WornvKbn17sYjxhIb8OS13F2dqOqi2iS3ZBgHjN/iTQs7F58wDRr4cCSSqKZGm0dT5qVC3RpD1aMLg =</wsse:BinarySecurityToken> <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> <ds:SignedInfo> <ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> <ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/> <ds:Reference URI="#soapheader-1"> <ds:Transforms> <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> </ds:Transforms> <ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <ds:DigestValue>7OOPNpW1b1mlg6Ps+pGAjBGh9J7jj/ymWdXz79XxXms=</ds:DigestValue> </ds:Reference> <ds:Reference URI="#soapheader-2"> <ds:Transforms> <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> </ds:Transforms> <ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <ds:DigestValue>IZg8qz/2md3OtF/IQ7kkrhq2YTmd7XPzPauUF+dn6t0=</ds:DigestValue> </ds:Reference> <ds:Reference URI="#soapbody"> <ds:Transforms> <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> </ds:Transforms> <ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <ds:DigestValue>MuXTb3M4BFAClqp28AnKQQJPuH1XxCZZle+49qRiZVk=</ds:DigestValue> </ds:Reference> </ds:SignedInfo> <ds:SignatureValue> d24QGrQ0zu41GRV+ssj1GJnRaPAkLIjVkcwnttaAueHXsIsRxEVca1eqKWJhP7LP5KN/RfvCtJYG T5XWG9pUD3+82nR3Qxb4C2gctu0HNgMNVATLPy632pMYz77yV8biE8JlnRE2gEQz8Gkx7YiOu5og IZ9oVn/SHGttJI9O0V4= </ds:SignatureValue> <ds:KeyInfo Id="KeyId-CA167B28B71AAA3A3214074850331805"> <wsse:SecurityTokenReference xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility1.0.xsd" wsu:Id="STRId-CA167B28B71AAA3A3214074850331806"> <wsse:Reference URI="#signingCert" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile1.0#X509v3"/> </wsse:SecurityTokenReference> </ds:KeyInfo> </ds:Signature> </wsse:Security> </soapenv:Header> <soapenv:Body xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wsswssecurity-utility-1.0.xsd" wsu:Id="soapbody"/> </soapenv:Envelope> ------=_Part_4_-1651796917.1407485033242-- UNCLASSIFIED VERSION 1.3 PAGE 108 OF 113 SDK DEVELOPER GUIDE SBR ebMS3 STATUS: Final VERSION 1.3 Figure 21: On the wire sample for Single-Async-Chatty Pull Request 5.3.3.4 Response Figure 22 shows sample on the wire data for Single-Async-Chatty response. This is the response to invocation which was initiated previously via Two-Way-Push-And-Pull request having a base CTR form with one IEE schedule. Transfer-Encoding: chunked Date: Fri, 8 Aug 2014 08:05:53 Connection: Close Content-Type: multipart/related; boundary="_=38437528957477574IBM38437528957477574MOKO"; type="application/soap+xml"; start=67789366-4b1c-4546-943e-94804299398b; charset=UTF-8; action="urn:DefaultAS4InAxisServiceOperationResponse" Cache-Control: private --_=38437528957477574IBM38437528957477574MOKO Content-Transfer-Encoding: 8bit Content-ID: 67789366-4b1c-4546-943e-94804299398b Content-Type: application/soap+xml; charset=UTF-8 <?xml version="1.0" encoding="utf-8"?> <soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope"> <soapenv:Header xmlns:wsa="http://www.w3.org/2005/08/addressing"> <eb:Messaging xmlns:eb="http://docs.oasis-open.org/ebxmlmsg/ebms/v3.0/ns/core/200704/" soapenv:mustUnderstand="true"> <ns2:UserMessage xmlns:ns2="http://docs.oasis-open.org/ebxmlmsg/ebms/v3.0/ns/core/200704/"> <ns2:MessageInfo> <ns2:Timestamp>2014-0808T08:05:53.836Z</ns2:Timestamp> <ns2:MessageId>cef96b5e-6aae-40d1-9c0047eb175e915d@1407485041779</ns2:MessageId> <ns2:RefToMessageId>A1407484966755.34bec694-1f42-4a7ab75f-77a0ade40109@1407484966756</ns2:RefToMessageId> </ns2:MessageInfo> <ns2:PartyInfo> <ns2:From> <ns2:PartyId type="http://abr.gov.au/PartyIdType/ABN">51824753556</ns2:PartyId> <ns2:Role>http://sbr.gov.au/agency</ns2:Role> </ns2:From> <ns2:To> <ns2:PartyId type="http://ato.gov.au/PartyIdType/TAN">11110000</ns2:PartyId> <ns2:Role>http://sbr.gov.au/ato/Role/Registered Agent</ns2:Role> </ns2:To> </ns2:PartyInfo> <ns2:CollaborationInfo> <eb:AgreementRef>http://sbr.gov.au/agreement/Gateway/1.0/TwoWayPushAndPull/PKI</eb :AgreementRef> <ns2:Service>http://sbr.gov.au/ato/ctr/2014</ns2:Service> <ns2:Action>Submit.005.00</ns2:Action> <ns2:ConversationId>8d862295-fe17-4419-8efc82ebf38bfb77</ns2:ConversationId> </ns2:CollaborationInfo> <ns2:MessageProperties> <ns2:Property name="MSHIdentity">IBM ebMS/AS4 Client</ns2:Property> <ns2:Property name="VendorVersion">1.0.0.3</ns2:Property> <ns2:Property name="Vendor">Sample</ns2:Property> <ns2:Property name="BMS\ Name">TESTBMS</ns2:Property> UNCLASSIFIED VERSION 1.3 PAGE 109 OF 113 SDK DEVELOPER GUIDE SBR ebMS3 STATUS: Final VERSION 1.3 <ns2:Property name="IBMMEIGClientVersion">1.0.0.3</ns2:Property> <ns2:Property name="ProductID">1</ns2:Property> <ns2:Property name="BMS\ Vendor">XYZ</ns2:Property> <ns2:Property name="IBMMEIGClient">true</ns2:Property> <ns2:Property name="BMS\ Version">05.00.01</ns2:Property> <ns2:Property name="MSHVersion">1.0.0.2</ns2:Property> <ns2:Property name="DistinguishedNames">CN=XXXX XXXXXX, O=XXXXXXXXXXX, C=AU, DNQUALIFIER=XXXXXXX</ns2:Property> <ns2:Property name="ABN">XXXXXXXXXXX</ns2:Property> </ns2:MessageProperties> <ns2:PayloadInfo> <ns2:PartInfo href="cid:AttachmentEventSummaryBlock"> <ns2:PartProperties> <ns2:Property name="MimeType">text/xml</ns2:Property> <ns2:Property name="filename">OverallEventMessage</ns2:Property> </ns2:PartProperties> </ns2:PartInfo> <ns2:PartInfo href="cid:BaseEventMessage"> <ns2:PartProperties> <ns2:Property name="MimeType">text/xml</ns2:Property> <ns2:Property name="filename">BaseEventMessage</ns2:Property> </ns2:PartProperties> </ns2:PartInfo> </ns2:PayloadInfo> </ns2:UserMessage> </eb:Messaging> <wsa:Action>urn:DefaultAS4InAxisServiceOperationResponse</wsa:Action> </soapenv:Header> <soapenv:Body/> </soapenv:Envelope> --_=38437528957477574IBM38437528957477574MOKO Content-Transfer-Encoding: binary Content-ID: <AttachmentEventSummaryBlock> Content-Type: text/xml <?xml version="1.0" encoding="UTF-8"?> <Event xmlns="http://sbr.com.au/comn/event.02.data"> <MaximumSeverity.Code/> <EventItems> <EventItem> <Error.Code>SBR.GEN.INFO.1</Error.Code> <Severity.Code>Information</Severity.Code> <Short.Description>Transmission successful</Short.Description> </EventItem> <EventItem> <Error.Code>SBR.GEN.INFO.2</Error.Code> <Severity.Code>Information</Severity.Code> <Short.Description>Total number of transactions in the transmission is {number}</Short.Description> <Parameters> <Parameter> <Parameter.Identifier>number</Parameter.Identifier> <Parameter.Text>1</Parameter.Text> </Parameter> </Parameters> </EventItem> <EventItem> <Error.Code>SBR.GEN.INFO.3</Error.Code> <Severity.Code>Information</Severity.Code> <Short.Description>Processing completion indicator is UNCLASSIFIED VERSION 1.3 PAGE 110 OF 113 SDK DEVELOPER GUIDE SBR ebMS3 STATUS: Final VERSION 1.3 {indicator}</Short.Description> <Parameters> <Parameter> <Parameter.Identifier>indicator</Parameter.Identifier> <Parameter.Text>TRUE</Parameter.Text> </Parameter> </Parameters> </EventItem> <EventItem> <Error.Code>SBR.GEN.INFO.4</Error.Code> <Severity.Code>Information</Severity.Code> <Short.Description>Number of transactions passed authorisation check is {number}</Short.Description> <Parameters> <Parameter> <Parameter.Identifier>number</Parameter.Identifier> <Parameter.Text>1</Parameter.Text> </Parameter> </Parameters> </EventItem> <EventItem> <Error.Code>SBR.GEN.INFO.5</Error.Code> <Severity.Code>Information</Severity.Code> <Short.Description>Number of transactions failed authorisation check is {number}</Short.Description> <Parameters> <Parameter> <Parameter.Identifier>number</Parameter.Identifier> <Parameter.Text>0</Parameter.Text> </Parameter> </Parameters> </EventItem> <EventItem> <Error.Code>SBR.GEN.INFO.6</Error.Code> <Severity.Code>Information</Severity.Code> <Short.Description>Number of transactions passed channel validation is {number}</Short.Description> <Parameters> <Parameter> <Parameter.Identifier>number</Parameter.Identifier> <Parameter.Text>1</Parameter.Text> </Parameter> </Parameters> </EventItem> <EventItem> <Error.Code>SBR.GEN.INFO.7</Error.Code> <Severity.Code>Information</Severity.Code> <Short.Description>Number of transactions failed channel validation is {number}</Short.Description> <Parameters> <Parameter> <Parameter.Identifier>number</Parameter.Identifier> <Parameter.Text>0</Parameter.Text> </Parameter> </Parameters> </EventItem> <EventItem> <Error.Code>SBR.GEN.INFO.8</Error.Code> <Severity.Code>Information</Severity.Code> <Short.Description>Number of transactions successfully processed by the backend is {number}</Short.Description> <Parameters> <Parameter> <Parameter.Identifier>number</Parameter.Identifier> <Parameter.Text>1</Parameter.Text> UNCLASSIFIED VERSION 1.3 PAGE 111 OF 113 SDK DEVELOPER GUIDE SBR ebMS3 STATUS: Final VERSION 1.3 </Parameter> </Parameters> </EventItem> <EventItem> <Error.Code>SBR.GEN.INFO.9</Error.Code> <Severity.Code>Information</Severity.Code> <Short.Description>Number of transactions failed the backend processing is {number}</Short.Description> <Parameters> <Parameter> <Parameter.Identifier>number</Parameter.Identifier> <Parameter.Text>0</Parameter.Text> </Parameter> </Parameters> </EventItem> <EventItem> <Error.Code>SBR.GEN.INFO.10</Error.Code> <Severity.Code>Error</Severity.Code> <Short.Description>Number of unexpected errors is {number}</Short.Description> <Parameters> <Parameter> <Parameter.Identifier>number</Parameter.Identifier> <Parameter.Text>0</Parameter.Text> </Parameter> </Parameters> </EventItem> </EventItems> </Event> --_=38437528957477574IBM38437528957477574MOKO Content-Transfer-Encoding: binary Content-ID: <BaseEventMessage> Content-Type: text/xml <?xml version="1.0" encoding="UTF-8"?> <tns:Event xmlns:tns="http://sbr.gov.au/comn/event.02.data"> <tns:MaximumSeverity.Code>Information</tns:MaximumSeverity.Code> <tns:EventItems> <tns:EventItem> <tns:Error.Code>CMN.ATO.GEN.OK</tns:Error.Code> <tns:Severity.Code>Information</tns:Severity.Code> <tns:Short.Description>Message accepted</tns:Short.Description> <tns:Locations> <tns:Location> <tns:Location.Instance.Identifier>1</tns:Location.Instance.Identifier> </tns:Location> </tns:Locations> </tns:EventItem> </tns:EventItems> </tns:Event> --_=38437528957477574IBM38437528957477574MOKO-- Figure 22: On the wire sample for Single-Async-Chatty Response 5.3.3.5 Error Message when the pull response is not available Figure 23 shows sample on the wire data for ebMS3 error when the BMS sends a pull request prior to the response being available for pulling. Transfer-Encoding: chunked Date: Fri, 8 Aug 2014 08:03:53 Connection: Close Content-Type: multipart/related; boundary="_=8361216095775145IBM8361216095775145MOKO"; type="application/soap+xml"; start=5619e272-8bb2-4ce3-a12b-214f92086c04; charset=UTF- UNCLASSIFIED VERSION 1.3 PAGE 112 OF 113 SDK DEVELOPER GUIDE SBR ebMS3 STATUS: Final VERSION 1.3 8; action="http://www.w3.org/2005/08/addressing/soap/fault" Cache-Control: private --_=8361216095775145IBM8361216095775145MOKO Content-Transfer-Encoding: 8bit Content-ID: 5619e272-8bb2-4ce3-a12b-214f92086c04 Content-Type: application/soap+xml; charset=UTF-8 <?xml version="1.0" encoding="utf-8"?> <soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope"> <soapenv:Header> <eb:Messaging xmlns:eb="http://docs.oasis-open.org/ebxmlmsg/ebms/v3.0/ns/core/200704/" soapenv:mustUnderstand="true"> <ns2:SignalMessage xmlns:ns2="http://docs.oasis-open.org/ebxmlmsg/ebms/v3.0/ns/core/200704/"> <ns2:MessageInfo> <ns2:Timestamp>2014-0808T08:03:53.246Z</ns2:Timestamp> <ns2:MessageId>1b6213b0-2917-48cd-a7d18fa4acf6c23b@1407485033246</ns2:MessageId> </ns2:MessageInfo> <ns2:Error category="Communication" refToMessageInError="A1407484966755.34bec694-1f42-4a7a-b75f77a0ade40109@1407484966756" errorCode="EBMS:0006" origin="EBMS" severity="Warning" shortDescription="EmptyMessagePartitionChannel"> <ns2:Description lang="en">There is no message available for pulling from this MPC at this moment.</ns2:Description> <ns2:ErrorDetail>DeliveryFailureException: Pulling message from pull destination failed</ns2:ErrorDetail> </ns2:Error> </ns2:SignalMessage> </eb:Messaging> </soapenv:Header> <soapenv:Body> <soapenv:Fault xmlns:axis2ns108="http://www.w3.org/2003/05/soapenvelope"> <soapenv:Code> <soapenv:Value>axis2ns108:EBMSInternalError</soapenv:Value> </soapenv:Code> <soapenv:Reason> <soapenv:Text xml:lang="en">There is no message available for pulling from this MPC at this moment.</soapenv:Text> </soapenv:Reason> <soapenv:Detail> <DetailError>DeliveryFailureException: Pulling message from pull destination failed</DetailError> </soapenv:Detail> </soapenv:Fault> </soapenv:Body> </soapenv:Envelope> --_=8361216095775145IBM8361216095775145MOKO-- Figure 23: On the wire sample for pull Error UNCLASSIFIED VERSION 1.3 PAGE 113 OF 113