SecurityQueryV01

reda.010.001.01

SCOPE An instructing party sends a SecurityQuery message to an executing/servicing party to request a report of financial instrument details in their system.

The instructing party - executing/servicing party relationship may be:

USAGE The request is sent when the instructing party needs to see data of a security data within the executing/servicing party system.

Initiator: instructing party.

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
%% SecurityQueryV01 recursion level 0 with max 0
SecurityQueryV01 *-- "0..1" MessageHeader1 : MessageHeader
SecurityQueryV01 *-- "0..1" GenericIdentification1 : RequestType
SecurityQueryV01 *-- "1..1" SecuritiesSearchCriteria4 : SearchCriteria
SecurityQueryV01 *-- "0..1" SecuritiesReturnCriteria1 : SmallSetReturnCriteria
SecurityQueryV01 *-- "0..1" SupplementaryData1 : SupplementaryData
  

Now, we will zero-in one-by-one on each of these building blocks.

MessageHeader building block

Common business identification for the message. Set of characteristics, such as the identification or the creation date and time, specific to the message. For comparison, see the ISO20022 official specification

classDiagram
   direction tb
%% MessageHeader1 recursion level 0 with max 1
class MessageHeader1{
    MessageIdentification IsoMax35Text
    CreationDateTime IsoISODateTime
}
  

MessageHeader1 members

Member name Description Data Type / Multiplicity
MessageIdentification Point to point reference, as assigned by the sender, to unambiguously identify the message. Usage: The sender has to make sure that MessageIdentification is unique for a pre-agreed period. IsoMax35Text - Required 1..1
CreationDateTime Date and time at which the message was created. IsoISODateTime - Optional 0..1

RequestType building block

Defines the type of action to be performed in the request. Information related to an identification, for example party identification or account identification. For comparison, see the ISO20022 official specification

classDiagram
   direction tb
%% GenericIdentification1 recursion level 0 with max 1
class GenericIdentification1{
    Identification IsoMax35Text
    SchemeName IsoMax35Text
    Issuer IsoMax35Text
}
  

GenericIdentification1 members

Member name Description Data Type / Multiplicity
Identification Identification assigned by an institution. IsoMax35Text - Required 1..1
SchemeName Name of the identification scheme. IsoMax35Text - Optional 0..1
Issuer Entity that assigns the identification. IsoMax35Text - Optional 0..1

SearchCriteria building block

Defines the criteria to be used to query the securities reference data by the executing system. Criteria for a query about securities reference data. For comparison, see the ISO20022 official specification

classDiagram
   direction tb
%% SecuritiesSearchCriteria4 recursion level 0 with max 1
class SecuritiesSearchCriteria4{
    ClassificationFinancialInstrument IsoCFIOct2015Identifier
    IssueCurrency ActiveOrHistoricCurrencyCode
    CountryOfIssue CountryCode
}
SecuritiesSearchCriteria4 *-- "0..1" SecurityIdentification39 : FinancialInstrumentIdentification
SecuritiesSearchCriteria4 *-- "0..1" IDatePeriodSearch1Choice : MaturityDate
SecuritiesSearchCriteria4 *-- "0..1" IDatePeriodSearch1Choice : IssueDate
SecuritiesSearchCriteria4 *-- "0..1" ISecurityStatus3Choice : SecurityStatus
SecuritiesSearchCriteria4 *-- "0..1" ISystemPartyIdentification2Choice : MaintainingCSD
SecuritiesSearchCriteria4 *-- "0..1" ISystemPartyIdentification2Choice : InvestorCSD
SecuritiesSearchCriteria4 *-- "0..1" ISystemPartyIdentification2Choice : IssuerCSD
SecuritiesSearchCriteria4 *-- "0..1" ISystemPartyIdentification2Choice : TechnicalIssuerCSD
SecuritiesSearchCriteria4 *-- "0..1" ISystemPartyIdentification2Choice : CSD
%% SecurityIdentification39 recursion level 1 with max 1
class SecurityIdentification39{
    ISIN IsoISIN2021Identifier
    Description IsoMax140Text
}
SecurityIdentification39 *-- "0..0" OtherIdentification1 : OtherIdentification
%% IDatePeriodSearch1Choice recursion level 1 with max 1
%% IDatePeriodSearch1Choice recursion level 1 with max 1
%% ISecurityStatus3Choice recursion level 1 with max 1
%% ISystemPartyIdentification2Choice recursion level 1 with max 1
%% ISystemPartyIdentification2Choice recursion level 1 with max 1
%% ISystemPartyIdentification2Choice recursion level 1 with max 1
%% ISystemPartyIdentification2Choice recursion level 1 with max 1
%% ISystemPartyIdentification2Choice recursion level 1 with max 1
  

SecuritiesSearchCriteria4 members

Member name Description Data Type / Multiplicity
FinancialInstrumentIdentification Way(s) of identifying the security. SecurityIdentification39 - Optional 0..1
ClassificationFinancialInstrument Classification type of the financial instrument, as per the ISO Classification of Financial Instrument (CFI) codification, for example, common share with voting rights, fully paid, or registered. IsoCFIOct2015Identifier - Optional 0..1
MaturityDate Planned final repayment date at the time of issuance. IDatePeriodSearch1Choice - Optional 0..1
IssueDate Date/time at which the security was made available. IDatePeriodSearch1Choice - Optional 0..1
IssueCurrency Currency in which a security is issued or redenominated. ActiveOrHistoricCurrencyCode - Optional 0..1
CountryOfIssue Primary market or country where a security is issued by the issuer or its agent. CountryCode - Optional 0..1
SecurityStatus Specifies the status of the security within its lifecycle. ISecurityStatus3Choice - Optional 0..1
MaintainingCSD Entity involved in an activity. ISystemPartyIdentification2Choice - Optional 0..1
InvestorCSD Entity involved in an activity. ISystemPartyIdentification2Choice - Optional 0..1
IssuerCSD Entity involved in an activity. ISystemPartyIdentification2Choice - Optional 0..1
TechnicalIssuerCSD Technical issuer of a security. ISystemPartyIdentification2Choice - Optional 0..1
CSD CSD of a security. ISystemPartyIdentification2Choice - Optional 0..1

SmallSetReturnCriteria building block

Defines the expected securities reference data to be returned. Return criteria for information to be returned in the report deriving from a query about securities reference data. For comparison, see the ISO20022 official specification

classDiagram
   direction tb
%% SecuritiesReturnCriteria1 recursion level 0 with max 1
class SecuritiesReturnCriteria1{
    FinancialInstrumentIdentification IsoRequestedIndicator
    ISOSecurityLongName IsoRequestedIndicator
    ISOSecurityShortName IsoRequestedIndicator
    ClassificationFinancialInstrument IsoRequestedIndicator
    MaturityDate IsoRequestedIndicator
    IssueDate IsoRequestedIndicator
    IssueCurrency IsoRequestedIndicator
    CountryOfIssue IsoRequestedIndicator
    SecurityStatus IsoRequestedIndicator
    InvestorCSD IsoRequestedIndicator
    IssuerCSD IsoRequestedIndicator
    TechnicalIssuerCSD IsoRequestedIndicator
    CSD IsoRequestedIndicator
    SecuritiesQuantityType IsoRequestedIndicator
    MinimumDenomination IsoRequestedIndicator
    MinimumMultipleQuantity IsoRequestedIndicator
    DeviatingSettlementUnit IsoRequestedIndicator
}
  

SecuritiesReturnCriteria1 members

Member name Description Data Type / Multiplicity
FinancialInstrumentIdentification Identification of a security. IsoRequestedIndicator - Required 1..1
ISOSecurityLongName Name of the security. IsoRequestedIndicator - Required 1..1
ISOSecurityShortName Short name of the security expressed as ISO 18773/18774. IsoRequestedIndicator - Required 1..1
ClassificationFinancialInstrument Classification type of the financial instrument, as per the ISO Classification of Financial Instrument (CFI) codification, for example, common share with voting rights, fully paid, or registered. IsoRequestedIndicator - Required 1..1
MaturityDate Planned final repayment date at the time of issuance. IsoRequestedIndicator - Required 1..1
IssueDate Date/time at which the security was made available. IsoRequestedIndicator - Required 1..1
IssueCurrency Currency in which a security is issued or redenominated. IsoRequestedIndicator - Required 1..1
CountryOfIssue Primary market or country where a security is issued by the issuer or its agent. IsoRequestedIndicator - Required 1..1
SecurityStatus Specifies the status of the security within its lifecycle. IsoRequestedIndicator - Required 1..1
InvestorCSD CSD Investor of a security. IsoRequestedIndicator - Required 1..1
IssuerCSD CSD Issuer of a security. IsoRequestedIndicator - Required 1..1
TechnicalIssuerCSD Technical issuer of a security. IsoRequestedIndicator - Required 1..1
CSD CSD of a security. IsoRequestedIndicator - Required 1..1
SecuritiesQuantityType Quantity of a security. IsoRequestedIndicator - Required 1..1
MinimumDenomination Indicates the minimum quantity (unit or nominal) of a security. IsoRequestedIndicator - Required 1..1
MinimumMultipleQuantity Minimum multiple quantity (unit or nominal) of securities. IsoRequestedIndicator - Required 1..1
DeviatingSettlementUnit Minimum quantity of securities that can be purchased without incurring a larger fee. For example, if the round lot size is 100 and the trade is for 125 shares, then 100 will be processed without a fee and the remaining 25 will incur a service fee for being an odd lot size. IsoRequestedIndicator - Required 1..1

SupplementaryData building block

Additional information that cannot be captured in the structured elements and/or any other specific block. Additional information that can not be captured in the structured fields and/or any other specific block. For comparison, see the ISO20022 official specification

classDiagram
   direction tb
%% SupplementaryData1 recursion level 0 with max 1
class SupplementaryData1{
    PlaceAndName IsoMax350Text
}
SupplementaryData1 *-- "1..1" IsoSupplementaryDataEnvelope1 : Envelope
%% IsoSupplementaryDataEnvelope1 recursion level 1 with max 1
  

SupplementaryData1 members

Member name Description Data Type / Multiplicity
PlaceAndName Unambiguous reference to the location where the supplementary data must be inserted in the message instance. In the case of XML, this is expressed by a valid XPath. IsoMax350Text - Optional 0..1
Envelope Technical element wrapping the supplementary data. IsoSupplementaryDataEnvelope1 - Required 1..1

Extensibility and generalization considerations

To facilitate generalized design patterns in the system, the SecurityQueryV01 implementation follows a specific implementaiton pattern. First of all, SecurityQueryV01 impleemnts IOuterRecord indicating it is the outermost logical part of the message definition. Like all message wrappers, SecurityQueryV01Document implements IOuterDocument. Because SecurityQueryV01 implements IOuterDocument, it is a suitable template parameter for IOuterDocument, and causes the internal ‘Message’ to be of type SecurityQueryV01.

classDiagram
    class IOuterRecord
    SecurityQueryV01 --|> IOuterRecord : Implements
    SecurityQueryV01Document --|> IOuterDocument~SecurityQueryV01~ : Implements
    class IOuterDocument~SecurityQueryV01~ {
        SecurityQueryV01 Message
     }
  

Document wrapper for serialization

The only real purpose SecurityQueryV01Document serves is to cause the document to be serialized into the ‘urn:iso:std:iso:20022:tech:xsd:reda.010.001.01’ namespace. Therefore, it will probably be the usual practice to build the message and construct this wrapper at the last minute using SecurityQueryV01.ToDocument() method. The returned SecurityQueryV01Document value will serialize correctly according to ISO 20022 standards.

classDiagram
    SecurityQueryV01Document *-- SecurityQueryV01 : 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:reda.010.001.01">
    <SctyQry>
        <MsgHdr>
            <!-- MessageHeader inner content -->
        </MsgHdr>
        <ReqTp>
            <!-- RequestType inner content -->
        </ReqTp>
        <SchCrit>
            <!-- SearchCriteria inner content -->
        </SchCrit>
        <SmlSetRtrCrit>
            <!-- SmallSetReturnCriteria inner content -->
        </SmlSetRtrCrit>
        <SplmtryData>
            <!-- SupplementaryData inner content -->
        </SplmtryData>
    </SctyQry>
</Document>

Data from ISO specification

This is the technical data from the specification document.

<messageDefinition
  xmi:id="_jTvN8x62Eeu31YsWNiv_cw"
  name="SecurityQueryV01"
  definition="SCOPE&#xD;&#xA;An instructing party sends a SecurityQuery message to an executing/servicing party to request a report of financial instrument details in their system.&#xD;&#xA;&#xD;&#xA;The instructing party - executing/servicing party relationship may be:&#xD;&#xA;- Central Securities Depositories (CSD) who would like to publish security static data, or &#xD;&#xA;- a Corporate, or&#xD;&#xA;- a Bank, or&#xD;&#xA;- a Market Infrastructure, or &#xD;&#xA;- a Market Data Provider.&#xD;&#xA;&#xD;&#xA;USAGE&#xD;&#xA;The request is sent when the instructing party needs to see data of a security data within the executing/servicing party system.&#xD;&#xA;&#xD;&#xA;Initiator: instructing party."
  registrationStatus="Registered"
  messageSet="_XwWqJB62Eeu31YsWNiv_cw"
  xmlTag="SctyQry"
  rootElement="Document"
  xmlns:xmi="http://www.omg.org/XMI">
  <constraint
    xmi:id="_jTvN-x62Eeu31YsWNiv_cw"
    name="FullSetRules"
    definition="If SmallSetReturnCriteria is not present then the full set of security reference data is expected."
    registrationStatus="Provisionally Registered" />
  <messageBuildingBlock
    xmi:id="_Vmf7QZIxEeuAlLVx8pyt3w"
    name="MessageHeader"
    definition="Common business identification for the message."
    registrationStatus="Provisionally Registered"
    maxOccurs="1"
    minOccurs="0"
    xmlTag="MsgHdr"
    complexType="_75DzkaMgEeCJ6YNENx4h-w_-613853819" />
  <messageBuildingBlock
    xmi:id="_16GBoZI1EeuAlLVx8pyt3w"
    name="RequestType"
    definition="Defines the type of action to be performed in the request."
    registrationStatus="Provisionally Registered"
    maxOccurs="1"
    minOccurs="0"
    xmlTag="ReqTp"
    complexType="_QALkN9p-Ed-ak6NoX_4Aeg_-1748202225" />
  <messageBuildingBlock
    xmi:id="_jTv02x62Eeu31YsWNiv_cw"
    name="SearchCriteria"
    definition="Defines the criteria to be used to query the securities reference data by the executing system."
    registrationStatus="Provisionally Registered"
    maxOccurs="1"
    minOccurs="1"
    xmlTag="SchCrit"
    complexType="_QETUpZJKEeuAlLVx8pyt3w" />
  <messageBuildingBlock
    xmi:id="_jTv03R62Eeu31YsWNiv_cw"
    name="SmallSetReturnCriteria"
    definition="Defines the expected securities reference data to be returned."
    registrationStatus="Provisionally Registered"
    maxOccurs="1"
    minOccurs="0"
    xmlTag="SmlSetRtrCrit"
    complexType="_hXQrSWliEeGaMcKyqKNRfQ_-1281740246" />
  <messageBuildingBlock
    xmi:id="_jTv04x62Eeu31YsWNiv_cw"
    name="SupplementaryData"
    definition="Additional information that cannot be captured in the structured elements and/or any other specific block."
    registrationStatus="Provisionally Registered"
    minOccurs="0"
    xmlTag="SplmtryData"
    complexType="_Qn0zC9p-Ed-ak6NoX_4Aeg_468227563" />
  <messageDefinitionIdentifier
    businessArea="reda"
    messageFunctionality="010"
    flavour="001"
    version="01" />
</messageDefinition>

ISO Building Blocks

The following items are used as building blocks to construct this message.