SWIFT message and business object data mapping

The IBM WebSphere Business Integration Adapter for SWIFT supports two kinds of mapping:

Top-level business object structure

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 29, the top-level business object must have at least 5 attributes, one for each SWIFT block.

Note:
Only attribute properties of consequence are shown in Table 29. For a listing of all attribute properties, see "Sample top-level Business Object (Msg BO) definition".

Table 29. 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_ApplicationHeader 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:

Note:
It is possible to create business objects for block 5 and block S using block 3 as a template.

See Table 28 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 28. The Swift_ attributes correspond to child business objects discussed in the following sections. For a full specification of this sample business object definition, see "Sample top-level Business Object (Msg BO) definition". 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


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.

Sample top-level Business Object (Msg BO) definition

This section presents a sample definition of a top-level business object, or Msg BO, for a SWIFT message of type MT502--an order to buy or sell.

[BusinessObjectDefinition]
Name = Swift_MT502
Version = 1.1.0
 
   [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
   IsForeignKey = false
   IsRequired = false
   AppSpecificInfo = block=2;parse=fixlen
   IsRequiredServerBound = false
   [End]
   [Attribute]
   Name = Swift_03Header
   Type = Swift_UserHeader
   ContainedObjectVersion = 1.0.0
   Relationship = Containment
   Cardinality = 1
   MaxLength = 1
   IsKey = false
   IsForeignKey = false
   IsRequired = false
   AppSpecificInfo = block=3;parse=delim
   IsRequiredServerBound = false
   [End]
   [Attribute]
   Name = Swift_MT502Data
   Type = Swift_MT502Data
   ContainedObjectVersion = 1.0.0
   Relationship = Containment
   Cardinality = 1
   MaxLength = 1
   IsKey = false
   IsForeignKey = false
   IsRequired = false
   AppSpecificInfo = block=4;parse=field
   IsRequiredServerBound = false
   [End]
   [Attribute]
   Name = Swift_05Trailer
   Type = String
   Cardinality = 1
   MaxLength = 1
   IsKey = false
   IsForeignKey = false
   IsRequired = false
   AppSpecificInfo = block=5;parse=no
   IsRequiredServerBound = false
   [End]
   [Attribute]
   Name = Swift_BlockS
   Type = String
   Cardinality = 1
   MaxLength = 1
   IsKey = false
   IsForeignKey = false
   IsRequired = false
   AppSpecificInfo = block=6;parse=no
   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]

Block 1 business object structure

The MsgBlck BO, Swift_BasicHeader, has the format and attributes shown in Table 30. 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.

Note:
Only attribute properties of consequence are shown in Table 30. For a listing of all attribute properties, see "Sample block 1 business object definition".

Table 30. 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 28 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 D, 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.

Note:
Be sure to specify the correct MaxLength values for the attribute names in this fixed-length block business definition.

Figure 7. Block 1 business object 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".

Sample block 1 business object definition

This section presents a sample definition of a block 1 business object for a SWIFT message of type MT502--an order to buy or sell.

[BusinessObjectDefinition]
Name = Swift_BasicHeader
Version = 1.1.0
 
   [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
   IsKey = false
   IsForeignKey = false
   IsRequired = true
   IsRequiredServerBound = false
   [End]
   [Attribute]
   Name = SessionNumber
   Type = String
   Cardinality = 1
   MaxLength = 4
   IsKey = false
   IsForeignKey = false
   IsRequired = true
   IsRequiredServerBound = false
   [End]
   [Attribute]
   Name = SequenceNumber
   Type = String
   Cardinality = 1
   MaxLength = 6
   IsKey = false
   IsForeignKey = false
   IsRequired = false
   IsRequiredServerBound = false
   [End]
   [Attribute]
   Name = ObjectEventId
   Type = String
   Cardinality = 1
   MaxLength = 255
   IsKey = true
   IsForeignKey = false
   IsRequired = false
   IsRequiredServerBound = false
   [End]
 
   [Verb]
   Name = Create
   [End]

Block 2 business object structure

The block 2 MsgBlk BO, Swift_ApplicationHeader, has the format and attributes shown in Table 31. The SWIFT data handler converts each of the SWIFT fields in this block into attributes in the Swift_ApplicationHeader business object. Note that there is no attribute application-specific information for this business object.

Note:
Only attribute properties of consequence are shown in Table 31. For a listing of all attribute properties, see "Sample block 2 business object definition".

Table 31. 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
O_MessageInputReference String No Yes 1
28
O_OutputDate String No No 1
6
O_OutputMessagePriority String No No 1
6
a The BlockIdentifier attribute includes the delimiter ":" as in "2:".

The first three attributes in Table 31 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.

See Table 28 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 (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, 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.

Figure 8. Block 2 business object 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".

Sample block 2 business object definition

This section presents a sample definition of a block 2 business object for a SWIFT message of type MT502--an order to buy or sell.

[BusinessObjectDefinition]
Name = Swift_ApplicationHeader
Version = 1.1.0
 
   [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]
   Name = O_OutputTime
   Type = String
   Cardinality = 1
   MaxLength = 4
   IsKey = false
   IsForeignKey = false
   IsRequired = false
   IsRequiredServerBound = false
   [End]
   [Attribute]
   Name = O_OutputMessagePriority
   Type = String
   Cardinality = 1
   MaxLength = 1
   IsKey = false
   IsForeignKey = false
   IsRequired = false
   IsRequiredServerBound = false
   [End]
   [Attribute]
   Name = I_ReceiverAddress
   Type = String
   Cardinality = 1
   MaxLength = 12
   IsKey = false
   IsForeignKey = false
   IsRequired = true
   IsRequiredServerBound = false
   [End]
   [Attribute]
   Name = I_MessagePriority
   Type = String
   Cardinality = 1
   MaxLength = 1
   IsKey = false
   IsForeignKey = false
   IsRequired = true
   IsRequiredServerBound = false
   [End]
   [Attribute]
   Name = I_DeliveryMonitoring
   Type = String
   Cardinality = 1
   MaxLength = 1
   IsKey = false
   IsForeignKey = false
   IsRequired = false
   IsRequiredServerBound = false
   [End]
   [Attribute]
   Name = I_ObsolescencePeriod
   Type = String
   Cardinality = 1
   MaxLength = 3
   IsKey = false
   IsForeignKey = false
   IsRequired = false
   IsRequiredServerBound = false
   [End]
   [Attribute]
   Name = ObjectEventId
   Type = String
   Cardinality = 1
   MaxLength = 255
   IsKey = true
   IsForeignKey = false
   IsRequired = false
   IsRequiredServerBound = false
   [End]
 
   [Verb]
   Name = Create
   [End]

Block 3 business object structure

The block 3 MsgBlk BO, Swift_UserHeader, has the format and attributes shown in Table 32. Note that there is attribute application-specific information for this business object: the Tag parameter. For Tag parameters see Table 28.

Note:
Only attribute properties of consequence are shown in Table 32. For a listing of all attribute properties, see "Sample block 3 business object definition".

Table 32. 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 D, 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


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".

Sample block 3 business object definition

This section presents a sample definition of a block 3 business object for a SWIFT message of type MT502--an order to buy or sell.

[BusinessObjectDefinition]
Name = Swift_UserHeader
Version = 1.1.0
 
   [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
   MaxLength = 255
   IsKey = true
   IsForeignKey = false
   IsRequired = false
   IsRequiredServerBound = false
   [End]
 
   [Verb]
   Name = Create
   [End]

Block 4 business object structure

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:

MsgData BO format

The format of a MsgData BO is summarized in the sections below.

MsgData BO name

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

MsgData BO attribute names

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".

MsgData BO attribute types

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

MsgData BO attribute ContainedObjectVersion

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]
Note:
MsgField BO attributes are simple, and have no ContainedObjectVersion.

MsgData BO attribute relationship

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]

MsgData BO attribute cardinality

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]

MsgData BO attribute IsKey

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]

MsgData BO attribute AppSpecificInfo

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 28. 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".

Sequence and field business objects

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


Sequence business object structure

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:

For a sample sequence business object, see "Sample sequence business object definition".

MsgSeq BO format

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".

Sample sequence business object definition

This section presents a sample definition of a MsgSeq BO for a SWIFT message of type MT502--an order to buy or sell. The definition is of a Mandatory Sequence A Order to Buy or Sell.

[BusinessObjectDefinition]
Name = Swift_MT502_A_General_Information
Version = 1.0.0
 
   [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]
   [Attribute]
   Name = Indicator
   Type = Swift_Tag_22
   ContainedObjectVersion = 1.0.0
   Relationship = Containment
   Cardinality = n
   MaxLength = 1
   IsKey = false
   IsForeignKey = false
   IsRequired = true
   AppSpecificInfo = Tag=22;Letter=F
   IsRequiredServerBound = false
   [End]
   [Attribute]
   Name = Swift_MT502_A1_Linkages
   Type = Swift_MT502_A1_Linkages
   ContainedObjectVersion = 1.0.0
   Relationship = Containment
   Cardinality = n
   MaxLength = 1
   IsKey = false
   IsForeignKey = false
   IsRequired = false
   IsRequiredServerBound = false
   [End]
   [Attribute]
   Name = End_Of_Block
   Type = Swift_Tag_16
   ContainedObjectVersion = 1.0.0
   Relationship = Containment
   Cardinality = 1
   MaxLength = 1
   IsKey = false
   IsForeignKey = false
   IsRequired = true
   AppSpecificInfo = Tag=16;Letter=S;Content=GENL
   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]

Field business object definitions

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:

MsgField BO format

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.

MsgField BO, TagUnion BO, and TagLetterOption BO names

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

MsgField BO, TagUnion BO, and TagLetter BO Attribute names

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

MsgField BO, TagUnion BO, and TagLetterOption BO attribute types

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.

MsgField BO, TagUnion BO, and TagLetterOption BO ContainedObjectVersion

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]
Note:
MsgField BO attributes are simple, and have no ContainedObjectVersion.

MsgField BO, TagUnion BO, and TagLetterOption BO attribute cardinality

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]

MsgField BO, TagUnion BO, and TagLetterOption BO attribute IsKey

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.

TagLetterOption BO attribute AppSpecificInfo

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]

For a sample object and attribute definitions, see "Sample MsgField BO, TagUnion BO, and TagLetterOption BO definitions".

Sample MsgField BO, TagUnion BO, and TagLetterOption BO definitions

This section presents a sample definition of a MsgField BO definition that illustrates TagUnion and TagLetterOption attributes and objects.

The sample MsgField BO, Swift_Tag_21, is as follows:

[BusinessObjectDefinition]
Name = Swift_Tag_21
Version = 3.0.0
 
   [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 = DataField
   Type = Swift_Tag_Union_21
   ContainedObjectVersion = 3.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 = 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
   Cardinality = 1
   MaxLength = 0
   IsKey = false
   IsForeignKey = false
   IsRequired = false
   IsRequiredServerBound = false
   [End]
 
   [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
   IsKey = false
   IsForeignKey = false
   IsRequired = false
   IsRequiredServerBound = false
   [End]
 
   [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 = Create
   [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]

Note that the only attribute of this TagLetterOption BO, ReferenceOfTheIndividualAllocation, is a concatenation of the corresponding SWIFT subfield name for this tag option, with the first letter of each word in uppercase. The Qualifier and Issuer Code subfields are excluded from the attribute of the TagLetterOption BOs. The IsKey property is also true for this attribute.

Note:
A TagUnion BO contains both generic and non-generic fields. A non-generic field has no subfields.

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 AppSpecificInfo for Function specifies the format and the delimiter with which to parse the data in the SWIFT message. CommonReference is the concatenation of the subfield name. The AppSpecificInfo for CommonReference corresponds to that shown in Figure 16.

[BusinessObjectDefinition]
Name = Swift_Tag_Union_22_Opt
Version = 1.0.0
 
   [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]

Figure 16. SWIFT field definition


Copyright IBM Corp. 1997, 2003