Description

The SWIFTSegmentMergeReceiver merges two or more segmented data files generated from the SegmentDataCreatorReceiver, into one or more SWIFT format files. 


Note: The loopCount of the Root Segment Domain determines how many SWIFT files must be generated.


In This Article


When should this Receiver be used? 

  • Any time you want to generate nested SWIFT file output.


When should this Receiver not be used? 

  • Any time you want to generate another type of nested output.


Are any additional items required to use this Receiver? 

  • SegmentDataCreatorReceiver- Must be assigned to each Domain, except the Merge Domain.
    • Note: The SWIFTSegmentMergeReceiver should only be assigned to the Merge Domain that merges the generated segments.

  • Configuration File - Used to determine the XML output format. This is typically named "config.xml", but can be named differently if needed. 
    • Note: When named differently, the name will also need to be changed for the configName parameter within the Receiver.


List of Steps to Generate Nested SWIFT File Format

  1. Set up a Project with Domains, Parent-Child Relationships, and Scenarios.
  2. For each Domain except the Merge Domain, complete the following: 
  3. Create a Merge Domain with just an id Attribute 
    • Note: This may have already been done if Domains were imported.
  4. Add the SWIFTSegmentMergeReceiver to the Merge Domain and configure it, as discussed in this article. 
  5. Create a Scenario Chain with all Domain Scenarios. Make sure the Merge Scenario is in the last position.
  6. Create a Configuration File as discussed in this article. 
  7. Download the Scenario Chain to your local computer.
  8. Download the Configuration file to your local computer. 
    • Note: The configuration file will need to be placed in the location defined here (see the image below):


Receiver Parameters

SWIFTSegmentMergeReceiver requires that the following parameters are defined. Items with an asterisk (*) are required. 

  • outputPath* - Defines the location to store the newly generated SWIFT file(s).
  • outputSubDirectory - Defines the prefix name of subdirectories that are auto-created under the outputPath and then appended with a number.
  • configName* - Defines the name of the configuration file.
  • configPath* - Defines the location where the configuration file is stored.
  • configSubDir - Defines the subdirectory under configPath where the configuration file has to be stored.
  • segmentPath* - Defines the location where segment files are stored.
  • segmentSubDirectory - Defines the subdirectory under segmentPath where segment files are stored.
  • filesPerOutputSubDir* - Defines the number of files to be generated in each output directory.
  • overrideFileName - Defines the overriding file name.
  • deleteOutputSubDir* - Defines whether to delete the outputSubDir or not. 


Example of the Receiver Parameter Management Form


Configuration File

The SWIFTSegmentReceiver requires a configuration file to help facilitate the formatting of the data output.


Example Configuration File

The example configuration file below defines the following:

  • fileNameSegments- The fileNameSegment tag defines the file naming convention for the SWIFT file that is being generated. E.g.
    • Output-1.txt, Output-2.txt, and so on
  • segments - The segment files from the segment tag will be loaded and used to create the merged output for CEF.>
  • segmentsHierarchy- defines the hierarchical structure of the Domains. 


Steps to Create the Configuration File

  • Within the Project Dashboard, select the Configuration Management Tab within the Management pane.
  • Click the New Configuration button.


  • Select the SWIFT configuration type as in the below screenshot. Click the Select button. 



  • Enter the details and select the Segments/ Domains from the drop-down. This includes the: 
    • Name - Name used to identify the configuration file within the Project. 
    • Config File Name - Name the Receiver will look for when generating test data. It should be used in configName parameter for the Receiver. 
    • Output File Name Format - Defines the format used for the generated output file(s).
    • Segment Files- Defines the segments that will be used to create nested Swift output. 


  • Click the Save button. It will open a new form in the Modal. 
  • Select the Domain from the drop-down. Selecting a Domain will list down the Attributes. 
  • Select the Attributes to be included in the final output file, as shown in the below screenshot.
  • After adding all the Domains and Attributes, click the Save button.


  • As in the screenshot below, a new prompt will open where you can drag and drop the domains to set up segment hierarchy.
  • Click Done once finished.
     
  • The configuration will be ready to download. You can now download it and place it in the directory given in the resource. This is the location defined by these parameters in the Receiver. 



Sample MT940 SWIFT Configuration File

<Config>
  <fileNameSegments>
    <fileNameSegment segmentType='Constant' value='Output-'/>
    <fileNameSegment segmentType='Counter' value='1'/>
    <fileNameSegment segmentType='Constant' value='.txt'/>
  </fileNameSegments>
  <segments>
    <segment domainName='Header20' segmentFile='Header20Segment.xml'/>
    <segment domainName='Header25' segmentFile='Header25Segment.xml'/>
    <segment domainName='Header28C' segmentFile='Header28CSegment.xml'/>
    <segment domainName='Header60F' segmentFile='Header60FSegment.xml'/>
    <segment domainName='Transaction61' segmentFile='Transaction61Segment.xml'/>
    <segment domainName='Transaction86' segmentFile='Transaction86Segment.xml'/>
    <segment domainName='Transaction86v1' segmentFile='Transaction86v1Segment.xml'/>
    <segment domainName='Footer62F' segmentFile='Footer62FSegment.xml'/>
    <segment domainName='Footer64' segmentFile='Footer64Segment.xml'/>
  </segments>
  <segmentHierarchy>
    <segment domainName='Header20'>
      <attributes>
        <attribute fieldName="recordType"/>
        <attribute fieldName="Transaction Reference Number"/>
      </attributes>
      <segment domainName='Header25'>
        <attributes>
          <attribute fieldName="recordType"/>
          <attribute fieldName="Account Identification"/>
        </attributes>
        <segment domainName='Header28C'>
          <attributes>
            <attribute fieldName="recordType"/>
            <attribute fieldName="Statement Number"/>
          </attributes>
          <segment domainName='Header60F'>
            <attributes>
              <attribute fieldName="recordType"/>
              <attribute fieldName="transactionTypeIndicator"/>
              <attribute fieldName="date"/>
              <attribute fieldName="currency"/>
              <attribute fieldName="amount"/>
            </attributes>
            <segment domainName='Transaction61'>
              <attributes>
                <attribute fieldName="recordType"/>
                <attribute fieldName="Value date"/>
                <attribute fieldName="Entry Date"/>
                <attribute fieldName="Debit/Credit Mark"/>
                <attribute fieldName="Funds Code"/>
                <attribute fieldName="Amount"/>
                <attribute fieldName="Transaction Type ID code"/>
                <attribute fieldName="Customer Reference"/>
                <attribute fieldName="Bank Reference"/>
                <attribute fieldName="Supplementary Details"/>
              </attributes>
              <segment domainName='Transaction86'>
                <attributes>
                  <attribute fieldName="recordType"/>
                  <attribute fieldName="message"/>
                </attributes>
              </segment>
              <segment domainName='Transaction86v1'>
                <attributes>
                  <attribute fieldName="recordType"/>
                  <attribute fieldName="attr1" nextLine="true"/>
                  <attribute fieldName="attr2" nextLine="true"/>
                  <attribute fieldName="attr3" nextLine="true"/>
                  <attribute fieldName="attr4"/>
                </attributes>
              </segment>
            </segment>
          </segment>
        </segment>
      </segment>
      <segment domainName='Footer62F'>
        <attributes>
          <attribute fieldName="recordType"/>
          <attribute fieldName="credit/debit mark"/>
          <attribute fieldName="value date"/>
          <attribute fieldName="currency"/>
          <attribute fieldName="amount"/>
        </attributes>
        <segment domainName='Footer64'>
          <attributes>
            <attribute fieldName="recordType"/>
            <attribute fieldName="Debit/Credit mark"/>
            <attribute fieldName="value date"/>
            <attribute fieldName="currency"/>
            <attribute fieldName="amount"/>
          </attributes>
        </segment>
      </segment>
    </segment>
  </segmentHierarchy>
</Config>


Example MT940 SWIFT Output File

:20:0811704295967358
:25:OZCOVYFG9VSLB9F0GBP
:28C:49/00001
:60F:D203118GBP3459.05
:61:2002180218CP6458.70NCHGNONREF
:61:2002180218CP978.20NCHKNONREF
:61:2002180218DP7392.80NCLRNONREF
:61:2002180218CP2840.90NCHGNONREF
:86:For your inform. IBAN no. :2GGQMVB5VORQMSNXGBP
:61:2002180218DP1807.40NCHKNONREF
:61:2002180218CP1837.65NCLRNONREF
:86:DB Faktura 123456789
Testkunde
HOLMENS KANAL 2-12
1192 KOBENHAVN H
:61:2002180218DP1440.55NCHGNONREF
:61:2002180218DP1429.80NCHKNONREF
:61:2002180218CP3042.35NCLRNONREF
:61:2002180218DP6080.30NCHGNONREF
:86:For your inform. IBAN no. :2GGQMVB5VORQMSNXGBP
:62F:D200218GBP2821.35
:64:D200218GBP10.75
:20:9870169180761779
:25:OJUDWGDZFL4PKRUASYP
:28C:49/00002
:60F:C203118SYP7827.65
:61:2002180218CP6314.40NCHKNONREF
:61:2002180218DP9295.70NCLRNONREF
:61:2002180218CP7316.10NCHGNONREF
:86:For your inform. IBAN no. :DLRFC4RHSFCX9LL2SYP
:61:2002180218DP1319.05NCHKNONREF
:61:2002180218DP5901.25NCLRNONREF
:61:2002180218DP4932.60NCHGNONREF
:61:2002180218CP7652.05NCHKNONREF
:86:For your inform. IBAN no. :DLRFC4RHSFCX9LL2SYP
:61:2002180218DP3536.10NCLRNONREF
:61:2002180218CP2878.80NCHGNONREF
:61:2002180218CP5812.70NCHKNONREF
:62F:C200218SYP791.40
:64:C200218SYP90.60
:20:8801043501070928
:25:RFBQPFFIB5WBIPRYGIP
:28C:49/00003
:60F:D203118GIP609.30
:61:2002180218CP5739.10NCLRNONREF
:61:2002180218CP5455.05NCHGNONREF
:61:2002180218DP1782.55NCHKNONREF
:86:For your inform. IBAN no. :JEW3D7A7H2FWJOILGIP
:61:2002180218DP4518.95NCLRNONREF
:61:2002180218DP4161.30NCHGNONREF
:61:2002180218DP9835.80NCHKNONREF
:86:For your inform. IBAN no. :JEW3D7A7H2FWJOILGIP
:61:2002180218DP5264.85NCLRNONREF
:61:2002180218DP1201.60NCHGNONREF
:61:2002180218CP20.20NCHKNONREF
:61:2002180218DP9247.85NCLRNONREF
:86:For your inform. IBAN no. :JEW3D7A7H2FWJOILGIP
:62F:D200218GIP7359.50
:64:D200218GIP25.00