Adapter For Swift User Guide: Ibm Websphere Business Integration Adapters
Adapter For Swift User Guide: Ibm Websphere Business Integration Adapters
18April2003
This edition of this document applies to IBM WebSphere InterChange Server, version 4.2,WebSphere Business
Integration Adapters, version 2.2.0, and to all subsequent releases and modification until otherwise indicated in new
editions.
To send us your comments about this document, email [email protected]. We look forward to hearing
from you.
When you send information to IBM, you grant IBM a nonexclusive right to use or distribute the information in any
way it believes appropriate without incurring any obligation to you.
© Copyright International Business Machines Corporation 2002, 2003. All rights reserved.
US Government Users Restricted Rights – Use, duplication or disclosure restricted by GSA ADP Schedule Contract
with IBM Corp.
Integration broker compatibility
Supported on IBM WebSphere Business Integration Adapter Framework version
2.2.0, IBM CrossWorlds Infrastructure version 4.1.1 and 4.2 (if the environment uses
ISO Latin-1 data only), WebSphere MQ Integrator version 2.1.0, and WebSphere
MQ Integrator Broker, version 2.1.0. See Release Notes for any exceptions.
Chapter 1. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
Connector architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
Application-connector communication method . . . . . . . . . . . . . . . . . . . . . . . . 4
Event handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Guaranteed event delivery. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Business object requests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Business object mapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Message processing. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Error handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Tracing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Audience
This document is for consultants, developers, and system administrators who
support and manage the WebSphere business integration system at customer sites.
Related documents
The WebSphere business integration system documentation describes the features
and components common to all installations, and includes reference material on
specific collaborations and connectors.
This document contains many references to two other documents: the System
Installation Guide for Windows or for UNIX and the System Implementation Guide for
WebSphere InterChange Server. If you choose to print this document, you may want
to print these documents as well.
The complete set of documentation available with this product describes the
features and components common to all WebSphere adapter installations, and
includes reference material on specific components.
To access the documentation, go to the directory where you installed the product
and open the documentation subdirectory. If a welcome.html file is present, open it
for hyperlinked access to all documentation. If no documentation is present, you
can install it or read it directly online at one of the following sites:
v If you are using WebSphere MQ Integrator Broker as your integration broker:
http://www.ibm.com/websphere/integration/wbiadapters/infocenter
v If you are using InterChange Server as your integration broker:
http://www.ibm.com/websphere/integration/wicserver/infocenter
The documentation set consists primarily of Portable Document Format (PDF) files,
with some additional files in HTML format. To read it, you need an HTML
browser such as Netscape Navigator or Internet Explorer, and Adobe Acrobat
Typographic conventions
This document uses the following conventions:
The guaranteed event delivery feature has been enhanced. For further information,
see “Enabling guaranteed event delivery” on page 24.
You can now associate a data handler with an input queue. For further
information, see “Mapping data handlers to InputQueues” on page 31.
The connector supports SWIFTAlliance Access 5.0, but only if you deploy MQSA
version 2.2 on WebSphere MQ 5.2 on and run the connector on one of the
following operating systems:
v AIX 5.1
v SunOS 5.8 or Solaris 8
v Windows 2000 SP2
This release extends support for subfield parsing on the following message types:
v Category 1MT100, MT101, MT102, MT103, MT104, MT105, MT106, MT107,
MT110, MT111, MT112, MT190, MT191, MT198, MT199
v Category 2MT200, MT201, MT202, MT203, MT204, MT205, MT206, MT207,
MT210, MT256, MT290, MT291, MT293, MT298, MT299
v Category 3MT300, MT303, MT304, MT305, MT306, MT320, MT330, MT340,
MT341, MT350, MT360, MT361, MT362, MT364, MT365, MT390, MT391, MT398,
MT399
v Category 4MT400, MT405, MT410, MT412, MT416, MT420, MT422, MT430,
MT450, MT455, MT456, MT490, MT491, MT498, MT499
v Category 5MT502, MT503, MT504, MT505, MT506, MT507, MT508, MT509,
MT512, MT513, MT514, MT515, MT516, MT517, MT518, MT520, MT521, MT522,
MT523, MT524, MT526, MT527, MT528, MT529, MT530, MT531, MT532, MT533,
MT534, MT535, MT536, MT537, MT538, MT539, MT540, MT541, MT542, MT543,
MT544, MT545, MT546, MT547, MT548, MT549, MT550, MT551, MT552, MT553,
MT554, MT555, MT556, MT557, MT558, MT559, MT560, MT561, MT562, MT563,
MT564, MT565, MT566, MT567, MT568, MT569, MT570, MT571, MT572, MT573,
MT575, MT576, MT577, MT578, MT579, MT580, MT581, MT582, MT583, MT584,
MT586, MT587, MT588, MT589, MT590, MT591, MT598, MT599
The InProgress queue is no longer required and may be disabled. For more
information, see “InProgressQueue” on page 23.
The connector supports interoperability with applications via MQSeries 5.1, 5.2,
and 5.3. For more information, see “Prerequisites” on page 17
The connector now has a UseDefaults property for business object processing. For
more information, see “UseDefaults” on page 24.
The connector can now apply a default verb when the data handler does not
explicitly assign one to a business object. For more information, see “DefaultVerb”
on page 21.
The ReplyToQueue can now be dictated via the dynamic child meta-object rather
than by the ReplyToQueue connector property. For more information see “JMS
headers, SWIFT message properties, and dynamic child meta-object attributes” on
page 37.
You can use a message selector to identify, filter and otherwise control how the
adapter identifies the response message for a given request. This JMS capability
applies to synchronous request processing only. For more information, see
“Synchronous acknowledgment” on page 11.
This manual provides information about using this adapter with both integration
brokers: ICS and WebSphere MQ Integrator.
Important: Because the connector has not been internationalized, do not run it
against ICS version 4.1.1 if you cannot guarantee that only ISO Latin-1
data will be processed.
Note: Throughout this document, SWIFT messages denote SWIFT FIN messages
unless otherwise explicitly noted.
For more information about the relationship of the integration broker to the
connector, see the IBM WebSphere InterChange Server System Administration Guide, or
the IBM WebSphere Business Integration Adapters Implementation Guide for WebSphere
MQ Integrator Broker.
The connector for SWIFT allows the ICS or WebSphere MQ Integrator Broker to
exchange business objects with applications that send or receive data in the form of
SWIFT messages.
Important: The connector supports SWIFT message transformation from ISO 7775
to corresponding ISO 15022 formats and vice versa, but only with the
expanded business object definitions and ISO mapping described in
this document. For further information, see Chapter 3, “Business
objects”, on page 43, and Chapter 4, “ISO 7775 to ISO 15022 mapping”,
on page 81.
IBM WebSphere
Integrator Broker
(Processes)
Connector
for SWIFT
SWIFT
data handler
outgoing incoming
messages messages
Mapping
engine
MQSA
The type of business object and verb used in processing a message are based on
the meta-data in the Format field of the WebSphere MQ message header. You
construct a meta-object to store the business object name and verb to associate with
the WebSphere MQ message header Format field text.
You can optionally construct a dynamic meta-object that is added as a child to the
business object passed to the connector. The child meta-object values override
those specified in the static meta-object that is specified for the connector as a
whole. If the child meta-object is not defined or does not define a required
conversion property, the connector, by default, examines the static meta-object for
the value. You can specify one or more dynamic child meta-objects instead of, or to
supplement, a single static connector meta-object.
The connector can poll multiple input queues, polling each in a round-robin
manner and retrieving a configurable number of messages from each queue. For
each message retrieved during polling, the connector adds a dynamic child
meta-object (if specified in the business object). The child meta-object values can
direct the connector to populate attributes with the format of the message as well
as with the name of the input queue from which the message was retrieved.
When a message is retrieved from the input queue, the connector looks up the
business object name associated with the FORMAT text field. The message, along
with the business object name, is then passed to the data handler. If a business
object is successfully populated with message content, the connector checks to see
if it a collaboration subscribes to it, and then delivers it to the integration broker
using the gotApplEvents() method.
WebSphere MQ
The connector for SWIFT uses an MQ implementation of the JavaTM Message
Service (JMS), an API for accessing enterprise-messaging systems. This makes
possible interaction with incoming and outgoing WebSphere MQ event queues.
MQSA
The WebSphere MQ event queues exchange messages with the WebSphere MQ
Interface for SWIFTAlliance (MQSA). The MQSA software integrates WebSphere
MQ messaging capabilities with SWIFT message types, performing delivery,
acknowledgement, queue management, timestamping, and other functions.
SWIFTAlliance Access
The SWIFTAlliance Access gateway is a window through which SWIFT messages
flow to and from remote financial applications over IP or WebSphere MQ. The
Chapter 1. Overview 3
connector supports SWIFTAlliance Access 5.0, but only if you deploy MQSA
version 2.2 on WebSphere MQ 5.2 on and run the connector on one of the
following operating systems:
v AIX 5.1
v SunOS 5.8 or Solaris 8
v Windows 2000 SP2
Message request
Figure 2 illustrates a message request communication.
1. The connector framework receives a business object representing an ISO 7775
SWIFT message from an integration broker.
2. The connector passes the business object to the data handler.
3. If specified in the map subscription meta-object, the data handler passes the
ISO 7775 object to the mapping engine.
4. Using a production instruction meta-object (PIMO), the mapping engine
transforms the ISO 7775 object into an ISO 15022 business object and passes it
to the data handler.
5. The data handler converts the ISO 15022 business object into an ISO
15022-compliant SWIFT message.
6. The connector dispatches the ISO 15022 SWIFT message to the WebSphere MQ
output queue.
7. The JMS layer makes the appropriate calls to open a queue session and routes
the message to the MQSA, which issues the message to the SWIFT Alliance
Gateway.
MQSA
2 ISO 15022
SWIFT message
Event delivery
Figure 3 illustrates the message return communication.
1. The polling method retrieves the next applicable ISO 15022 SWIFT message
from the WebSphere MQ input queue.
2. The message is staged in the in-progress queue, where it remains until
processing is complete.
3. The data handler converts the message into an ISO 15022 business object.
4. Using the map subscription meta-object, the connector determines whether the
message type is supported and, if supported, requires transformation into an
ISO 7775 business object. If so, the data handler passes the ISO 15022 business
object to the mapping engine.
5. Using a PIMO, the mapping engine processes the sub-fields of business object
data, creating an ISO 7775-compliant business object, which is passed to the
data handler.
6. The SWIFT data handler receives the ISO 7775 business object and sets the verb
in it to the default verb specified in the data handler-specific meta-object.
7. The connector then determines whether the business object is subscribed to by
the integration broker. If so, the connector framework delivers the business
object to the integration broker, and the message is removed from the
in-progress queue.
Chapter 1. Overview 5
In-progress MQSeries input
queue 1
queue
Connector
Integration
broker 2 ISO 15022
7 SWIFT message
3
MQSA
ISO 7775
business
object
6 SWIFT data
SWIFT alliance access gateway
handler
Event handling
For event notification, the connector detects an event written to a queue by an
application rather than by a database trigger. An event occurs when SWIFTAlliance
generates SWIFT messages and stores them on the WebSphere MQ queue.
Retrieval
The connector uses a polling method to poll the WebSphere MQ input queue at
regular intervals for messages. When the connector finds a message, it retrieves it
from the WebSphere MQ input queue and examines it to determine its format. If
the format has been defined in the connector’s static or child meta-objects, the
connector uses the data handler to generate an appropriate business object with a
verb.
In-progress queue
The connector processes messages by first opening a transactional session to the
WebSphere MQ queue. This transactional approach allows for a small chance that a
business object could be delivered to a business process twice due to the connector
successfully submitting the business object but failing to commit the transaction in
the queue. To avoid this problem, the connector moves all messages to an
in-progress queue. There, the message is held until processing is complete. If the
connector shuts down unexpectedly during processing, the message remains in the
in-progress queue instead of being reinstated to the original WebSphere MQ queue.
Note: Transactional sessions with a JMS service provider require that every
requested action on a queue be performed and committed before events are
removed from the queue. Accordingly, when the connector retrieves a
message from the queue, it does not commit to the retrieval until: 1) The
Synchronous acknowledgment
To support applications that require feedback on the requests they issue, the
connector for SWIFT can issue report messages to the applications detailing the
outcome of their requests once they have been processed.
To achieve this, the connector posts the business data for such requests
synchronously to the integration broker. If the business object is successfully
processed, the connector sends a report back to the requesting application
including the return code from the integration broker and any business object
changes. If the connector or the integration broker fails to process the business
object, the connector sends a report containing the appropriate error code and error
message.
In either case, an application that sends a request to the connector for SWIFT is
notified of its outcome.
If the connector for SWIFT receives any messages requesting positive or negative
acknowledgment reports (PAN or NAN), it posts the content of the message
synchronously to the integration broker and then incorporates the return code and
modified business data in to a report message that is sent back to the requesting
application.
Chapter 1. Overview 7
Table 1. Required structure of synchronous WebSphere MQ messages (continued)
MQMD Field Description Supported values (multiple values should be
(message OR’d)
descriptor)
Message Body A serialized business object in a format
compatible with the data handler configured for
the connector.
Table 2 shows the structure of the report that is sent to the requesting application
from the connector.
Table 2. Structure of the report returned to the requesting application
MQMD field Description Supported values (multiple values should
be OR’d)
MessageType Message type REPORT
feedback Type of report One of the following:
v MQRO_PAN If the business object is
successfully processed.
v MQRO_NANIf the connector or the
integration broker encountered an error
while processing the request.
Message Body If the business object is successfully
processed, the connector populates the
message body with the business object
returned by the integration broker. This
default behavior can be overridden by
setting the DoNotReportBusObj property to
true in the static meta-data object.
Recovery
Upon initialization, the connector checks the in-progress queue for messages that
have not been completely processed, presumably due to a connector shutdown.
The connector configuration property InDoubtEvents allows you to specify one of
four options for handling recovery of such messages: fail on startup, reprocess,
ignore, or log error.
Reprocess
With the reprocessing option, if the connector finds any messages in the
in-progress queue during initialization, it processes these messages first during
subsequent polls. When all messages in the in-progress queue have been
processed, the connector begins processing messages from the input queue.
Ignore
With the ignore option, if the connector finds any messages in the in-progress
queue during initialization, the connector ignores them but does not shut down.
Log error
With the log error option, if the connector finds any messages in the in-progress
queue during initialization, it logs an error but does not shut down.
Archiving
If the connector property ArchiveQueue is specified and identifies a valid queue,
the connector places copies of all successfully processed messages in the archive
queue. If ArchiveQueue is undefined, messages are discarded after processing.
If connector framework cannot deliver the business object to the ICS integration
broker, then the object is placed on a FaultQueue (instead of UnsubscribedQueue
Chapter 1. Overview 9
and ErrorQueue) and generates a status indicator and a description of the problem.
FaultQueue messages are written in MQRFH2 format.
The transformation of business object definitions from those representing ISO 7775
messages to those representing ISO 15022 and vice versa takes place in the
mapping engine. There, a production instruction meta-object (PIMO) governs the
mapping process. The PIMO is a meta-object, but one designed to handle mapping
only. Each PIMO specifies attribute-by-attribute processing instructions for a
specific transformation, for example, from SWIFT message type 523 to message
type 543. You can modify PIMOs using Business Object Designer. For more
information on mapping and PIMOs, see Chapter 4, “ISO 7775 to ISO 15022
mapping”, on page 81.
Message processing
The connector processes business objects passed to it by an integration broker
based on the verb for each business object. The connector uses business object
handlers to process the business objects that the connector supports.The business
object handlers contain methods that interact with an application and that
transform business object requests into application operations.
Create
Processing of business objects with create depends on whether the objects are
issued asynchronously or synchronously.
Asynchronous delivery
This is the default delivery mode for business objects with Create verbs. A message
is created from the business object using a data handler and then written to the
output queue. If the message is delivered, the connector returns BON_SUCCESS,
else BON_FAIL.
Synchronous acknowledgment
If a replyToQueue has been defined in the connector properties and a
responseTimeout exists in the conversion properties for the business object, the
connector issues a request in synchronous mode. The connector then waits for a
response to verify that appropriate action was taken by the receiving application.
For WebSphere MQ, the connector initially issues a message with a header as
shown in Table 3.
Table 3. Request Message Descriptor Header (MQMD)
Field Description Value
Format Format name Output format as defined in the conversion properties and
truncated to 8 characters to meet IBM requirements (example:
MQSTR).
MessageType Message type MQMT_DATAGRAMa
Report Options for report message When a response message is expected, this field is populated as
requested. follows:
The message header described in Table 3 is followed by the message body. The
message body is a business object that has been serialized using the data handler.
The Report field is set to indicate that both positive and negative action reports are
expected from the receiving application. The thread that issued the message waits
for a response message that indicates whether the receiving application was able to
process the request.
Chapter 1. Overview 11
Table 5. Population of response message
Verb Feedback field Message body
Create SUCCESS VALCHANGE (Optional) A serialized business object reflecting
changes.
VALDUPES FAIL (Optional) An error message.
If the business object can be processed, the application creates a report message
with the feedback field set to MQFB_PAN (or a specific WebSphere business
integration system value). Optionally the application populates the message body
with a serialized business object containing any changes. If the business object
cannot be processed, the application creates a report message with the feedback
field set to MQFB_NAN (or a specific WebSphere business integration system value)
and then optionally includes an error message in the message body. In either case,
the application sets the correlationID field of the message to the messageID of the
connector message and issues it to the queue specified by the ReplyTo field.
The message selectorstring must uniquely identify a response and its values be
enclosed in single quotes as shown in the example below:
In the above example, after issuing the request message, the adapter would
monitor the ReplyToQueue for a response message with a correlationID equal to
″Oshkosh.″ The adapter would retrieve the first message that matches this message
selector and then dispatch it as the response.
would inform the adapter to replace {1} with the value of the first attribute
following the selector (in this case the attribute named CorrelationId of the
child-object named MyDynamicMO. If attribute CorrelationID had a value of 123ABC,
the adapter would generate and use a message selector created with the following
criteria:
In this example, the adapter would substitute {1} with the value of attribute
PrimaryId from the top-level business object and {2} with the value of AddressId
from the 5th position of child container object Address. With this approach, you
can reference any attribute in the business object and meta-object in the response
message selector. For more information on how deep retrieval is performed using
Address[4].AddressId, see JCDK API manual (getAttribute method)
For example, if you include the literal value ’{’ or ’}’ in the message selector, you
can use ’{{’ or ″{}″ respectively. You can also place these characters in the attribute
Chapter 1. Overview 13
value, in which case the first ″{″ is not needed. Consider the following example
using the escape character: response_selector=JMSCorrelation LIKE ’{1}’ and
CompanyName=’A{{P’: MyDynamicMO.CorrelationID
When the connector encounters special characters such as ’{’, ’}’, ’:’ or ’;’ in
attribute values, they are inserted directly into the query string. This allows you to
include special characters in a query string that also serve as application-specific
information delimiters.
The next example illustrates how a literal string substitution is extracted from the
attribute value:
For more information on the response selector code, see JMS 1.0.1 specifications.
Creating custom feedback codes: You can extend the WebSphere MQ feedback
codes to override default interpretations shown in Table 6 by specifying the
connector property FeedbackCodeMappingMO. This property allows you to create
a meta-object in which all WebSphere business integration system-specific return
status values are mapped to the WebSphere MQ feedback codes. The return status
assigned (using the meta-object) to a feedback code is passed to the integration
broker. For more information, see “FeedbackCodeMappingMO” on page 22.
Retrieve
Business objects with the Retrieve verb support synchronous delivery only. The
connector processes business objects with this verb as it does for the synchronous
delivery defined for create. However, when using a Retrieve verb, the
responseTimeout and replyToQueue are required. Furthermore, the message body
must be populated with a serialized business object to complete the transaction.
Error handling
All error messages generated by the connector are stored in a message file named
SWIFTConnector.txt. (The name of the file is determined by the LogFileName
standard connector configuration property.) Each error has an error number
followed by the error message:
Message text
Application timeout
The error message ABON_APPRESPONSETIMEOUT is returned when:
v The connector cannot establish a connection to the JMS service provider during
message retrieval.
v The connector successfully converts a business object to a message but cannot
deliver it to the outgoing queue due to connection loss.
v The connector issues a message but times out waiting for a response from a
business object whose conversion property TimeoutFatal is equal to True.
v The connector receives a response message with a return code equal to
APP_RESPONSE_TIMEOUT or UNABLE_TO_LOGIN.
Tracing
Tracing is an optional debugging feature you can turn on to closely follow
connector behavior. Trace messages, by default, are written to STDOUT. See the
connector configuration properties in Chapter 2, “Configuring the connector”, on
page 17, for more on configuring trace messages. For more information on tracing,
including how to enable and set it, see the Connector Development Guide.
Chapter 1. Overview 15
Level 2 Use this level for trace messages that log each time a business
object is posted to the integration broker, either from
gotApplEvent() or executeCollaboration().
Level 3 Use this level for trace messages that provide information
regarding message-to-business-object and business-object-to-
message conversions or provide information about the delivery of
the message to the output queue.
Level 4 Use this level for trace messages that identify when the connector
enters or exits a function.
Level 5 Use this level for trace messages that indicate connector
initialization, represent statements executed in the application,
indicate whenever a message is taken off of or put onto a queue,
or record business object dumps.
This chapter describes how to install and configure the connector and how to
configure the message queues to work with the connector.
Prerequisites
Prerequisite software
The following software must be installed before you install and configure the
connector for SWIFT:
v WebSphere business integration system software version 4.2.x or later or
WebSphere Business Integration Adapter Framework version 2.1.0
v The connector supports interoperability with applications via WebSphere MQ,
WebSphere MQ 5.1, 5.2,1 and 5.3. Accordingly, you must have one of these
software releases installed.
Note: The adapter does not support Secure Socket Layers (SSL) in WebSphere
MQ 5.3. For the WebSphere MQ software version appropriate to adapter
framework-integration broker communication, see the Installation Guide
for your platform (Windows/Unix).
v IBM WebSphere MQ Java client libraries
Note: It’s advisable to download the latest MA88 libraries from IBM.
v For Windows systems: Microsoft Windows NT 4.0 Service Pack 6A or Windows
2000
v For Unix systems: Solaris 7 or AIX 4.3.3 Patch Level 7
v MQSA WebSphere MQ Interface for SWIFTAlliance 1.3
1. If your environment implements the convert-on-the-get methodology for character-set conversions you must download the latest
MA88 (JMS classes) from IBM. The patch level should be at least 5.2.2 (for MQ Series version 5.2). Doing so may avoid
unsupported encoding errors.
For client setup with an NT server, see the description in the IBM publication
WebSphere MQ Quick Beginnings for NT.
Note: If you are installing a Web release of this connector, see the Release Notes
for installation instructions.
For more information on installing the connector component, refer to one of the
following guides, depending on the integration broker you are using:
v System Installation Guide for UNIX (when ICS is used as integration broker)
v Implementation Guide for WebSphere MQ Integrator Broker (when MQ Integrator
Broker is used as integration broker)
Note: If you are installing a Web release of this connector, see the Release Notes
for installation instructions.
Table 9. Installed Windows file structure for the connector
Subdirectory of ProductDir Description
connectors\SWIFT\CWSwift.jar Connector jar files
connectors\SWIFT\CWJMSCommon.jar
connectors\SWIFT\start_SWIFT.bat The startup file for the connector.
connectors\messages\SWIFTConnector.txt Connector message file
repository\SWIFT\CN_SWIFT.txt Connector definition
DataHandlers\CwDataHandler.jar The SWIFT data handler
repository\DataHandlers\MO_DataHandler_SWIFT.txt Meta-object for SWIFT data handler
repository\DataHandlers\MO_DataHandler_Default.txt Data handler default object
connectors\SWIFT\samples\Sample_SWIFT_MO_Config.txt Sample configuration object
\lib Contains the WBIA. jar file.
For more information on installing the connector component, refer to one of the
following guides, depending on the integration broker you are using:
v IBM WebSphere InterChange Server System Installation Guide for Windows (when ICS
is used as integration broker)
v IBM WebSphere Business Integration Adapters Implementation Guide for WebSphre
MQ Integrator Broker (when MQ Integrator Broker is used as integration broker)
Connector configuration
Connectors have two types of configuration properties: standard configuration
properties and connector-specific configuration properties. You must set the values
of these properties before running the connector. Use one of the following tools to
set a connector’s configuration properties:
v Connector Configurator (if ICS is the integration broker)—Access to this tool is
from the System Manager.
v Connector Configurator (if WebSphere MQ Integrator Broker is the integration
broker)—Access this tool from the WebSphere Business Integration Adapter
program folder. For more information see Appendix B, “Connector Configurator”
, on page 151
Important: Because this connector supports both the ICS and WebSphere MQ
Integrator Broker, configuration properties for both brokers relevant to
the connector.
Note: Always check the values WebSphere MQ provides because they may be
incorrect or unknown. If the provided values are incorrect, specify them
explicitly.
Table 10 lists the connector-specific configuration properties for the connector for
SWIFT. See the sections that follow for explanations of the properties.
Table 10. Connector-specific configuration properties
Name Possible values Default value Required
“ApplicationPassword” on Login password No
page 21
“ApplicationUserID” on page 21 Login user ID No
“ArchiveQueue” on page 21 Queue to which copies of queue://CrossWorlds. No
successfully processed messages are QueueManager/MQCONN.ARCHIVE
sent
“Channel” on page 21 MQ server connector channel Yes
“ConfigurationMetaObject” on Name of configuration meta-object Yes
page 21
“DataHandlerClassName” on Data handler class name com.crossworlds. No
page 21 DataHandlers.swift.
SwiftDataHandler
“DataHandlerConfigMO” on Data handler meta-object MO_DataHandler_Default Yes
page 21
“DataHandlerMimeType” on MIME type of file swift No
page 21
“DefaultVerb” on page 21 Any verb supported by the Create
connector.
“ErrorQueue” on page 22 Queue for unprocessed messages queue://crossworlds. No
Queue.manager/ MQCONN.ERROR
“FeedbackCodeMappingMO” on Feedback code meta-object No
page 22
“HostName” on page 22 WebSphere MQ server No
“InDoubtEvents” on page 22 FailOnStartup Reprocess Ignore Reprocess No
LogError
“InputQueue” on page 23 Poll queues queue://CrossWorlds. Yes
QueueManager/MQCONN.IN
“InProgressQueue” on page 23 In-progress event queue queue://CrossWorlds. No
QueueManager/
MQCONN.IN_PROGRESS
“PollQuantity” on page 23 Number of messages to retrieve from 1 No
each queue specified in the
InputQueue property
“Port” on page 24 Port established for the WebSphere No
MQ listener
“ReplyToQueue” on page 24 Queue to which response messages queue://CrossWorlds. No
are delivered when the connector QueueManager/MQCONN.REPLYTO
issues requests
“UnsubscribedQueue” on Queue to which unsubscribed queue://CrossWorlds. No
page 24 messages are sent QueueManager/MQCONN.UNSUBSCRIBE
“UseDefaults” on page 24 true or false false
Default = None.
If the ApplicationPassword is left blank or removed, the connector uses the default
password provided by WebSphere MQ.
ApplicationUserID
User ID used with the ApplicationPassword to log in to WebSphere MQ.
Default=None.
If the ApplicationUserID is left blank or removed, the connector uses the default
user ID provided by WebSphere MQ.
ArchiveQueue
Queue to which copies of successfully processed messages are sent.
Default = queue://crossworlds.Queue.manager/MQCONN.ARCHIVE
Channel
MQ server connector channel through which the connector communicates with
WebSphere MQ.
Default=None.
If the value of Channel is left blank or the property is removed, the connector uses
the default server channel provided by WebSphere MQ.
ConfigurationMetaObject
Name of static meta-object containing configuration information for the connector.
Default = none.
DataHandlerClassName
Data handler class to use when converting messages to and from business objects.
Default = com.crossworlds.DataHandlers.swift.SwiftDataHandler
DataHandlerConfigMO
Meta-object passed to data handler to provide configuration information.
Default = MO_DataHandler_Default
DataHandlerMimeType
Allows you to request a data handler based on a particular MIME type.
Default = swift
DefaultVerb
Specifies the verb to be set within an incoming business object, if it has not been
set by the data handler during polling.
Default= Create
Default = queue://crossworlds.Queue.manager/MQCONN.ERROR
FeedbackCodeMappingMO
Allows you to override and reassign the default feedback codes used to
synchronously acknowledge receipt of messages to the integration broker. This
property enables you to specify a meta-object in which each attribute name is
understood to represent a feedback code. The corresponding value of the feedback
code is the return status that is passed to the integration broker. For a listing of the
default feedback codes, see “Synchronous acknowledgment” on page 7. The
connector accepts the following attribute values representing WebSphere
MQ-specific feedback codes:
v MQFB_APPL_FIRST
v MQFB_APPL_FIRST_OFFSET_N where N is an integer (interpreted as the value of
MQFB_APPL_FIRST + N)
Default = none.
HostName
The name of the server hosting WebSphere MQ.
Default=None.
InDoubtEvents
Specifies how to handle in-progress events that are not fully processed due to
unexpected connector shutdown. Choose one of four actions to take if events are
found in the in-progress queue during initialization:
v FailOnStartup. Log an error and immediately shut down.
Default = Reprocess.
InputQueue
Specifies the message queues that the connector polls for new messages. See the
MQSA documentation to configure the WebSphere MQ queues for routing to
SWIFTAlliance gateways.
With pollQuanity set to 2, the connector retrieves at most 2 messages from each
queue per call to pollForEvents. For the first cycle (1 of 2), the connector retrieves
the first message from each of MyQueueA, MyQueueB, and MyQueueC. That completes
the first round of polling. The connector starts a second round of polling (2 of 2)
and retrieves one message each from MyQueueA and MyQueueC—it skips MqQueueB
because that queue is now empty. After polling all queues twice, the call to the
method pollForEvents is complete. The sequence of message retrieval is:
1. 1 message from MyQueueA
2. 1 message from MyQueueB
3. 1 message from MyQueueC
4. 1 message from MyQueueA
5. Skip MyQueueB because it is empty
6. 1 message from MyQueueC
Default = queue://crossworlds.Queue.manager/MQCONN.IN
InProgressQueue
Message queue where messages are held during processing. You can configure the
connector to operate without this queue by using System Manager to remove the
default InProgressQueue name from the connector-specific properties. Doing so
prompts a warning at startup that event delivery may be compromised if the
connector is shut down while are events pending.
Default= queue://crossworlds.Queue.manager/MQCONN.IN_PROGRESS
PollQuantity
Number of messages to retrieve from each queue specified in the InputQueue
property during a pollForEvents scan.
Default =1
Default=None.
If the value of Port is left blank or the property is removed, the connector allows
WebSphere MQ to determine the correct port.
ReplyToQueue
Queue to which response messages are delivered when the connector issues
requests.
Default = queue://crossworlds.Queue.manager/MQCONN.REPLYTO
UnsubscribedQueue
Queue to which messages about business objects that are not subscribed to are
sent.
Default = queue://crossworlds.Queue.manager/MQCONN.UNSUBSCRIBED
UseDefaults
On a Create operation, if UseDefaults is set to true, the connector checks whether
a valid value or a default value is provided for each isRequired business object
attribute. If a value is provided, the Create operation succeeds. If the parameter is
set to false, the connector checks only for a valid value and causes the Create
operation to fail if it is not provided. The default is false.
In addition to configuring the connector, you must also configure the data handler
that converts between the event in the JMS store and a business object. This
data-handler information consists of the connector configuration properties that
Table 13 summarizes.
Table 13. Data-handler properties for guaranteed event delivery
Data-handler property Value Required?
MimeType The MIME type that the data handler Yes
handles. This MIME type identifies which
data handler to call.
DHClass The full name of the Java class that Yes
implements the data handler
DataHandlerConfigMOName The name of the top-level meta-object that Optional
associates MIME types and their data
handlers
If you configure a connector that has a JMS event store to use guaranteed event
delivery, you must set the connector properties as described in Table 12 and
Table 13. To set these connector configuration properties, use the Connector
Configurator tool. Connector Configurator displays the connector properties in
Table 12 on its Standard Properties tab. It displays the connector properties in
Table 13 on its Data Handler tab.
Note: Connector Configurator activates the fields on its Data Handler tab only
when the DeliveryTransport connector configuration property is set to JMS
and ContainerManagedEvents is set to JMS.
Enabling the feature for connectors with non-JMS event stores: To enable the
guaranteed-event-delivery feature for a JMS-enabled connector that has a non-JMS
event store, you must set the connector configuration properties to values shown
in Table 14.
If you configure a connector to use guaranteed event delivery, you must set the
connector properties as described in Table 14. To set these connector configuration
properties, use the Connector Configurator tool. It displays these connector
properties on its Standard Properties tab. For information on Connector
Configurator, see Appendix B, “Connector Configurator”, on page 151.
After the connector framework receives the business object from the
application-specific component (through a call to gotApplEvent() in the
pollForEvents() method), it must determine if the current business object
(received from gotApplEvents()) represents a duplicate event. To make this
determination, the connector framework retrieves the business object from the JMS
monitor queue and compares its ObjectEventId with the ObjectEventId of the
current business object:
v If these two ObjectEventIds are the same, the current business object represents a
duplicate event. In this case, the connector framework ignores the event that the
current business object represents; it does not send this event to the integration
broker.
v If these ObjectEventIds are not the same, the business object does not represent a
duplicate event. In this case, the connector framework copies the current
business object to the JMS monitor queue and then delivers it to the JMS
delivery queue, all as part of the same JMS transaction. The name of the JMS
delivery queue is obtained from the DeliveryQueue connector configuration
property. Control returns to the connector’s pollForEvents() method, after the
call to the gotApplEvent() method.
Notes:
1. The connector has no control over the character set (CCSID) or encoding attributes of data in MQMessages. For
the connector to work properly, WebSphere MQ queues require an ASCII character set, and must be configured
accordingly in MQSA. Because data conversion is applied as the data is retrieved from or delivered to the
message buffer, the connector relies on the IBM WebSphere MQ implementation of JMS to convert data (see the
IBM WebSphere MQ Java client library documentation). Accordingly, these conversions should be bi-directionally
equivalent to those performed by the native WebSphere MQ API using option MQGMO_CONVERT. The connector has
no control over differences or failures in the conversion process. It can retrieve message data of any CCSID or
encoding supported by WebSphere MQ without additional modifications (such as those imposed by MQSA). To
deliver a message of a specific CCSID or encoding, the output queue must be a fully qualified URI and specify
values for CCSID and encoding. The connector passes this information to WebSphere MQ, which (via the JMS API)
uses the information when encoding data for MQMessage delivery. Often, lack of support for CCSID and
encoding can be resolved by downloading the most recent version of the IBM WebSphere MQ Java client library
from the IBM website. For further information on MQSA requirements, see MQSA documentation. If problems
specific to CCSID and encoding persist, contact IBM Technical Support to discuss the possibility of using another
Java Virtual Machine to run the connector.
The attribute values of the dynamic child meta-object duplicate and override those
of the static meta-object.
Static meta-object
The static meta-object consists of a list of conversion properties defined for
different business objects. To define the conversion properties for a business object,
first create a string attribute and name it using the syntax busObj_verb. For
example, to define the conversion properties for a Customer object with the verb
Create, create an attribute named Swift_MT502_Create. In the application-specific
text of the attribute, you specify the actual conversion properties.
Note: If a static meta-object is not specified, the connector cannot map a given
message format to a specific business object type during polling. When this
is the case, the connector passes the message text to the configured data
handler without specifying a business object. If the data handler cannot
create a business object based on the text alone, the connector reports an
error indicating that this message format is unrecognized.
Application-specific information
The application-specific information is structured in name-value pair format,
separated by semicolons. For example:
InputFormat=ORDER_IN;OutputFormat=ORDER_OUT
If, however, the same input format is defined for more than one business object,
the connector cannot determine which business object the data represents before
passing it to the data handler. In such cases, the connector passes the message
contents only to the data handler and then looks up conversion properties based
on the business object that is generated. Accordingly, the data handler must
determine the business object based on the message content alone.
If the verb on the generated business object is not set, the connector searches for
conversion properties defined for this business object with any verb. If only one set
of conversion properties is found, the connector assigns the specified verb. If more
properties are found, the connector fails the message because it is unable to
distinguish among the verbs.
as default values for all other conversion properties. Thus, unless specified
otherwise by an attribute or overridden by a dynamic child meta-object value, the
connector issues all business objects to queue CustomerQueue1 and then waits for a
response message. If a response does not arrive within 5000 milliseconds, the
connector terminates immediately.
[Attribute]
Name = Default
Type = String
Cardinality = 1
MaxLength = 1
IsKey = true
[Verb]
Name = Create
[End]
[Verb]
Name = Retrieve
[End]
[End]
Because dynamic child meta object properties override those found in static
meta-objects, if you specify a dynamic child meta-object, you need not include a
connector property that specifies the static meta-object. Accordingly, you can use
either a dynamic child meta-object or a static meta-object, or both.
The connector checks the application-specific text of the top-level business object
received to determine whether tag cw_mo_conn specifies a child meta-object. If so,
the dynamic child meta-object values override those specified in the static
meta-object.
Table Table 19 shows how a dynamic child meta-object might be structured for
polling.
Table 19. JMS dynamic child meta-object structure for polling
Property name Sample value
InputFormat ORDER_IN
InputQueue MYInputQueue
OutputFormat CxIgnore
OutputQueue CxIgnore
ResponseTimeout CxIgnore
TimeoutFatal CxIgnore
Example scenario:
v The connector retrieves a message with the format ORDER_IN from the queue
WebSphere MQ queue.
v The connector converts this message to an order business object and checks the
application-specific text to determine if a meta-object is defined.
[Attribute]
Name = OutputFormat
Type = String
MaxLength = 1
IsKey = true
IsForeignKey = false
IsRequired = false
DefaultValue = ORDER
IsRequiredServerBound = false
[End]
[Attribute]
Name = OutputQueue
Type = String
MaxLength = 1
IsKey = false
IsForeignKey = false
IsRequired = false
DefaultValue = OUT
IsRequiredServerBound = false
[End]
[Attribute]
Name = ResponseTimeout
Type = String
MaxLength = 1
IsKey = false
IsForeignKey = false
IsRequired = false
DefaultValue = -1
IsRequiredServerBound = false
[End]
[Attribute]
Name = TimeoutFatal
Type = String
MaxLength = 1
IsKey = false
IsForeignKey = false
IsRequired = false
DefaultValue = false
IsRequiredServerBound = false
[End]
[Attribute]
Name = InputFormat
Type = String
MaxLength = 1
IsKey = true
IsForeignKey = false
IsRequired = false
IsRequiredServerBound = false
[End]
[Attribute]
Name = InputQueue
Type = String
MaxLength = 1
IsKey = false
IsForeignKey = false
IsRequired = false
IsRequiredServerBound = false
[Verb]
Name = Create
[End]
[Verb]
Name = Retrieve
[End]
[End]
[BusinessObjectDefinition]
Name = Swift_MT502
Version = 1.0.0
AppSpecificInfo = cw_mo_conn=MyConfig
[Attribute]
Name = FirstName
Type = String
MaxLength = 1
IsKey = true
IsForeignKey = false
IsRequired = false
IsRequiredServerBound = false
[End]
[Attribute]
Name = LastName
Type = String
MaxLength = 1
IsKey = true
IsForeignKey = false
IsRequired = false
IsRequiredServerBound = false
[End]
[Attribute]
Name = Telephone
Type = String
MaxLength = 1
IsKey = false
IsForeignKey = false
IsRequired = false
IsRequiredServerBound = false
[End]
[Attribute]
Name = MyConfig
Type = MO_Sample_Config
ContainedObjectVersion = 1.0.0
Relationship = Containment
Cardinality = 1
MaxLength = 1
IsKey = false
IsForeignKey = false
IsRequired = false
IsRequiredServerBound = false
[End]
[Attribute]
Name = ObjectEventId
[Verb]
Name = Create
[End]
[Verb]
Name = Retrieve
[End]
[End]
The following attributes, which reflect JMS and SWIFT header properties, are
recognized in the dynamic meta-object.
Table 20. Dynamic meta-object header attributes
Header attribute name Mode Corresponding JMS header
JMSProperties Read/Write
The interpretation and use of these attributes are described in the sections below.
Note: None of the above attributes are required. You may add any attributes to the
dynamic meta-object that relate to your business process.
The table below shows application-specific information properties that you must
define for attributes in the JMSProperties object.
Table 21. Application-specific information for JMS property attributes
Name Possible values Comments
Name Any valid JMS property This is the name of the JMS
name property. Some vendors
reserve certain properties to
provide extended
functionality. In general,
users should not define
custom properties that begin
with JMS unless they are
seeking access to these
vendor-specific features.
Type String, Int, Boolean, Float, This is the type of the JMS
Double, Long, Short property. The JMS API
provides a number of
methods for setting values in
the JMS Message:
setIntProperty,
setLongProperty,
setStringProperty, etc. The
type of the JMS property
specified here dictates which
of these methods is used for
setting the property value in
the message.
The figure below shows attribute JMSProperties in the dynamic meta-object and
definitions for four properties in the JMS message header: ID, GID, RESPONSE
and RESPONSE_PERSIST. The application-specific information of the attributes
Note: Using the dynamic meta-object to change the CorrelationID set in the
request message does not affect the way the adapter identifies the response
message—the adapter by default expects that the CorrelationID of any
response message equals the message ID of the request sent by the adapter.
Windows
To complete the configuration of the connector for Windows platforms, you must
modify the start_SWIFT.bat file:
1. Open the start_SWIFT.bat file.
2. Scroll to the section beginning with “Set the directory containing your MQ
Java client libraries,” and specify the location of your MQ Java client
libraries.
UNIX
To complete the configuration of the connector for UNIX platforms, you must
modify the start_SWIFT.sh file:
1. Open the start_SWIFT.sh file.
2. Scroll to the section beginning with “Set the directory containing your
WebSphere MQ Java client libraries,” and specify the location of your
WebSphere MQ Java client libraries.
Startup
For information on starting a connector, stopping a connector, and the connector’s
temporary startup log file, see thestartup chapter in the System Installation Guide for
your platform.
Business object meta-data includes the structure of a business object, the settings of
its attribute properties, and the content of its application-specific text. Because the
connector is meta-data-driven, it can handle new or modified business objects
without requiring modifications to the connector code. However, the connector’s
configured data handler makes assumptions about the structure of its business
objects, object cardinality, the format of the application-specific text, and the
database representation of the business object. Therefore, when you create or
modify a business object for SWIFT, your modifications must conform to the rules
the connector is designed to follow, or the connector cannot process new or
modified business objects correctly.
Important: The connector supports business object mapping between the ISO
7775-15022 message formats for SWIFT Category 5, Securities Markets,
but only with the expanded business object definitions available with
release 1.3 (and later) of this connector. To install the object definition
files, see Chapter 2, “Configuring the connector”, on page 17. If you use
business object definitions from release 1.2 or earlier, the connector cannot
perform ISO 7775-15022 business object transformations.
This chapter describes how the connector processes business objects and describes
the assumptions the connector makes. You can use this information as a guide to
implementing new business objects.
The sections below discuss the requirements for WebSphere business objects as
well as the SWIFT message structure. For a step-by-step description of how the
SWIFT data handler interacts with WebSphere business objects and SWIFT
messages, see Chapter 5, “SWIFT Data Handler”, on page 123.
Important: A business object array can contain data whose type is a business
object. It cannot contain data of any other type, such as String or
Integer.
There are two types of relationships between parent and child business objects:
v Single-cardinality—When an attribute in a parent business object represents a
single child business object. The attribute is of the same type as the child
business object.
v Multiple-cardinality—When an attribute in the parent business object represents
an array of child business objects. The attribute is an array of the same type as
the child business objects.
Name property
Each business object attribute must have a unique name within the business object.
The name should describe the data that the attribute contains.
Type property
The Type property defines the data type of the attribute:
v For a simple attribute, the supported types are Boolean, Integer, Float, Double,
String, Date, and LongText.
v If the attribute represents a child business object, specify the type as the name of
the child business object definition (for example, Type = MT502A) and specify the
cardinality as 1.
v If the attribute represents an array of child business objects, specify the type as
the name of the child business object definition and specify the cardinality as n.
Note: All attributes that represent child business objects also have a
ContainedObjectVersion property (which specifies the child’s version
number) and a Relationship property (which specifies the value
Containment).
Cardinality property
Each simple attribute has cardinality 1. Each business object attribute that
represents a child or array of child business objects has cardinality 1 or n,
respectively.
Key property
At least one attribute in each business object must be specified as the key. To
define an attribute as a key, set this property to true.
When you specify as key an attribute that represents a child business object, the
key is the concatenation of the keys in the child business object. When you specify
as key an attribute that represents an array of child business objects, the key is the
concatenation of the keys in the child business object at location 0 in the array.
You can also use the Foreign Key property for other processing instructions. For
example, this property can be used to specify what kind of foreign key lookup the
connector performs. In this case, you might set Foreign Key to true to indicate that
the connector checks for the existence of the entity in the database and creates the
relationship only if the record for the entity exists.
For information on enforcing the Required property for attributes, see the section
on initAndValidateAttributes() in Connector Reference: C++ Class Library and
Connector Reference: Java Class Library.
AppSpecificInfo
The AppSpecificInfo property is a String no longer than 255 characters that is
specified primarily for an application-specific business object.
Note: The Max Length property is very important when you use a fixed width
data handler. Attribute length is not available in the collaboration mapping
process (relevant only when ICS is the integration broker).
For more information on how the Default Value property is used, see the section
on initAndValidateAttributes() in Connector Reference: C++ Class Library and
Connector Reference: Java Class Library.
Comments property
The Comments property allows you to specify a human-readable comment for an
attribute. Unlike the AppSpecificInfo property, which is used to process a business
object, the Comments property provides only documentation information.
If no value is required, the connector sets the value of that attribute to CxIgnore by
default.
name=value[:name_n=value_n][...]
Each parameter set is separated from the next by a colon (:) delimiter.
MQSA UUID
SWIFT 1:Basic Header Block
SWIFT 2: Application Header Block
SWIFT 3:User Header Block
SWIFT 4: Text Block
SWIFT 5: Trailer
MQSA S Block
v Message business object (Msg BO) This is the top-level business object whose
attributes correspond to the blocks in a SWIFT message. For further information,
see “Top-level business object structure” on page 49.
v Message block business object (MsgBlk BO) A child object of the Msg BO that
can represent blocks 1, 2, 3, or 5 in a SWIFT message. For further information,
see “Block 1 business object structure” on page 53.
v Message data business object (MsgData BO) A child object of the Msg BO that
represents block 4 of the SWIFT message. For further information, see “Block 4
business object structure” on page 61.
v Message sequence business object (MsgSeq BO) A child object of a MsgData
BO or of another MsgSeq BO. A MsgSeq BO represents a sequence of fields
occurring in block 4 of the SWIFT message. For further information, see
“Sequence business object structure” on page 66.
Note: Only attribute properties of consequence are shown in Table 23. For a listing
of all attribute properties, see “Sample top-level Business Object (Msg BO)
where:
Note: It is possible to create business objects for block 5 and block S using block 3
as a template.
All SWIFT top-level business object definitions are identical to that shown in
Figure 6 with one exception: Block 4, shown as Swift_MT502Data, reflects the actual
data definition of a specific SWIFT message.
Note: To create a top-level business object definition for a SWIFT message, you
must start Business Object Designer and then create all the child objects first.
[Attribute]
Name = UUID
Type = String
Cardinality = 1
MaxLength = 255
IsKey = true
IsForeignKey = false
IsRequired = false
AppSpecificInfo = block=0;parse=no
IsRequiredServerBound = false
[End]
[Attribute]
Name = Swift_01Header
Type = Swift_BasicHeader
ContainedObjectVersion = 1.0.0
Relationship = Containment
Cardinality = 1
MaxLength = 1
IsKey = false
IsForeignKey = false
IsRequired = false
AppSpecificInfo = block=1;parse=fixlen
IsRequiredServerBound = false
[End]
[Attribute]
Name = Swift_02Header
Type = Swift_ApplicationHeader
ContainedObjectVersion = 1.0.0
Relationship = Containment
Cardinality = 1
MaxLength = 1
IsKey = false
[Verb]
Name = Create
[End]
Note: Only attribute properties of consequence are shown in Table 24. For a listing
of all attribute properties, see “Sample block 1 business object definition” on
page 54.
Table 24. Block 1 business object structure
Name Type Key Foreign Required Cardinality Default Max
key length
BlockIdentifier String Yes No Yes 1 1:a 2
ApplicationIdentifierString No No Yes 1 1
ServiceIdentifier String No No Yes 1 2
LTIdentifier String No No Yes 1 12
SessionNumber String No No Yes 1 4
SequenceNumber String No No No 1 4
a
The BlockIdentifier attribute includes the delimiter ”:” as in “1:”.
Figure 7 shows a block 1 business object definition that has been manually created
in a WebSphere development environment. Each attribute name
(ApplicationIdentifier, ServiceIdentifier, and so on) corresponds to a field in
this SWIFT message block. For further information on this SWIFT message block,
see Appendix D, “SWIFT message structure”, on page 173, and All Things SWIFT:
the SWIFT User Handbook. Specify Type String for each named attribute. Note that
there is no attribute application-specific information for the components of this
business object.
Note: Be sure to specify the correct MaxLength values for the attribute names in
this fixed-length block business definition.
Note: To create a block 1 business object definition for a SWIFT message, start
Business Object Designer and then enter values for the attributes shown in
“Sample block 1 business object definition” on page 54.
[Attribute]
Name = BlockIdentifier
Type = String
Cardinality = 1
MaxLength = 2
IsKey = true
IsForeignKey = false
IsRequired = true
DefaultValue = 1:
IsRequiredServerBound = false
[End]
[Attribute]
Name = ApplicationIdentifier
Type = String
Cardinality = 1
MaxLength = 1
IsKey = false
IsForeignKey = false
IsRequired = true
IsRequiredServerBound = false
[End]
[Attribute]
Name = ServiceIdentifier
Type = String
Cardinality = 1
MaxLength = 2
IsKey = false
IsForeignKey = false
IsRequired = true
IsRequiredServerBound = false
[End]
[Attribute]
Name = LTIdentifier
Type = String
Cardinality = 1
MaxLength = 12
[Verb]
Name = Create
[End]
Note: Only attribute properties of consequence are shown in Table 25. For a listing
of all attribute properties, see “Sample block 2 business object definition” on
page 56.
Table 25. Block 2 business object structure
Name Type Key Required Cardinality Default Max
length
Block Identifier String No Yes 1 2:a 2
IOIdentifier String No Yes 1 1
MessageType String No Yes 1 3
I_ReceiverAddress String No Yes 1 12
I_MessagePriority String No Yes 1 1
I_DeliveryMonitoring String No No 1 1
I_ObsolescencePeriod String No No 1 3
O_InputTime String No Yes 1 4
The first three attributes in Table 25 are I/O attributes. Attributes that start with I_
are input attributes and are populated during SWIFT-to-business-object conversion.
Attributes that start with O_ are output attributes and are populated in
business-object-to-SWIFT conversions. The CxIgnore property must be set for
business-object-to-SWIFT conversions.
Figure 8 shows a block 2 business object definition that has been manually created
in a WebSphere development environment. Each attribute name (BlockIdentifier,
IOIdentifier, and so on) corresponds to a field in this SWIFT message block. The
definition shown is for the input attributes ( I_) are populated during
SWIFT-to-business-object conversion. For further information on this SWIFT
message block, see Appendix D, “SWIFT message structure”, on page 173, and All
Things SWIFT: the SWIFT User Handbook. Specify type String for each named attribute.
Note that there is no attribute application-specific information for the components
of this business object.
Note: Be sure to specify the correct MaxLength values for the attribute names in
this fixed-length block business definition.
Note: To create a block 2 business object definition for a SWIFT message, start
Business Object Designer and then enter values for the attributes shown in
“Sample block 2 business object definition” on page 56.
[Attribute]
Name = BlockIdentifier
Type = String
Cardinality = 1
MaxLength = 2
IsKey = false
IsForeignKey = false
IsRequired = true
DefaultValue = 2:
IsRequiredServerBound = false
[End]
[Attribute]
Name = IOIdentifier
Type = String
Cardinality = 1
MaxLength = 1
IsKey = false
IsForeignKey = false
IsRequired = true
DefaultValue = O
IsRequiredServerBound = false
[End]
[Attribute]
Name = MessageType
Type = String
Cardinality = 1
MaxLength = 3
IsKey = false
IsForeignKey = false
IsRequired = true
IsRequiredServerBound = false
[End]
[Attribute]
Name = O_InputTime
Type = String
Cardinality = 1
MaxLength = 4
IsKey = false
IsForeignKey = false
IsRequired = true
IsRequiredServerBound = false
[End]
[Attribute]
Name = O_MessageInputReference
Type = String
Cardinality = 1
MaxLength = 28
IsKey = false
IsForeignKey = false
IsRequired = true
IsRequiredServerBound = false
[End]
[Attribute]
Name = O_OutputDate
Type = String
Cardinality = 1
MaxLength = 6
IsKey = false
IsForeignKey = false
IsRequired = false
IsRequiredServerBound = false
[End]
[Attribute]
[Verb]
Name = Create
[End]
Note: Only attribute properties of consequence are shown in Table 26. For a listing
of all attribute properties, see “Sample block 3 business object definition” on
page 60.
Table 26. Block 3 business object structure
Name Type Key Foreign Required Cardinality Application Max length
specific
information
Tag103 String Yes No No 1 Tag=103 6
Tag113 String No No No 1 Tag=113 6
Tag108 String No No No 1 Tag=108 6
Tag119 String No No No 1 Tag=119 6
Tag115 String No No No 1 Tag=115 6
Figure 9 shows a block 3 business object definition that has been manually created
in a WebSphere development environment. Each attribute name (Tag103, Tag113,
and so on,) corresponds to a field in this SWIFT message block. For further
information on this SWIFT message block, see Appendix D, “SWIFT message
structure”, on page 173, and All Things SWIFT: the SWIFT User Handbook. Specify
type String for each named attribute. Note that the application-specific information
for the components of this business object are SWIFT tags.
Note: To create a block 3 business object definition for a SWIFT message, start
Business Object Designer and then enter values for the attributes shown in
“Sample block 3 business object definition” on page 60.
[Attribute]
Name = Tag103
Type = String
Cardinality = 1
MaxLength = 255
IsKey = true
IsForeignKey = false
IsRequired = false
AppSpecificInfo = Tag=103
IsRequiredServerBound = false
[End]
[Attribute]
Name = Tag113
Type = String
Cardinality = 1
MaxLength = 255
IsKey = false
IsForeignKey = false
IsRequired = false
AppSpecificInfo = Tag=113
IsRequiredServerBound = false
[End]
[Attribute]
Name = Tag108
Type = String
Cardinality = 1
MaxLength = 255
IsKey = false
IsForeignKey = false
IsRequired = false
AppSpecificInfo = Tag=108
IsRequiredServerBound = false
[End]
[Attribute]
Name = Tag119
Type = String
Cardinality = 1
MaxLength = 255
IsKey = false
IsForeignKey = false
IsRequired = false
AppSpecificInfo = Tag=119
IsRequiredServerBound = false
[End]
[Attribute]
Name = Tag115
Type = String
Cardinality = 1
MaxLength = 255
IsKey = false
IsForeignKey = false
IsRequired = false
AppSpecificInfo = Tag=115
IsRequiredServerBound = false
[End]
[Attribute]
Name = ObjectEventId
Type = String
Cardinality = 1
[Verb]
Name = Create
[End]
Every tag and sequence in a SWIFT message is modeled as a child business object
of the MsgData BO. Accordingly, a MsgData BO has child objects of two types:
field business objects (MsgField BO) and sequence business objects (MsgSeq BO).
These business objects reflect how the SWIFT data is formatted in block 4. More
specifically, attributes in these business objects model the content (message tags
and their content) and order (sequence) that is specified in a SWIFT message
format specification. The sequence of the message tags is crucial if the business
object definition is to faithfully represent the SWIFT message. For further
information on MsgField BOs and MsgSeq BOs, see “Sequence and field business
objects” on page 66.
Figure 10 shows a portion of the format specification from the SWIFT Standards
Release Guide for MT502, an order to buy or sell.
MsgData BO format
The format of a MsgData BO is summarized in the sections below.
For example:
Name = Swift_MT502Data
Accordingly, the attribute names are the same as those for MsgSeq BOs and
MsgField BOs. The naming convention for MsgField BO attributes is as follows:
Swift_<tag_number>_<position_in_the_SWIFT_message>
For example:
Name = Swift_94_1
For example:
Name = Swift_MT502_B
For further information see “Sequence business object structure” on page 66 and
“Field business object definitions” on page 69.
For example:
Type = Swift_Tag_94
For example:
Type = Swift_MT502_B
...
ContainedObjectVersion = 1.1.0
...
[End]
...
Relationship = Containment
...
[End]
...
Cardinality = n
...
[End]
For example:
[Attribute]
Name = Swift_16.1
Type = Swift_Tag_16
...
Cardinality = 1
IsKey = true
[End]
where nn is the SWIFT tag number of the field, xx is one or a list of supported
letter options for the tag, and string is the value of the qualifier for a non-generic
field as described in Table 22 on page 47. For example:
[Attribute]
Name = Swift_16_22
Type = Swift_Tag_16
...
AppSpecificInfo = Tag=16;Letter=S;Content=OTHRPRTY
...
[End]
When MsgField BO attributes appear in MsgSeq BOs and the application specific
information indicates:
...;Union=True
The MsgField child object—a TagUnion business object and its child objects,
TagLetterOption objects—will be populated instead of the DataField attribute. For
information on TagUnion business objects, see “Field business object definitions”
on page 69.
MsgData BO
MsgSeq attribute
MsgField attribute MsgField BO
MsgField attribute
MsgSeq BO
MsgField BO
MsgField BO
MsgField BO
Figure 12. Field and sequence business objects in the (block 4) MsgData BO
Figure 13 shows part of a definition for a SWIFT message (MT502) that illustrates a
sequence containing field and sequence attributes. The sequence attribute
Swift_MT02_B_Order_Details not only includes several attributes of type Tag (for
example, Swift_Tag_16, Swift_Tag_94), but also the subsequence
Swift_MT502_B1_Price. This subsequence is a repeating optional sequence, and its
properties reflect this (Required= no; Cardinality=n). Note that the sequences
contain no application-specific information.
MsgSeq BO
MsgSeq attribute
MsgField attribute
MsgSeq BO
MsgField BO
MsgField BO
Figure 15 shows another excerpt of a MsgSeq BO. In this excerpt, the Swift_Tag_
attributes represent MsgField BOs. The Swift_MT502_A1_Linkages attribute is for a
child object that is a subsequence MsgSeq BO.
For a sample sequence business object, see “Sample sequence business object
definition” on page 68.
[Attribute]
Name = Start_Of_Block
Type = Swift_Tag_16
ContainedObjectVersion = 1.0.0
Relationship = Containment
Cardinality = 1
MaxLength = 1
IsKey = true
IsForeignKey = false
IsRequired = true
AppSpecificInfo = Tag=16;Letter=R;Content=GENL
IsRequiredServerBound = false
[End]
[Attribute]
Name = Senders_Reference
Type = Swift_Tag_20
ContainedObjectVersion = 1.0.0
Relationship = Containment
Cardinality = 1
MaxLength = 1
IsKey = false
IsForeignKey = false
IsRequired = true
AppSpecificInfo = Tag=20;Letter=C
IsRequiredServerBound = false
[End]
[Attribute]
Name = Function_Of_The_Message
Type = Swift_Tag_23
ContainedObjectVersion = 1.0.0
Relationship = Containment
Cardinality = 1
MaxLength = 1
IsKey = false
IsForeignKey = false
IsRequired = true
AppSpecificInfo = Tag=23;Letter=G
IsRequiredServerBound = false
[End]
[Attribute]
Name = Preparation_DateTime
Type = Swift_Tag_98
ContainedObjectVersion = 1.0.0
Relationship = Containment
Cardinality = 1
MaxLength = 1
IsKey = false
IsForeignKey = false
IsRequired = false
AppSpecificInfo = Tag=98;Letter=A|C
IsRequiredServerBound = false
[End]
[Verb]
Name = Create
[End]
[Verb]
Name = Retrieve
[End]
MsgField BO format
As shown in Figure 16, each MsgField BO contains five attributes, including one
and only one TagUnion BO, with the data type shown in parentheses () below:
MsgField BO
Letter attribute
Qualifier attribute
IC Attribute
Data Attribute
DataField Attribute TagUnion BO
TagLetterOption attribute
TagLetterOption BO
TagLetterOption BO
The content and order of all subfields other than the SWIFT Qualifier and Issuer
Code (IC) are captured in the child object of DataField, which is the TagUnion BO
and its child objects, TagLetterOption BOs. The attributes and business objects
shown in Figure 16 are discussed in the section below.
MsgField BO, TagUnion BO, and TagLetter BO Attribute names: The names of
the five attributes in a MsgField BO are as follows:
v Letter
v Qualifier
v IC
where tag_number is the numeric representation of the tag number and the square
brackets signify that the letter is appended only when it is associated with the tag.
For example:
Swift_20_C
MsgField BO, TagUnion BO, and TagLetterOption BO attribute types: The type
for MsgField attributes is as follows:
v Letter (String)
v Qualifier (String)
v Issuer Code (String)
v Data (String)
v DataField (TagUnion_BO)
The type for attributes in the TagUnion BO is the name of the TagLetterOption BO
child object. For example, in a TagUnion BO definition for Swift_Tag_Union_20, the
type for the TagLetterOption attribute is as follows:
[Attribute]
Name = Swift_20_C
Type = Swift_Tag_Union_20_Opt_C
...
...
[End]
...
Cardinality = 1
...
[End]
For example:
[Attribute]
Name = Letter
Type = String
IsKey = true
...
[End]
where
*** stands for the SWIFT subfield format specification, which excludes
delimiter information
$$$ stands for one or more letters that constitute the delimiter between the
current subfield and the next subfield.
When the delimiters are CrLf, the symbol string CrLf specifies that a carriage
return is immediately followed by a line feed.
Name = CountryCode
Type = String
...
AppSpecificInfo = Format=2!a;Delim=/
...
[End]
For a sample object and attribute definitions, see “Sample MsgField BO, TagUnion
BO, and TagLetterOption BO definitions” on page 73.
[Attribute]
Name = Letter
Type = String
MaxLength = 255
IsKey = true
IsForeignKey = false
IsRequired = false
IsRequiredServerBound = false
[End]
[Attribute]
Name = Qualifier
Type = String
MaxLength = 255
IsKey = false
IsForeignKey = false
IsRequired = false
IsRequiredServerBound = false
[End]
[Attribute]
Name = IC
Type = String
MaxLength = 255
IsKey = false
IsForeignKey = false
IsRequired = false
IsRequiredServerBound = false
[End]
[Attribute]
Name = Data
Type = String
MaxLength = 255
IsKey = false
IsForeignKey = false
IsRequired = false
IsRequiredServerBound = false
[End]
[Attribute]
Name = ObjectEventId
Type = String
MaxLength = 255
IsKey = false
IsForeignKey = false
IsRequired = false
IsRequiredServerBound = false
[End]
[Verb]
Name = Create
[End]
[Verb]
Name = Delete
[End]
[Verb]
Name = Retrieve
[End]
[Verb]
Name = Update
[End]
[End]
Note that the DataField attribute indicates a TagUnion BO, whose name is defined
by the Type attribute, Swift_Tag_Union_21. Here is that TagUnion BO, which lists
as attributes all the letter options for Swift_Tag_21.
[BusinessObjectDefinition]
Name = Swift_Tag_Union_21
Version = 1.1.0
[Attribute]
Name = Swift_21
Type = Swift_Tag_Union_21_Opt
ContainedObjectVersion = 1.0.0
Relationship = Containment
Cardinality = 1
MaxLength = 0
IsKey = true
IsForeignKey = false
IsRequired = false
IsRequiredServerBound = false
[End]
[Attribute]
Name = Swift_21_A
Type = Swift_Tag_Union_21_Opt_A
ContainedObjectVersion = 1.0.0
Relationship = Containment
[Attribute]
Name = Swift_21_B
Type = Swift_Tag_Union_21_Opt_B
ContainedObjectVersion = 1.0.0
Relationship = Containment
Cardinality = 1
MaxLength = 0
IsKey = false
IsForeignKey = false
IsRequired = false
IsRequiredServerBound = false
[End]
[Attribute]
Name = Swift_21_C
Type = Swift_Tag_Union_21_Opt_C
ContainedObjectVersion = 1.0.0
Relationship = Containment
Cardinality = 1
MaxLength = 0
IsKey = false
IsForeignKey = false
IsRequired = false
IsRequiredServerBound = false
[End]
[Attribute]
Name = Swift_21_D
Type = Swift_Tag_Union_21_Opt_D
ContainedObjectVersion = 1.0.0
Relationship = Containment
Cardinality = 1
MaxLength = 0
IsKey = false
IsForeignKey = false
IsRequired = false
IsRequiredServerBound = false
[End]
[Attribute]
Name = Swift_21_E
Type = Swift_Tag_Union_21_Opt_E
ContainedObjectVersion = 1.0.0
Relationship = Containment
Cardinality = 1
MaxLength = 0
IsKey = false
IsForeignKey = false
IsRequired = false
IsRequiredServerBound = false
[End]
[Attribute]
Name = Swift_21_F
Type = Swift_Tag_Union_21_Opt_F
ContainedObjectVersion = 1.0.0
Relationship = Containment
Cardinality = 1
MaxLength = 0
[Attribute]
Name = Swift_21_G
Type = Swift_Tag_Union_21_Opt_G
ContainedObjectVersion = 1.0.0
Relationship = Containment
Cardinality = 1
MaxLength = 0
IsKey = false
IsForeignKey = false
IsRequired = false
IsRequiredServerBound = false
[End]
[Attribute]
Name = Swift_21_N
Type = Swift_Tag_Union_21_Opt_N
ContainedObjectVersion = 1.0.0
Relationship = Containment
Cardinality = 1
MaxLength = 0
IsKey = false
IsForeignKey = false
IsRequired = false
IsRequiredServerBound = false
[End]
[Attribute]
Name = Swift_21_P
Type = Swift_Tag_Union_21_Opt_P
ContainedObjectVersion = 1.0.0
Relationship = Containment
Cardinality = 1
MaxLength = 0
IsKey = false
IsForeignKey = false
IsRequired = false
IsRequiredServerBound = false
[End]
[Attribute]
Name = Swift_21_R
Type = Swift_Tag_Union_21_Opt_R
ContainedObjectVersion = 1.0.0
Relationship = Containment
Cardinality = 1
MaxLength = 0
IsKey = false
IsForeignKey = false
IsRequired = false
IsRequiredServerBound = false
[End]
[Attribute]
Name = ObjectEventId
Type = String
MaxLength = 255
IsKey = false
IsForeignKey = false
IsRequired = false
IsRequiredServerBound = false
[End]
[Verb]
Name = Retrieve
[End]
[End]
Note that IsKey = true for the first attribute in the TagUnion BO above, Swift_21.
The attribute Swift_21_A indicates a child object TagLetterOption BO. This child
object’s name is defined by the attribute’s Type attribute,
Swift_Tag_Union_21_Opt_A. Here is that TagLetterOption BO:
[BusinessObjectDefinition]
Name = Swift_Tag_Union_21_Opt_A
Version = 1.0.0
[Attribute]
Name = ReferenceOfTheIndividualAllocation
Type = String
MaxLength = 255
IsKey = true
IsForeignKey = false
IsRequired = false
AppSpecificInfo = Format=16x
IsRequiredServerBound = false
[End]
[Attribute]
Name = ObjectEventId
Type = String
MaxLength = 255
IsKey = false
IsForeignKey = false
IsRequired = false
IsRequiredServerBound = false
[End]
[Verb]
Name = Create
[End]
[Verb]
Name = Retrieve
[End]
The TagLetterOption BO can represent simple and complex SWIFT field and
subfield formatting. Here is a business object definition for
Swift_Tag_Union_22_Opt, a TagLetterOption BO whose attributes and
application-specific information specify the subfield formatting for SWIFT Field 22,
a function for a Common Reference between a sender and receiver. Notice that the
[Attribute]
Name = Function
Type = String
MaxLength = 255
IsKey = true
IsForeignKey = false
IsRequired = false
AppSpecificInfo = Format=8a;Delim=/
IsRequiredServerBound = false
[End]
[Attribute]
Name = CommonReference
Type = String
MaxLength = 255
IsKey = false
IsForeignKey = false
IsRequired = false
AppSpecificInfo = Format=4!a2!c4!n4!a2!c
IsRequiredServerBound = false
[End]
[Attribute]
Name = ObjectEventId
Type = String
MaxLength = 255
IsKey = false
IsForeignKey = false
IsRequired = false
IsRequiredServerBound = false
[End]
[Verb]
Name = Create
[End]
[Verb]
Name = Retrieve
[End]
[End]
Important: The adapter supports business object ISO 7775-15022 mapping for
SWIFT Category 5, Securities Markets, but only with the expanded
business object definitions available with this release and described in
Chapter 3, “Business objects”, on page 43, and only on Solaris
platforms. The mapping capability does not support transformation of
business objects released with 1.2 or earlier releases of the adapter for
SWIFT.
Map_objects.txt contains 20 PIMOs in their entirety. Each PIMO contains all of the
meta-data required to transform a business object representing an ISO 7775- or
15022-formatted SWIFT message to a business object representing the
corresponding ISO 15022- or 7775-formatted SWIFT message. For more on these
PIMOs and how to create or modify them, see “Creating PIMOs” on page 88.
Port This child object always contains an input port and output port.
v IPort The input port
v OPort The output port
Declaration This optional child object contains attributes that name local variables.
Action This attribute describes objects that contain compute instructions. The
instructions, which reside in the attribute’s application-specific information, are
used to process Declaration variables and Port objects. Action child objects
represent computational sub-tasks listed in the order of execution:
v Action1
v Action2
v ...
v Actionn
In fact, as shown in Figure 19, the PIMOs that are used to map SWIFT business
objects are hierarchical objects that contain many nested levels of PIMOs, each with
their own Port, Action, and Declaration objects as well as discrete mapping and
computing instructions. At every level, however, the Port, Action and Declaration
attributes exhibit the same syntax, structure, and function, which are described in
the sections below.
Note: A simple PIMO can have multiple nested levels of Port, Declaration, and
Action objects. A complex PIMO has more than one Port object on the same
level. The PIMOs available with this release are simple PIMOs.
Port
The Port object type describes the specific transformation the mapping engine
undertakes and has the following naming syntax:
PimoName>_Port
Port contains as child objects IPort (input port) and OPort (output port). The types
of the IPort and OPort attributes describe the parameters to be mapped: an IPort is
used to pass an input parameter (for example, Swift_MT_520), and an OPort is used
to pass an output parameter (for example Swift_MT_540). The parameters are
passed by way of reference to their object types.
The IPort and OPort object may be a primitive type, such as int, float, or String,
or a business object, such as Swift_MT520. The computation instructions contained
in an Action child object refer to, and act on, these IPort and OPort object types.
By convention, the Port and IPort attributes are marked as key (IsKey = true).
Declaration
The Declaration object type describes the objects to be transformed and has the
following naming syntax:
PimoName_Declaration
By convention, the first variable in the Declaration object is marked as key (IsKey
= true).
Action
The Action object describes the computing instructions that the mapping engine
performs. The top-level Action object has the following naming syntax:
PimoName_Action
The computing instructions specified in Action objects act on the IPort and OPort
objects and use the variables specified in Declaration objects. For each Port and
Declaration, the Action objects aggregate, in sequential order, all of the computing
instructions for the map engine. No space or period is allowed in the Action type
names.
Compute action: A Compute type indicates that the Action can be performed by a
simple operation. All compute type Actions use the keyword opCode to specify the
Delegate action: Delegate Action is specified when more than one Compute
Action is required. A Delegate Action relies on nested PIMOs to complete the
Action, and in this sense is analogous to a function call. The syntax of a Delegate
Action object is specified in its AppSpecificInfo and is as follows:
type=delegate;<var1>;<var2>
where type indicates the Delegate Action type and var1 is passed to the IPort of a
child PIMO, and var2 is passed to the OPort of the child PIMO. The relative
position of the variables corresponds to the sequence of Ports in the invoked
PIMO. (The invoked PIMO is the PIMO to which Action is delegated.) Looping
For example, in Figure 21, Action6 is of type Delegate. The computing tasks for
this action are too complex for specification using Compute Action. In fact, the
computing tasks require two levels of Delegate Action. The first Delegate Action is
to a nested PIMO, Map_Swift_MT520_A_to_MT540_A_Port. The Action of this Port is
also of type Delegate, with its variables passed to the IPort and OPort of
Map_Swift_Tag_20_to_20C_Port. The Action of this nested PIMO is of the compute
type, and the results are passed back up to the invoking PIMOs, just like a
function call.
Note: The order and type of variables in the method call must match the that of
the parameters in the method.
A TrueAction attribute indicates the computing instruction that the map engine
will process if the Boolean expression (in the Scenario attribute) evaluates to true;
likewise, a FalseAction attribute indicates the action if the Boolean expression
evaluates to false. Actions specified in the TrueAction and FalseAction can be
Compute, Delegate and Native types, and follow the syntax of the Compute,
Delegate and Native type Actions, respectively.
For example, Figure 22 shows the attributes of a Scenario Action. If the IPort Object
is equal to Code_AVAL, then the computing instruction
type=compute;opCode=move;target=OPort;Qualifier_TAV1 will be processed by the
map engine.
IPort (Swift_Tag_20)
v Letter (String)
v Qualifier (String)
v IC (String)
v Data (String)
v DataField (Swift_Tag_Union_20)
– Swift_20 (Swift_Tag_Union_20_Opt) Subfield (String)
– Swift_20_C (Swift_Tag_Union_20_Opt_C) Reference (String)
Creating PIMOs
This section describes how to create a PIMO using Business Object Designer. Before
proceeding, review the previous sections of this chapter, and make sure you have
access to the Swift User HandBook and Business Object Designer, with which you should
be familiar. For more information, see the Business Object Development Guide. You should
also have access to Map_Objects.txt, which contains the PIMOs shipped with this
release as well as thousands of sub-maps and objects that may be of use.
Getting started
1. Launch Business Object Designer.
2. Choose Server>Connect and login to your server.
This provides access to your repository. To load the repository, see Chapter 2,
“Configuring the connector”, on page 17 and the system installation guide for
your operating environment.
3. Choose File>New.
This displays the New Business Object Dialog.
4. Enter the Business Object name as follows:
Map_Swift_MT<SourceNN>_to_MT<DestinationNN>
where SourceNN is the SWIFT message type number that corresponds to the
business object you want to transform and DestinationNN is the SWIFT
message type number that corresponds to the destination business object. This
is the name of a new PIMO representing the mapping between the source
message type and the destination message type as shown in Figure 23.
Defining port
1. Enter Port in the Attribute Name field as shown in Figure 24.
2. Right-click the Type field, and from the pop-up menu choose from available
port objects in your repository.
The type syntax for the Port is as follows:
PimoName_Port
Defining declaration
A Declaration object at the top-level of a PIMO specifies high-level variables as
required by Action objects at this level. As shown in Figure 26, the Declaration
variable applies to the top-level Action object discussed below in “Defining action”
on page 91. Following the naming convention for a Declaration object, the type of
this variable is Map_Swift_MT520_to_MT540_Declaration.
1. Enter Declaration in the Name field under ObjectEventId.
2. Enter PimoName_Declaration in the Type field.
In the example, the Declaration type is Map_Swift_MT520_to_MT540_Declaration
3. Enter three attributes of type String with specifications as follows:
v MTNum A constant (enter final in the App Spec Info field) with the Key
property checked and a Default value of MT<DestinationNN>. In the
example, the default is the destination SWIFT message type, MT540.
v TargetMTNum A variable whose default value is the DestinationNN. In the
example, the default value is 540.
v SourceMTNum A variable whose default value is the SourceNN. In the
example, the default value is 520.
Defining action
To define the top-level Action Object for the PIMO:
1. Enter Action in the Name field under ObjectEventId.
2. Enter Map_Swift_MT<SourceNN>_to_MT<DestinationNN>Action in the Type field.
In the example, the Action type is Map_Swift_MT520_to_MT540_Action, as shown
in Figure 27.
To create all other Action objects for a PIMO mapping SWIFT MT520 to MT 540,
you must become familiar with the actual tag- and field-level maps for these
messages. This information is available in the SWIFT User Handbook, Category 5,
Securities Markets Message Usage Guidelines. The PIMO models the SWIFT tag and
field maps.
The sections below describe how to extract this information and create Action
objects that represent SWIFT sequences and fields.
Note: PIMO sequence object names can also reflect two special cases:
v The source message tag has a sequence but the destination does not:
– Map_Swift_MT<SourceNN>_<X>_to_MT<DestinationNN>
v The destination message tag has a sequence but the source does not:
– Map_Swift_MT<SourceNN>_to_MT<DestinationNN>_<X>
As shown in Figure 28, the child objects representing some of the sequences make
use of Delegate Action because the mapping requires multiple Compute Action
objects.
When using Delegate Action, you must pass the IPort and OPort object paths. For
example, Figure 28 shows that mapping computations from Swift_MT520_A (the
child object of Swift_MT_520Data) to Swift_MT540_A (the child object of
Swift_MT_540Data). Accordingly, the naming convention is as follows:
IPort.<Source_Object_Path>
OPort.<Destination_Object_Path>
For each delegated sequence shown in Figure 28, you must define the Port,
Declaration, and Action objects for the parent. Declaration is mandatory at the
Note: The SWIFT User Handbook shows that no Code Words are required for the
Map_Swift_20_to_20C mapping.
As shown in Figure 30, you must specify Port (IPort and OPort) objects,
Declaration variables, and Actions for Field objects:
Port The type for IPort and OPort is the source and destination tag, stripped of tag
letters. In this case, they are the same, Swift_Tag_20. IPort, by convention is Key
(IsKey = true).
Declaration The tag letter variable is specified as Letter. In this example, the
default value is C. The keyword final designates this variable as a constant, and,
by convention, the first variable is Key (IsKey = true). Qual_<QUALIFIER>
represents the qualifier. (The qualifier is always in uppercase.) In the example the
default value is SEME.
Action3
type=compute;opCode=move;target=OPort.DataField.Swift_20_C.Reference;
IPort.DataField.Swift_20.TransactionReferenceNumber The value of
IPort.DataField.Swift_20.TransactionReferenceNumber is moved to
OPort.DataField.Swift_20_C.Reference.
Figure 31 shows a field map that involves code word mapping and a Delegate
Action.
For Action3, the Delegate Action, you must define the Port (IPort and OPort)
Declaration, and sub-Action objects as shown in Figure 32.
Note: Each table below shows the mapping relationships and default values for
the ISO 7775-to-15022 direction and for the reverse (ISO 15022-to-7775)
direction.
v Launch Business Object Designer and open the PIMO you wish to modify,
saving a backup copy of the unmodified original copy.
MT543 default
values: 95Q DEAG,
97A
MT543 default
values: 97A
Certificate Numbers B 35E C 13B CERT
Receiver of Securities C 87a E1 E1 95a 97a REAG SAFE MT523 default
values: 95Q
MT543 default
values: 97A
Beneficiary of Securities C 88a E1 E1 95a 97a BUYR SAFE MT523 default
values: 88D; MT543
default values: 95Q,
97A
Registration Details C 77D E1 70a REGI MT543 default
values: 70D
Declaration Details C 77R E1 70a DECL MT543 default
values: 70E
MT543 default
values: 97A
Account With Institution C 57a E2 E2 95a 97a ACCW CASH MT523 default
values: 57D
MT543 default
values: 95Q, 97R
Beneficiary of Money C 58a E2 E2 95a 97a BENM CASH MT523 default
values: 58D
MT543 default
values: 95Q, 97A
Deal Price C 33T B 90a DEAL MT543 default
values: 90B
Deal Amount C 32M E3 19A DEAL
Accrued Interest C 34a E3 19A ACRU
Taxes Deducted C 71E E3 19A MT543 default
values: TRAX
MT547 default
values: 95Q DEAG,
97A SAFE
MT547 default
values: 97A
Certificate Numbers B 35E C 13B CERT Note the Code level
mapping
Receiver of Securities C 87a E1 E1 95a 97a REAG SAFE MT533 default
values: 87D
MT547 default
values: 95Q, 97A
Beneficiary of Securities C 88a E1 E1 95a 97a BUYR SAFE MT533 default
values: 88D
MT547 default
values: 95Q, 97A
Registration Details C 77D E1 70a REGI
Declaration Details C 77R E1 70a DECL
Account for Payment C 53a C 97a CASH MT533 default
values: 53D
MT547 default
values: 97A
MT547 default
values: 95Q, 97A
Beneficiary of Money C 58a E2 E2 95a 97a BENM CASH MT533 default
values: 58D
MT547 default
values: 95Q, 97A
Special Concessions C 33S E3 19A SPCN
Deal Price C 33T B 90a DEAL MT547 default
values: 90B
Deal Amount C 32M E3 19A DEAL
Accrued Interest C 34a E3 19A ACRU MT533 default
values: 34G
Settlement Amount C 32B C E3 19A 19A ESTT ESTT
Other Charge(s) C 71C E3 19A MT547 default
values: CHAR
The SWIFT data handler is a data-conversion module whose primary roles are to
convert business objects into SWIFT messages and SWIFT messages into business
objects. Both default top-level data-handler meta-objects (connector and server)
support the swift MIME type and therefore support use of the SWIFT data
handler.
This chapter describes how the SWIFT data handler processes SWIFT messages. It
also discusses how to configure the SWIFT data handler.
Note: For the SWIFT data handler to function properly, you must also create or
modify business object definitions so that they support the data handler. For
more information, see “SWIFT field structure” on page 173.
You must set the value of this property before running the connector. Doing so will
enable the connector to access the SWIFT data handler when converting SWIFT
messages to business objects and vice versa. For further information, see
“Connector-specific properties” on page 20.
The Delivered Default Value column in Table 53 lists the value that WebSphere
provides for the default value of the associated meta-object attribute. You must
ensure that all attributes in this child meta-object have a default value that is
appropriate for your system and your SWIFT message type. Also, make sure that
at least the ClassName and BOPrefix attributes have default values.
Note: Use Business Object Designer to assign default values to attributes in this
meta-object.
The SWIFT data handler extracts data from a SWIFT message and sets
corresponding attributes in a business object as follows:
1. The SWIFT parser is called to extract the first 4 blocks (UUID + blocks 1
through 3). For block 2, the SWIFT application header, only the input attributes
are extracted.
2. The SWIFT data handler is called to extract the name of the business object
from block 2 of the SWIFT message.
3. The SWIFT data handler creates an instance of the top-level object.
4. Based on the application-specific information parameters, the data handler
processes SWIFT message blocks. The blocks are parsed in one of four different
ways
v parse=no; The block data is treated as type String and not parsed out.
v parse=fixlen; The block data is parsed as a fixed-length structure, based on
the values of the maximum length attributes of the block business object.
v parse=delim; The block data is parsed as {n:data} delimited format.
v parse=field; This setting is used only on block 4 data. Fields are parsed as
generic and non-generic.
5. For block 4 data (parse=field;) the data handler either matches the field
returned from the parser to a tag business object attribute, or finds the
sequence business object that the field belongs to.
a. If the application specific information of the attribute is NULL, the child
business object is a sequence. The data handler checks if the first required
attribute of the child business object matches the field:
v If it does match, the data handler assigns the attribute multiple
cardinality and populates the sequence for the child business object.
v If it does not match, the data handler skips to the next attribute of the
parent business object.
b. If application-specific information is not NULL, the child is a tag business
object. If the field matches the application-specific information, it is handled
with the multiple cardinality and extracted, with the data handler setting
the letter and data attributes of the tag business object.
6. If a non-NULL field is returned, the field is written to a log and an exception is
thrown.
Startup problems
Problem Potential solution / explanation
The connector shuts down unexpectedly during Connector cannot find file jms.jar from the IBM
initialization and the following message is reported: WebSphere MQ Java client libraries. Ensure that variable
Exception in thread "main" MQSERIES_JAVA_LIB in start_connector.bat points to the
java.lang.NoClassDefFoundError: IBM WebSphere MQ Java client library folder.
javax/jms/JMSException...
The connector shuts down unexpectedly during Connector cannot find file com.ibm.mqjms.jar in the IBM
initialization and the following message is reported: WebSphere MQ Java client libraries. Ensure that variable
Exception in thread "main" MQSERIES_JAVA_LIB in start_connector.bat points to the
java.lang.NoClassDefFoundError: IBM WebSphere MQ Java client library folder.
com/ibm/mq/jms/MQConnectionFactory...
The connector shuts down unexpectedly during Connector cannot find file jndi.jar from the IBM
initialization and the following message is reported: WebSphere MQ Java client libraries. Ensure that variable
Exception in thread "main" MQSERIES_JAVA_LIB in start_connector.bat points to the
java.lang.NoClassDefFoundError: IBM WebSphere MQ Java client library folder.
javax/naming/Referenceable...
The connector shuts down unexpectedly during Connector cannot find a required runtime library
initialization and the following exception is reported: (mqjbnd01.dll [NT] or libmqjbnd01.so [Solaris]) from the
java.lang.UnsatisfiedLinkError: no mqjbnd01 in IBM WebSphere MQ Java client libraries. Ensure that
shared library path your path includes the IBM WebSphere MQ Java client
library folder.
The connector reports MQJMS2005: failed to create Explicitly set values for the following properties:
MQQueueManager for ‘:’ HostName, Channel, and Port.
Event processing
Problem Potential solution / explanation
The connector delivers all messages with an MQRFH2 To deliver messages with only the MQMD WebSphere
header. MQ header, append ?targetClient=1 to the name of
output queue URI. For example, if you output messages
to queue queue://my.queue.manager/OUT, change the URI
to queue://my.queue.manager/OUT?targetClient=1. See
Chapter 2, “Configuring the connector”, on page 17 for
more information.
The connector truncates all message formats to 8 This is a limitation of the WebSphere MQ MQMD
characters upon delivery regardless of how the format message header and not the connector.
has been defined in the connector meta-object.
The connector uses the following order to determine a property’s value (where the
highest numbers override the value of those that precede):
1. Default
2. Repository (relevant only if InterChange Server is the integration broker)
3. Local configuration file
4. Command line
Note: In this document backslashes (\) are used as the convention for directory
paths. For UNIX installations, substitute slashes (/) for backslashes and obey
the appropriate operating system-specific conventions.
For general information about how connectors work with InterChange Server, see
the Technical Introduction to IBM WebSphere InterChange Server.
Important: Not all properties are applicable to all connectors that use InterChange
Server. For information specific to an connector, see its adapter guide.
You configure connector properties from Connector Configurator, which you access
from System Manager.
Note: Connector Configurator and System Manager run only on the Windows
system. Even if you are running the connector on a UNIX system, you must
still have a Windows machine with these tools installed. Therefore, to set
connector properties for a connector that runs on UNIX, you must start up
System Manager on the Windows machine, connect to the UNIX
InterChange Server, and bring up Connector Configurator for the connector.
A connector obtains its configuration values at startup. If you change the value of
one or more connector properties during a runtime session, the property’s update
semantics determine how and when the change takes effect. There are four
different types of update semantics for standard connector properties:
v Dynamic—The change takes effect immediately after it is saved.
v Component restart—The change takes effect only after the connector is stopped
and then restarted in System Manager. This does not require stopping and
restarting the application-specific component or InterChange Server.
v Server restart—The change takes effect only after you stop and restart the
application-specific component and InterChange Server.
To determine the update semantics for a specific property, refer to the Update
Method column in the Connector Configurator window, or see the Update Method
column of the table below.
ApplicationName application name the value that is specified for the component value required
connector name restart
BrokerType ICS, WMQI ICS is required
if your broker
is ICS
CharacterEncoding ascii7, ascii8, SJIS, ascii7 component
Cp949, GBK, Big5, restart
Cp297,Cp273,Cp280,
Cp284,Cp037, Cp437
ConcurrentEventTriggeredFlows 1 to 32,767 no value component
restart
ContainerManagedEvents JMS or no value JMS guaranteed
event delivery
ControllerStoreAndForwardMode true or false true dynamic
ControllerTraceLevel 0-5 0 dynamic
DeliveryQueue CONNECTORNAME/DELIVERYQUEUE component JMS transport
restart only
DeliveryTransport MQ, IDL, or JMS IDL component
restart
FaultQueue CONNECTORNAME/FAULTQUEUE component
restart
DuplicateEventElimination True/False False component JMS transport
restart only,
Container
Managed
Events must
be <NONE>
JvmMaxHeapSize heap size in megabytes 128m component
restart
JvmMaxNativeHeapSize size of stack in kilobytes 128k component
restart
JvmMinHeapSize heap size in megabytes 1m component
restart
jms.MessageBrokerName If FactoryClassName is crossworlds.queue.manager server restart JMS transport
IBM, use only
crossworlds.queue.manager.
If FactoryClassName is
Sonic, use
localhost:2506.
AdminInQueue
The queue that is used by the integration broker to send administrative messages
to the connector.
AdminOutQueue
The queue that is used by the connector to send administrative messages to the
integration broker.
AgentConnections
The AgentConnections property controls the number of IIOP connections opened
for request transport between an application-specific component and its connector
controller. By default, the value of this property is set to 1, which causes
InterChange Server to open a single IIOP connection.
ApplicationName
Name that uniquely identifies the connector’s application. This name is used by
the system administrator to monitor the WebSphere business integration system
environment. This property must have a value before you can run the connector.
BrokerType
Identifies the integration broker type that you are using. If you are using an ICS
connector, this setting must be ICS.
CharacterEncoding
Specifies the character code set used to map from a character (such as a letter of
the alphabet, a numeric representation, or a punctuation mark) to a numeric value.
Note: Java-based connectors do not use this property. A C++ connector currently
uses the value ASCII for this property. If you previously configured the
value of this property to ascii7 or ascii8, you must reconfigure the
connector to use either ASCII or one of the other supported values. To
determine whether a specific connector is written in Java or C++, see the
installing and configuring chapter of its adapter guide.
ConcurrentEventTriggeredFlows
Determines how many business objects can be concurrently processed by the
connector controller for event delivery. Set the value of this attribute to the number
of business objects you want concurrently mapped and delivered. For example, set
the value of this property to 5 to cause five business objects to be concurrently
processed. The default value is 1.
Setting this property to a value greater than 1 allows a connector controller for a
source application to simultaneously map multiple event business objects, and to
simultaneously deliver them to multiple collaboration instances. Setting this
property to enable concurrent mapping of multiple business objects can speed
delivery of business objects to a collaboration, particularly if the business objects
use complex maps. Increasing the arrival rate of business objects to collaborations
can improve overall performance in the system.
ContainerManagedEvents
Setting this property to JMS allows a JMS-enabled connector with a JMS event
store to provide guaranteed event delivery, in which an event is removed from the
source queue and placed on the destination queue as a single JMS transaction. This
property can also be set to no value.
Notes:
1. When ContainerManagedEvents is set to JMS, you must also configure the
following properties to enable guaranteed event delivery: PollQuantity = 1 to
500, SourceQueue = SOURCEQUEUE. In addition, you must configure a data
handler with the MimeType, DHClass, and DataHandlerConfigMOName
(optional) properties. To set those values, use the Data Handler tab of
Connector Configurator. The fields for the values under the Data Handler tab
will be displayed only if you have set ContainerManagedEvents to JMS.
2. When ContainerManagedEvents is set to JMS, the connector does not call its
pollForEvents() method, thereby disabling that method’s functionality.
This property only appears if the DeliveryTransport property is set to the value
JMS.
ControllerStoreAndForwardMode
Sets the behavior of the connector controller after it detects that the destination
application-specific component is unavailable. If this property is set to true and the
destination application-specific component is unavailable when an event reaches
InterChange Server, the connector controller blocks the request to the
application-specific component. When the application-specific component becomes
operational, the controller forward the request to it.
If this property is set to false, the connector controller begins failing all service
call requests as soon as it detects that the destination application-specific
component is unavailable.
ControllerTraceLevel
Level of trace messages for the connector controller. The default is 0.
DeliveryQueue
The queue that is used by the connector to send business objects to the integration
broker.
DeliveryTransport
Specifies the transport mechanism for the delivery of events. Possible values are MQ
for WebSphere MQ, IDL for CORBA IIOP, or JMS for Java Messaging Service.
If ICS is the broker type, the value of the DeliveryTransport property can be MQ,
IDL, or JMS, and the default is IDL.
If WMQI is the broker type, JMS is the only possible Delivery Transport value.
The connector sends service call requests and administrative messages over
CORBA IIOP if the value configured for the DeliveryTransport property is MQ or
IDL.
JMS
Enables communication between the connector controller and client connector
framework using Java Messaging Service (JMS).
If you select JMS as the delivery transport, additional JMS properties such as
″jms.MessageBrokerName,″ ″jms.FactoryClassName,″ ″jms.Password,″ and
″jms.UserName,″ display in Connector Configurator. The first two of these
properties are required for this transport.
Important: There may be a memory limitation if you use the JMS transport
mechanism for a connector in the following environment:
Notes:
v If your installation uses more than 768M of process heap size, this resolution
would adversely affect product performance.
v If you run on AIX 4.3.3, you do not need to set the LDR_CNTRL environment
variable. However, you must set IPCCBaseAddress to a value of 11 or 12.
DuplicateEventElimination
Setting this property to true enables a JMS-enabled connector to ensure that
duplicate events are not delivered to the delivery queue. To make use of this
feature, during connector development a unique event identifier must be set as the
business object’s ObjectEventId attribute in the application specific code.
Note: When DuplicateEventElimination is set to true, you must also configure the
MonitorQueue property to enable guaranteed event delivery.
FaultQueue
If the connector experiences an error while processing a message then the
connector moves the message to the queue specified in this property, along with a
status indicator and a description of the problem.
JvmMaxHeapSize
The maximum heap size for the agent (in megabytes). This property is applicable
only if the RepositoryDirectory value is <REMOTE>.
JvmMaxNativeStackSize
The maximum native stack size for the agent (in kilobytes). This property is
applicable only if the RepositoryDirectory value is <REMOTE>.
JvmMinHeapSize
The minimum heap size for the agent (in megabytes). This property is applicable
only if the RepositoryDirectory value is <REMOTE>.
jms.FactoryClassName
Specifies the class name to instantiate for a JMS provider. You must set this
connector property when you choose JMS as your delivery transport mechanism
(DeliveryTransport).
jms.MessageBrokerName
Specifies the broker name to use for the JMS provider. You must set this connector
property when you choose JMS as your delivery transport mechanism
(DeliveryTransport).
jms.NumConcurrentRequests
Specifies the maximum number of concurrent service call requests that can be sent
to a connector at the same time. Once that maximum is reached, new service calls
block and wait for another request to complete before proceeding.
jms.Password
Specifies the password for the JMS provider. A value for this property is optional.
There is no default.
jms.UserName
Specifies the user name for the JMS provider. A value for this property is optional.
There is no default.
Locale
Specifies the language code, country or territory, and, optionally, the associated
character code set. The value of this property determines such cultural conventions
as collation and sort order of data, date and time formats, and the symbols used in
monetary specifications. For more information, see the overview chapter of the
connector guide for an internationalized connector.
where:
ll a two-character language code (usually in lower
case)
Important: By default only a subset of supported locales display in the drop list.
To add other supported values to the drop list, you must manually
modify the \Data\Std\stdConnProps.xml file in the product directory.
For more information, see the appendix on Connector Configurator.
Attention: If the connector has not been internationalized, the only valid value
for this property is en_US. Do not run a non-internationalized C++ connector
against InterChange Server version 4.1.1 if you cannot guarantee that only ISO
Latin-1 data will be processed. To determine whether a specific connector has been
internationalized, see the installing and configuring chapter of its connector guide.
LogAtInterchangeEnd
Specifies whether to log errors to InterChange Server’s log destination, in addition
to the location specified in the LogFileName property. Logging to the server’s log
destination also turns on email notification, which generates email messages for
the MESSAGE_RECIPIENT specified in the InterchangeSystem.cfg file when errors or
fatal errors occur. As an example, when a connector loses its connection to its
application, if LogAtInterChangeEnd is set to true, an email message is sent to the
specified message recipient. The default is false.
MaxEventCapacity
The maximum number of events in the controller buffer. This property is used by
flow control and is applicable only if the value of the RepositoryDirectory property
is <REMOTE>.
The value can be a positive integer between 1 and 2147483647. The default value is
2147483647.
MessageFileName
The name of the connector message file. The standard location for the message file
is \connectors\messages. Specify the message filename in an absolute path if the
message file is not located in the standard location.
Important: To determine whether a specific connector has its own message file, see
the installing and configuring chapter of its adapter guide.
OADAutoRestartAgent
Specifies whether the Object Activation Daemon (OAD) automatically attempts to
restart the application-specific component after an abnormal shutdown. The
properties “OADMaxNumRetry” on page 140 and “OADRetryTimeInterval” on
page 140 are related to this property. This property is required for automatic
restart.
OADMaxNumRetry
Specifies the maximum number of times that the OAD automatically attempts to
restart the application-specific component after an abnormal shutdown.
OADRetryTimeInterval
Specifies the number of minutes of the retry time interval that the OAD
automatically attempts to restart the application-specific component after an
abnormal shutdown. If the application-specific component does not start within the
specified interval, the OAD repeats the attempt as many times as specified in
“OADMaxNumRetry”.
PollEndTime
Time to stop polling the event queue. The format is HH:MM, where HH represents
0-23 hours, and MM represents 0-59 seconds.
You must provide a valid value for this property. The default value is HH:MM, but
must be changed.
PollFrequency
The amount of time between polling actions. Set PollFrequency to one of the
following values:
v The number of milliseconds between polling actions.
v The word key, which causes the connector to poll only when you type the letter
p in the connector’s Command Prompt window. Enter the word in lowercase.
v The word no, which causes the connector not to poll. Enter the word in
lowercase.
PollStartTime
The time to start polling the event queue. The format is HH:MM, where HH represents
0-23 hours, and MM represents 0-59 seconds.
You must provide a valid value for this property. The default value is HH:MM, but
must be changed.
RequestQueue
The queue that is used by the integration broker to send business objects to the
connector.
When the integration broker is ICS, this value must be set to <REMOTE> because
the connector uses the InterChange Server repository to obtain its
connector-definition information
ResponseQueue
Designates the JMS response queue, which delivers a response message from the
connector framework to the integration broker. When the integration broker is
InterChange Server, InterChange Server sends the request and waits for a response
message in the JMS response queue.
RestartRetryCount
Specifies the number of times the connector attempts to restart itself. When used
for a parallel connector, specifies the number of times the master connector
application-specific component attempts to restart the slave connector
application-specific component.
The default is 3.
RestartRetryInterval
Specifies the interval in minutes at which the connector attempts to restart itself.
When used for a parallel connector, specifies the interval at which the master
connector application-specific component attempts to restart the slave connector
application-specific component.
The default is 1.
SourceQueue
Designates the JMS source queue for the connector framework in support of
guaranteed event delivery for JMS-enabled connectors that use a JMS event store.
For further information, see “ContainerManagedEvents” on page 135.
SynchronousRequestQueue
Delivers request messages that require a synchronous response from the connector
framework to the broker. This queue is necessary only if the connector uses
synchronous execution. With synchronous execution, the connector framework
sends a message to the SynchronousRequestQueue and waits for a response back
from the broker on the SynchronousResponseQueue. The response message sent to
the connector bears a correlation ID that matches the ID of the original message.
SynchronousResponseQueue
Delivers response messages sent in reply to a synchronous request from the broker
to the connector framework. This queue is necessary only if the connector uses
synchronous execution.
TraceFileName
The name of the file where the application-specific component writes trace
messages. Specify the filename in an absolute path. The default is STDOUT.
WireFormat
Message format on the transport.
Important: Not all properties are applicable to all connectors that use WebSphere
MQ Integrator Broker. For information specific to a connector, see its
adapter user guide.
Note: Connector Configurator runs only on the Windows system. Even if you are
running the connector on a UNIX system, you must still have a Windows
machine with this tool installed. Therefore, to set connector properties for a
connector that runs on UNIX, you must run Connector Configurator on the
Windows computer and copy the configuration files to the UNIX computer
using FTP or some other file transfer mechanism. For more information
about Connector Configurator, see Appendix B, ″Connector Configurator.″
A connector obtains its configuration values at startup. If you change the value of
one or more connector properties during a runtime session, you must restart the
connector. Standard configuration properties provide information that is used by
the adapter framework and connector framework, and is common to all
connectors.
AdminInQueue
The queue that is used by the integration broker to send administrative messages
to the connector.
AdminOutQueue
The queue that is used by the connector to send administrative messages to the
integration broker.
AgentTraceLevel
Level of trace messages for the connector’s application-specific component. The
default is 0. The connector delivers all trace messages applicable at the tracing
level set or lower.
ApplicationName
Name that uniquely identifies the connection to the application. This name is used
by the system administrator to monitor the connector’s environment. When you
create a new connector definition, this property defaults to the name of the
connector; when you work with the definition for an IBM WebSphere-delivered
connector, the property is also likely to be set to the name of the connector. Set the
property to a value that suggests the program with which the connector is
interfacing, such as the name of an application, or something that identifies a file
system or website in the case of technology connectors.
BrokerType
This property is set to the value WMQI for connectors that are configured to use
WebSphere MQ Integrator Broker as the integration broker.
CharacterEncoding
Specifies the character code set used to map from a character (such as a letter of
the alphabet, a numeric representation, or a punctuation mark) to a numeric value.
Note: Java-based connectors do not use this property. A C++ connector currently
uses the value ASCII for this property. If you previously configured the
value of this property to ascii7 or ascii8, you must reconfigure the
connector to use either ASCII or one of the other supported values. To
determine whether a specific connector is written in Java or C++, see the
installing and configuring chapter of its adapter guide.
ContainerManagedEvents
Setting this property to JMS enables a JMS-enabled connector with a JMS event
store to provide guaranteed event delivery, in which an event is removed from the
source queue and placed on the destination queue as a single JMS transaction. This
property can also be set to no value.
Notes:
1. When ContainerManagedEvents is set to JMS, you must also configure the
following properties to enable guaranteed event delivery: PollQuantity = 1 to
500, SourceQueue = SOURCEQUEUE. In addition, you must configure a data
handler with the MimeType, DHClass, and DataHandlerConfigMOName
(optional) properties.
2. When ContainerManagedEvents is set to JMS, the connector does not call its
pollForEvents() method, thereby disabling that method’s functionality.
DeliveryQueue
The queue that is used by the connector to send business objects to the integration
broker.
DeliveryTransport
Specifies the transport mechanism for the delivery of events. The property defaults
to the value JMS, indicating that the Java Messaging Service (JMS) is used for
communication with WebSphere MQ Integrator. This property must be set to JMS
when WebSphere MQ Integrator Broker is the integration broker. Otherwise, the
connector cannot start.
DuplicateEventElimination
Setting this property to true enables a JMS-enabled connector to ensure that
duplicate events are not delivered to the delivery queue. To make use of this
feature, during connector development a unique event identifier must be set as the
business object’s ObjectEventId attribute in the application specific code.
Note: When DuplicateEventElimination is set to true, you must also configure the
MonitorQueue property to enable guaranteed event delivery.
FaultQueue
If the connector experiences an error while processing a message then the
connector moves the message to the queue specified in this property, along with a
status indicator and a description of the problem.
jms.MessageBrokerName
Specifies the broker name to use for the JMS provider.
jms.NumConcurrentRequests
Specifies the maximum number of concurrent service call requests that can be sent
to a connector at the same time. Once that maximum is reached, new service calls
block and wait for another request to complete before proceeding.
jms.Password
Specifies the password for the JMS provider. A value for this property is optional.
There is no default.
jms.UserName
Specifies the user name for the JMS provider. A value for this property is optional.
There is no default.
Locale
Specifies the language code, country or territory, and, optionally, the associated
character code set. The value of this property determines such cultural conventions
as collation and sort order of data, date and time formats, and the symbols used in
monetary specifications. For more information, see the overview chapter of the
connector guide for an internationalized connector.
where:
ll a two-character language code (usually in lower
case)
TT a two-letter country or territory code (usually in
upper case)
codeset the name of the associated character code set; this
portion of the name is often optional.
Important: By default only a subset of supported locales display in the drop list.
To add other supported values to the drop list, you must manually
modify the \Data\Std\stdConnProps.xml file in the product directory.
MessageFileName
The name of the connector message file. The standard location for the message file
is \connectors\messages. Specify the message filename in an absolute path if the
message file is not located in the standard location. This property defaults to the
value InterchangeSystem.txt for new connector definitions and should be changed
to the name of the message file for the specific connector.
PollEndTime
Time to stop polling the event queue. The format is HH:MM, where HH represents
0-23 hours, and MM represents 0-59 seconds.
You must provide a valid value for this property. The default value is HH:MM, but
must be changed.
PollFrequency
The amount of time between polling actions. Set the PollFrequency to one of the
following values:
v The number of milliseconds between polling actions.
v The word key, which causes the connector to poll only when you type the letter
p in the connector’s Command Prompt window. Enter the word in lowercase.
v The word no, which causes the connector not to poll. Enter the word in
lowercase.
PollStartTime
The time to start polling the event queue. The format is HH:MM, where HH represents
0-23 hours, and MM represents 0-59 seconds.
You must provide a valid value for this property. The default value is HH:MM, but
must be changed.
RepositoryDirectory
The path and name of the directory from which the connector reads the XML
schema documents that store the meta-data of business object definitions.
RequestQueue
The queue that is used by the integration broker to send business objects to the
connector.
ResponseQueue
Designates the JMS response queue, which delivers a response message from the
connector framework to the integration broker.
RestartRetryCount
Specifies the number of times the connector attempts to restart itself. The default
value is 3, indicating that the connector tries to restart 3 times. For instance, if a
connector is unable to log in to an application it fails to start, but with this
property set to the value 3 the connector tries a total of three times to start. When
used in conjunction with the “RestartRetryInterval” property, this behavior enables
a connector to make several attempts at communicating with an application that
might not reliably have a connection available all the time.
RestartRetryInterval
Specifies the interval in minutes at which the connector attempts to restart itself.
The default value is 1, indicating that the connector waits 1 minute in between its
restart attempts.
SourceQueue
Designates the JMS source queue for the connector framework in support of
guaranteed event delivery for JMS-enabled connectors that use a JMS event store.
For further information, see “ContainerManagedEvents” on page 135.
SynchronousRequestQueue
Delivers request messages that require a synchronous response from the connector
framework to WebSphere MQ Integrator Broker. This queue is necessary only if the
connector uses synchronous execution. With synchronous execution, the connector
framework sends a message to the SynchronousRequestQueue and waits for a
response back from WebSphere MQ Integrator Broker on the
SynchronousResponseQueue. The response message sent to the connector bears a
correlation ID that matches the ID of the original message.
SynchronousResponseQueue
Delivers response messages sent in reply to a synchronous request from
WebSphere MQ Integrator Broker to the connector framework. This queue is
necessary only if the connector uses synchronous execution.
SynchronousTimeout
Specifies the time in minutes that the connector waits for a response to a
synchronous request. If the response is not received within the specified time then
the connector moves the original synchronous request message into the fault queue
along with an error message.
Use Connector Configurator to create and modify the configuration file for your
connector. If a configuration file has previously been created for your connector,
you can use Connector Configurator to open the file and modify its settings. If no
configuration file has yet been created for your connector, you can use Connector
Configurator to both create the file and set its properties.
When you complete a connector configuration file, the file is saved as an XML
document. You will save the XML document either as a project in System Manager
(if ICS is your broker) or as a file with a *.cfg extension in a directory folder (if
WebSphere MQ Integrator Broker is your broker, or if you are using the file as a
local configuration file for ICS).
Note: Some properties in the connector configuration file use directory paths, and
these paths default to the Windows convention for directory paths. If you
use the connector configuration file in a UNIX environment, revise any
directory path constructs in the configuration properties to match the UNIX
convention for directory paths.
For details about using projects in System Manager and deploying to InterChange
Server, see the Implementation Guide for WebSphere InterChange Server.
When you are creating a connector for use with a broker other than ICS, you do
not need to connect to System Manager at any point in order to use the file. If you
are creating a connector configuration for use with ICS as the broker, you may still
find it useful on occasion to run Connector Configurator independently, and then
connect to System Manager when you are ready to save the configuration file as a
component of a System Manager project.
Before you begin to configure the connector, you must choose the mode of
Connector Configurator that is appropriate for your broker. The mode that you
choose determines the properties that Connector Configurator will include in the
configuration file. Choosing a broker is a mandatory step when you begin the
process of creating a completely new configuration file. After a configuration file
has been created, you can optionally change the designated broker mode, using a
standard configuration property. (This makes it possible to use an existing
configuration file as a starting point for creating a configuration file that will be
used with a different broker. However, be aware that revising a configuration file
for use with a different broker typically involves changing other configuration
properties as well, and not just the broker mode property.)
After you have chosen your broker type, you can complete the remaining
Connector Configurator tasks for configuring your connector. When you save the
connector configuration file, Connector Configurator will save it in the broker
mode that you have already selected. The title bar of Connector Configurator
always displays the broker mode (such as ICS or WMQI) that Connector
Configurator is currently using.
For further information about deployment, see the Implementation Guide for
WebSphere InterChange Server (for using the connector with ICS as the broker), or
the Implementation Guide for WebSphere MQ Integrator Broker (for using the connector
with MQ Integrator as the broker).
If none of those files exist, or if they are too dissimilar to the configuration
requirements of your connector, you can start instead by creating a template for
the connector-specific properties of your connector. You’ll create properties in the
template, define general characteristics and values for those properties, and specify
any dependencies between the properties. Then you’ll save the template and use it
as the base for creating a new connector configuration file.
After you have made selections for the general characteristics of the property,
choose the Value tab.
Specifying values
The Value tab enables you to set the maximum length, the maximum multiple
values, a default value, or a value range for the property. To do so:
1. Choose the Value tab. The display panel for Value replaces the display panel
for General.
2. Select the name of the property in the Edit properties display.
3. In the fields for Max Length and Max Multiple Values, make any necessary
changes. Note that the changes will not be accepted until and unless you also
open the Property Value dialog for the property, described in the next step.
4. Right-click the box in the left-hand corner of the Value display panel. A
Property Value dialog displays. Depending on the type of the property, the
dialog allows you to enter either a value, or both a value and range. Enter the
appropriate value or range, and click OK.
5. The Value panel refreshes to display any changes you made in Max Length and
Max Multiple Values, and it displays a table with three columns:
The Value column shows the value that you entered in the Property Value
dialog, and any previous values that you created.
The Default Value column allows you to designate any of the values as the
default.
The Value Range shows the range that you entered in the Property Value
dialog.
After a value has been created and appears in the grid, it can be edited from
within the table display. To make a change in an existing value in the table,
select an entire row by clicking on the row number. Then right-click in the
Value field and choose EditValue.
Important: Connector Configurator does not check the spelling of the name
that you enter. You must ensure that the name is correct.
v System Connectivity
Choose ICS or choose WMQI (for WebSphere MQ Integrator Broker)
connectivity.
v Select Connector-Specific Property Template
Type the name of the template that has been designed for your connector.
The names of all available templates are displayed in the Template Name
Important: The directory path and name that you establish here must match
the connector configuration file path and name that you supply in
the startup file for the connector.
5. To complete the connector definition, enter values in the fields for each of the
tabs of the Connector Configurator window, as described for your broker later
in this chapter.
In a typical ICS implementation, the configuration file that you create with
Connector Configurator is not put into use until after you have deployed it to the
ICS server. You will perform that deployment (described in the Implementation
Guide for WebSphere InterChange Server) after you have finished using Connector
Configurator to complete the connector configuration file.
When you open a configuration file or a connector from a project, the Connector
Configurator window displays the configuration screen, with the attributes and
values that Connector Configurator finds in the connector definition file.
The title of the configuration screen displays the type of the broker and the name
of the connector as specified in the file. Make sure the title indicates the
Although any of these file sources may contain most or all of the connector-specific
properties for your connector, the connector configuration file will not be complete
until you have opened the file and set properties, as described later in this chapter.
To use an existing file to configure a connector, you must open the file in
Connector Configurator, revise the configuration, and then save the file as a
configuration file (*.cfg file).
Follow these steps to open a *.txt, *.cfg, or *.in file from a directory:
1. In Connector Configurator, choose File > Open > From File.
2. In the Open File Connector dialog, choose one of the following file types to see
the available files:
v Configuration (*.cfg)
v ICS Repository (*.in, *.out)
Choose this option if a repository file was used to configure the connector in
an ICS environment. A repository file may include multiple connector
definitions, all of which will display when you open the file.
Note: For connectors that use JMS messaging, an additional category may display,
for configuration of data handlers that convert the data to business objects.
The Update Method displayed for each property indicates whether a component or
agent restart is necessary to activate changed values.
If a property has multiple values, the Encrypt check box will appear for the first
value of the property. When you click the Encrypt check box, all values of the
property will encrypted. To decrypt multiple values of a property, click to clear the
Encrypt check box of the first value of the property, and then enter the correct
value of the first value in the Verification dialog box. If the input value is a match,
all multiple values will decrypt.
Before you can make use of a connector (and before you can bind the connector
with a collaboration’s ports), you must make selections under the Supported
Business Objects tab to specify the business objects that the connector will use. You
must specify both generic business objects and corresponding application-specific
business objects, and you must specify associations for the maps between the
business objects.
Note that deleting a business object from the supported list does not affect the
code of the connector, nor does it remove the business object definition itself from
System Manager. It does, however, change the connector definition and make the
deleted business object unavailable for use in this implementation of this
connector.
Agent support
Indicating Agent Support for a business object means that the system will attempt
to use that business object for delivering data to an application via the connector
agent.
To indicate that the business object is supported by the connector agent, put a
check in the Agent Support box. Note that the Connector Configurator window
does not validate your Agent Support selections.
For most connectors Best Effort is the only possible choice, because most
application APIs do not support the Stringent level.
You must restart the server for changes in transaction level to take effect.
Note: For this release, maximum transaction level of a connector is always Best
Effort.
The list of business objects contains the application-specific business object which
the agent supports and the corresponding generic object that the controller sends
to the subscribing collaboration. The association of a map determines which map
will be used to transform the application-specific business object to the generic
business object or the generic business object to the application-specific business
object.
If more than one map is available for use by a supported business object, you will
need to explicitly bind the business object with the map that it should use.
Resources (ICS)
The Resource tab allows you to set a value that determines whether and to what
extent the connector agent will handle multiple processes concurrently using
connector agent parallelism. Not all connectors support this feature, and use of this
feature is not usually advised for connector agents that were designed in Java to be
multi-threaded, since it is usually more efficient to use multiple threads than
multiple processes.
Note: Both logging and tracing files are simple text files. You can use the file
extension that you prefer when you set their file names. For tracing
files, however, it is advisable to use the extension .trace rather than
.trc, to avoid confusion with other files that might reside on the
system. For logging files, .log and .txt are typical file extensions.
Configuring messaging
The messaging properties are available only if you have set MQ as the value of the
DeliveryTransport standard property and ICS as the broker type. These properties
affect how your connector will use queues.
Data handlers
The data handlers section is available for configuration only if you have designated
a value of JMS for DeliveryTransport and a value of JMS for
ContainerManagedEvents. See the descriptions under ContainerManagedEvents in
Appendix A, Standard Properties, for values to use for these properties. For
additional details, see the Connector Development Guide for C++or the Connector
Development Guide for Java.
When you create and name a new connector configuration file, or when you open
an existing connector configuration file, Connector Configurator displays a
configuration screen with tabs for the categories of required configuration values.
Note: For connectors that use JMS messaging, an additional category may display,
for configuration of data handlers that convert the data to business objects.
For information about the values to use in the Data Handlers category, see
the Connector Development Guide for C++ or the Connector Development Guide
for Java.
The Update Method displayed for each property indicates whether a component or
agent restart is necessary to activatechanged values.
Update method
When WebSphere MQ Integrator Broker is the integration broker, connector
properties are static. The Update Method is always Agent Restart. In other words,
for changes to take effect, you must restart the connector agent after saving the
revised connector configuration file.
The *.set files contain message set IDs that Connector Configurator requires for
designating the connector’s supported business objects. See the Implementation
Guide for WebSphere MQ Integrator Broker for information about creating the MQ
message set files.
Each time that you add business object definitions to the system, you must use
Connector Configurator to designate those business objects as supported by the
connector.
Important: If the connector requires meta-objects, you must create message set files
for each of them and load them into Connector Configurator, in the
same manner as for business objects.
Note: Both logging and tracing files are simple text files. You can use the file
extension that you prefer when you set their file names. For tracing
files, however, it is advisable to use the extension .trace rather than
.trc, to avoid confusion with other files that might reside on the
system. For logging files, .log and .txt are typical file extensions.
Because standard properties are used by all connectors, you do not need to define
those properties within your configuration file; Connector Configurator already has
those definitions, and it incorporates them into your configuration file as soon as
you create the file. For standard properties, your only task is to use Connector
Configurator to set the values of the properties.
General features
Table 56 details the general features supported by the connector.
Table 56. General features
Category Feature Support Notes
Business Object Foreign key No
Attributes
Foreign Key attribute N/A Support is entirely dependent on application
property receiving connector request.
Key No
Max Length Partial May be used by the data handler chosen for
the connector.
Meta-data-driven design Full
Required No
Connection Lost Connection lost on poll Full
Connection lost on request Full
processing
Connection lost while idle No
Connector Properties ApplicationPassword Full
ApplicationUserName Full
UseDefaults Partial Depends on the data handler established for
the connector.
Message Tracing General messaging Full
generateMsg() Full
Trace level 0 Full
Trace level 1 Full
Trace level 2 Full
Trace level 3 Full
All SWIFT messages include the literal “MT” (Message Type). This is followed by a
3-digit number that denotes the message type, category, and group. Consider the
following example, which is an order to buy or sell via a third party:
MT502 The first digit (5) represents the category. A category denotes
messages that relate to particular financial instruments or services
such as Precious Metals, Syndications, or Travelers Checks. The
category denoted by 5 is Securities Markets.
The second digit (0) represents a group of related parts in a
transaction life cycle. The group indicated by 0 is a Financial
Institution Transfer.
The third digit (2) is the type that denotes the specific message.
There are several hundred message types across the categories. The
type represented by 2 is a Third-Party Transfer.
The Logical Terminal Address (12 character BIC), Day, Session and Sequence
numbers combine to form the MIR (Message Input Reference) and MOR (Message
Output Reference), respectively.
For a full list of SWIFT message types, see All Things SWIFT: the SWIFT User
Handbook.
A field is always prefaced by a field tag that consists of two digits followed,
optionally, by an alphabetic character. The alphabetic character is referred to as an
option. For example, 16R is a tag (16) with an option (R) that indicates the start of
There are two types of fields used in SWIFT messages: generic and non-generic.
The type of field used in a SWIFT message block is determined by the Message
Type. What follows is a discussion of these SWIFT field structures. For more on
generic and non-generic fields and how to distinguish between them, see Part III,
Chapter 3 of the SWIFT User Handbook
Note: The symbol CRLF shown below is a control character and represents carriage
return/line feed (0D0A in ASCII hex, 0D25 in EBCDIC hex).
Non-generic fields
The structure of non-generic fields in SWIFT message blocks is as follows:
:2!n[1a]: data content<CRLF>
where:
: = mandatory colon
: = mandatory colon
data content = the data content, which is defined separately for every tag
:20:1234<CRLF> :32A:...<CRLF>
Note: In some cases (such as with the tag 15A...n), the data content is optional.
Generic fields
The structure of generic fields in SWIFT messages is as follows:
:2!n1a::4!c’/’[8c]’/’data content
where
4!c = qualifier
Note: Non-generic fields and generic fields cannot share the same field tag letter
option letter. In order to distinguish between them easily, a colon is defined
as the first character of the column Component Sequence. Generic fields are
defined in the same section (Part III, Chapter 3 of the SWIFT User Handbook)
as the non-generic fields.
{1: Basic Header Block} {2: Application Header Block} {3: User Header Block} {4: Text
Block or body} {5: Trailer Block}
These five SWIFT message blocks include header information, the body of the
message, and a trailer. All blocks have the same basic format:
{n:...}
The curly braces ({}) indicate the beginning and end of a block. n is the block
identifier, in this case a single integer between 1 and 5. Each block identifier is
associated with a particular part of the message. There is no carriage return or line
feed (CRLF) between blocks.
Blocks 3, 4, and 5 may contain sub-blocks or fields delimited by field tags. Block 3
is optional. Many applications, however, populate block 3 with a reference number
so that when SWIFT returns the acknowledgement, it can be used for reconciliation
purposes.
Note: For further information on SWIFT message blocks, see Chapter 2 of the
SWIFT User Handbook FIN System Messages Document.
Note: Other tags exist for this block. They include tags (such as 119, which can
contain the code ISITC on an MT521) that may force additional code word
and formatting rules to validate the body of the message as laid down by
ISITC (Industry Standardization for Institutional Trade Communication). For
further information, see All Things SWIFT: the SWIFT User Handbook.
The example above is of type MT100 (Customer Transfer) with only the mandatory
fields completed. It is an example of the format of an ISO7775 message structure.
Block 4 fields must be in the order specified for the message type in the
appropriate volume of the SWIFT User Handbook.
Note: The ISO7775 message standard is gradually being replaced by the newer
data dictionary standard ISO15022. Among other things, the new message
standard makes possible generic fields for block 4 of a SWIFT message
structure. For further information, see “SWIFT field structure” on page 173.
The content of the text block is a collection of fields. For more on SWIFT fields, see
“SWIFT field structure” on page 173. Sometimes, the fields are logically grouped
into sequences. Sequences can be mandatory or optional, and can repeat.
Sequences also can be divided into subsequences. In addition, single fields and
groups of consecutive fields can repeat. For example, sequences such as those in
:nna:
nn = Numbers
For example:
nn = Maximum length
nn! = Fixed-length
n = Digits
h = Uppercase hexadecimal
a = Uppercase letters
c = Uppercase alphanumeric
e = Space
Some fields are defined as optional. If optional fields are not required in a specific
message, do not include them because blank fields are not allowed in the message.
For example:
Note: In some message types, certain fields are defined as conditional. For
example, when a certain field is present, another field may change from
optional to mandatory or forbidden. Certain fields may contain sub-fields, in
which case there is no CRLF between them. Validation is not supported.
Certain fields have different formats that depend on the option that is chosen. The
option is designated by a letter after the tag number, for example:
:32A:000718GBP1000000,00 Value Date, ISO Currency, and Amount
:32B:GBP1000000,00 ISO Currency and Amount
Note: The SWIFT standards for amount formats are: no thousand separators are
allowed (10,000 is not allowed, but 10000 is allowed); use a comma (not a
decimal point) for a decimal separator (1000,45 = one thousand and
forty-five hundredths).
:58A:NWBKGB2L Beneficiary SWIFT address
:58D:NatWest Bank Beneficiary full name and address
Head Office
London
{5: {MAC:12345678}{CHK:123456789ABC}
This block is for SWIFT system use and contains a number of fields that are
denoted by keywords such as the following:
MAC Message Authentication Code calculated based on the entire contents of the
message using a key that has been exchanged with the destination and a
secret algorithm. Found on message categories 1,2,4,5,7,8, most 6s and 304.
CHK Checksum calculated for all message types.
PDE Possible Duplicate Emission added if user thinks the same message was
sent previously
DLM Added by SWIFT if an urgent message (U) has not been delivered within
15 minutes, or a normal message (N) within 100 minutes.
IBM may have patents or pending patent applications covering subject matter
described in this document. The furnishing of this document does not give you
any license to these patents. You can send license inquiries, in writing, to:
IBM Director of Licensing
IBM Corporation
North Castle Drive
Armonk, NY 10504-1785
U.S.A.
The following paragraph does not apply to the United Kingdom or any other
country where such provisions are inconsistent with local law:
Any references in this information to non-IBM Web sites are provided for
convenience only and do not in any manner serve as an endorsement of those Web
sites. The materials at those Web sites are not part of the materials for this IBM
product and use of those Web sites is at your own risk.
IBM may use or distribute any of the information you supply in any way it
believes appropriate without incurring any obligation to you.
Licensees of this program who wish to have information about it for the purpose
of enabling: (i) the exchange of information between independently created
programs and other programs (including this one) and (ii) the mutual use of the
information which has been exchanged, should contact:
IBM RTP Laboratory
3039 Cornwallis Road
P.O. BOX 12195
The licensed program described in this document and all licensed material
available for it are provided by IBM under terms of the IBM Customer Agreement,
IBM International Program License Agreement, or any equivalent agreement
between us.
This information may contain examples of data and reports used in daily business
operations. To illustrate them as completely as possible, the examples may include
the names of individuals, companies, brands, and products. All of these names are
fictitious and any similarity to the names and addresses used by an actual business
enterprise is entirely coincidental.
All statements regarding IBM’s future direction or intent are subject to change or
withdrawal without notice, and represent goals and objectives only.
However, this information may also contain diagnosis, modification, and tuning
information. Diagnosis, modification and tuning information is provided to help
you debug your application software.
Lotus, Domino, Lotus Notes, and Notes Mail are trademarks of the Lotus
Development Corporation in the United States, other countries, or both.Microsoft,
Windows, Windows NT, and the Windows logo are trademarks of Microsoft
Corporation in the United States, other countries, or both.
Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the
United States, other countries, or both.
Printed in U.S.A.