supl.027.001.01
This extends the message InformationRequestResponse.
Message Construction
Every ISO20022 message has at the highest level what we call ‘building blocks’. Because the message is constructed as immutable records, the association is by composition. Below you can see the relationship between the message and its constituent building blocks: For comparison, see the ISO20022 official specification
classDiagram direction LR %% InformationResponseSD1V01 recursion level 0 with max 0 class InformationResponseSD1V01{ InvestigationIdentification IsoMax35Text CreationDateTime IsoISODateTime } InformationResponseSD1V01 *-- "1..1" BranchAndFinancialInstitutionIdentification4 : AccountServicerIdentification InformationResponseSD1V01 *-- "1..1" AccountAndParties2 : AccountAndParties
Now, we will zero-in one-by-one on each of these building blocks.
InvestigationIdentification building block
Information used to identify the request. Specifies a character string with a maximum length of 35 characters. For comparison, see the ISO20022 official specification This message is declared as Max35Text in the ISO specification. In our implementation, it is represented in source code as IsoMax35Text. Due to global using directives, it is treated as a System.String by the compiler and runtime.
CreationDateTime building block
Date and time of creation of the extension. A particular point in the progression of time defined by a mandatory date and a mandatory time component, expressed in either UTC time format (YYYY-MM-DDThh:mm:ss.sssZ), local time with UTC offset format (YYYY-MM-DDThh:mm:ss.sss+/-hh:mm), or local time format (YYYY-MM-DDThh:mm:ss.sss). These representations are defined in “XML Schema Part 2: Datatypes Second Edition - W3C Recommendation 28 October 2004” which is aligned with ISO 8601. Note on the time format:
- beginning / end of calendar day 00:00:00 = the beginning of a calendar day 24:00:00 = the end of a calendar day
- fractions of second in time format Decimal fractions of seconds may be included. In this case, the involved parties shall agree on the maximum number of digits that are allowed. For comparison, see the ISO20022 official specification This message is declared as ISODateTime in the ISO specification. In our implementation, it is represented in source code as IsoISODateTime. Due to global using directives, it is treated as a System.DateTime by the compiler and runtime.
AccountServicerIdentification building block
Identifies the account servicing institution. Set of elements used to uniquely and unambiguously identify a financial institution or a branch of a financial institution. For comparison, see the ISO20022 official specification
classDiagram direction tb %% BranchAndFinancialInstitutionIdentification4 recursion level 0 with max 1 BranchAndFinancialInstitutionIdentification4 *-- "1..1" FinancialInstitutionIdentification7 : FinancialInstitutionIdentification BranchAndFinancialInstitutionIdentification4 *-- "0..1" BranchData2 : BranchIdentification %% FinancialInstitutionIdentification7 recursion level 1 with max 1 class FinancialInstitutionIdentification7{ BIC IsoBICIdentifier Name IsoMax140Text } FinancialInstitutionIdentification7 *-- "0..1" ClearingSystemMemberIdentification2 : ClearingSystemMemberIdentification FinancialInstitutionIdentification7 *-- "0..1" PostalAddress6 : PostalAddress FinancialInstitutionIdentification7 *-- "0..1" GenericFinancialIdentification1 : Other %% BranchData2 recursion level 1 with max 1 class BranchData2{ Identification IsoMax35Text Name IsoMax140Text } BranchData2 *-- "0..1" PostalAddress6 : PostalAddress
BranchAndFinancialInstitutionIdentification4 members
Member name | Description | Data Type / Multiplicity |
---|---|---|
FinancialInstitutionIdentification | Unique and unambiguous identification of a financial institution, as assigned under an internationally recognised or proprietary identification scheme. | FinancialInstitutionIdentification7 - Required 1..1 |
BranchIdentification | Identifies a specific branch of a financial institution. |
AccountAndParties building block
Requested account and its owners. Specifies the details of the account and the role of the party. For comparison, see the ISO20022 official specification
classDiagram direction tb %% AccountAndParties2 recursion level 0 with max 1 class AccountAndParties2{ AdditionalInformation IsoMax256Text } AccountAndParties2 *-- "1..1" CustomerAccount1 : Account AccountAndParties2 *-- "1..0" AccountRole1 : Role %% CustomerAccount1 recursion level 1 with max 1 class CustomerAccount1{ Name IsoMax70Text Status AccountStatus3Code Currency ActiveCurrencyCode MonthlyPaymentValue IsoImpliedCurrencyAndAmount MonthlyReceivedValue IsoImpliedCurrencyAndAmount MonthlyTransactionNumber IsoMax5NumericText AverageBalance IsoImpliedCurrencyAndAmount AccountPurpose IsoMax140Text FloorNotificationAmount IsoImpliedCurrencyAndAmount CeilingNotificationAmount IsoImpliedCurrencyAndAmount StatementCycle Frequency3Code ClosingDate IsoISODate } CustomerAccount1 *-- "1..1" IAccountIdentification4Choice : Identification CustomerAccount1 *-- "0..1" CashAccountType2 : Type CustomerAccount1 *-- "0..0" Restriction1 : Restriction %% AccountRole1 recursion level 1 with max 1 class AccountRole1{ StartDate IsoISODate EndDate IsoISODate } AccountRole1 *-- "1..1" PartyIdentification41 : Party AccountRole1 *-- "1..1" OwnerType1 : OwnerType
AccountAndParties2 members
Member name | Description | Data Type / Multiplicity |
---|---|---|
Account | Description of the account. | CustomerAccount1 - Required 1..1 |
Role | Specifies the role related to the account. | AccountRole1 - Unknown 1..0 |
AdditionalInformation | Additional information. | IsoMax256Text - Unknown 0..0 |
Extensibility and generalization considerations
To facilitate generalized design patterns in the system, the InformationResponseSD1V01 implementation follows a specific implementaiton pattern. First of all, InformationResponseSD1V01 impleemnts IOuterRecord indicating it is the outermost logical part of the message definition. Like all message wrappers, InformationResponseSD1V01Document implements IOuterDocument. Because InformationResponseSD1V01 implements IOuterDocument, it is a suitable template parameter for IOuterDocument, and causes the internal ‘Message’ to be of type InformationResponseSD1V01.
classDiagram class IOuterRecord InformationResponseSD1V01 --|> IOuterRecord : Implements InformationResponseSD1V01Document --|> IOuterDocument~InformationResponseSD1V01~ : Implements class IOuterDocument~InformationResponseSD1V01~ { InformationResponseSD1V01 Message }
Document wrapper for serialization
The only real purpose InformationResponseSD1V01Document serves is to cause the document to be serialized into the ‘urn:iso:std:iso:20022:tech:xsd:supl.027.001.01’ namespace. Therefore, it will probably be the usual practice to build the message and construct this wrapper at the last minute using InformationResponseSD1V01.ToDocument() method. The returned InformationResponseSD1V01Document value will serialize correctly according to ISO 20022 standards.
classDiagram InformationResponseSD1V01Document *-- InformationResponseSD1V01 : Document
Sample of message format
This is an abbreviated version of what the message should look like.
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:supl.027.001.01">
<InfRspnSD1>
<InvstgtnId>
<!-- InvestigationIdentification inner content -->
</InvstgtnId>
<CreDtTm>
<!-- CreationDateTime inner content -->
</CreDtTm>
<AcctSvcrId>
<!-- AccountServicerIdentification inner content -->
</AcctSvcrId>
<AcctAndPties>
<!-- AccountAndParties inner content -->
</AcctAndPties>
</InfRspnSD1>
</Document>
Data from ISO specification
This is the technical data from the specification document.
<messageDefinition
xmi:id="_8nOCwC_7EeOKib24wnHaFg"
name="InformationResponseSD1V01"
definition="This extends the message InformationRequestResponse."
registrationStatus="Registered"
messageSet="_QB0RcDy5EeO-tdK14jsZag"
xmlTag="InfRspnSD1"
rootElement="Document"
xmlns:xmi="http://www.omg.org/XMI">
<messageBuildingBlock
xmi:id="_hWzaoJirEeO4o528ngEXuw"
name="InvestigationIdentification"
definition="Information used to identify the request."
registrationStatus="Provisionally Registered"
maxOccurs="1"
minOccurs="1"
xmlTag="InvstgtnId"
simpleType="_YW1tKdp-Ed-ak6NoX_4Aeg_1913463446" />
<messageBuildingBlock
xmi:id="_pfuCgJirEeO4o528ngEXuw"
name="CreationDateTime"
definition="Date and time of creation of the extension."
registrationStatus="Provisionally Registered"
maxOccurs="1"
minOccurs="1"
xmlTag="CreDtTm"
simpleType="_YW1tKtp-Ed-ak6NoX_4Aeg_-1624336183" />
<messageBuildingBlock
xmi:id="_oUIuoC_8EeOKib24wnHaFg"
name="AccountServicerIdentification"
definition="Identifies the account servicing institution."
registrationStatus="Provisionally Registered"
maxOccurs="1"
minOccurs="1"
xmlTag="AcctSvcrId"
complexType="_TFB1RNp-Ed-ak6NoX_4Aeg_-736060150" />
<messageBuildingBlock
xmi:id="_jqrv4C__EeOKib24wnHaFg"
name="AccountAndParties"
definition="Requested account and its owners."
registrationStatus="Provisionally Registered"
minOccurs="1"
xmlTag="AcctAndPties"
complexType="_ApDrEC_9EeOKib24wnHaFg" />
<messageDefinitionIdentifier
businessArea="supl"
messageFunctionality="027"
flavour="001"
version="01" />
</messageDefinition>
ISO Building Blocks
The following items are used as building blocks to construct this message.