SecuritiesTransactionPostingReport002V12

semt.017.002.12

Scope SecuritiesTransactionPostingReport is sent by an account servicer to an account owner to provide the details of increases and decreases of holdings which occurred during a specified period, for all or selected securities in the specified safekeeping account or sub-safekeeping account which the account servicer holds for the account owner. The account servicer/owner relationship may be:

Usage This message may be used as a trade date based or a settlement date based statement. The message may also be used to:

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
%% SecuritiesTransactionPostingReport002V12 recursion level 0 with max 0
SecuritiesTransactionPostingReport002V12 *-- "1..1" Pagination1 : Pagination
SecuritiesTransactionPostingReport002V12 *-- "1..1" Statement82 : StatementGeneralDetails
SecuritiesTransactionPostingReport002V12 *-- "0..1" PartyIdentification156 : AccountOwner
SecuritiesTransactionPostingReport002V12 *-- "0..1" SecuritiesAccount40 : SafekeepingAccount
SecuritiesTransactionPostingReport002V12 *-- "0..1" BlockChainAddressWallet8 : BlockChainAddressOrWallet
SecuritiesTransactionPostingReport002V12 *-- "0..10" Intermediary45 : IntermediaryInformation
SecuritiesTransactionPostingReport002V12 *-- "0..1" FinancialInstrumentDetails43 : FinancialInstrumentDetails
SecuritiesTransactionPostingReport002V12 *-- "0..1" SubAccountIdentification70 : SubAccountDetails
  

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

Pagination building block

Page number of the message (within a statement) and continuation indicator to indicate that the statement is to continue or that the message is the last page of the statement. Number used to sequence pages when it is not possible for data to be conveyed in a single message and the data has to be split across several pages (messages). For comparison, see the ISO20022 official specification

classDiagram
   direction tb
%% Pagination1 recursion level 0 with max 1
class Pagination1{
    PageNumber IsoMax5NumericText
    LastPageIndicator IsoYesNoIndicator
}
  

Pagination1 members

Member name Description Data Type / Multiplicity
PageNumber Page number. IsoMax5NumericText - Required 1..1
LastPageIndicator Indicates the last page. IsoYesNoIndicator - Required 1..1

StatementGeneralDetails building block

Provides general information to the report. Characteristics of the statement. For comparison, see the ISO20022 official specification

classDiagram
   direction tb
%% Statement82 recursion level 0 with max 1
class Statement82{
    QueryReference IsoRestrictedFINXMax16Text
    StatementIdentification IsoRestrictedFINXMax16Text
    ActivityIndicator IsoYesNoIndicator
    SubAccountIndicator IsoYesNoIndicator
}
Statement82 *-- "0..1" INumber3Choice : ReportNumber
Statement82 *-- "1..1" IPeriod7Choice : StatementPeriod
Statement82 *-- "0..1" IFrequency26Choice : Frequency
Statement82 *-- "0..1" IUpdateType16Choice : UpdateType
Statement82 *-- "1..1" IStatementBasis12Choice : StatementBasis
%% INumber3Choice recursion level 1 with max 1
%% IPeriod7Choice recursion level 1 with max 1
%% IFrequency26Choice recursion level 1 with max 1
%% IUpdateType16Choice recursion level 1 with max 1
%% IStatementBasis12Choice recursion level 1 with max 1
  

Statement82 members

Member name Description Data Type / Multiplicity
ReportNumber Sequential number of the report. INumber3Choice - Optional 0..1
QueryReference Identification of the SecuritiesStatementQuery message sent to request this statement. IsoRestrictedFINXMax16Text - Optional 0..1
StatementIdentification Reference common to all pages of a statement. IsoRestrictedFINXMax16Text - Optional 0..1
StatementPeriod Period for the statement. IPeriod7Choice - Required 1..1
Frequency Frequency of the statement. IFrequency26Choice - Optional 0..1
UpdateType Indicates whether the statement is complete or contains changes only. IUpdateType16Choice - Optional 0..1
StatementBasis Type of balance on which the statement is prepared. IStatementBasis12Choice - Required 1..1
ActivityIndicator Indicates whether there is activity or information update reported in the statement. IsoYesNoIndicator - Required 1..1
SubAccountIndicator Indicates whether the statement reports holdings at subsafekeeping account level. IsoYesNoIndicator - Required 1..1

AccountOwner building block

Party that legally owns the account. Identification of a party. For comparison, see the ISO20022 official specification

classDiagram
   direction tb
%% PartyIdentification156 recursion level 0 with max 1
class PartyIdentification156{
    LEI IsoLEIIdentifier
}
PartyIdentification156 *-- "1..1" IPartyIdentification136Choice : Identification
%% IPartyIdentification136Choice recursion level 1 with max 1
  

PartyIdentification156 members

Member name Description Data Type / Multiplicity
Identification Unique identification of the party. IPartyIdentification136Choice - Required 1..1
LEI Legal entity identification as an alternate identification for a party. IsoLEIIdentifier - Optional 0..1

SafekeepingAccount building block

Account to or from which a securities entry is made. Account to or from which a securities entry is made. For comparison, see the ISO20022 official specification

classDiagram
   direction tb
%% SecuritiesAccount40 recursion level 0 with max 1
class SecuritiesAccount40{
    Identification IsoRestrictedFINXMax35Text
    Name IsoMax70Text
    Designation IsoRestrictedFINXMax35Text
}
SecuritiesAccount40 *-- "0..1" GenericIdentification47 : Type
%% GenericIdentification47 recursion level 1 with max 1
class GenericIdentification47{
    Identification IsoExact4AlphaNumericText
    Issuer IsoMax4AlphaNumericText
    SchemeName IsoMax4AlphaNumericText
}
  

SecuritiesAccount40 members

Member name Description Data Type / Multiplicity
Identification Unambiguous identification for the account between the account owner and the account servicer. IsoRestrictedFINXMax35Text - Required 1..1
Type Specifies the type of securities account. GenericIdentification47 - Optional 0..1
Name Description of the account. IsoMax70Text - Optional 0..1
Designation Supplementary registration information applying to a specific block of units for dealing and reporting purposes. The supplementary registration information may be used when all the units are registered, for example, to a funds supermarket, but holdings for each investor have to be reconciled individually. IsoRestrictedFINXMax35Text - Optional 0..1

BlockChainAddressOrWallet building block

Blockchain address or wallet where digital assets are maintained. This is the equivalent of safekeeping account for digital assets. Digital account where digital assets or digital tokens can be stored and where an entry is made. For comparison, see the ISO20022 official specification

classDiagram
   direction tb
%% BlockChainAddressWallet8 recursion level 0 with max 1
class BlockChainAddressWallet8{
    Identification IsoRestrictedFINXMax140Text
    Name IsoRestrictedFINXMax70Text
    Designation IsoRestrictedFINXMax16Text
}
BlockChainAddressWallet8 *-- "0..1" GenericIdentification47 : Type
%% GenericIdentification47 recursion level 1 with max 1
class GenericIdentification47{
    Identification IsoExact4AlphaNumericText
    Issuer IsoMax4AlphaNumericText
    SchemeName IsoMax4AlphaNumericText
}
  

BlockChainAddressWallet8 members

Member name Description Data Type / Multiplicity
Identification Unambiguous identification for the account between the account owner and the account servicer. IsoRestrictedFINXMax140Text - Required 1..1
Type Specifies the type of securities account. GenericIdentification47 - Optional 0..1
Name Description of the account. IsoRestrictedFINXMax70Text - Optional 0..1
Designation Supplementary registration information applying to a specific block of units for dealing and reporting purposes. The supplementary registration information may be used when all the units are registered, for example, to a funds supermarket, but holdings for each investor have to be reconciled individually. IsoRestrictedFINXMax16Text - Optional 0..1

IntermediaryInformation building block

Information about the party that provides services relating to financial products to investors, for example, advice on products and placement of orders for the investment fund. Party that provides services to investors relating to financial products (Investment Funds). For comparison, see the ISO20022 official specification

classDiagram
   direction tb
%% Intermediary45 recursion level 0 with max 1
Intermediary45 *-- "1..1" PartyIdentification157 : Identification
Intermediary45 *-- "0..1" IRole7Choice : Role
Intermediary45 *-- "0..1" Account30 : Account
%% PartyIdentification157 recursion level 1 with max 1
class PartyIdentification157{
    LEI IsoLEIIdentifier
}
PartyIdentification157 *-- "1..1" IPartyIdentification137Choice : Identification
%% IRole7Choice recursion level 1 with max 1
%% Account30 recursion level 1 with max 1
Account30 *-- "1..1" AccountIdentification4 : Identification
Account30 *-- "0..1" IPartyIdentification137Choice : AccountServicer
  

Intermediary45 members

Member name Description Data Type / Multiplicity
Identification Unique and unambiguous identifier of the intermediary. PartyIdentification157 - Required 1..1
Role Function performed by the intermediary (investment funds). IRole7Choice - Optional 0..1
Account Business relationship between two entities; one entity is the account owner, the other entity is the account servicer. Account30 - Optional 0..1

FinancialInstrumentDetails building block

Reporting per financial instrument. Reporting per financial instrument. For comparison, see the ISO20022 official specification

classDiagram
   direction tb
%% FinancialInstrumentDetails43 recursion level 0 with max 1
FinancialInstrumentDetails43 *-- "1..1" SecurityIdentification20 : FinancialInstrumentIdentification
FinancialInstrumentDetails43 *-- "0..1" FinancialInstrument76 : InvestmentFundsFinancialInstrumentAttributes
FinancialInstrumentDetails43 *-- "0..1" PriceInformation24 : PriceDetails
FinancialInstrumentDetails43 *-- "0..1" SafeKeepingPlace4 : SafekeepingPlace
FinancialInstrumentDetails43 *-- "0..1" OpeningBalance6 : OpeningBalance
FinancialInstrumentDetails43 *-- "0..1" ClosingBalance6 : ClosingBalance
FinancialInstrumentDetails43 *-- "1..0" Transaction126 : Transaction
%% SecurityIdentification20 recursion level 1 with max 1
class SecurityIdentification20{
    ISIN IsoISINOct2015Identifier
    Description IsoRestrictedFINXMax140Text
}
SecurityIdentification20 *-- "0..0" OtherIdentification2 : OtherIdentification
%% FinancialInstrument76 recursion level 1 with max 1
class FinancialInstrument76{
    SupplementaryIdentification IsoRestrictedFINXMax35Text
    SecuritiesForm FormOfSecurity1Code
    ClassType IsoRestrictedFINXMax35Text
    DistributionPolicy DistributionPolicy1Code
}
FinancialInstrument76 *-- "0..1" ISecurityClassificationType3Choice : ClassificationType
%% PriceInformation24 recursion level 1 with max 1
PriceInformation24 *-- "1..1" ITypeOfPrice49Choice : Type
PriceInformation24 *-- "1..1" IYieldedOrValueType1Choice : ValueType
PriceInformation24 *-- "1..1" IPriceRateOrAmountOrUnknown3Choice : Value
PriceInformation24 *-- "0..1" MarketIdentification91 : SourceOfPrice
PriceInformation24 *-- "0..1" IDateAndDateTime2Choice : QuotationDate
%% SafeKeepingPlace4 recursion level 1 with max 1
class SafeKeepingPlace4{
    LEI IsoLEIIdentifier
}
SafeKeepingPlace4 *-- "0..1" ISafekeepingPlaceFormat39Choice : SafekeepingPlaceFormat
%% OpeningBalance6 recursion level 1 with max 1
class OpeningBalance6{
    ShortLongIndicator ShortLong1Code
}
OpeningBalance6 *-- "1..1" IOpeningBalance7Choice : OpeningBalance
%% ClosingBalance6 recursion level 1 with max 1
class ClosingBalance6{
    ShortLongIndicator ShortLong1Code
}
ClosingBalance6 *-- "1..1" IClosingBalance7Choice : ClosingBalance
%% Transaction126 recursion level 1 with max 1
class Transaction126{
    AccountOwnerTransactionIdentification IsoRestrictedFINXMax16Text
    AccountServicerTransactionIdentification IsoRestrictedFINXMax16Text
    MarketInfrastructureTransactionIdentification IsoRestrictedFINXMax16Text
    CounterpartyMarketInfrastructureTransactionIdentification IsoRestrictedFINXMax16Text
    ProcessorTransactionIdentification IsoRestrictedFINXMax16Text
    TradeIdentification IsoRestrictedFINXMax52Text
    PoolIdentification IsoRestrictedFINXMax16Text
    CommonIdentification IsoRestrictedFINXMax16Text
    CorporateActionEventIdentification IsoRestrictedFINXMax16Text
    TripartyAgentServiceProviderCollateralTransactionIdentification IsoRestrictedFINXMax16Text
    ClientTripartyCollateralTransactionIdentification IsoRestrictedFINXMax16Text
    ClientCollateralInstructionIdentification IsoRestrictedFINXMax16Text
    TripartyAgentServiceProviderCollateralInstructionIdentification IsoRestrictedFINXMax16Text
    MasterReference IsoRestrictedFINXMax35Text
    AccountOwnerLegIdentification IsoRestrictedFINXMax35Text
    AccountServicerLegIdentification IsoRestrictedFINXMax35Text
}
Transaction126 *-- "0..1" AdditionalReference12 : ClientReference
Transaction126 *-- "0..1" TransactionDetails165 : TransactionDetails
Transaction126 *-- "0..0" SupplementaryData1 : SupplementaryData
  

FinancialInstrumentDetails43 members

Member name Description Data Type / Multiplicity
FinancialInstrumentIdentification Financial instrument representing a sum of rights of the investor vis-a-vis the issuer. SecurityIdentification20 - Required 1..1
InvestmentFundsFinancialInstrumentAttributes Elements characterising an investment funds financial instrument. FinancialInstrument76 - Optional 0..1
PriceDetails Information regarding the price of the instrument. PriceInformation24 - Optional 0..1
SafekeepingPlace Place where the securities are safe-kept, physically or notionally. This place can be, for example, a local custodian, a Central Securities Depository (CSD) or an International Central Securities Depository (ICSD). SafeKeepingPlace4 - Optional 0..1
OpeningBalance Opening balance for the statement period (first opening balance) or of this page (intermediary opening balance). OpeningBalance6 - Optional 0..1
ClosingBalance Closing balance for the statement period (final closing balance) or of this page (intermediary closing balance). ClosingBalance6 - Optional 0..1
Transaction Transaction details. Transaction126 - Unknown 1..0

SubAccountDetails building block

Details at sub-account level. Provides all sub-account details. For comparison, see the ISO20022 official specification

classDiagram
   direction tb
%% SubAccountIdentification70 recursion level 0 with max 1
class SubAccountIdentification70{
    ActivityIndicator IsoYesNoIndicator
}
SubAccountIdentification70 *-- "0..1" PartyIdentification156 : AccountOwner
SubAccountIdentification70 *-- "0..1" SecuritiesAccount34 : SafekeepingAccount
SubAccountIdentification70 *-- "0..1" BlockChainAddressWallet9 : BlockChainAddressOrWallet
SubAccountIdentification70 *-- "0..0" FinancialInstrumentDetails43 : FinancialInstrumentDetails
%% PartyIdentification156 recursion level 1 with max 1
class PartyIdentification156{
    LEI IsoLEIIdentifier
}
PartyIdentification156 *-- "1..1" IPartyIdentification136Choice : Identification
%% SecuritiesAccount34 recursion level 1 with max 1
class SecuritiesAccount34{
    Identification IsoRestrictedFINXMax35Text
    Name IsoMax70Text
}
SecuritiesAccount34 *-- "0..1" IPurposeCode8Choice : Type
%% BlockChainAddressWallet9 recursion level 1 with max 1
class BlockChainAddressWallet9{
    Identification IsoRestrictedFINXMax140Text
    Name IsoRestrictedFINXMax70Text
}
BlockChainAddressWallet9 *-- "0..1" IPurposeCode8Choice : Type
%% FinancialInstrumentDetails43 recursion level 1 with max 1
FinancialInstrumentDetails43 *-- "1..1" SecurityIdentification20 : FinancialInstrumentIdentification
FinancialInstrumentDetails43 *-- "0..1" FinancialInstrument76 : InvestmentFundsFinancialInstrumentAttributes
FinancialInstrumentDetails43 *-- "0..1" PriceInformation24 : PriceDetails
FinancialInstrumentDetails43 *-- "0..1" SafeKeepingPlace4 : SafekeepingPlace
FinancialInstrumentDetails43 *-- "0..1" OpeningBalance6 : OpeningBalance
FinancialInstrumentDetails43 *-- "0..1" ClosingBalance6 : ClosingBalance
FinancialInstrumentDetails43 *-- "1..0" Transaction126 : Transaction
  

SubAccountIdentification70 members

Member name Description Data Type / Multiplicity
AccountOwner Party that legally owns the account. PartyIdentification156 - Optional 0..1
SafekeepingAccount Account to or from which a securities entry is made. SecuritiesAccount34 - Optional 0..1
BlockChainAddressOrWallet Blockchain address or wallet where digital assets are maintained. This is the equivalent of safekeeping account for digital assets. BlockChainAddressWallet9 - Optional 0..1
ActivityIndicator Indicates whether there is activity or information update reported in the statement. IsoYesNoIndicator - Required 1..1
FinancialInstrumentDetails Reporting per financial instrument. FinancialInstrumentDetails43 - Unknown 0..0

Extensibility and generalization considerations

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

classDiagram
    class IOuterRecord
    SecuritiesTransactionPostingReport002V12 --|> IOuterRecord : Implements
    SecuritiesTransactionPostingReport002V12Document --|> IOuterDocument~SecuritiesTransactionPostingReport002V12~ : Implements
    class IOuterDocument~SecuritiesTransactionPostingReport002V12~ {
        SecuritiesTransactionPostingReport002V12 Message
     }
  

Document wrapper for serialization

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

classDiagram
    SecuritiesTransactionPostingReport002V12Document *-- SecuritiesTransactionPostingReport002V12 : 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:semt.017.002.12">
    <SctiesTxPstngRpt>
        <Pgntn>
            <!-- Pagination inner content -->
        </Pgntn>
        <StmtGnlDtls>
            <!-- StatementGeneralDetails inner content -->
        </StmtGnlDtls>
        <AcctOwnr>
            <!-- AccountOwner inner content -->
        </AcctOwnr>
        <SfkpgAcct>
            <!-- SafekeepingAccount inner content -->
        </SfkpgAcct>
        <BlckChainAdrOrWllt>
            <!-- BlockChainAddressOrWallet inner content -->
        </BlckChainAdrOrWllt>
        <IntrmyInf>
            <!-- IntermediaryInformation inner content -->
        </IntrmyInf>
        <FinInstrmDtls>
            <!-- FinancialInstrumentDetails inner content -->
        </FinInstrmDtls>
        <SubAcctDtls>
            <!-- SubAccountDetails inner content -->
        </SubAcctDtls>
    </SctiesTxPstngRpt>
</Document>

Data from ISO specification

This is the technical data from the specification document.

<messageDefinition
  xmi:id="_gJwLQzi8Eeydid5dcNPKvg"
  previousVersion="_2xkF0yAeEeuyDZ-ukt4YRg"
  name="SecuritiesTransactionPostingReport002V12"
  definition="Scope&#xD;&#xA;SecuritiesTransactionPostingReport is sent by an account servicer to an account owner to provide the details of increases and decreases of holdings which occurred during a specified period, for all or selected securities in the specified safekeeping account or sub-safekeeping account which the account servicer holds for the account owner. &#xD;&#xA;The account servicer/owner relationship may be:&#xD;&#xA;- a central securities depository or another settlement market infrastructure acting on behalf of its participants&#xD;&#xA;- an agent (sub-custodian) acting on behalf of its global custodian customer, or &#xD;&#xA;- a custodian acting on behalf of an investment management institution or a broker/dealer.&#xD;&#xA;&#xD;&#xA;Usage&#xD;&#xA;This message may be used as a trade date based or a settlement date based statement.&#xD;&#xA;The message may also be used to: &#xD;&#xA;- re-send a message previously sent,&#xD;&#xA;- provide a third party with a copy of a message for information,&#xD;&#xA;- re-send to a third party a copy of a message for information using the relevant elements in the Business Application Header."
  registrationStatus="Registered"
  messageSet="_KoChkKS_EeWiN6v48CBCXg _26G2kVI3EeyUbfjRDFS84A"
  xmlTag="SctiesTxPstngRpt"
  rootElement="Document"
  xmlns:xmi="http://www.omg.org/XMI">
  <constraint
    xmi:id="_gJwLRTi8Eeydid5dcNPKvg"
    name="FinancialInstrumentDetailsReportingRule"
    definition="If StatementGeneralDetails/ActivityIndicator is TRUE (Yes) and SubAccountIndicator is FALSE (No), then FinancialInstrumentDetails must be present and Sub Account Details must be absent."
    registrationStatus="Provisionally Registered"
    expression="&lt;RuleDefinition&gt;&lt;ComplexRule xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; xsi:type=&quot;ComplexRule&quot;&gt;&lt;mustBe&gt;&lt;connector&gt;AND&lt;/connector&gt;&lt;BooleanRule xsi:type=&quot;Absence&quot;&gt;&lt;leftOperand&gt;/SubAccountDetails[*]&lt;/leftOperand&gt;&lt;/BooleanRule&gt;&lt;BooleanRule xsi:type=&quot;Presence&quot;&gt;&lt;leftOperand&gt;/FinancialInstrumentDetails[*]&lt;/leftOperand&gt;&lt;/BooleanRule&gt;&lt;/mustBe&gt;&lt;onCondition&gt;&lt;connector&gt;AND&lt;/connector&gt;&lt;BooleanRule xsi:type=&quot;EqualToValue&quot;&gt;&lt;leftOperand&gt;/StatementGeneralDetails/SubAccountIndicator&lt;/leftOperand&gt;&lt;rightOperand&gt;false&lt;/rightOperand&gt;&lt;/BooleanRule&gt;&lt;BooleanRule xsi:type=&quot;EqualToValue&quot;&gt;&lt;leftOperand&gt;/StatementGeneralDetails/ActivityIndicator&lt;/leftOperand&gt;&lt;rightOperand&gt;true&lt;/rightOperand&gt;&lt;/BooleanRule&gt;&lt;/onCondition&gt;&lt;/ComplexRule&gt;&lt;/RuleDefinition&gt;" />
  <constraint
    xmi:id="_gJwLRzi8Eeydid5dcNPKvg"
    name="SubAccountDetailsFinancialInstrumentPresenceRule"
    definition="If StatementGeneralDetails/ActivityIndicator is TRUE (Yes) and SubAccountIndicator is TRUE (YES), then SubAccountDetails must be present and FinancialInstrumentDetails must be absent."
    registrationStatus="Provisionally Registered"
    expression="&lt;RuleDefinition&gt;&lt;ComplexRule xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; xsi:type=&quot;ComplexRule&quot;&gt;&lt;mustBe&gt;&lt;connector&gt;AND&lt;/connector&gt;&lt;BooleanRule xsi:type=&quot;Presence&quot;&gt;&lt;leftOperand&gt;/SubAccountDetails[*]&lt;/leftOperand&gt;&lt;/BooleanRule&gt;&lt;BooleanRule xsi:type=&quot;Absence&quot;&gt;&lt;leftOperand&gt;/FinancialInstrumentDetails[*]&lt;/leftOperand&gt;&lt;/BooleanRule&gt;&lt;/mustBe&gt;&lt;onCondition&gt;&lt;connector&gt;AND&lt;/connector&gt;&lt;BooleanRule xsi:type=&quot;EqualToValue&quot;&gt;&lt;leftOperand&gt;/StatementGeneralDetails/SubAccountIndicator&lt;/leftOperand&gt;&lt;rightOperand&gt;true&lt;/rightOperand&gt;&lt;/BooleanRule&gt;&lt;BooleanRule xsi:type=&quot;EqualToValue&quot;&gt;&lt;leftOperand&gt;/StatementGeneralDetails/ActivityIndicator&lt;/leftOperand&gt;&lt;rightOperand&gt;true&lt;/rightOperand&gt;&lt;/BooleanRule&gt;&lt;/onCondition&gt;&lt;/ComplexRule&gt;&lt;/RuleDefinition&gt;" />
  <constraint
    xmi:id="_gJwLSTi8Eeydid5dcNPKvg"
    name="FinancialInstrumentDetailsOrSubAccountDetailsRule"
    definition="If StatementGeneralDetails/ActivityIndicator is FALSE (No), then FinancialInstrumentDetails and SubAccountDetails must be absent."
    registrationStatus="Provisionally Registered"
    expression="&lt;RuleDefinition&gt;&lt;ComplexRule xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; xsi:type=&quot;ComplexRule&quot;&gt;&lt;mustBe&gt;&lt;connector&gt;AND&lt;/connector&gt;&lt;BooleanRule xsi:type=&quot;Absence&quot;&gt;&lt;leftOperand&gt;/SubAccountDetails[*]&lt;/leftOperand&gt;&lt;/BooleanRule&gt;&lt;BooleanRule xsi:type=&quot;Absence&quot;&gt;&lt;leftOperand&gt;/FinancialInstrumentDetails[*]&lt;/leftOperand&gt;&lt;/BooleanRule&gt;&lt;/mustBe&gt;&lt;onCondition&gt;&lt;connector&gt;AND&lt;/connector&gt;&lt;BooleanRule xsi:type=&quot;EqualToValue&quot;&gt;&lt;leftOperand&gt;/StatementGeneralDetails/ActivityIndicator&lt;/leftOperand&gt;&lt;rightOperand&gt;false&lt;/rightOperand&gt;&lt;/BooleanRule&gt;&lt;/onCondition&gt;&lt;/ComplexRule&gt;&lt;/RuleDefinition&gt;" />
  <constraint
    xmi:id="_gJwLSzi8Eeydid5dcNPKvg"
    name="SecuritiesMarketPracticeGroupGuideline"
    definition="The Securities Market Practice Group (SMPG) has published market practice recommendations on the use of this message.&#xD;&#xA;These market practices are available on www.smpg.info."
    registrationStatus="Provisionally Registered" />
  <constraint
    xmi:id="_gJwLTTi8Eeydid5dcNPKvg"
    name="SafekeepingAccountOrBlockChainAddress1Rule"
    definition="If SafekeepingAccount is present, BlockChainAddressOrWallet must be absent."
    registrationStatus="Provisionally Registered"
    expression="&lt;RuleDefinition&gt;&lt;ComplexRule xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; xsi:type=&quot;ComplexRule&quot;&gt;&lt;mustBe&gt;&lt;connector&gt;AND&lt;/connector&gt;&lt;BooleanRule xsi:type=&quot;Absence&quot;&gt;&lt;leftOperand&gt;/BlockChainAddressOrWallet&lt;/leftOperand&gt;&lt;/BooleanRule&gt;&lt;/mustBe&gt;&lt;onCondition&gt;&lt;connector&gt;AND&lt;/connector&gt;&lt;BooleanRule xsi:type=&quot;Presence&quot;&gt;&lt;leftOperand&gt;/SafekeepingAccount&lt;/leftOperand&gt;&lt;/BooleanRule&gt;&lt;/onCondition&gt;&lt;/ComplexRule&gt;&lt;/RuleDefinition&gt;" />
  <constraint
    xmi:id="_gJwLTzi8Eeydid5dcNPKvg"
    name="SafekeepingAccountOrBlockChainAddress2Rule"
    definition="If BlockChainAddressOrWallet is present, SafekeepingAccount must be absent."
    registrationStatus="Provisionally Registered"
    expression="&lt;RuleDefinition&gt;&lt;ComplexRule xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; xsi:type=&quot;ComplexRule&quot;&gt;&lt;mustBe&gt;&lt;connector&gt;AND&lt;/connector&gt;&lt;BooleanRule xsi:type=&quot;Absence&quot;&gt;&lt;leftOperand&gt;/SafekeepingAccount&lt;/leftOperand&gt;&lt;/BooleanRule&gt;&lt;/mustBe&gt;&lt;onCondition&gt;&lt;connector&gt;AND&lt;/connector&gt;&lt;BooleanRule xsi:type=&quot;Presence&quot;&gt;&lt;leftOperand&gt;/BlockChainAddressOrWallet&lt;/leftOperand&gt;&lt;/BooleanRule&gt;&lt;/onCondition&gt;&lt;/ComplexRule&gt;&lt;/RuleDefinition&gt;" />
  <constraint
    xmi:id="_gJwLUTi8Eeydid5dcNPKvg"
    name="SafekeepingAccountOrBlockChainAddress3Rule"
    definition="Either SafekeepingAccount or BlockChainAddressOrWallet must be present but not both."
    registrationStatus="Provisionally Registered"
    expression="&lt;RuleDefinition&gt;&lt;SimpleRule xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; xsi:type=&quot;SimpleRule&quot;&gt;&lt;mustBe&gt;&lt;connector&gt;OR&lt;/connector&gt;&lt;BooleanRule xsi:type=&quot;Presence&quot;&gt;&lt;leftOperand&gt;/SafekeepingAccount&lt;/leftOperand&gt;&lt;/BooleanRule&gt;&lt;BooleanRule xsi:type=&quot;Presence&quot;&gt;&lt;leftOperand&gt;/BlockChainAddressOrWallet&lt;/leftOperand&gt;&lt;/BooleanRule&gt;&lt;/mustBe&gt;&lt;/SimpleRule&gt;&lt;/RuleDefinition&gt;" />
  <messageBuildingBlock
    xmi:id="_gJwLVji8Eeydid5dcNPKvg"
    name="Pagination"
    definition="Page number of the message (within a statement) and continuation indicator to indicate that the statement is to continue or that the message is the last page of the statement."
    registrationStatus="Provisionally Registered"
    maxOccurs="1"
    minOccurs="1"
    xmlTag="Pgntn"
    complexType="_xhMHQa6XEees_ufOy2ci-g" />
  <messageBuildingBlock
    xmi:id="_gJwLWDi8Eeydid5dcNPKvg"
    name="StatementGeneralDetails"
    definition="Provides general information to the report."
    registrationStatus="Provisionally Registered"
    maxOccurs="1"
    minOccurs="1"
    xmlTag="StmtGnlDtls"
    complexType="_s9ln0gVVEeqjd8n6wD9JVw" />
  <messageBuildingBlock
    xmi:id="_gJwLWji8Eeydid5dcNPKvg"
    name="AccountOwner"
    definition="Party that legally owns the account."
    registrationStatus="Provisionally Registered"
    maxOccurs="1"
    minOccurs="0"
    xmlTag="AcctOwnr"
    complexType="_Z0x6o_fVEeiNZp_PtLohLw" />
  <messageBuildingBlock
    xmi:id="_gJwLXDi8Eeydid5dcNPKvg"
    name="SafekeepingAccount"
    definition="Account to or from which a securities entry is made."
    registrationStatus="Provisionally Registered"
    maxOccurs="1"
    minOccurs="0"
    xmlTag="SfkpgAcct"
    complexType="_sanQjffZEeiNZp_PtLohLw" />
  <messageBuildingBlock
    xmi:id="_gJwLXji8Eeydid5dcNPKvg"
    name="BlockChainAddressOrWallet"
    definition="Blockchain address or wallet where digital assets are maintained. This is the equivalent of safekeeping account for digital assets."
    registrationStatus="Provisionally Registered"
    maxOccurs="1"
    minOccurs="0"
    xmlTag="BlckChainAdrOrWllt"
    complexType="_SRLpsUY1EeyIDL5Gtobnyw" />
  <messageBuildingBlock
    xmi:id="_gJwLYDi8Eeydid5dcNPKvg"
    name="IntermediaryInformation"
    definition="Information about the party that provides services relating to financial products to investors, for example, advice on products and placement of orders for the investment fund."
    registrationStatus="Provisionally Registered"
    maxOccurs="10"
    minOccurs="0"
    xmlTag="IntrmyInf"
    complexType="_Z0x7H_fVEeiNZp_PtLohLw" />
  <messageBuildingBlock
    xmi:id="_gJwLYji8Eeydid5dcNPKvg"
    name="FinancialInstrumentDetails"
    definition="Reporting per financial instrument."
    registrationStatus="Provisionally Registered"
    minOccurs="0"
    xmlTag="FinInstrmDtls"
    complexType="_gJwytzi8Eeydid5dcNPKvg" />
  <messageBuildingBlock
    xmi:id="_gJwLZDi8Eeydid5dcNPKvg"
    name="SubAccountDetails"
    definition="Details at sub-account level."
    registrationStatus="Provisionally Registered"
    minOccurs="0"
    xmlTag="SubAcctDtls"
    complexType="_gJ3gRzi8Eeydid5dcNPKvg" />
  <messageDefinitionIdentifier
    businessArea="semt"
    messageFunctionality="017"
    flavour="002"
    version="12" />
</messageDefinition>

ISO Building Blocks

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