seev.019.001.01
Scope This message is sent by an issuer (or its agent) to a CSD to order:
- the global or individual debit of exercised resources (cash and/or securities), per event and optionally per option and per resource for all or individual CSD client’s accounts;
- and/or the individual credits of the outturn resources per event and optionally per option and per resource for a given CSD client’s account. Usage This message is used to instruct:
- the global debit of the exercised resources from the CSD client’s available or sequestered balance, in which case, the order type must be ‘global debit order’;
- the individual debits and credits:
- the individual debit of the exercised resources from the CSD client’s available or sequestered balance and/or
- the individual credit of the outturn resources to the CSD client’s account. The order type must be ‘individual order’;
- a return order, in the case of a scaleback, i.e. the return of the exercised resources to the CSD client’s account. The order type must be either ‘global return order’ or ‘individual return order’; and change of option, e.g. in the case of the closure of an option, by moving the exercised resources from one option to another option within the sequestered balances in accordance to the new option conditions. The order type must be ‘option change order’.
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 %% AgentCAMovementInstructionV01 recursion level 0 with max 0 AgentCAMovementInstructionV01 *-- "1..1" DocumentIdentification8 : Identification AgentCAMovementInstructionV01 *-- "0..1" DocumentIdentification8 : AgentCAElectionAdviceIdentification AgentCAMovementInstructionV01 *-- "1..1" CorporateActionInformation1 : CorporateActionGeneralInformation AgentCAMovementInstructionV01 *-- "1..1" CorporateActionMovement1 : MovementGeneralInformation AgentCAMovementInstructionV01 *-- "0..1" UnderlyingSecurityMovement1 : UnderlyingSecuritiesMovementDetails AgentCAMovementInstructionV01 *-- "0..1" CashMovement2 : UnderlyingCashMovementDetails AgentCAMovementInstructionV01 *-- "0..1" ProceedsMovement1 : ProceedsMovementDetails
Now, we will zero-in one-by-one on each of these building blocks.
Identification building block
Identification assigned by the Sender to unambiguously identify the instruction. Identifies the document by providing a unique identification and optionally the date/time of the creation of the document. For comparison, see the ISO20022 official specification
classDiagram direction tb %% DocumentIdentification8 recursion level 0 with max 1 class DocumentIdentification8{ Identification IsoMax35Text CreationDateTime IsoISODateTime }
DocumentIdentification8 members
Member name | Description | Data Type / Multiplicity |
---|---|---|
Identification | Unique identification of the document. | IsoMax35Text - Required 1..1 |
CreationDateTime | Date/time of the creation of the document. | IsoISODateTime - Optional 0..1 |
AgentCAElectionAdviceIdentification building block
Identification of the Agent CA ElectionAdvice when the movements are the result of an ElectionAdvice. Identifies the document by providing a unique identification and optionally the date/time of the creation of the document. For comparison, see the ISO20022 official specification
classDiagram direction tb %% DocumentIdentification8 recursion level 0 with max 1 class DocumentIdentification8{ Identification IsoMax35Text CreationDateTime IsoISODateTime }
DocumentIdentification8 members
Member name | Description | Data Type / Multiplicity |
---|---|---|
Identification | Unique identification of the document. | IsoMax35Text - Required 1..1 |
CreationDateTime | Date/time of the creation of the document. | IsoISODateTime - Optional 0..1 |
CorporateActionGeneralInformation building block
General information about the corporate action event. General information about the corporate action event. For comparison, see the ISO20022 official specification
classDiagram direction tb %% CorporateActionInformation1 recursion level 0 with max 1 class CorporateActionInformation1{ IssuerCorporateActionIdentification IsoMax35Text CorporateActionProcessingIdentification IsoMax35Text } CorporateActionInformation1 *-- "1..1" IPartyIdentification2Choice : AgentIdentification CorporateActionInformation1 *-- "1..1" ICorporateActionEventType2FormatChoice : EventType CorporateActionInformation1 *-- "1..1" ICorporateActionMandatoryVoluntary1FormatChoice : MandatoryVoluntaryEventType CorporateActionInformation1 *-- "0..1" ICorporateActionEventProcessingType1FormatChoice : EventProcessingType CorporateActionInformation1 *-- "1..1" FinancialInstrumentDescription3 : UnderlyingSecurity %% IPartyIdentification2Choice recursion level 1 with max 1 %% ICorporateActionEventType2FormatChoice recursion level 1 with max 1 %% ICorporateActionMandatoryVoluntary1FormatChoice recursion level 1 with max 1 %% ICorporateActionEventProcessingType1FormatChoice recursion level 1 with max 1 %% FinancialInstrumentDescription3 recursion level 1 with max 1 class FinancialInstrumentDescription3{ PlaceOfListing IsoMICIdentifier } FinancialInstrumentDescription3 *-- "1..1" SecurityIdentification7 : SecurityIdentification FinancialInstrumentDescription3 *-- "0..1" IPartyIdentification2Choice : SafekeepingPlace
CorporateActionInformation1 members
Member name | Description | Data Type / Multiplicity |
---|---|---|
AgentIdentification | Identification of the issuer agent. | IPartyIdentification2Choice - Required 1..1 |
IssuerCorporateActionIdentification | Reference given to the event by the CA event issuer (agent). | IsoMax35Text - Optional 0..1 |
CorporateActionProcessingIdentification | Reference assigned by the account servicer to unambiguously identify a corporate action event. | IsoMax35Text - Optional 0..1 |
EventType | Type of corporate action event. | ICorporateActionEventType2FormatChoice - Required 1..1 |
MandatoryVoluntaryEventType | Specifies whether the event is mandatory, mandatory with options or voluntary. | ICorporateActionMandatoryVoluntary1FormatChoice - Required 1..1 |
EventProcessingType | Type of processing involved by a Corporate Action. | ICorporateActionEventProcessingType1FormatChoice - Optional 0..1 |
UnderlyingSecurity | Identification of the underlying financial instrument, ie, the financial instrument affected by the corporate action event. | FinancialInstrumentDescription3 - Required 1..1 |
MovementGeneralInformation building block
Provides general information about the movement. Provides information about the movement instruction. For comparison, see the ISO20022 official specification
classDiagram direction tb %% CorporateActionMovement1 recursion level 0 with max 1 class CorporateActionMovement1{ OrderType DistributionInstructionType1Code HighPriorityIndicator IsoYesNoIndicator OptionNumber IsoExact3NumericText RequestedExecutionDate IsoISODate AccountIdentification IsoMax35Text } CorporateActionMovement1 *-- "0..1" ICorporateActionOption1FormatChoice : OptionType CorporateActionMovement1 *-- "0..1" IPartyIdentification2Choice : AccountOwnerIdentification CorporateActionMovement1 *-- "0..1" IUnitOrFaceAmount1Choice : ConfirmedBalanceSecuritiesQuantity %% ICorporateActionOption1FormatChoice recursion level 1 with max 1 %% IPartyIdentification2Choice recursion level 1 with max 1 %% IUnitOrFaceAmount1Choice recursion level 1 with max 1
CorporateActionMovement1 members
Member name | Description | Data Type / Multiplicity |
---|---|---|
OrderType | Type of movement instruction. | DistributionInstructionType1Code - Required 1..1 |
HighPriorityIndicator | Indicates whether the movement is a high priority or not. | Meaning when true: High priority |
OptionNumber | Number identifying the available corporate action options. | IsoExact3NumericText - Optional 0..1 |
OptionType | Specifies the corporate action options available to the account owner. | ICorporateActionOption1FormatChoice - Optional 0..1 |
RequestedExecutionDate | Date at which the distribution movement must be executed. | IsoISODate - Required 1..1 |
AccountOwnerIdentification | Identification of the party that owns the account. | IPartyIdentification2Choice - Optional 0..1 |
AccountIdentification | Identification of the account. | IsoMax35Text - Optional 0..1 |
ConfirmedBalanceSecuritiesQuantity | Quantity of securities in the confirmed balance, ie, the balance to which the credit of the outturned resources applies. | IUnitOrFaceAmount1Choice - Optional 0..1 |
UnderlyingSecuritiesMovementDetails building block
Information related to the movement of the underlying securities. Provides information about the underlying securities movement. For comparison, see the ISO20022 official specification
classDiagram direction tb %% UnderlyingSecurityMovement1 recursion level 0 with max 1 UnderlyingSecurityMovement1 *-- "1..1" SecurityIdentification7 : SecurityIdentification UnderlyingSecurityMovement1 *-- "1..1" IUnitOrFaceAmount1Choice : SecuritiesQuantity UnderlyingSecurityMovement1 *-- "1..2" SecuritiesAccount8 : AccountDetails %% SecurityIdentification7 recursion level 1 with max 1 class SecurityIdentification7{ ISIN IsoISINIdentifier Description IsoMax140Text } SecurityIdentification7 *-- "1..1" AlternateSecurityIdentification3 : OtherIdentification %% IUnitOrFaceAmount1Choice recursion level 1 with max 1 %% SecuritiesAccount8 recursion level 1 with max 1 class SecuritiesAccount8{ CreditDebitIndicator CreditDebitCode AccountIdentification IsoMax35Text OptionNumber IsoExact3NumericText SecurityHoldingForm FormOfSecurity1Code } SecuritiesAccount8 *-- "0..1" IPartyIdentification2Choice : AccountOwnerIdentification SecuritiesAccount8 *-- "0..1" ISecuritiesBalanceType10FormatChoice : BalanceType SecuritiesAccount8 *-- "0..1" ICorporateActionOption1FormatChoice : OptionType SecuritiesAccount8 *-- "0..1" IStampDutyType1FormatChoice : StampDuty
UnderlyingSecurityMovement1 members
Member name | Description | Data Type / Multiplicity |
---|---|---|
SecurityIdentification | Identification of the financial instrument. | SecurityIdentification7 - Required 1..1 |
SecuritiesQuantity | Quantity of financial instrument. | IUnitOrFaceAmount1Choice - Required 1..1 |
AccountDetails | Provides information about the debited/credited securities account. | SecuritiesAccount8 - Collection 1..2 |
UnderlyingCashMovementDetails building block
Information related to the movement of the underlying cash. Provides information about the cash movement. For comparison, see the ISO20022 official specification
classDiagram direction tb %% CashMovement2 recursion level 0 with max 1 class CashMovement2{ Amount IsoActiveCurrencyAndAmount } CashMovement2 *-- "1..2" CashAccount19 : AccountDetails %% CashAccount19 recursion level 1 with max 1 class CashAccount19{ CreditDebitIndicator CreditDebitCode } CashAccount19 *-- "0..1" IPartyIdentification2Choice : AccountOwnerIdentification CashAccount19 *-- "1..1" IAccountIdentification2Choice : AccountIdentification
CashMovement2 members
Member name | Description | Data Type / Multiplicity |
---|---|---|
Amount | Cash amount. | IsoActiveCurrencyAndAmount - Required 1..1 |
AccountDetails | Provides information about the account which is debited/credited. | CashAccount19 - Collection 1..2 |
ProceedsMovementDetails building block
Information related to the movement of the CA proceeds. Details of the proceeds movements. For comparison, see the ISO20022 official specification
classDiagram direction tb %% ProceedsMovement1 recursion level 0 with max 1 ProceedsMovement1 *-- "0..0" CashProceeds1 : CashProceedsMovementDetails ProceedsMovement1 *-- "0..0" SecuritiesProceeds1 : SecuritiesProceedsMovementDetails ProceedsMovement1 *-- "0..1" TaxVoucher1 : TaxDetails %% CashProceeds1 recursion level 1 with max 1 class CashProceeds1{ PostingAmount IsoActiveCurrencyAndAmount ReconciliationDetails IsoMax350Text } CashProceeds1 *-- "1..2" CashAccount19 : AccountDetails %% SecuritiesProceeds1 recursion level 1 with max 1 class SecuritiesProceeds1{ ReconciliationDetails IsoMax350Text } SecuritiesProceeds1 *-- "1..1" SecurityIdentification7 : SecurityIdentification SecuritiesProceeds1 *-- "1..1" IUnitOrFaceAmount1Choice : PostingQuantity SecuritiesProceeds1 *-- "1..2" SecuritiesAccount10 : AccountDetails %% TaxVoucher1 recursion level 1 with max 1 class TaxVoucher1{ TaxVoucherRate IsoBaseOneRate TaxCredit IsoActiveCurrencyAndAmount TaxDeduction IsoActiveCurrencyAndAmount GrossAmount IsoActiveCurrencyAndAmount NetAmount IsoActiveCurrencyAndAmount TaxCreditRate IsoPercentageRate WithholdingTaxAmount IsoActiveCurrencyAndAmount WithholdingTaxRate IsoPercentageRate CashAmountBroughtForward IsoActiveCurrencyAndAmount CashAmountCarriedForward IsoActiveCurrencyAndAmount NotionalTax IsoActiveCurrencyAndAmount NotionalDividendPayable IsoActiveCurrencyAndAmount BargainDate IsoISODate BargainSettlementDate IsoISODate StampDutyAmount IsoActiveCurrencyAndAmount ChargeAmount IsoActiveCurrencyAndAmount CommissionAmount IsoActiveCurrencyAndAmount } TaxVoucher1 *-- "1..1" IUnitOrFaceAmount1Choice : RecordDateHolding TaxVoucher1 *-- "0..1" PriceValue1 : ScripDividendReinvestmentPricePerShare TaxVoucher1 *-- "0..1" PriceValue1 : AllotedSharesCost TaxVoucher1 *-- "0..1" ForeignExchangeTerms9 : ForeignExchangeDetails
ProceedsMovement1 members
Member name | Description | Data Type / Multiplicity |
---|---|---|
CashProceedsMovementDetails | Provides information about the movement of the cash proceeds. | CashProceeds1 - Unknown 0..0 |
SecuritiesProceedsMovementDetails | Provides information about the movement of the securities proceeds. | SecuritiesProceeds1 - Unknown 0..0 |
TaxDetails | Provides information about the tax voucher. | TaxVoucher1 - Optional 0..1 |
Extensibility and generalization considerations
To facilitate generalized design patterns in the system, the AgentCAMovementInstructionV01 implementation follows a specific implementaiton pattern. First of all, AgentCAMovementInstructionV01 impleemnts IOuterRecord indicating it is the outermost logical part of the message definition. Like all message wrappers, AgentCAMovementInstructionV01Document implements IOuterDocument. Because AgentCAMovementInstructionV01 implements IOuterDocument, it is a suitable template parameter for IOuterDocument, and causes the internal ‘Message’ to be of type AgentCAMovementInstructionV01.
classDiagram class IOuterRecord AgentCAMovementInstructionV01 --|> IOuterRecord : Implements AgentCAMovementInstructionV01Document --|> IOuterDocument~AgentCAMovementInstructionV01~ : Implements class IOuterDocument~AgentCAMovementInstructionV01~ { AgentCAMovementInstructionV01 Message }
Document wrapper for serialization
The only real purpose AgentCAMovementInstructionV01Document serves is to cause the document to be serialized into the ‘urn:iso:std:iso:20022:tech:xsd:seev.019.001.01’ namespace. Therefore, it will probably be the usual practice to build the message and construct this wrapper at the last minute using AgentCAMovementInstructionV01.ToDocument() method. The returned AgentCAMovementInstructionV01Document value will serialize correctly according to ISO 20022 standards.
classDiagram AgentCAMovementInstructionV01Document *-- AgentCAMovementInstructionV01 : 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:seev.019.001.01">
<AgtCAMvmntInstr>
<Id>
<!-- Identification inner content -->
</Id>
<AgtCAElctnAdvcId>
<!-- AgentCAElectionAdviceIdentification inner content -->
</AgtCAElctnAdvcId>
<CorpActnGnlInf>
<!-- CorporateActionGeneralInformation inner content -->
</CorpActnGnlInf>
<MvmntGnlInf>
<!-- MovementGeneralInformation inner content -->
</MvmntGnlInf>
<UndrlygSctiesMvmntDtls>
<!-- UnderlyingSecuritiesMovementDetails inner content -->
</UndrlygSctiesMvmntDtls>
<UndrlygCshMvmntDtls>
<!-- UnderlyingCashMovementDetails inner content -->
</UndrlygCshMvmntDtls>
<PrcdsMvmntDtls>
<!-- ProceedsMovementDetails inner content -->
</PrcdsMvmntDtls>
</AgtCAMvmntInstr>
</Document>
Data from ISO specification
This is the technical data from the specification document.
<messageDefinition
xmi:id="_TQbwbNEwEd-BzquC8wXy7w_89976784"
name="AgentCAMovementInstructionV01"
definition="Scope
This message is sent by an issuer (or its agent) to a CSD to order:
- the global or individual debit of exercised resources (cash and/or securities), per event and optionally per option and per resource for all or individual CSD client's accounts;
- and/or the individual credits of the outturn resources per event and optionally per option and per resource for a given CSD client's account.
Usage
This message is used to instruct:
- the global debit of the exercised resources from the CSD client's available or sequestered balance, in which case, the order type must be 'global debit order';
- the individual debits and credits:
- the individual debit of the exercised resources from the CSD client's available or sequestered balance and/or
- the individual credit of the outturn resources to the CSD client's account.
The order type must be 'individual order';
- a return order, in the case of a scaleback, i.e. the return of the exercised resources to the CSD client's account. The order type must be either 'global return order' or 'individual return order'; and
change of option, e.g. in the case of the closure of an option, by moving the exercised resources from one option to another option within the sequestered balances in accordance to the new option conditions. The order type must be 'option change order'."
registrationStatus="Registered"
messageSet="_wRe70k2rEeG_I4xRYCA_7g"
xmlTag="AgtCAMvmntInstr"
rootElement="Document"
xmlns:xmi="http://www.omg.org/XMI">
<constraint
xmi:id="_TQlhZdEwEd-BzquC8wXy7w_2051849581"
name="OptionRule1"
definition="IF MovementGeneralInformation/OrderType is CHAN (OptionChangeOrder) then OptionNumber and OptionType must be present in each occurrence of UnderlyingSecuritiesMovementDetails/CreditAccountDetails and UnderlyingSecuritiesMovement/DebitAccountDetails and OptionNumber and OptionType cannot be present in MovementGeneralInformation."
registrationStatus="Provisionally Registered" />
<constraint
xmi:id="_TQlhaNEwEd-BzquC8wXy7w_-254774137"
name="OptionRule2"
definition="IF MovementGeneralInformation/OrderType is not CHAN (OptionChangeOrder), then OptionNumber and OptionType must be present in MovementGeneralInformation and cannot be present in any occurrence of UnderlyingSecuritiesMovementDetails/CreditAccountDetails neither in UnderlyingSecuritiesMovement/DebitAccountDetails."
registrationStatus="Provisionally Registered" />
<messageBuildingBlock
xmi:id="_TQbwbdEwEd-BzquC8wXy7w_-1830305628"
name="Identification"
definition="Identification assigned by the Sender to unambiguously identify the instruction."
registrationStatus="Provisionally Registered"
maxOccurs="1"
minOccurs="1"
xmlTag="Id"
complexType="_RXNBiNp-Ed-ak6NoX_4Aeg_-320016249" />
<messageBuildingBlock
xmi:id="_TQbwbtEwEd-BzquC8wXy7w_1167684393"
name="AgentCAElectionAdviceIdentification"
definition="Identification of the Agent CA ElectionAdvice when the movements are the result of an ElectionAdvice."
registrationStatus="Provisionally Registered"
maxOccurs="1"
minOccurs="0"
xmlTag="AgtCAElctnAdvcId"
complexType="_RXNBiNp-Ed-ak6NoX_4Aeg_-320016249" />
<messageBuildingBlock
xmi:id="_TQlhYNEwEd-BzquC8wXy7w_-1064437187"
name="CorporateActionGeneralInformation"
definition="General information about the corporate action event."
registrationStatus="Provisionally Registered"
maxOccurs="1"
minOccurs="1"
xmlTag="CorpActnGnlInf"
complexType="_TdxFY9p-Ed-ak6NoX_4Aeg_1155832018" />
<messageBuildingBlock
xmi:id="_TQlhYdEwEd-BzquC8wXy7w_1865905670"
name="MovementGeneralInformation"
definition="Provides general information about the movement."
registrationStatus="Provisionally Registered"
maxOccurs="1"
minOccurs="1"
xmlTag="MvmntGnlInf"
complexType="_UIh5p9p-Ed-ak6NoX_4Aeg_378115287" />
<messageBuildingBlock
xmi:id="_TQlhYtEwEd-BzquC8wXy7w_-380692038"
name="UnderlyingSecuritiesMovementDetails"
definition="Information related to the movement of the underlying securities."
registrationStatus="Provisionally Registered"
minOccurs="0"
xmlTag="UndrlygSctiesMvmntDtls"
complexType="_UIO-sNp-Ed-ak6NoX_4Aeg_-697458395" />
<messageBuildingBlock
xmi:id="_TQlhY9EwEd-BzquC8wXy7w_940386448"
name="UnderlyingCashMovementDetails"
definition="Information related to the movement of the underlying cash."
registrationStatus="Provisionally Registered"
minOccurs="0"
xmlTag="UndrlygCshMvmntDtls"
complexType="_UJIWkNp-Ed-ak6NoX_4Aeg_908062376" />
<messageBuildingBlock
xmi:id="_TQlhZNEwEd-BzquC8wXy7w_1511604786"
name="ProceedsMovementDetails"
definition="Information related to the movement of the CA proceeds."
registrationStatus="Provisionally Registered"
maxOccurs="1"
minOccurs="0"
xmlTag="PrcdsMvmntDtls"
complexType="_Ri1Csdp-Ed-ak6NoX_4Aeg_1504216884" />
<messageDefinitionIdentifier
businessArea="seev"
messageFunctionality="019"
flavour="001"
version="01" />
</messageDefinition>
ISO Building Blocks
The following items are used as building blocks to construct this message.