SBR ebMS3 SDK Developer Guidex

advertisement
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
Download