tsin.008.001.01
This message is sent from a factoring service provider or a factoring client to a trade partner to inform about assignments of financing items and, optionally, to an interested party. The information given to the trade party indicates that property of the payment obligation has been or is being transferred to the financial institution and that payments have to be done between the trade partner and the factoring service provider. The message indicates whether the notified party is required to acknowledge the notified assignment and to which party an acknowledgement has to be sent. This message can also be used outside a factoring context directly between a payer and a payee for example as a reminder about a payment obligation or to make an adjustment. If applicable, the message may reference corresponding items of an InvoiceFinancingRequest or InvoiceFinancingStatus or other related messages and may contain referenced data. The message can carry digital signatures if required by context.
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
%% InvoiceAssignmentNotificationV01 recursion level 0 with max 0
class InvoiceAssignmentNotificationV01{
NotificationCount IsoMax15NumericText
ItemCount IsoMax15NumericText
ControlSum IsoDecimalNumber
}
InvoiceAssignmentNotificationV01 *-- "1..1" BusinessLetter1 : Header
InvoiceAssignmentNotificationV01 *-- "1..1" FinancingItemList1 : NotificationList
InvoiceAssignmentNotificationV01 *-- "0..1" EncapsulatedBusinessMessage1 : AttachedMessage
Now, we will zero-in one-by-one on each of these building blocks.
Header building block
Set of characteristics that unambiguously identify the assignment notification, common parameters, documents and identifications. Defines a business letter containing identifications of involved entities and their roles, references to documents, free form text and signatures. The semantics of this information are defined by usual business practices for the exchange and tracing of business letters. The described references and party identifiers permit to establish a linked informal trace of sequences of letters. This message component contains three types of elements that can be referenced using IDREF: (1) - all elements defining qualified parties, (2) - all elements defining qualified documents or references to them, (3) - the LegalContext element. For comparison, see the ISO20022 official specification
classDiagram
direction tb
%% BusinessLetter1 recursion level 0 with max 1
class BusinessLetter1{
ApplicationContext IsoMax35Text
Date IsoISODate
ContentIdentifier IsoMax35Text
InstructionPriority Priority3Code
AdditionalInformation IsoMax2000Text
Notice IsoMax350Text
}
BusinessLetter1 *-- "1..1" QualifiedDocumentInformation1 : LetterIdentifier
BusinessLetter1 *-- "0..0" QualifiedDocumentInformation1 : RelatedLetter
BusinessLetter1 *-- "0..0" QualifiedDocumentInformation1 : RelatedMessage
BusinessLetter1 *-- "1..1" QualifiedPartyIdentification1 : Originator
BusinessLetter1 *-- "1..0" QualifiedPartyIdentification1 : PrimaryRecipient
BusinessLetter1 *-- "0..0" QualifiedPartyIdentification1 : Sender
BusinessLetter1 *-- "1..0" QualifiedPartyIdentification1 : AuthorisationUser
BusinessLetter1 *-- "0..0" QualifiedPartyIdentification1 : ResponseRecipient
BusinessLetter1 *-- "0..0" QualifiedPartyIdentification1 : CopyRecipient
BusinessLetter1 *-- "0..0" QualifiedPartyIdentification1 : OtherParty
BusinessLetter1 *-- "0..0" QualifiedDocumentInformation1 : AssociatedDocument
BusinessLetter1 *-- "0..0" QualifiedDocumentInformation1 : GoverningContract
BusinessLetter1 *-- "0..0" GovernanceRules2 : LegalContext
BusinessLetter1 *-- "0..1" ValidationStatusInformation1 : ValidationStatusInformation
BusinessLetter1 *-- "0..0" QualifiedPartyAndXMLSignature1 : DigitalSignature
%% QualifiedDocumentInformation1 recursion level 1 with max 1
class QualifiedDocumentInformation1{
Identification IsoID
ItemListIdentifier IsoMax35Text
ItemIdentifier IsoMax35Text
Date IsoISODate
Version IsoMax6Text
ElectronicOriginal IsoYesNoIndicator
DocumentType ExternalDocumentType1Code
URL IsoMax2048Text
}
QualifiedDocumentInformation1 *-- "0..1" QualifiedPartyIdentification1 : Issuer
QualifiedDocumentInformation1 *-- "0..2" AlgorithmAndDigest1 : Digest
QualifiedDocumentInformation1 *-- "0..0" BinaryFile1 : AttachedFile
%% QualifiedDocumentInformation1 recursion level 1 with max 1
class QualifiedDocumentInformation1{
Identification IsoID
ItemListIdentifier IsoMax35Text
ItemIdentifier IsoMax35Text
Date IsoISODate
Version IsoMax6Text
ElectronicOriginal IsoYesNoIndicator
DocumentType ExternalDocumentType1Code
URL IsoMax2048Text
}
QualifiedDocumentInformation1 *-- "0..1" QualifiedPartyIdentification1 : Issuer
QualifiedDocumentInformation1 *-- "0..2" AlgorithmAndDigest1 : Digest
QualifiedDocumentInformation1 *-- "0..0" BinaryFile1 : AttachedFile
%% QualifiedDocumentInformation1 recursion level 1 with max 1
class QualifiedDocumentInformation1{
Identification IsoID
ItemListIdentifier IsoMax35Text
ItemIdentifier IsoMax35Text
Date IsoISODate
Version IsoMax6Text
ElectronicOriginal IsoYesNoIndicator
DocumentType ExternalDocumentType1Code
URL IsoMax2048Text
}
QualifiedDocumentInformation1 *-- "0..1" QualifiedPartyIdentification1 : Issuer
QualifiedDocumentInformation1 *-- "0..2" AlgorithmAndDigest1 : Digest
QualifiedDocumentInformation1 *-- "0..0" BinaryFile1 : AttachedFile
%% QualifiedPartyIdentification1 recursion level 1 with max 1
class QualifiedPartyIdentification1{
Identification IsoID
RoleDescription IsoMax256Text
}
QualifiedPartyIdentification1 *-- "1..0" SingleQualifiedPartyIdentification1 : Party
QualifiedPartyIdentification1 *-- "0..1" IPartyIdentification2Choice : ShortIdentification
QualifiedPartyIdentification1 *-- "0..1" GenericIdentification1 : Role
%% QualifiedPartyIdentification1 recursion level 1 with max 1
class QualifiedPartyIdentification1{
Identification IsoID
RoleDescription IsoMax256Text
}
QualifiedPartyIdentification1 *-- "1..0" SingleQualifiedPartyIdentification1 : Party
QualifiedPartyIdentification1 *-- "0..1" IPartyIdentification2Choice : ShortIdentification
QualifiedPartyIdentification1 *-- "0..1" GenericIdentification1 : Role
%% QualifiedPartyIdentification1 recursion level 1 with max 1
class QualifiedPartyIdentification1{
Identification IsoID
RoleDescription IsoMax256Text
}
QualifiedPartyIdentification1 *-- "1..0" SingleQualifiedPartyIdentification1 : Party
QualifiedPartyIdentification1 *-- "0..1" IPartyIdentification2Choice : ShortIdentification
QualifiedPartyIdentification1 *-- "0..1" GenericIdentification1 : Role
%% QualifiedPartyIdentification1 recursion level 1 with max 1
class QualifiedPartyIdentification1{
Identification IsoID
RoleDescription IsoMax256Text
}
QualifiedPartyIdentification1 *-- "1..0" SingleQualifiedPartyIdentification1 : Party
QualifiedPartyIdentification1 *-- "0..1" IPartyIdentification2Choice : ShortIdentification
QualifiedPartyIdentification1 *-- "0..1" GenericIdentification1 : Role
%% QualifiedPartyIdentification1 recursion level 1 with max 1
class QualifiedPartyIdentification1{
Identification IsoID
RoleDescription IsoMax256Text
}
QualifiedPartyIdentification1 *-- "1..0" SingleQualifiedPartyIdentification1 : Party
QualifiedPartyIdentification1 *-- "0..1" IPartyIdentification2Choice : ShortIdentification
QualifiedPartyIdentification1 *-- "0..1" GenericIdentification1 : Role
%% QualifiedPartyIdentification1 recursion level 1 with max 1
class QualifiedPartyIdentification1{
Identification IsoID
RoleDescription IsoMax256Text
}
QualifiedPartyIdentification1 *-- "1..0" SingleQualifiedPartyIdentification1 : Party
QualifiedPartyIdentification1 *-- "0..1" IPartyIdentification2Choice : ShortIdentification
QualifiedPartyIdentification1 *-- "0..1" GenericIdentification1 : Role
%% QualifiedPartyIdentification1 recursion level 1 with max 1
class QualifiedPartyIdentification1{
Identification IsoID
RoleDescription IsoMax256Text
}
QualifiedPartyIdentification1 *-- "1..0" SingleQualifiedPartyIdentification1 : Party
QualifiedPartyIdentification1 *-- "0..1" IPartyIdentification2Choice : ShortIdentification
QualifiedPartyIdentification1 *-- "0..1" GenericIdentification1 : Role
%% QualifiedDocumentInformation1 recursion level 1 with max 1
class QualifiedDocumentInformation1{
Identification IsoID
ItemListIdentifier IsoMax35Text
ItemIdentifier IsoMax35Text
Date IsoISODate
Version IsoMax6Text
ElectronicOriginal IsoYesNoIndicator
DocumentType ExternalDocumentType1Code
URL IsoMax2048Text
}
QualifiedDocumentInformation1 *-- "0..1" QualifiedPartyIdentification1 : Issuer
QualifiedDocumentInformation1 *-- "0..2" AlgorithmAndDigest1 : Digest
QualifiedDocumentInformation1 *-- "0..0" BinaryFile1 : AttachedFile
%% QualifiedDocumentInformation1 recursion level 1 with max 1
class QualifiedDocumentInformation1{
Identification IsoID
ItemListIdentifier IsoMax35Text
ItemIdentifier IsoMax35Text
Date IsoISODate
Version IsoMax6Text
ElectronicOriginal IsoYesNoIndicator
DocumentType ExternalDocumentType1Code
URL IsoMax2048Text
}
QualifiedDocumentInformation1 *-- "0..1" QualifiedPartyIdentification1 : Issuer
QualifiedDocumentInformation1 *-- "0..2" AlgorithmAndDigest1 : Digest
QualifiedDocumentInformation1 *-- "0..0" BinaryFile1 : AttachedFile
%% GovernanceRules2 recursion level 1 with max 1
class GovernanceRules2{
Identification IsoID
}
GovernanceRules2 *-- "1..1" IGovernanceIdentification1Choice : RuleIdentification
GovernanceRules2 *-- "0..1" Location1 : ApplicableLaw
GovernanceRules2 *-- "0..0" Location1 : Jurisdiction
%% ValidationStatusInformation1 recursion level 1 with max 1
class ValidationStatusInformation1{
Status TechnicalValidationStatus1Code
AdditionalStatusReasonInformation IsoMax105Text
}
ValidationStatusInformation1 *-- "0..1" IStatusReason4Choice : StatusReason
%% QualifiedPartyAndXMLSignature1 recursion level 1 with max 1
QualifiedPartyAndXMLSignature1 *-- "0..1" QualifiedPartyIdentification1 : Party
QualifiedPartyAndXMLSignature1 *-- "1..1" IsoSignatureEnvelope : Signature
BusinessLetter1 members
| Member name | Description | Data Type / Multiplicity |
|---|---|---|
| ApplicationContext | Application context defined by users. This is typically the name of a product. | IsoMax35Text - Optional 0..1 |
| LetterIdentifier | Unambiguous identifier for this letter. | QualifiedDocumentInformation1 - Required 1..1 |
| Date | Purported creation date of the document. | IsoISODate - Required 1..1 |
| RelatedLetter | Identifier of a related letter. | QualifiedDocumentInformation1 - Unknown 0..0 |
| RelatedMessage | Identifier of a related message. | QualifiedDocumentInformation1 - Unknown 0..0 |
| ContentIdentifier | Cross references the lists that are associated to this letter inside a message. The identifiers are relative to the Originator. | IsoMax35Text - Unknown 0..0 |
| InstructionPriority | Urgency or order of importance that the originator would like the recipient of the business letter to apply to the processing of the letter. | Priority3Code - Optional 0..1 |
| Originator | Identification of the originating party of this letter. | QualifiedPartyIdentification1 - Required 1..1 |
| PrimaryRecipient | Primary recipient of the business letter. The exact meaning is given by the users. | QualifiedPartyIdentification1 - Unknown 1..0 |
| Sender | Sender of the business letter. The exact meaning is given by the users. | QualifiedPartyIdentification1 - Unknown 0..0 |
| AuthorisationUser | User who, either individually or in concert with others, authorises the origination of a message. | QualifiedPartyIdentification1 - Unknown 1..0 |
| ResponseRecipient | Party to receive a reply to this letter. | QualifiedPartyIdentification1 - Unknown 0..0 |
| CopyRecipient | Party to receive a copy of the message. | QualifiedPartyIdentification1 - Unknown 0..0 |
| OtherParty | Other party involved. This element is usable as a target for IDREFs. | QualifiedPartyIdentification1 - Unknown 0..0 |
| AssociatedDocument | Associated free form document. | QualifiedDocumentInformation1 - Unknown 0..0 |
| GoverningContract | Governing contract. | QualifiedDocumentInformation1 - Unknown 0..0 |
| LegalContext | Rules and laws governing the letter. | GovernanceRules2 - Unknown 0..0 |
| AdditionalInformation | Free form information about this message. | IsoMax2000Text - Optional 0..1 |
| Notice | Free form information unrelated to the message for example advertising or a service notice. | IsoMax350Text - Optional 0..1 |
| ValidationStatusInformation | Status of referenced messages or letters. | ValidationStatusInformation1 - Optional 0..1 |
| DigitalSignature | Digital signatures and signing parties of this letter or parts of it. | QualifiedPartyAndXMLSignature1 - Unknown 0..0 |
NotificationList building block
List of assignment notifications. Specifies a list of financing items exchanged between two parties, for example invoice, credit, financing request. For comparison, see the ISO20022 official specification
classDiagram
direction tb
%% FinancingItemList1 recursion level 0 with max 1
class FinancingItemList1{
Identifier IsoMax35Text
IssueDate IsoISODate
AmountCutOffDate IsoISODate
ItemCount IsoMax15NumericText
ControlSum IsoDecimalNumber
TotalRequestAmount IsoActiveCurrencyAndAmount
AdditionalInformation IsoMax2000Text
}
FinancingItemList1 *-- "0..0" QualifiedDocumentInformation1 : RelatedDocument
FinancingItemList1 *-- "1..1" QualifiedPartyIdentification1 : Assignee
FinancingItemList1 *-- "1..1" QualifiedPartyIdentification1 : Assigner
FinancingItemList1 *-- "0..0" FinancingNotificationParties1 : NotificationInformation
FinancingItemList1 *-- "0..0" FinancialItem1 : FinancialItem
FinancingItemList1 *-- "0..1" IFinancingRateOrAmountChoice : TotalRequestFinancing
FinancingItemList1 *-- "0..1" AgreedRate1 : AgreedRate
FinancingItemList1 *-- "0..0" Instalment2 : FinancingInstalment
FinancingItemList1 *-- "0..1" ValidationStatusInformation1 : ValidationStatusInformation
FinancingItemList1 *-- "0..1" FinancingInformationAndStatus1 : FinancingStatus
%% QualifiedDocumentInformation1 recursion level 1 with max 1
class QualifiedDocumentInformation1{
Identification IsoID
ItemListIdentifier IsoMax35Text
ItemIdentifier IsoMax35Text
Date IsoISODate
Version IsoMax6Text
ElectronicOriginal IsoYesNoIndicator
DocumentType ExternalDocumentType1Code
URL IsoMax2048Text
}
QualifiedDocumentInformation1 *-- "0..1" QualifiedPartyIdentification1 : Issuer
QualifiedDocumentInformation1 *-- "0..2" AlgorithmAndDigest1 : Digest
QualifiedDocumentInformation1 *-- "0..0" BinaryFile1 : AttachedFile
%% QualifiedPartyIdentification1 recursion level 1 with max 1
class QualifiedPartyIdentification1{
Identification IsoID
RoleDescription IsoMax256Text
}
QualifiedPartyIdentification1 *-- "1..0" SingleQualifiedPartyIdentification1 : Party
QualifiedPartyIdentification1 *-- "0..1" IPartyIdentification2Choice : ShortIdentification
QualifiedPartyIdentification1 *-- "0..1" GenericIdentification1 : Role
%% QualifiedPartyIdentification1 recursion level 1 with max 1
class QualifiedPartyIdentification1{
Identification IsoID
RoleDescription IsoMax256Text
}
QualifiedPartyIdentification1 *-- "1..0" SingleQualifiedPartyIdentification1 : Party
QualifiedPartyIdentification1 *-- "0..1" IPartyIdentification2Choice : ShortIdentification
QualifiedPartyIdentification1 *-- "0..1" GenericIdentification1 : Role
%% FinancingNotificationParties1 recursion level 1 with max 1
FinancingNotificationParties1 *-- "1..1" QualifiedPartyIdentification1 : NotifyingParty
FinancingNotificationParties1 *-- "1..1" QualifiedPartyIdentification1 : NotificationReceiver
FinancingNotificationParties1 *-- "0..0" QualifiedPartyIdentification1 : AcknowledgementReceiver
%% FinancialItem1 recursion level 1 with max 1
class FinancialItem1{
CreditDebitIndicator CreditDebitCode
DueAmount IsoActiveCurrencyAndAmount
AdditionalInformation IsoMax2000Text
}
FinancialItem1 *-- "1..1" FinancialItemParameters1 : ItemContext
FinancialItem1 *-- "0..0" QualifiedDocumentInformation1 : FinancialDocumentReference
FinancialItem1 *-- "1..1" InvoiceTotals1 : TotalAmount
FinancialItem1 *-- "0..0" Instalment2 : InstalmentInformation
FinancialItem1 *-- "0..0" QualifiedDocumentInformation1 : AssociatedDocument
FinancialItem1 *-- "0..1" ValidationStatusInformation1 : ValidationStatusInformation
FinancialItem1 *-- "0..1" FinancingInformationAndStatus1 : FinancingStatus
FinancialItem1 *-- "0..1" SupplementaryData1 : ProprietaryDetails
%% IFinancingRateOrAmountChoice recursion level 1 with max 1
%% AgreedRate1 recursion level 1 with max 1
class AgreedRate1{
ExchangeRate IsoBaseOneRate
UnitCurrency CurrencyCode
QuotedCurrency CurrencyCode
}
%% Instalment2 recursion level 1 with max 1
class Instalment2{
SequenceIdentification IsoMax70Text
PaymentDueDate IsoISODate
Amount IsoActiveCurrencyAndAmount
}
Instalment2 *-- "0..1" PaymentMeans1 : PaymentInstrument
%% ValidationStatusInformation1 recursion level 1 with max 1
class ValidationStatusInformation1{
Status TechnicalValidationStatus1Code
AdditionalStatusReasonInformation IsoMax105Text
}
ValidationStatusInformation1 *-- "0..1" IStatusReason4Choice : StatusReason
%% FinancingInformationAndStatus1 recursion level 1 with max 1
FinancingInformationAndStatus1 *-- "1..1" FinancingAllowedSummary1 : FinancingAllowedSummary
FinancingInformationAndStatus1 *-- "1..0" InvoiceFinancingDetails1 : InvoiceFinancingDetails
FinancingItemList1 members
| Member name | Description | Data Type / Multiplicity |
|---|---|---|
| Identifier | Identification assigned to unambiguously identify the financing item list. | IsoMax35Text - Required 1..1 |
| IssueDate | Date of creation of this document. | IsoISODate - Required 1..1 |
| RelatedDocument | Reference to related documents for example to original assignment in a status response or retry. | QualifiedDocumentInformation1 - Unknown 0..0 |
| AmountCutOffDate | Cut off date for items used to establish the total request amount. | IsoISODate - Optional 0..1 |
| Assignee | Party to which the list is assigned. | QualifiedPartyIdentification1 - Required 1..1 |
| Assigner | Party assigning the list. | QualifiedPartyIdentification1 - Required 1..1 |
| NotificationInformation | Identifies parties that notify the assignment(s) and the notified parties. | FinancingNotificationParties1 - Unknown 0..0 |
| FinancialItem | List of items/transactions. | FinancialItem1 - Unknown 0..0 |
| ItemCount | Number of individual items contained in the list. | IsoMax15NumericText - Required 1..1 |
| ControlSum | Total of all individual amounts included in the list, irrespective of currencies. | IsoDecimalNumber - Optional 0..1 |
| TotalRequestAmount | Total amount in all items. Requires same currency, necessary when financing request is in percentage. | IsoActiveCurrencyAndAmount - Optional 0..1 |
| TotalRequestFinancing | Total amount requested. | IFinancingRateOrAmountChoice - Optional 0..1 |
| AgreedRate | Acceptable exchange rate for financing by different currency. | AgreedRate1 - Optional 0..1 |
| FinancingInstalment | Instalment for the financing. | Instalment2 - Unknown 0..0 |
| AdditionalInformation | Additional free form information concerning the list. | IsoMax2000Text - Optional 0..1 |
| ValidationStatusInformation | Validation status of the list. | ValidationStatusInformation1 - Optional 0..1 |
| FinancingStatus | Financing status if applicable to the nature of the items. | FinancingInformationAndStatus1 - Optional 0..1 |
NotificationCount building block
Number of assignment notification lists. Specifies a numeric string with a maximum length of 15 digits. For comparison, see the ISO20022 official specification This message is declared as Max15NumericText in the ISO specification. In our implementation, it is represented in source code as IsoMax15NumericText. Due to global using directives, it is treated as a System.String by the compiler and runtime.
ItemCount building block
Total number of individual items in all lists. Specifies a numeric string with a maximum length of 15 digits. For comparison, see the ISO20022 official specification This message is declared as Max15NumericText in the ISO specification. In our implementation, it is represented in source code as IsoMax15NumericText. Due to global using directives, it is treated as a System.String by the compiler and runtime.
ControlSum building block
Total of all individual amounts included in all lists, irrespective of currencies or direction. Number of objects represented as a decimal number, for example 0.75 or 45.6. For comparison, see the ISO20022 official specification This message is declared as DecimalNumber in the ISO specification. In our implementation, it is represented in source code as IsoDecimalNumber. Due to global using directives, it is treated as a System.UInt64 by the compiler and runtime.
AttachedMessage building block
Referenced or related business message. Defines an encapsulated form of an ISO 20022 message and, if present, its associated Business Application Header. The encapsulation guarantees uniqueness of ID/IDREFs though the use of the Prefix element. This element can be added during message preparation to ID/IDREFs. In order to verify the signature in the Hdr element or inside the encapsulated message, for each occurrence of an ID orIDREF that possesses the same value as a prefix, the prefix part is removed before signature verification. This is not done for surrounding signatures. For comparison, see the ISO20022 official specification
classDiagram
direction tb
%% EncapsulatedBusinessMessage1 recursion level 0 with max 1
class EncapsulatedBusinessMessage1{
Prefix IsoID
Partial IsoYesNoIndicator
}
EncapsulatedBusinessMessage1 *-- "0..1" BusinessApplicationHeader1 : Header
EncapsulatedBusinessMessage1 *-- "1..1" IsoStrictPayload : Message
%% BusinessApplicationHeader1 recursion level 1 with max 1
class BusinessApplicationHeader1{
CharacterSet UnicodeChartsCode
BusinessMessageIdentifier IsoMax35Text
MessageDefinitionIdentifier IsoMax35Text
BusinessService IsoMax35Text
CreationDate IsoISONormalisedDateTime
CopyDuplicate CopyDuplicate1Code
PossibleDuplicate IsoYesNoIndicator
Priority BusinessMessagePriorityCode
}
BusinessApplicationHeader1 *-- "1..1" IParty9Choice : From
BusinessApplicationHeader1 *-- "1..1" IParty9Choice : To
BusinessApplicationHeader1 *-- "0..1" IsoSignatureEnvelope : Signature
%% IsoStrictPayload recursion level 1 with max 1
EncapsulatedBusinessMessage1 members
| Member name | Description | Data Type / Multiplicity |
|---|---|---|
| Header | The Business Application Header associated to the encapsulated message if it exists. | BusinessApplicationHeader1 - Optional 0..1 |
| Prefix | Prefix of ID/IDREFs in the encapsulated message to be removed before signature verification. | IsoID - Optional 0..1 |
| Partial | If yes, the Msg element contains only a subset of the original message. | IsoYesNoIndicator - Required 1..1 |
| Message | The encapsulated ISO 20022 message. | IsoStrictPayload - Required 1..1 |
Extensibility and generalization considerations
To facilitate generalized design patterns in the system, the InvoiceAssignmentNotificationV01 implementation follows a specific implementaiton pattern. First of all, InvoiceAssignmentNotificationV01 impleemnts IOuterRecord indicating it is the outermost logical part of the message definition. Like all message wrappers, InvoiceAssignmentNotificationV01Document implements IOuterDocument. Because InvoiceAssignmentNotificationV01 implements IOuterDocument, it is a suitable template parameter for IOuterDocument, and causes the internal ‘Message’ to be of type InvoiceAssignmentNotificationV01.
classDiagram
class IOuterRecord
InvoiceAssignmentNotificationV01 --|> IOuterRecord : Implements
InvoiceAssignmentNotificationV01Document --|> IOuterDocument~InvoiceAssignmentNotificationV01~ : Implements
class IOuterDocument~InvoiceAssignmentNotificationV01~ {
InvoiceAssignmentNotificationV01 Message
}
Document wrapper for serialization
The only real purpose InvoiceAssignmentNotificationV01Document serves is to cause the document to be serialized into the ‘urn:iso:std:iso:20022:tech:xsd:tsin.008.001.01’ namespace. Therefore, it will probably be the usual practice to build the message and construct this wrapper at the last minute using InvoiceAssignmentNotificationV01.ToDocument() method. The returned InvoiceAssignmentNotificationV01Document value will serialize correctly according to ISO 20022 standards.
classDiagram
InvoiceAssignmentNotificationV01Document *-- InvoiceAssignmentNotificationV01 : 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:tsin.008.001.01">
<InvcAssgnmtNtfctn>
<Hdr>
<!-- Header inner content -->
</Hdr>
<NtfctnList>
<!-- NotificationList inner content -->
</NtfctnList>
<NtfctnCnt>
<!-- NotificationCount inner content -->
</NtfctnCnt>
<ItmCnt>
<!-- ItemCount inner content -->
</ItmCnt>
<CtrlSum>
<!-- ControlSum inner content -->
</CtrlSum>
<AttchdMsg>
<!-- AttachedMessage inner content -->
</AttchdMsg>
</InvcAssgnmtNtfctn>
</Document>
Data from ISO specification
This is the technical data from the specification document.
<messageDefinition
xmi:id="_OTgzNDU2-AOSNFX-8224505"
name="InvoiceAssignmentNotificationV01"
definition="This message is sent from a factoring service provider or a factoring client to a trade partner to inform about assignments of financing items and, optionally, to an interested party.
The information given to the trade party indicates that property of the payment obligation has been or is being transferred to the financial institution and that payments have to be done between the trade partner and the factoring service provider.
The message indicates whether the notified party is required to acknowledge the notified assignment and to which party an acknowledgement has to be sent.
This message can also be used outside a factoring context directly between a payer and a payee for example as a reminder about a payment obligation or to make an adjustment.
If applicable, the message may reference corresponding items of an InvoiceFinancingRequest or InvoiceFinancingStatus or other related messages and may contain referenced data.
The message can carry digital signatures if required by context."
registrationStatus="Registered"
messageSet="_ODg4MjY3-AOSNFX-3856349"
xmlTag="InvcAssgnmtNtfctn"
rootElement="Document"
xmlns:xmi="http://www.omg.org/XMI">
<messageBuildingBlock
xmi:id="_OTgzNDU3-AOSNFX-8224506"
name="Header"
definition="Set of characteristics that unambiguously identify the assignment notification, common parameters, documents and identifications."
registrationStatus="Provisionally Registered"
maxOccurs="1"
minOccurs="1"
xmlTag="Hdr"
complexType="_OTgzMTkz-AOSNFX-8224490" />
<messageBuildingBlock
xmi:id="_OTgzNDU4-AOSNFX-8224506"
name="NotificationList"
definition="List of assignment notifications."
registrationStatus="Provisionally Registered"
minOccurs="1"
xmlTag="NtfctnList"
complexType="_OTgzMTk3-AOSNFX-8224490" />
<messageBuildingBlock
xmi:id="_OTgzNDU5-AOSNFX-8224506"
name="NotificationCount"
definition="Number of assignment notification lists."
registrationStatus="Provisionally Registered"
maxOccurs="1"
minOccurs="0"
xmlTag="NtfctnCnt"
simpleType="_YXbjAtp-Ed-ak6NoX_4Aeg_-1365324848" />
<messageBuildingBlock
xmi:id="_OTgzNDYw-AOSNFX-8224506"
name="ItemCount"
definition="Total number of individual items in all lists."
registrationStatus="Provisionally Registered"
maxOccurs="1"
minOccurs="0"
xmlTag="ItmCnt"
simpleType="_YXbjAtp-Ed-ak6NoX_4Aeg_-1365324848" />
<messageBuildingBlock
xmi:id="_OTgzNDYx-AOSNFX-8224506"
name="ControlSum"
definition="Total of all individual amounts included in all lists, irrespective of currencies or direction."
registrationStatus="Provisionally Registered"
maxOccurs="1"
minOccurs="0"
xmlTag="CtrlSum"
simpleType="_YXlUA9p-Ed-ak6NoX_4Aeg_1283031972" />
<messageBuildingBlock
xmi:id="_OTgzNDYy-AOSNFX-8224506"
name="AttachedMessage"
definition="Referenced or related business message."
registrationStatus="Provisionally Registered"
minOccurs="0"
xmlTag="AttchdMsg"
complexType="_OTgzMTky-AOSNFX-8224490" />
<messageDefinitionIdentifier
businessArea="tsin"
messageFunctionality="008"
flavour="001"
version="01" />
</messageDefinition>
ISO Building Blocks
The following items are used as building blocks to construct this message.