seev.050.001.01
Scope and Usage The MarketClaimCreation message is sent by an account servicer to an account holder to advise of the creation of a market claim transaction on a securities account, for example by a CSD that has automatically generated market claims on a mandatory distribution type of corporate action event. The MarketClaimCreation message may also be sent by an account holder to its account holder, to instruct settlement of a bilaterally agreed (as opposed to centrally generated) market claim for a corporate action event. This message definition is intended for use with the Business Application Header (BAH).
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
%% MarketClaimCreationV01 recursion level 0 with max 0
class MarketClaimCreationV01{
MarketClaimType MarketClaimType1Code
}
MarketClaimCreationV01 *-- "1..1" References25 : TransactionReference
MarketClaimCreationV01 *-- "1..1" CorporateActionGeneralInformation157 : CorporateActionGeneralInformation
MarketClaimCreationV01 *-- "1..1" RelatedSettlementInstruction1 : RelatedSettlementInstructionDetails
MarketClaimCreationV01 *-- "1..1" AccountIdentification46 : AccountDetails
MarketClaimCreationV01 *-- "0..1" CorporateAction59 : CorporateActionDetails
MarketClaimCreationV01 *-- "1..1" CorporateActionOption185 : MarketClaimDetails
MarketClaimCreationV01 *-- "0..1" SettlementParties75 : DeliveringSettlementParties
MarketClaimCreationV01 *-- "0..1" SettlementParties75 : ReceivingSettlementParties
MarketClaimCreationV01 *-- "0..1" SupplementaryData1 : SupplementaryData
Now, we will zero-in one-by-one on each of these building blocks.
TransactionReference building block
References of the transaction for which the securities settlement condition modification is requested. Provides a set of identifications to reference to a securities settlement transaction. For comparison, see the ISO20022 official specification
classDiagram
direction tb
%% References25 recursion level 0 with max 1
class References25{
AccountServicerTransactionIdentification IsoMax35Text
MarketInfrastructureTransactionIdentification IsoMax35Text
ProcessorTransactionIdentification IsoMax35Text
}
References25 members
| Member name | Description | Data Type / Multiplicity |
|---|---|---|
| AccountServicerTransactionIdentification | Unambiguous identification of the transaction as known by the account servicer. | IsoMax35Text - Required 1..1 |
| MarketInfrastructureTransactionIdentification | Identification of a transaction assigned by a market infrastructure other than a central securities depository, for example, Target2-Securities. | IsoMax35Text - Optional 0..1 |
| ProcessorTransactionIdentification | Identification of the transaction assigned by the processor of the transaction other than the account holder, the account servicer and the non-CSD market infrastructure. | IsoMax35Text - 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
%% CorporateActionGeneralInformation157 recursion level 0 with max 1
class CorporateActionGeneralInformation157{
CorporateActionEventIdentification IsoMax35Text
OfficialCorporateActionEventIdentification IsoMax35Text
}
CorporateActionGeneralInformation157 *-- "1..1" ICorporateActionEventType85Choice : EventType
CorporateActionGeneralInformation157 *-- "0..1" SecurityIdentification19 : FinancialInstrumentIdentification
%% ICorporateActionEventType85Choice recursion level 1 with max 1
%% SecurityIdentification19 recursion level 1 with max 1
class SecurityIdentification19{
ISIN IsoISINOct2015Identifier
Description IsoMax140Text
}
SecurityIdentification19 *-- "0..0" OtherIdentification1 : OtherIdentification
CorporateActionGeneralInformation157 members
| Member name | Description | Data Type / Multiplicity |
|---|---|---|
| CorporateActionEventIdentification | Reference assigned by the account servicer to unambiguously identify a corporate action event. | IsoMax35Text - Required 1..1 |
| OfficialCorporateActionEventIdentification | Official and unique reference assigned by the official central body/entity within each market at the beginning of a corporate action event. | IsoMax35Text - Optional 0..1 |
| EventType | Type of corporate action event. | ICorporateActionEventType85Choice - Required 1..1 |
| FinancialInstrumentIdentification | Identification of a financial instrument. | SecurityIdentification19 - Optional 0..1 |
RelatedSettlementInstructionDetails building block
Information about the related settlement instruction for which the market claim has been created. Information about a related settlement instruction. For comparison, see the ISO20022 official specification
classDiagram
direction tb
%% RelatedSettlementInstruction1 recursion level 0 with max 1
class RelatedSettlementInstruction1{
RelatedSettlementInstructionIdentification IsoMax35Text
}
RelatedSettlementInstruction1 *-- "0..1" IFinancialInstrumentQuantity18Choice : RelatedSettlementQuantity
%% IFinancialInstrumentQuantity18Choice recursion level 1 with max 1
RelatedSettlementInstruction1 members
| Member name | Description | Data Type / Multiplicity |
|---|---|---|
| RelatedSettlementInstructionIdentification | Unambiguous identification of the related settlement instruction assigned by the account holder. | IsoMax35Text - Required 1..1 |
| RelatedSettlementQuantity | Quantity of securities for which the market claim has been raised. | IFinancialInstrumentQuantity18Choice - Optional 0..1 |
AccountDetails building block
General information about the safekeeping account, owner and account balance. Provides account identification information. For comparison, see the ISO20022 official specification
classDiagram
direction tb
%% AccountIdentification46 recursion level 0 with max 1
class AccountIdentification46{
SafekeepingAccount IsoMax35Text
}
AccountIdentification46 *-- "0..1" IPartyIdentification127Choice : AccountOwner
AccountIdentification46 *-- "0..1" ISafekeepingPlaceFormat28Choice : SafekeepingPlace
%% IPartyIdentification127Choice recursion level 1 with max 1
%% ISafekeepingPlaceFormat28Choice recursion level 1 with max 1
AccountIdentification46 members
| Member name | Description | Data Type / Multiplicity |
|---|---|---|
| SafekeepingAccount | Account where financial instruments are maintained. | IsoMax35Text - Required 1..1 |
| AccountOwner | Party that legally owns the account. | IPartyIdentification127Choice - Optional 0..1 |
| SafekeepingPlace | Location where the financial instruments are/will be safekept. | ISafekeepingPlaceFormat28Choice - Optional 0..1 |
CorporateActionDetails building block
Information about the corporate action event. Provides information about the corporate action event. For comparison, see the ISO20022 official specification
classDiagram direction tb %% CorporateAction59 recursion level 0 with max 1 CorporateAction59 *-- "0..1" IDateAndDateTime2Choice : RecordDate CorporateAction59 *-- "0..1" IDateAndDateTime2Choice : ExDividendDate %% IDateAndDateTime2Choice recursion level 1 with max 1 %% IDateAndDateTime2Choice recursion level 1 with max 1
CorporateAction59 members
| Member name | Description | Data Type / Multiplicity |
|---|---|---|
| RecordDate | Date/time at which positions are struck at the end of the day to note which parties will receive the relevant amount of entitlement, due to be distributed on payment date. | IDateAndDateTime2Choice - Optional 0..1 |
| ExDividendDate | Date/time as from which trading (including exchange and OTC trading) occurs on the underlying security without the benefit. | IDateAndDateTime2Choice - Optional 0..1 |
MarketClaimType building block
Type of market claim creation requested. Specifies the type of market claim in the context of a corporate action distribution event. For comparison, see the ISO20022 official specification This message is declared as MarketClaimType1Code in the ISO specification. In our implementation, it is represented in source code as MarketClaimType1Code. Due to global using directives, it is treated as a System.String by the compiler and runtime.
MarketClaimDetails building block
Detailed information about the related corporate action option and related movements to which the market claim is linked. Provides information about the corporate action option. For comparison, see the ISO20022 official specification
classDiagram
direction tb
%% CorporateActionOption185 recursion level 0 with max 1
class CorporateActionOption185{
OptionNumber IsoExact3NumericText
}
CorporateActionOption185 *-- "1..1" ICorporateActionOption30Choice : OptionType
CorporateActionOption185 *-- "0..0" SecuritiesOption76 : SecuritiesMovementDetails
CorporateActionOption185 *-- "0..0" CashOption76 : CashMovementDetails
%% ICorporateActionOption30Choice recursion level 1 with max 1
%% SecuritiesOption76 recursion level 1 with max 1
class SecuritiesOption76{
CreditDebitIndicator CreditDebitCode
}
SecuritiesOption76 *-- "1..1" SecurityIdentification19 : FinancialInstrumentIdentification
SecuritiesOption76 *-- "1..1" IQuantity6Choice : EntitledQuantity
SecuritiesOption76 *-- "1..1" IDateFormat58Choice : PaymentDate
%% CashOption76 recursion level 1 with max 1
class CashOption76{
CreditDebitIndicator CreditDebitCode
GrossCashAmount IsoActiveCurrencyAndAmount
NetCashAmount IsoActiveCurrencyAndAmount
EntitledAmount IsoActiveCurrencyAndAmount
WithholdingTaxAmount IsoActiveCurrencyAndAmount
}
CashOption76 *-- "0..1" ICashAccountIdentification5Choice : CashAccountIdentification
CashOption76 *-- "0..0" IRateAndAmountFormat40Choice : WithholdingTaxRate
CashOption76 *-- "0..1" IDateAndDateTime2Choice : EarliestPaymentDate
CashOption76 *-- "1..1" IDateFormat43Choice : PaymentDate
CorporateActionOption185 members
| Member name | Description | Data Type / Multiplicity |
|---|---|---|
| OptionNumber | Number identifying the available corporate action options. | IsoExact3NumericText - Required 1..1 |
| OptionType | Specifies the corporate action options available to the account owner. | ICorporateActionOption30Choice - Required 1..1 |
| SecuritiesMovementDetails | Provides information about securities movement related to a corporate action option. | SecuritiesOption76 - Unknown 0..0 |
| CashMovementDetails | Provides information about the cash movement linked to the corporate action option. | CashOption76 - Unknown 0..0 |
DeliveringSettlementParties building block
Identifies the chain of delivering settlement parties. Specifies settlement parties (delivering/receiving). For comparison, see the ISO20022 official specification
classDiagram
direction tb
%% SettlementParties75 recursion level 0 with max 1
SettlementParties75 *-- "0..1" PartyIdentification143 : Depository
SettlementParties75 *-- "0..1" PartyIdentificationAndAccount163 : Party1
SettlementParties75 *-- "0..1" PartyIdentificationAndAccount163 : Party2
SettlementParties75 *-- "0..1" PartyIdentificationAndAccount163 : Party3
%% PartyIdentification143 recursion level 1 with max 1
class PartyIdentification143{
ProcessingIdentification IsoMax35Text
}
PartyIdentification143 *-- "1..1" IPartyIdentification122Choice : Identification
PartyIdentification143 *-- "0..0" AlternatePartyIdentification7 : AlternateIdentification
%% PartyIdentificationAndAccount163 recursion level 1 with max 1
class PartyIdentificationAndAccount163{
SafekeepingAccount IsoMax35Text
ProcessingIdentification IsoMax35Text
}
PartyIdentificationAndAccount163 *-- "1..1" IPartyIdentification120Choice : Identification
PartyIdentificationAndAccount163 *-- "0..0" AlternatePartyIdentification7 : AlternateIdentification
%% PartyIdentificationAndAccount163 recursion level 1 with max 1
class PartyIdentificationAndAccount163{
SafekeepingAccount IsoMax35Text
ProcessingIdentification IsoMax35Text
}
PartyIdentificationAndAccount163 *-- "1..1" IPartyIdentification120Choice : Identification
PartyIdentificationAndAccount163 *-- "0..0" AlternatePartyIdentification7 : AlternateIdentification
%% PartyIdentificationAndAccount163 recursion level 1 with max 1
class PartyIdentificationAndAccount163{
SafekeepingAccount IsoMax35Text
ProcessingIdentification IsoMax35Text
}
PartyIdentificationAndAccount163 *-- "1..1" IPartyIdentification120Choice : Identification
PartyIdentificationAndAccount163 *-- "0..0" AlternatePartyIdentification7 : AlternateIdentification
SettlementParties75 members
| Member name | Description | Data Type / Multiplicity |
|---|---|---|
| Depository | First receiving party in the settlement chain. In a plain vanilla settlement, it is the central securities depository where the receiving side of the transaction requests to receive the financial instrument. | PartyIdentification143 - Optional 0..1 |
| Party1 | Party that interacts with the depository. | PartyIdentificationAndAccount163 - Optional 0..1 |
| Party2 | Party that interacts with the party1. | PartyIdentificationAndAccount163 - Optional 0..1 |
| Party3 | Party that interacts with the party2. | PartyIdentificationAndAccount163 - Optional 0..1 |
ReceivingSettlementParties building block
Identifies the chain of receiving settlement parties. Specifies settlement parties (delivering/receiving). For comparison, see the ISO20022 official specification
classDiagram
direction tb
%% SettlementParties75 recursion level 0 with max 1
SettlementParties75 *-- "0..1" PartyIdentification143 : Depository
SettlementParties75 *-- "0..1" PartyIdentificationAndAccount163 : Party1
SettlementParties75 *-- "0..1" PartyIdentificationAndAccount163 : Party2
SettlementParties75 *-- "0..1" PartyIdentificationAndAccount163 : Party3
%% PartyIdentification143 recursion level 1 with max 1
class PartyIdentification143{
ProcessingIdentification IsoMax35Text
}
PartyIdentification143 *-- "1..1" IPartyIdentification122Choice : Identification
PartyIdentification143 *-- "0..0" AlternatePartyIdentification7 : AlternateIdentification
%% PartyIdentificationAndAccount163 recursion level 1 with max 1
class PartyIdentificationAndAccount163{
SafekeepingAccount IsoMax35Text
ProcessingIdentification IsoMax35Text
}
PartyIdentificationAndAccount163 *-- "1..1" IPartyIdentification120Choice : Identification
PartyIdentificationAndAccount163 *-- "0..0" AlternatePartyIdentification7 : AlternateIdentification
%% PartyIdentificationAndAccount163 recursion level 1 with max 1
class PartyIdentificationAndAccount163{
SafekeepingAccount IsoMax35Text
ProcessingIdentification IsoMax35Text
}
PartyIdentificationAndAccount163 *-- "1..1" IPartyIdentification120Choice : Identification
PartyIdentificationAndAccount163 *-- "0..0" AlternatePartyIdentification7 : AlternateIdentification
%% PartyIdentificationAndAccount163 recursion level 1 with max 1
class PartyIdentificationAndAccount163{
SafekeepingAccount IsoMax35Text
ProcessingIdentification IsoMax35Text
}
PartyIdentificationAndAccount163 *-- "1..1" IPartyIdentification120Choice : Identification
PartyIdentificationAndAccount163 *-- "0..0" AlternatePartyIdentification7 : AlternateIdentification
SettlementParties75 members
| Member name | Description | Data Type / Multiplicity |
|---|---|---|
| Depository | First receiving party in the settlement chain. In a plain vanilla settlement, it is the central securities depository where the receiving side of the transaction requests to receive the financial instrument. | PartyIdentification143 - Optional 0..1 |
| Party1 | Party that interacts with the depository. | PartyIdentificationAndAccount163 - Optional 0..1 |
| Party2 | Party that interacts with the party1. | PartyIdentificationAndAccount163 - Optional 0..1 |
| Party3 | Party that interacts with the party2. | PartyIdentificationAndAccount163 - Optional 0..1 |
SupplementaryData building block
Additional information that cannot be captured in the structured fields 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 MarketClaimCreationV01 implementation follows a specific implementaiton pattern. First of all, MarketClaimCreationV01 impleemnts IOuterRecord indicating it is the outermost logical part of the message definition. Like all message wrappers, MarketClaimCreationV01Document implements IOuterDocument. Because MarketClaimCreationV01 implements IOuterDocument, it is a suitable template parameter for IOuterDocument, and causes the internal ‘Message’ to be of type MarketClaimCreationV01.
classDiagram
class IOuterRecord
MarketClaimCreationV01 --|> IOuterRecord : Implements
MarketClaimCreationV01Document --|> IOuterDocument~MarketClaimCreationV01~ : Implements
class IOuterDocument~MarketClaimCreationV01~ {
MarketClaimCreationV01 Message
}
Document wrapper for serialization
The only real purpose MarketClaimCreationV01Document serves is to cause the document to be serialized into the ‘urn:iso:std:iso:20022:tech:xsd:seev.050.001.01’ namespace. Therefore, it will probably be the usual practice to build the message and construct this wrapper at the last minute using MarketClaimCreationV01.ToDocument() method. The returned MarketClaimCreationV01Document value will serialize correctly according to ISO 20022 standards.
classDiagram
MarketClaimCreationV01Document *-- MarketClaimCreationV01 : 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.050.001.01">
<MktClmCre>
<TxRef>
<!-- TransactionReference inner content -->
</TxRef>
<CorpActnGnlInf>
<!-- CorporateActionGeneralInformation inner content -->
</CorpActnGnlInf>
<RltdSttlmInstrDtls>
<!-- RelatedSettlementInstructionDetails inner content -->
</RltdSttlmInstrDtls>
<AcctDtls>
<!-- AccountDetails inner content -->
</AcctDtls>
<CorpActnDtls>
<!-- CorporateActionDetails inner content -->
</CorpActnDtls>
<MktClmTp>
<!-- MarketClaimType inner content -->
</MktClmTp>
<MktClmDtls>
<!-- MarketClaimDetails inner content -->
</MktClmDtls>
<DlvrgSttlmPties>
<!-- DeliveringSettlementParties inner content -->
</DlvrgSttlmPties>
<RcvgSttlmPties>
<!-- ReceivingSettlementParties inner content -->
</RcvgSttlmPties>
<SplmtryData>
<!-- SupplementaryData inner content -->
</SplmtryData>
</MktClmCre>
</Document>
Data from ISO specification
This is the technical data from the specification document.
<messageDefinition
xmi:id="_PT1lANsDEeqmdMJWobugpw"
name="MarketClaimCreationV01"
definition="Scope and Usage
The MarketClaimCreation message is sent by an account servicer to an account holder to advise of the creation of a market claim transaction on a securities account, for example by a CSD that has automatically generated market claims on a mandatory distribution type of corporate action event. The MarketClaimCreation message may also be sent by an account holder to its account holder, to instruct settlement of a bilaterally agreed (as opposed to centrally generated) market claim for a corporate action event.
This message definition is intended for use with the Business Application Header (BAH)."
registrationStatus="Registered"
messageSet="_7uj7EDATEeunENYTWutRtQ"
xmlTag="MktClmCre"
rootElement="Document"
xmlns:xmi="http://www.omg.org/XMI">
<messageBuildingBlock
xmi:id="_0BRJstsYEeqmdMJWobugpw"
name="TransactionReference"
definition="References of the transaction for which the securities settlement condition modification is requested."
registrationStatus="Provisionally Registered"
maxOccurs="1"
minOccurs="1"
xmlTag="TxRef"
complexType="_7pZYv9sYEeqmdMJWobugpw">
<semanticMarkup
xmi:id="_0BRJsdsYEeqmdMJWobugpw"
type="Synonym" />
</messageBuildingBlock>
<messageBuildingBlock
xmi:id="_BA078dsPEeqmdMJWobugpw"
name="CorporateActionGeneralInformation"
definition="General information about the corporate action event."
registrationStatus="Provisionally Registered"
maxOccurs="1"
minOccurs="1"
xmlTag="CorpActnGnlInf"
complexType="_CbU_Aw3vEeuS25W0nuZvyQ" />
<messageBuildingBlock
xmi:id="_SOQsMC2sEeuVt5XRmyhHiA"
name="RelatedSettlementInstructionDetails"
definition="Information about the related settlement instruction for which the market claim has been created."
registrationStatus="Provisionally Registered"
maxOccurs="1"
minOccurs="1"
xmlTag="RltdSttlmInstrDtls"
complexType="_oefNAC2sEeuVt5XRmyhHiA" />
<messageBuildingBlock
xmi:id="_GfnaodvlEeqmdMJWobugpw"
name="AccountDetails"
definition="General information about the safekeeping account, owner and account balance."
registrationStatus="Provisionally Registered"
maxOccurs="1"
minOccurs="1"
xmlTag="AcctDtls"
complexType="_Z0GPE7XDEeiTob_PrFFUxA" />
<messageBuildingBlock
xmi:id="_uBOHsC2qEeuVt5XRmyhHiA"
name="CorporateActionDetails"
definition="Information about the corporate action event."
registrationStatus="Provisionally Registered"
maxOccurs="1"
minOccurs="0"
xmlTag="CorpActnDtls"
complexType="_61ymYC2qEeuVt5XRmyhHiA" />
<messageBuildingBlock
xmi:id="_-UDPQC2lEeuVt5XRmyhHiA"
name="MarketClaimType"
definition="Type of market claim creation requested."
registrationStatus="Provisionally Registered"
maxOccurs="1"
minOccurs="1"
xmlTag="MktClmTp"
simpleType="_1y3xAC2oEeuVt5XRmyhHiA" />
<messageBuildingBlock
xmi:id="_Lxm88NsaEeqmdMJWobugpw"
name="MarketClaimDetails"
definition="Detailed information about the related corporate action option and related movements to which the market claim is linked."
registrationStatus="Provisionally Registered"
maxOccurs="1"
minOccurs="1"
xmlTag="MktClmDtls"
complexType="_unNCUw3wEeuS25W0nuZvyQ" />
<messageBuildingBlock
xmi:id="_otNmFNsZEeqmdMJWobugpw"
name="DeliveringSettlementParties"
definition="Identifies the chain of delivering settlement parties."
registrationStatus="Provisionally Registered"
maxOccurs="1"
minOccurs="0"
xmlTag="DlvrgSttlmPties"
complexType="_ysJRZ7XEEeiTob_PrFFUxA">
<semanticMarkup
xmi:id="_otNmEdsZEeqmdMJWobugpw"
type="Synonym">
<elements
xmi:id="_otNmEtsZEeqmdMJWobugpw"
name="context"
value="ISO 15022" />
<elements
xmi:id="_otNmE9sZEeqmdMJWobugpw"
name="value"
value=":16R:RECDEL" />
</semanticMarkup>
</messageBuildingBlock>
<messageBuildingBlock
xmi:id="_7yIv1NvaEeqmdMJWobugpw"
name="ReceivingSettlementParties"
definition="Identifies the chain of receiving settlement parties."
registrationStatus="Provisionally Registered"
maxOccurs="1"
minOccurs="0"
xmlTag="RcvgSttlmPties"
complexType="_ysJRZ7XEEeiTob_PrFFUxA">
<semanticMarkup
xmi:id="_7yIv0dvaEeqmdMJWobugpw"
type="Synonym">
<elements
xmi:id="_7yIv0tvaEeqmdMJWobugpw"
name="context"
value="ISO 15022" />
<elements
xmi:id="_7yIv09vaEeqmdMJWobugpw"
name="value"
value=":16R:RECDEL" />
</semanticMarkup>
</messageBuildingBlock>
<messageBuildingBlock
xmi:id="_hhuxcdsGEeqmdMJWobugpw"
name="SupplementaryData"
definition="Additional information that cannot be captured in the structured fields and/or any other specific block."
registrationStatus="Provisionally Registered"
minOccurs="0"
xmlTag="SplmtryData"
complexType="_Qn0zC9p-Ed-ak6NoX_4Aeg_468227563" />
<messageDefinitionIdentifier
businessArea="seev"
messageFunctionality="050"
flavour="001"
version="01" />
</messageDefinition>
ISO Building Blocks
The following items are used as building blocks to construct this message.