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 21, 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 21. For a listing of all attribute properties, see "Sample top-level Business Object (Msg BO) definition".

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:

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

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

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

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.

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 23. 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 23. For a listing of all attribute properties, see "Sample block 2 business object definition".

Table 23. 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 23 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 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 (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 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.

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 24. Note that there is attribute application-specific information for this business object: the Tag parameter. For Tag parameters see Table 20.

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

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

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

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