PortfolioTransferNotificationV07

sese.037.001.07

Scope The PortfolioTransferNotification is sent by an account servicer to another account servicer to exchange transfer settlement details information during a retail or institutional client portfolio transfer. The account servicer will typically be local agent or global custodian acting on behalf of an investment management institution, a broker/dealer or a retail client.

Usage The exchange of transfer settlement details is the provision, by the delivering account servicer to the receiving account servicer, of the settlement data (such as trade date, settlement date, delivering settlement chain, quantities) of the individual transfers that will take place during a full or partial portfolio transfer. This delivering account servicer message may also include, for validation, the receiving settlement chain as provided by the client. In case the receiving settlement chain is not available to the delivering account servicer, the receiving account servicer may in return provide to the delivering account servicer the receiving settlement chain using the same message.

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
%% PortfolioTransferNotificationV07 recursion level 0 with max 0
PortfolioTransferNotificationV07 *-- "1..1" Pagination1 : Pagination
PortfolioTransferNotificationV07 *-- "1..1" Statement62 : StatementGeneralDetails
PortfolioTransferNotificationV07 *-- "0..1" PartyIdentification144 : AccountOwner
PortfolioTransferNotificationV07 *-- "0..1" SecuritiesAccount19 : SafekeepingAccount
PortfolioTransferNotificationV07 *-- "0..1" BlockChainAddressWallet3 : BlockChainAddressOrWallet
PortfolioTransferNotificationV07 *-- "0..1" SecuritiesTradeDetails138 : TransferNotificationDetails
  

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 on the notification. Characteristics of the statement. For comparison, see the ISO20022 official specification

classDiagram
   direction tb
%% Statement62 recursion level 0 with max 1
class Statement62{
    CounterpartyPortfolioTransferNotificationReference IsoMax35Text
    StatementIdentification IsoMax35Text
    ActivityIndicator IsoYesNoIndicator
}
Statement62 *-- "0..1" INumber3Choice : ReportNumber
Statement62 *-- "1..1" IDateAndDateTime2Choice : StatementDateTime
Statement62 *-- "0..1" IUpdateType15Choice : UpdateType
%% INumber3Choice recursion level 1 with max 1
%% IDateAndDateTime2Choice recursion level 1 with max 1
%% IUpdateType15Choice recursion level 1 with max 1
  

Statement62 members

Member name Description Data Type / Multiplicity
CounterpartyPortfolioTransferNotificationReference Identification assigned by the portfolio transfer counterpart to unambiguously identify a portfolio transfer notification. IsoMax35Text - Optional 0..1
ReportNumber Sequential number of the report. INumber3Choice - Optional 0..1
StatementIdentification Reference common to all pages of a statement. IsoMax35Text - Optional 0..1
StatementDateTime Date and time of the statement. IDateAndDateTime2Choice - Required 1..1
UpdateType Indicates whether the statement is complete or contains changes only. IUpdateType15Choice - Optional 0..1
ActivityIndicator Indicates whether there is activity or information update reported in the statement. 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
%% PartyIdentification144 recursion level 0 with max 1
class PartyIdentification144{
    LEI IsoLEIIdentifier
}
PartyIdentification144 *-- "1..1" IPartyIdentification127Choice : Identification
%% IPartyIdentification127Choice recursion level 1 with max 1
  

PartyIdentification144 members

Member name Description Data Type / Multiplicity
Identification Unique identification of the party. IPartyIdentification127Choice - 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
%% SecuritiesAccount19 recursion level 0 with max 1
class SecuritiesAccount19{
    Identification IsoMax35Text
    Name IsoMax70Text
}
SecuritiesAccount19 *-- "0..1" GenericIdentification30 : Type
%% GenericIdentification30 recursion level 1 with max 1
class GenericIdentification30{
    Identification IsoExact4AlphaNumericText
    Issuer IsoMax35Text
    SchemeName IsoMax35Text
}
  

SecuritiesAccount19 members

Member name Description Data Type / Multiplicity
Identification Unambiguous identification for the account between the account owner and the account servicer. IsoMax35Text - Required 1..1
Type Specifies the type of securities account. GenericIdentification30 - Optional 0..1
Name Description of the account. IsoMax70Text - 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
%% BlockChainAddressWallet3 recursion level 0 with max 1
class BlockChainAddressWallet3{
    Identification IsoMax140Text
    Name IsoMax70Text
}
BlockChainAddressWallet3 *-- "0..1" GenericIdentification30 : Type
%% GenericIdentification30 recursion level 1 with max 1
class GenericIdentification30{
    Identification IsoExact4AlphaNumericText
    Issuer IsoMax35Text
    SchemeName IsoMax35Text
}
  

BlockChainAddressWallet3 members

Member name Description Data Type / Multiplicity
Identification Unambiguous identification for the account between the account owner and the account servicer. IsoMax140Text - Required 1..1
Type Specifies the type of securities account. GenericIdentification30 - Optional 0..1
Name Description of the account. IsoMax70Text - Optional 0..1

TransferNotificationDetails building block

Details of the transfer. Details of the securities trade. For comparison, see the ISO20022 official specification

classDiagram
   direction tb
%% SecuritiesTradeDetails138 recursion level 0 with max 1
class SecuritiesTradeDetails138{
    NotificationSenderTransactionIdentification IsoMax35Text
    NotificationReceiverTransactionIdentification IsoMax35Text
    CommonIdentification IsoMax35Text
    SecuritiesMovementType ReceiveDelivery1Code
    Payment DeliveryReceiptType2Code
    NumberOfDaysAccrued IsoMax3Number
}
SecuritiesTradeDetails138 *-- "0..1" IPortfolioTransferStatus2Choice : Status
SecuritiesTradeDetails138 *-- "0..1" ITradeDate8Choice : TradeDate
SecuritiesTradeDetails138 *-- "1..1" ISettlementDate17Choice : SettlementDate
SecuritiesTradeDetails138 *-- "1..1" SecurityIdentification19 : FinancialInstrumentIdentification
SecuritiesTradeDetails138 *-- "0..1" FinancialInstrumentAttributes111 : FinancialInstrumentAttributes
SecuritiesTradeDetails138 *-- "0..0" IReporting7Choice : Reporting
SecuritiesTradeDetails138 *-- "1..1" Quantity48 : QuantityDetails
SecuritiesTradeDetails138 *-- "0..1" SettlementDetails100 : SettlementParameters
SecuritiesTradeDetails138 *-- "0..1" SettlementParties99 : DeliveringSettlementParties
SecuritiesTradeDetails138 *-- "0..1" SettlementParties99 : ReceivingSettlementParties
SecuritiesTradeDetails138 *-- "0..1" AmountAndDirection52 : SettlementAmount
SecuritiesTradeDetails138 *-- "0..1" OtherAmounts29 : OtherAmounts
SecuritiesTradeDetails138 *-- "0..1" OtherParties39 : OtherBusinessParties
SecuritiesTradeDetails138 *-- "0..0" SupplementaryData1 : SupplementaryData
%% IPortfolioTransferStatus2Choice recursion level 1 with max 1
%% ITradeDate8Choice recursion level 1 with max 1
%% ISettlementDate17Choice recursion level 1 with max 1
%% SecurityIdentification19 recursion level 1 with max 1
class SecurityIdentification19{
    ISIN IsoISINOct2015Identifier
    Description IsoMax140Text
}
SecurityIdentification19 *-- "0..0" OtherIdentification1 : OtherIdentification
%% FinancialInstrumentAttributes111 recursion level 1 with max 1
class FinancialInstrumentAttributes111{
    DenominationCurrency ActiveOrHistoricCurrencyCode
    CouponDate IsoISODate
    ExpiryDate IsoISODate
    FloatingRateFixingDate IsoISODate
    MaturityDate IsoISODate
    IssueDate IsoISODate
    NextCallableDate IsoISODate
    PutableDate IsoISODate
    DatedDate IsoISODate
    FirstPaymentDate IsoISODate
    PreviousFactor IsoBaseOneRate
    CurrentFactor IsoBaseOneRate
    NextFactor IsoBaseOneRate
    InterestRate IsoPercentageRate
    YieldToMaturityRate IsoPercentageRate
    NextInterestRate IsoPercentageRate
    IndexRateBasis IsoPercentageRate
    VariableRateIndicator IsoYesNoIndicator
    CallableIndicator IsoYesNoIndicator
    PutableIndicator IsoYesNoIndicator
    FinancialInstrumentAttributeAdditionalDetails IsoMax350Text
}
FinancialInstrumentAttributes111 *-- "0..1" IMarketIdentification3Choice : PlaceOfListing
FinancialInstrumentAttributes111 *-- "0..1" IInterestComputationMethodFormat4Choice : DayCountBasis
FinancialInstrumentAttributes111 *-- "0..1" IFormOfSecurity6Choice : RegistrationForm
FinancialInstrumentAttributes111 *-- "0..1" IFrequency23Choice : PaymentFrequency
FinancialInstrumentAttributes111 *-- "0..1" ISecuritiesPaymentStatus5Choice : PaymentStatus
FinancialInstrumentAttributes111 *-- "0..1" IFrequency23Choice : VariableRateChangeFrequency
FinancialInstrumentAttributes111 *-- "0..1" IClassificationType32Choice : ClassificationType
FinancialInstrumentAttributes111 *-- "0..1" IOptionStyle8Choice : OptionStyle
FinancialInstrumentAttributes111 *-- "0..1" IOptionType6Choice : OptionType
FinancialInstrumentAttributes111 *-- "0..1" INumber22Choice : CouponAttachedNumber
FinancialInstrumentAttributes111 *-- "0..1" GenericIdentification37 : PoolNumber
FinancialInstrumentAttributes111 *-- "0..1" IPriceType4Choice : MarketOrIndicativePrice
FinancialInstrumentAttributes111 *-- "0..1" Price7 : ExercisePrice
FinancialInstrumentAttributes111 *-- "0..1" Price7 : SubscriptionPrice
FinancialInstrumentAttributes111 *-- "0..1" Price7 : ConversionPrice
FinancialInstrumentAttributes111 *-- "0..1" Price7 : StrikePrice
FinancialInstrumentAttributes111 *-- "0..1" IFinancialInstrumentQuantity33Choice : MinimumNominalQuantity
FinancialInstrumentAttributes111 *-- "0..1" IFinancialInstrumentQuantity33Choice : ContractSize
FinancialInstrumentAttributes111 *-- "0..0" SecurityIdentification19 : UnderlyingFinancialInstrumentIdentification
%% IReporting7Choice recursion level 1 with max 1
%% Quantity48 recursion level 1 with max 1
class Quantity48{
    DenominationChoice IsoMax210Text
}
Quantity48 *-- "1..1" IFinancialInstrumentQuantity33Choice : SettlementQuantity
Quantity48 *-- "0..0" SecuritiesCertificate4 : CertificateNumber
Quantity48 *-- "0..0" QuantityBreakdown62 : QuantityBreakdown
%% SettlementDetails100 recursion level 1 with max 1
SettlementDetails100 *-- "0..0" ISettlementTransactionCondition19Choice : SettlementTransactionCondition
SettlementDetails100 *-- "0..1" IRegistration9Choice : Registration
SettlementDetails100 *-- "0..1" IRestriction5Choice : LegalRestrictions
SettlementDetails100 *-- "0..1" ISecuritiesRTGS4Choice : SecuritiesRTGS
SettlementDetails100 *-- "0..1" ISettlementSystemMethod4Choice : SettlementSystemMethod
SettlementDetails100 *-- "0..1" ITaxCapacityParty4Choice : TaxCapacity
SettlementDetails100 *-- "0..1" GenericIdentification30 : StampDutyTaxBasis
%% SettlementParties99 recursion level 1 with max 1
SettlementParties99 *-- "0..1" PartyIdentification146 : Depository
SettlementParties99 *-- "0..1" PartyIdentificationAndAccount196 : Party1
SettlementParties99 *-- "0..1" PartyIdentificationAndAccount196 : Party2
SettlementParties99 *-- "0..1" PartyIdentificationAndAccount196 : Party3
SettlementParties99 *-- "0..1" PartyIdentificationAndAccount196 : Party4
SettlementParties99 *-- "0..1" PartyIdentificationAndAccount196 : Party5
%% SettlementParties99 recursion level 1 with max 1
SettlementParties99 *-- "0..1" PartyIdentification146 : Depository
SettlementParties99 *-- "0..1" PartyIdentificationAndAccount196 : Party1
SettlementParties99 *-- "0..1" PartyIdentificationAndAccount196 : Party2
SettlementParties99 *-- "0..1" PartyIdentificationAndAccount196 : Party3
SettlementParties99 *-- "0..1" PartyIdentificationAndAccount196 : Party4
SettlementParties99 *-- "0..1" PartyIdentificationAndAccount196 : Party5
%% AmountAndDirection52 recursion level 1 with max 1
class AmountAndDirection52{
    Amount IsoActiveCurrencyAndAmount
    CreditDebitIndicator CreditDebitCode
}
%% OtherAmounts29 recursion level 1 with max 1
OtherAmounts29 *-- "0..1" AmountAndDirection44 : AccruedInterestAmount
OtherAmounts29 *-- "0..1" AmountAndDirection44 : ChargesFees
OtherAmounts29 *-- "0..1" AmountAndDirection44 : CountryNationalFederalTax
OtherAmounts29 *-- "0..1" AmountAndDirection44 : PaymentLevyTax
OtherAmounts29 *-- "0..1" AmountAndDirection44 : LocalTax
OtherAmounts29 *-- "0..1" AmountAndDirection44 : Other
OtherAmounts29 *-- "0..1" AmountAndDirection44 : RegulatoryAmount
OtherAmounts29 *-- "0..1" AmountAndDirection44 : ShippingAmount
OtherAmounts29 *-- "0..1" AmountAndDirection44 : StampDuty
OtherAmounts29 *-- "0..1" AmountAndDirection44 : StockExchangeTax
OtherAmounts29 *-- "0..1" AmountAndDirection44 : TransferTax
OtherAmounts29 *-- "0..1" AmountAndDirection44 : TransactionTax
OtherAmounts29 *-- "0..1" AmountAndDirection44 : ValueAddedTax
OtherAmounts29 *-- "0..1" AmountAndDirection44 : WithholdingTax
OtherAmounts29 *-- "0..1" AmountAndDirection44 : ConsumptionTax
OtherAmounts29 *-- "0..1" AmountAndDirection44 : AccruedCapitalisationAmount
%% OtherParties39 recursion level 1 with max 1
OtherParties39 *-- "0..1" PartyIdentification149 : Investor
OtherParties39 *-- "0..1" PartyIdentification136 : StockExchange
OtherParties39 *-- "0..1" PartyIdentification136 : TradeRegulator
%% SupplementaryData1 recursion level 1 with max 1
class SupplementaryData1{
    PlaceAndName IsoMax350Text
}
SupplementaryData1 *-- "1..1" IsoSupplementaryDataEnvelope1 : Envelope
  

SecuritiesTradeDetails138 members

Member name Description Data Type / Multiplicity
NotificationSenderTransactionIdentification Unambiguous identification of the transaction as known by the notification receiver. IsoMax35Text - Optional 0..1
NotificationReceiverTransactionIdentification Unambiguous identification of the transaction as known by the notification receiver. IsoMax35Text - Optional 0..1
CommonIdentification Unique reference agreed upon by the two trade counterparties to identify the trade. IsoMax35Text - Optional 0..1
SecuritiesMovementType Specifies if the movement on a securities account results from a deliver or a receive instruction. ReceiveDelivery1Code - Required 1..1
Payment Specifies how the transaction is to be settled, for example, against payment. DeliveryReceiptType2Code - Required 1..1
Status Status of the transfer. IPortfolioTransferStatus2Choice - Optional 0..1
TradeDate Specifies the date/time on which the trade was executed. ITradeDate8Choice - Optional 0..1
SettlementDate Date and time at which the securities are to be delivered or received. ISettlementDate17Choice - Required 1..1
NumberOfDaysAccrued Number of days on which the interest rate accrues (daily accrual note). IsoMax3Number - Optional 0..1
FinancialInstrumentIdentification Financial instruments representing a sum of rights of the investor vis-a-vis the issuer. SecurityIdentification19 - Required 1..1
FinancialInstrumentAttributes Elements characterising a financial instrument. FinancialInstrumentAttributes111 - Optional 0..1
Reporting Specifies that a trade is to be reported to a third party. IReporting7Choice - Unknown 0..0
QuantityDetails Details about the financial instrument quantity involved in the transfer. Quantity48 - Required 1..1
SettlementParameters Parameters applied to the settlement of a security transfer. SettlementDetails100 - Optional 0..1
DeliveringSettlementParties Identifies the chain of delivering settlement parties. SettlementParties99 - Optional 0..1
ReceivingSettlementParties Identifies the chain of receiving settlement parties. SettlementParties99 - Optional 0..1
SettlementAmount Total amount of money to be paid or received in exchange for the securities. AmountAndDirection52 - Optional 0..1
OtherAmounts Other amounts than the settlement amount. OtherAmounts29 - Optional 0..1
OtherBusinessParties Other business parties relevant to the transaction. OtherParties39 - Optional 0..1
SupplementaryData Additional information that cannot be captured in the structured elements and/or any other specific block. SupplementaryData1 - Unknown 0..0

Extensibility and generalization considerations

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

classDiagram
    class IOuterRecord
    PortfolioTransferNotificationV07 --|> IOuterRecord : Implements
    PortfolioTransferNotificationV07Document --|> IOuterDocument~PortfolioTransferNotificationV07~ : Implements
    class IOuterDocument~PortfolioTransferNotificationV07~ {
        PortfolioTransferNotificationV07 Message
     }
  

Document wrapper for serialization

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

classDiagram
    PortfolioTransferNotificationV07Document *-- PortfolioTransferNotificationV07 : 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:sese.037.001.07">
    <PrtflTrfNtfctn>
        <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>
        <TrfNtfctnDtls>
            <!-- TransferNotificationDetails inner content -->
        </TrfNtfctnDtls>
    </PrtflTrfNtfctn>
</Document>

Data from ISO specification

This is the technical data from the specification document.

<messageDefinition
  xmi:id="__l8LESpzEeyR9JrVGfaMKw"
  previousVersion="_Pw4F8ekGEemm4qhb2yFPOw"
  name="PortfolioTransferNotificationV07"
  definition="Scope&#xD;&#xA;The  PortfolioTransferNotification is sent by an account servicer to another account servicer to exchange transfer settlement details information during a retail or institutional client portfolio transfer.&#xD;&#xA;The account servicer will typically be local agent or global custodian acting on behalf of an investment management institution, a broker/dealer or a retail client.&#xD;&#xA;&#xD;&#xA;Usage&#xD;&#xA;The exchange of transfer settlement details is the provision, by the delivering account servicer to the receiving account servicer, of the settlement data (such as trade date, settlement date, delivering settlement chain, quantities) of the individual transfers that will take place during a full or partial portfolio transfer. This delivering account servicer message may also include, for validation, the receiving settlement chain as provided by the client. In case the receiving settlement chain is not available to the delivering account servicer, the receiving account servicer may in return provide to the delivering account servicer the receiving settlement chain using the same message.&#xD;&#xA;&#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&#xD;&#xA;using the relevant elements in the Business Application Header."
  registrationStatus="Registered"
  messageSet="_xiys0WfyEeOLcMuJoUvTAg"
  xmlTag="PrtflTrfNtfctn"
  rootElement="Document"
  xmlns:xmi="http://www.omg.org/XMI">
  <constraint
    xmi:id="__l8LEypzEeyR9JrVGfaMKw"
    previousVersion="_Pw4F8-kGEemm4qhb2yFPOw"
    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="_NdgOdCqNEeyR9JrVGfaMKw"
    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="_NdgOdSqNEeyR9JrVGfaMKw"
    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="_tYrGETDZEeyVV_4ady97MA"
    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="__l8LGypzEeyR9JrVGfaMKw"
    previousVersion="_Pw4F--kGEemm4qhb2yFPOw"
    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="__l8LHSpzEeyR9JrVGfaMKw"
    previousVersion="_Pw4F_ekGEemm4qhb2yFPOw"
    name="StatementGeneralDetails"
    definition="Provides general information on the notification."
    registrationStatus="Provisionally Registered"
    maxOccurs="1"
    minOccurs="1"
    xmlTag="StmtGnlDtls"
    complexType="_nocSUbPuEeelzbgsFa3sqQ" />
  <messageBuildingBlock
    xmi:id="__l8LHypzEeyR9JrVGfaMKw"
    previousVersion="_Pw4F_-kGEemm4qhb2yFPOw"
    name="AccountOwner"
    definition="Party that legally owns the account."
    registrationStatus="Provisionally Registered"
    maxOccurs="1"
    minOccurs="0"
    xmlTag="AcctOwnr"
    complexType="_XnxoYdLCEeiN28wlpBQScw" />
  <messageBuildingBlock
    xmi:id="__l8LISpzEeyR9JrVGfaMKw"
    previousVersion="_Pw4GAekGEemm4qhb2yFPOw"
    name="SafekeepingAccount"
    definition="Account to or from which a securities entry is made."
    registrationStatus="Provisionally Registered"
    maxOccurs="1"
    minOccurs="0"
    xmlTag="SfkpgAcct"
    complexType="_T_JUKtp-Ed-ak6NoX_4Aeg_1976638301" />
  <messageBuildingBlock
    xmi:id="_NdgOcyqNEeyR9JrVGfaMKw"
    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="_l7F8gSp-EeyR9JrVGfaMKw" />
  <messageBuildingBlock
    xmi:id="__l8LIypzEeyR9JrVGfaMKw"
    previousVersion="_Pw4GA-kGEemm4qhb2yFPOw"
    name="TransferNotificationDetails"
    definition="Details of the transfer."
    registrationStatus="Provisionally Registered"
    minOccurs="0"
    xmlTag="TrfNtfctnDtls"
    complexType="_0mz9kSp5EeyR9JrVGfaMKw" />
  <messageDefinitionIdentifier
    businessArea="sese"
    messageFunctionality="037"
    flavour="001"
    version="07" />
</messageDefinition>

ISO Building Blocks

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