The IBM WebSphere Business Integration Adapter for SWIFT supports one kind of mapping:
The structure of the top-level business object for a SWIFT message, or Msg BO, reflects that of the SWIFT message. WebSphere requires a business object for each SWIFT block. As shown in Table 21, the top-level business object must have at least 5 attributes, one for each SWIFT block.
Table 21. Top-level business object structure
Name | Type | Key | Required | Application specific info |
---|---|---|---|---|
UUID (MQSA prepended) | String | Yes | No | block=0;parse=no |
Swift_01Header | Swift_BasicHeader | No | Yes | block=1;
parse=fixlen |
Swift_02Header | Swift_Application
Header | No | No | block=2;
parse=fixlen |
Swift_03Header | Swift_UserHeader | No | No | block=3;
parse=delim |
Swift_Data | Swift_Text | No | No | block=4;parse=field |
Swift_05Trailer | String | No | No | block=5;parse=no |
Swift_BlockS (MQSA appended) | String | No | No | block=6;parse=no |
The following rules apply to the top-level business object:
BOPrefix_MTMessageType
where:
BOPrefix = an attribute of the meta-object (MO). For further information on the meta-object, see Static meta-object.
_MT = a constant string.
MessageType = an attribute of block 2 of the SWIFT message. For further information, see All Things SWIFT: the SWIFT User Handbook
An example of a top-level business object name is Swift_MT502.
See Table 20 for the attribute application-specific information.
Figure 6 shows a business object definition for a top-level business object of a SWIFT message. This Msg BO definition was created in the WebSphere development environment.
The application-specific information contains the block number and parsing parameters for each attribute. For further information on attribute application-specific text, see Table 20. The Swift_ attributes correspond to child business objects discussed in the following sections. Of special note is the type for the data block attribute, Swift_MT502Data, which indicates SWIFT message type 502, an order to buy or sell. This attribute corresponds to a child object of the top-level Msg BO that represents block 4 of the SWIFT message. The child object is a message data business object (MsgData BO).
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.
Figure 6. Definition for top-level business object of a SWIFT message
The MsgBlck BO, Swift_BasicHeader, has the format and attributes shown in Table 22. The SWIFT data handler converts each of the SWIFT fields in this block into attributes in the Swift_BasicHeader business object. Note that there is no attribute application-specific information for this business object.
Table 22. Block 1 business object structure
Name | Type | Key | Foreign key | Required | Cardinality | Default | Max length |
---|---|---|---|---|---|---|---|
BlockIdentifier | String | Yes | No | Yes | 1 | 1:a | 2 |
ApplicationIdentifier | String | 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:". |
See Table 20 for the attribute application-specific information.
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 C, SWIFT message structure, 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.
Figure 7. Block 1 business object definition
The block 2 MsgBlk BO, Swift_ApplicationHeader, has the format and attributes shown in Table 23.. This application header is mapped to a business object, Swift_ApplicationHeader, that has two child objects. One child business object represents the group of input fields and the other child object represents the group of output fields. Note that there is no attribute application-specific information for these business objects.
Table 23. Block 2 business object structure
Name | Type | Key | Required | Cardinality | Default | Max length |
---|---|---|---|---|---|---|
Swift_02Header_IO |
|
|
|
|
|
|
Block Identifier | String | Yes | Yes | 1 | 2:a | 2 |
IOIdentifier | String | No | Yes | 1 | 0 | 1 |
MessageType | String | No | Yes | 1 |
| 3 |
Swift_02Header_Output |
|
|
| 1 |
|
|
InputTime | String | Yes | Yes |
|
| 4 |
MessageInputReference | String | No | Yes |
|
| 28 |
OutputDate | String | No | Yes |
|
| 6 |
OutputTime | String | No | Yes |
|
| 4 |
OutputMessagePriority | String | No | Yes |
|
| 1 |
Swift_02Header_Input |
|
|
| 1 |
|
|
ReceiverAddress | String | Yes | Yes |
|
| 12 |
MessagePriority | String | No | Yes |
|
| 1 |
DeliveryMonitoring | String | No | No |
|
| 1 |
ObsolescencePeriod | String | No | No |
|
| 3 |
a The BlockIdentifier attribute includes the delimiter ":" as in "2:". |
Attributes in the Swift_02Header_Input are populated during SWIFT-to-business-object conversion. Attributes in the Swift_02Header_Output are populated in business-object-to-SWIFT conversions. The CxIgnore property must be set for business-object-to-SWIFT conversions.
See Table 20 for the attribute application-specific information.
Figure 8 shows a block 2 business object definition that has been manually created in a WebSphere development environment. Each attribute name corresponds to a field in this SWIFT message block. For further information on this SWIFT message block, see Appendix C, SWIFT message structure, and All Things SWIFT: the SWIFT User Handbook. Specify typeString for each named attribute. Note that there is no attribute application-specific information for the components of this business object.
Figure 8. Block 2 business object definition
The block 3 MsgBlk BO, Swift_UserHeader, has the format and attributes shown in Table 24. Note that there is attribute application-specific information for this business object: the Tag parameter. For Tag parameters see Table 20.
Table 24. Block 3 business object structure
Name | Type | Key | Foreign | Required | Cardinality | Application specific information | Max length |
---|---|---|---|---|---|---|---|
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 C, SWIFT message structure, 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.
Figure 9. Block 3 business object definition
SWIFT block 4 contains the body of the SWIFT message. Block 4 is made up of fields of message tags and their contents on the one hand, and on the other, of sequences of message tags. This data content makes the block 4 business object structure unlike that of blocks 1, 2, and 3. The block 4 business object is the message data business object (MsgData BO).
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".
As an example, view the format specification from the SWIFT Standards Release Guide for MT502, an order to buy or sell.Figure 10 below shows the portion of a business object definition that corresponds to MT502. The business object definition reflects the structure of the message tags and sequences in the SWIFT message:
The format of a MsgData BO is summarized in the sections below.
The naming convention for the MsgData BO representing block 4 of a SWIFT message is as follows:
Swift_MT<message_type>Data
For example:
Name = Swift_MT502Data
Each attribute of the MsgData BO represents one of the following:
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
The naming convention for MsgSeq BO attributes is as follows:
Swift_MT<message_type>_<SWIFT_sequence_name>
For example:
Name = Swift_MT502_B
For further information see "Sequence business object structure" and "Field business object definitions".
The type for MsgData attributes is as follows:
For MsgField BO attributes:
Swift_Tag_<tag_number>
For example:
Type = Swift_Tag_94
For MsgSeq BO attributes:
Swift_MT<message_type>_<SWIFT_sequence_name>
For example:
Type = Swift_MT502_B
The contained object version for the MsgData BO as well as for the its MsgSeq BO attributes is 1.1.0. For example:
[Attribute] Name = Swift_MT502_B Type = Swift_MT502_B ... ContainedObjectVersion = 1.1.0 ... [End]
The relationship attribute property for MsgData BO and its MsgSeq BO attributes is Containment. For example:
[Attribute] Name = Swift_MT502Data Type = Swift_MT502Data ... Relationship = Containment ... [End]
The MsgData BO and its MsgSeq BO attributes have a cardinality property of n. MsgField BO attributes that represent repeating fields also have cardinality n. All others attributes have cardinality 1. For example:
[Attribute] Name = Swift_16_1 Type = Swift_Tag_16 ... Cardinality = n ... [End]
Each MsgData BO definition must contain at least one attribute defined as the key attribute (IsKey = true). The rule is that the first single cardinality attribute in each BO definition must be defined as key attribute.
For example:
[Attribute] Name = Swift_16.1 Type = Swift_Tag_16 ... Cardinality = 1 IsKey = true [End]
In MsgData BO definitions, only MsgField BO attributes have application-specific information; this property is always null for MsgSeq BO attributes. The convention for application-specific information for MsgField BO attributes is as follows:
Tag=nn;Letter=xx;Content=string
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 20. 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".
As noted above, the connector models sequences and tags in SWIFT messages as sequence business objects (MsgSeq BO) and field business objects (MsgField BO), respectively. Figure 11 illustrates the hierarchical relationship of these business objects.
Figure 11. Field and sequence business objects in the (block 4) MsgData BO
Figure 12 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.
Figure 12. A Sequence containing tag and subsequence attributes
As shown in Figure 13, each sequence business object (MsgSeq BO) attribute indicates one of the following:
There is no limit to the number of subsequences that a MsqSeq BO can nest.
Figure 13. Field and Subsequence Business Objects in the MsgSeq BO
Figure 14 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.
Figure 14. Excerpt from a sequence business object (MsgSeq BO)
The following rules apply to sequence business objects:
Like a MsgData BO, a MsgSeq BO consists of attributes that are either MsgSeq BOs or MsgField BOs. For information on the format of these attributes, see "MsgData BO format".
WebSphere represents every SWIFT tag as a field business object (MsgField BO). Each MsgField BO is modeled using the SWIFT generic field structure, even if the field is non-generic. WebSphere uses two additional business object models to represent the combination of letters and options used to represent and combine SWIFT message components as subfields in business objects:
As shown in Figure 15, each MsgField BO contains five attributes, including one and only one TagUnion BO, with the data type shown in parentheses () below:
Figure 15. Attributes and business objects in the MsgField 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 15 are discussed in the section below.
The naming convention for a MsgField BO is as follows:
Swift_Tag_<N>
where N stands for the message number. For example:
Name = Swift_Tag_22
The naming convention for a TagUnion BO is as follows:
Swift_Tag_Union_<tag_number>
where tag_number is the numeric representation of tag number. For example:
Name = Swift_Tag_Union_20
The naming convention for a TagLetterOption BO is as follows:
Swift_Tag_Union_<tag_number>_Opt_[<letter_option>]
where tag_number is the numeric representation of tag number and [<letter_option>] is the letter option when a tag is associated with a letter. If the tag has no letter associated with it, then the name ends at Opt.For example:
Name = Swift_Tag_Union_20_Opt_C
The names of the five attributes in a MsgField BO are as follows:
The names of attributes in TagUnion BOs are as follows:
Swift_<tag_number>_[<letter_option>]
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
The name of the attribute in TagLetterOption BOs is the concatenation of words in the subfield name shown in the SWIFT format specification table. The first letter of each word in the concatenated string is always capitalized, with subsequent letters in the word appearing in lowercase, regardless of how the words are spelled in the SWIFT format specification. Spaces and non-alphabetic symbols are left out of the concatenated name. If a field has no subfield, the word Subfield is used as an attribute name. For example, for the subfield "Proprietary Code" in 95R, the corresponding attribute name in the definition of TagLetterOption BO Swift_Tag_Union_95_Opt_R is as follows:
Name = ProprietaryCode
The type for MsgField attributes is as follows:
For example, in a MsgField BO definition, the type for a Swift_Tag_20 attribute would be listed as follows:
[Attribute] Name = DataField Type = Swift_Tag_Union_20
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
The type for attributes in TagLetterOption BOs is always String.
The contained object version for the MsgField BO, the TagUnion BO, and the TagLetterOption BO is 1.1.0. For example:
as well as for the its MsgSeq BO attributes is 1.1.0. For example:
[Attribute] Name = Swift_20_C Type = Swift_Tag_Union_20_Opt_C ... ContainedObjectVersion = 1.1.0 ... [End]
The cardinality of attributes in TagUnion BOs and TagLetterOption BOs is always set to 1. For example:
[Attribute] Name = Swift_20_C Type = Swift_Tag_Union_20_Opt_C ... Cardinality = 1 ... [End]
In each MsgField BO, the attribute Letter must be defined as the key attribute.
For example:
[Attribute] Name = Letter Type = String IsKey = true ... [End]
The first attribute of a TagUnionBO is defined as key.
The first attribute of TagLetterOption BO is defined as key.
The AppSpecificInfo attribute definition of a TagLetterOption BO provides crucial SWIFT message formatting information for business object subfields. The AppSpecificInfo attribute must contain the following information:
Format=***;Delim=$$$
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.
For example, the AppSpecificInfo attribute for a TagLetterOption BO, Swift_Tag_Union_95_Opt_C, might appear as follows:
[Attribute] Name = CountryCode Type = String ... AppSpecificInfo = Format=2!a;Delim=/ ... [End]