3 BUSINESS PROCESS ARCHITECTURE

3.1 Introduction

The FpML 4.0 Schema was the first release of the specification to place a messaging framework around the product descriptions to describe the context and use to which the information is expected to be put. This section describes a small set of complex types and elements that comprise a simple message framework that is used as the basis for defining business messages and processes suitable for use in a 'Business-to-Business' (B2B) or 'Application-to-Application' (A2A) communications process.

These definitions introduce a new set of ideas that previously could not be used in FpML because of its reliance on DTDs as the formal specification of the grammar. The following sections describe the reasoning behind the features used in the framework as well as a description of several business processes.

3.1.1 Why Business Messaging?

Increased efficiency in financial markets can only be achieved through greater automation of transaction processing and use of electronic messaging (e.g. the exchange of information directly between computer systems with as little human interaction as possible). In order to achieve this all the parties involved in such communications must agree on four things, namely:

  • Representation

    There must be a common representation of a transaction, product or other reference data item that is accepted by all the parties.

    The core FpML grammar defines a standard vocabulary for derivative based transactions and products that can form the basis of a messaging standard. As new messaging applications are considered the scope of the core grammar will need to expand to encompass the additional types of data referenced in these messages.

  • Semantics

    All the parties must have the same interpretation of the information expressed by the representation.

    The work of the validation working group provides a set of rules to ensure that a product definition conforms to the market definition for that product. The FpML rule set will expand and evolve over time as new financial products and message types are added to the grammar.

  • Business Process

    All the parties must follow the same business processes and respond appropriately to any communication they receive.

    To support business process the messaging working group has extended the core FpML grammar to add a framework for defining messages and their content. This section describes some business processes and shows how they could be implemented as message exchanges.

  • Transport

    The parties must agree on the communications transport used to interconnect their businesses.

    FpML does not endorse any particular messaging transport for communication. The choice of transport is left to the implementer although in practice we expect only a few to be found suitable.

Disagreement over the first three of these features will mean that FpML users will potentially have to implement, maintain and support different software systems for each FpML aware service or application that they use. Supporting multiple communications transports is typically not that difficult although it does incur additional operations costs.

3.1.2 Design Assumptions

In order to create the messages and business processes described in this document some design assumptions had to be made, principally:

  • Throughout this document we have assumed that message exchanges will be carried by an asynchronous passing of messages over a highly assured transport, such is provided by a messaging queuing system. This form of transport is commonly used today in the finance industry (e.g. AMQP, Apache QPid, FIX engines, MQSeries, MSMQ, RabbitMQ, SwiftNet Interact 'Store and Forward', etc.).

    One important consequence of this decision is that error cases related to non-delivery do not have to be considered (e.g. once accepted a guaranteed messaging queuing system WILL ALWAYS deliver a message) although the 'freshness' of the message may need to be considered (e.g. has the message been stuck in a queue waiting to be delivered for a long period of time). Similarly message queuing system can normally eliminate duplicate messages so these are not considered either.

  • There is no requirement for message sequence to be preserved over the message transport. Message sequence must not be expected to be repeatable nor predictable.

    In practise enterprise message buses cannot be expected to halt the enterprise to preserver sequence. Hence this is not a requirement of FpML.

  • Some of the business processes are 'long-running' in that once initiated they may remain active for a considerable time before completing (e.g. a request to confirm a trade may take many hours as it is dependent on the time of arrival of the matching trade). During this time the process may generate periodic notifications to the originator of the request and/or other parties. Such notifications will appear in the message stream set to a participant intermixed between other response messages.

    An implication of such 'long-running' transactions is that the 'service provider' will contain a complex 'state'. The service should make suitable provisions to persistently record its state so that in the event of a software or hardware failure it can recover transparently without its clients having to resend any information.

  • All business process definitions must have an observable completion. The set of messages defining a business process needs to be complete. In addition, timeouts must be defined if necessary.

Implementers attempting to construct software based on these protocols using a non queuing transport (e.g. WebServices, DCOM, CORBA) will need to implement a reliable message layer to encapsulate the current message sequences (e.g. a get/put message interface using sequence numbers to detect lost or duplicated messages and positive/negative acknowledgments). The W3C site contains links to proposals for such extensions for use with WebServices.

3.1.3 Styles of Messaging

In general computer systems commonly use two styles of messaging to exchange information between each other, namely:

  • Request/Response

    A style of exchange in which one system sends a message to the other to asking it to perform some function, the result of which is encapsulated in an appropriate response and returned.

  • Notification

    A style of exchange in which a system sends a message describing a business event that has occurred and may be of interest to others.

The receipt of either kind of message may cause additional messages to be generated and sent as part of the processing to obtain information from other systems or to inform them of the business event underway.

3.1.4 Transport Independence

In general, four layers of specification are contained in a XML Standard. A multi-layer approach allows implementers to choose the most appropriate technology for a given situation. It allows development and modifications within one layer without affecting or requiring changes to the others..

From the top down, the four layers are:

images/messaging/FpMLStack.jpg
3.1.4.1 Business Process

This layer specifies the way in which any business process is defined, such that is understood and executable by people and applications. A business process can be defined as a set of interrelated tasks linked to an activity that spans functional boundaries. Business processes have starting points and ending points, and they are repeatable. Examples of business processes in the derivatives domain are the affirmation process, the confirmation process, and the matching process.

The FpML 4.0 Specification models business processes in UML sequence diagrams.

3.1.4.2 Document

This layer corresponds to the FpML document definitions. It provides a set of abstractions specific to financial derivatives but also a set of elements which are not context specific (such as “Party” and “Price”).

3.1.4.3 Messaging

The Messaging layer addresses the need to record session and communication settings for message transport in order to enable coordination between parties in a business transaction.

The FpML 4.0 schema explicitly models ‘delivery’ related information as part of the message itself. Some transports (i.e. SOAP, ebXML, etc.) allow such information to be placed in the ‘envelope’ that surrounds the message during delivery.

Including a standard header within FpML messages increases consistency by providing a single format for delivering information regardless of the physical transport, ensures that it will be persisted if the message is archived, and allows more flexible use of features such as digital signatures.

3.1.4.4 Transport

The Transport Layer provides a point to point connection so that one server can send messages to another server and they will arrive uncorrupted and in the correct order.

The FpML Message Architecture defines a message structure that is independent of the underlying transport protocol, such as SMTP, File Transfer Protocol (FTP), Standardized Messaging Middleware, HTTP, etc.

3.1.5 Control Over Content

The design of a grammar must strike a balance between the degree of flexibility it allows and the complexity of its validation. An overly lax grammar allows the construction of documents that, whilst syntactically correct, may have no valid business interpretation. On the other hand a very rigid grammar may require many more grammatical productions in order to enumerate only the valid combinations.

In general it makes sense for a grammar to be strict when it can be achieved easily and without too much additional definition, and lax where flexibility is required (e.g. for proprietary extensions, etc.). In the case of the message framework the grammar provides a mechanism for ensuring that messages have the correct content that applies to them.

3.1.6 Identification of Purpose

The receiver of a message needs to be able to determine the function that the message is invoking. In XML there are three different techniques that can be used for indicating the purpose of a message.

The FpML 5.0 message framework is based on element naming (option 2 - By Element Name). Below is a short explanation of the three techniques:

3.1.6.1 By Namespace (not used by FpML)

The receiver can look at the namespace from which the element definitions have been drawn and determine from it the function requested.

<?xml version="1.0"?>

<FpML version="4-0"
 xmlns="http://www.fpml.org/2002/FpML-4-0-TradeConfirmationRequest">
  <header>
    ... Message header
  </header>
  ... Business data
</FpML>

Using namespaces it would be possible to create a highly extensible framework for FpML but it could lead to documents having to have every FpML element prefixed with a suitable namespace abbreviation although it may be possible to mitigate this by having the 'core' sub-schemas use no namespaces in their definition and take on the namespace of the one they are including into.

There may be further issues with related XML standards such as XPath as the namespace of the same included elements may not be consistent between documents.

3.1.6.2 By Element Name (used by FpML 5.x)

The receiver can look at the name associated with an element within the message (either the root or one of the first level children) to determine the function requested.

<?xml version="1.0"?>

					<tradeConfirmationRequest fpmlVersion="5-0" xmlns="http://www.fpml.org/2007/FpML-5-0/confirmation">
  <header>
    ... Message header
  </header>
    ... Business data
</tradeConfirmationRequest>

In this model the root element is a global element of a type derived from the base FpML Document type, typically a message type.

3.1.6.3 By Element Type (used by FpML 4.x

The receiver can look at the type associated with an element within the message (e.g. the root or a child).

<?xml version="1.0"?>

<FpML version="4-0" xmlns="http://www.fpml.org/2002/FpML-4-0"
      xsi:type="TradeConfirmationRequest">
  <header>
    ... Message header
  </header>
  ... Business data
</FpML>

An XML schema based instance may use type substitution to replace the content model of any element with another providing that the replacement is derived from the original. Given a framework that provides the appropriate extension points any number of new types can be derived within the name or different namespaces as necessary.

In addition through inheritance the message types can be associated with an appropriate message header content model.

3.1.7 Representing Internal Trades

The focus of FpML to date has been on the focus description of trades for B2B purposes. At the same time many of the existing implementations have been for internal trade exchanges between systems.

Extending FpML to handle internal trade information entails adding additional elements to the current schema to hold the values needed to categorize a trade for internal purposes. There are several ways this information could be added to the schema (e.g. optional elements, alternative inheritance structures, inheritance by restriction) each with its own properties in terms of ease of validation or affects on document style.

The FpML coordination committee is currently considering the types of information that would be useful to add for internal processing (i.e. management, risk and P&L reports, etc.) and the most appropriate location within the schema to place it. These enhancements will be included in a future release of FpML but in the mean time the FpML 2.0 Architecture specification contains examples of how bespoke extensions can be made to achieve this with the FpML 4.0 schema.

3.1.8 Sequence Diagram

A UML diagram that defines information flows. It focuses on the temporal order of the messages. Business Analysts can find sequence diagrams useful to communicate how the business currently works by showing how various business objects interact.

images/messaging/BilateralAlreadySubmitted.gif

At the top of each diagram we see the names of actors or business objects involved in the process we want to describe. In the diagram above, Confirmation Requester and Confirmation Provider are examples of actors involved in the confirmation process.

The rectangles represent the systems involved in the process, e.g. Trading System, Confirmation System, and Matching System. However, in some other versions of sequence diagrams, the rectangles represent the actors or business objects.

Usually the actor or business object on the left side starts the interaction. Descending from each object is a line known as the “lifeline”. These lines define the time axis of the diagram. By convention, time proceeds in a downward direction. This practice is used in the FpML documentation.

The arrows between the lifelines represent messages being sent between the actors. For example, in the diagram above, RequestTradeConfirmation and TradeAlreadySubmitted are examples of messages being sent between the Confirmation Requester and the Confirmation Provider.

The white narrow rectangles that the arrows terminate on are called “activations”. For example, the rectangles between the RequestTradeConfirmation and TradeAlreadySubmitted messages in the diagram above are activations. They show the duration of the execution of a method or action in response to a message.

If you need more information regarding sequence or other UML diagrams, you can easily find UML diagram tools and tutorials by searching on the Internet.

3.2 The Message Framework

Versions of FpML prior to 4.0 have allowed the construction of documents which contain only product definitions. The original proposal for FpML 4.0 was to force a transition directly to messages by making some message elements mandatory in every document. However after further consideration it was decided to restructure the framework to allow both styles of definition giving FpML backwards compatibility with existing solutions and the scope to expand into new B2B (or A2A) messaging applications.

3.2.1 The Base Document

The XML schema for FpML 4.0 defines the type of the root FpML element to be 'Document', an abstract type with an empty content model save only for the standard FpML version.

images/messaging/Document.png

The Document type serves as the base type in an inheritance scheme that provides the content model definitions for actual message types.

3.2.1.1 Data Documents

The DataDocument type provides the same content model as the pre XML schema version of FpML allowing the construction of documents that contain only product definitions.

images/messaging/dataDocument.png

To make an FpML 3.0 DTD based document compatible with the FpML 4.0 schema as a DataDocument a number of changes are required to the instance document, namely:

  • The <!DOCTYPE> reference must be removed from the document.
  • Where the <FpML> element defines a non-standard or institution specific default scheme attribute value it must be propagated the scheme attribute on all the appropriate elements.
  • A reference to the FpML schema as the default namespace must be added.
  • A reference to the W3C XML schema instance schema must be added and assigned to a namespace (e.g. 'xs' or 'xsi').
  • A reference to the W3C XML Digital Signature schema must be added and assigned to a namespace (e.g. 'dsig').
  • The type of the <FpML> element must be set to 'DataDocument'.
  • A schemaLocation attribute may be added to the <FpML> element to hint at the location of the schema for XML tools that do not perform full 'entity resolving'.

3.2.2 The Base Message

The core definitions within the schema establish a set of abstract base classes, 'Message' , 'MessageHeader' and a model group called 'MessageHeader.model' from which all the other definitions are composed.

images/messaging/Message.png

A specific type of message is the Notification Message; this demonstrates how the Message Header is included in the message:

images/messaging/NotificationMessage.png

The message header used xsd:restriction in previous versions in order to restrict the content model for requests, responses, and notifications. But tools issues with xsd:restriction made the Architecture Working Group to change the architecture of the message header using model groups and xsd:extension instead of xsd:restriction.

The following XML schema fragment shows how these types and group are defined.

 <xsd:complexType name="Message" abstract="true">
	<xsd:complexContent>
		<xsd:extension base="Document"/>
	</xsd:complexContent>
</xsd:complexType>

  <xsd:complexType name="MessageHeader" abstract="true">	
	<xsd:sequence>
		<xsd:element name="conversationId" type="ConversationId" minOccurs="0"/>		
		<xsd:element name="messageId" type="MessageId"/>	
	</xsd:sequence>
</xsd:complexType>
<xsd:group name="MessageHeader.model">
	<xsd:sequence>
		<xsd:element name="sentBy" type="MessageAddress"/>
		<xsd:element name="sendTo" type="MessageAddress" minOccurs="0" 
maxOccurs="unbounded"/>
		<xsd:element name="copyTo" type="MessageAddress" minOccurs="0" 
maxOccurs="unbounded"/>
		<xsd:element name="creationTimestamp" type="xsd:dateTime"/>
		<xsd:element name="expiryTimestamp" type="xsd:dateTime" minOccurs="0"/>
		<xsd:element name="partyMessageInformation" type="PartyMessageInformation" 
minOccurs="0" maxOccurs="unbounded"/>
		<xsd:element ref="dsig:Signature" minOccurs="0" maxOccurs="unbounded"/>
	</xsd:sequence>
</xsd:group>

The content of Requests, Responses, and Notifications Message Headers differ in the inReplyTo element so it is not included in the model group. Each specific type would control the existance and cardinality of the inReplyTo element. The role of each element is given below.

  • conversationId allows a message sender to create a common context for a number of separate message exchanges.
  • messageId contains the senders unique identifier for a message.
  • inReplyTo contains the unique identifier for the request message that is being responded to.
  • sentBy identifies the system or party sending a message.
  • sendTo identifies the systems or parties who will receive a message and should act upon it.
  • copyTo identities other systems or parties who will receive a message but who do not have to act upon it.
  • creationTimestamp describes the time when the sender created the message.
  • expiryTimestamp defines a time after which the sender will consider the message expired.
  • dsig:Signature allows the inclusion of W3C digital signatures within the message.

The validation element in the Message type contains the URI for a set of additional validation rules to be applied to the document during processing.

3.2.3 Requests, Responses and Notifications

The following image shows the construction of just one message style type, as with in the exception of the type of the header element, they are all the same.

images/messaging/RequestMessage.png
<xsd:complexType name="RequestMessage" abstract="true">
	<xsd:complexContent>
		<xsd:extension base="Message">
			<xsd:sequence>
				<xsd:element name="header" type="RequestMessageHeader"/>
				<xsd:group ref="Validation.model"/>
			</xsd:sequence>
		</xsd:extension>
	</xsd:complexContent>
</xsd:complexType>

<xsd:complexType name="RequestMessageHeader">
	<xsd:complexContent>
		<xsd:extension base="MessageHeader">
			<xsd:sequence>
				<xsd:group ref="MessageHeader.model"/>
			</xsd:sequence>
		</xsd:extension>
	</xsd:complexContent>
</xsd:complexType>

<xsd:complexType name="ResponseMessage" abstract="true">
	<xsd:complexContent>
		<xsd:extension base="Message">
			<xsd:sequence>
				<xsd:element name="header" type="ResponseMessageHeader"/>
				<xsd:group ref="Validation.model"/>
			</xsd:sequence>
		</xsd:extension>
	</xsd:complexContent>
</xsd:complexType>

<xsd:complexType name="ResponseMessageHeader">
	<xsd:complexContent>
		<xsd:extension base="MessageHeader">
			<xsd:sequence>
				<xsd:element name="inReplyTo" type="MessageId"/>
				<xsd:group ref="MessageHeader.model"/>
			</xsd:sequence>
		</xsd:extension>
	</xsd:complexContent>
</xsd:complexType>

<xsd:complexType name="NotificationMessage" abstract="true">
	<xsd:complexContent>
		<xsd:extension base="Message">
			<xsd:sequence>
				<xsd:element name="header" type="NotificationMessageHeader"/>
				<xsd:group ref="Validation.model"/>
			</xsd:sequence>
		</xsd:extension>
	</xsd:complexContent>
</xsd:complexType>

<xsd:complexType name="NotificationMessageHeader">
	<xsd:complexContent>
		<xsd:extension base="MessageHeader">
			<xsd:sequence>
				<xsd:element name="inReplyTo" type="MessageId" minOccurs="0"/>
				<xsd:group ref="MessageHeader.model"/>
			</xsd:sequence>
		</xsd:extension>
	</xsd:complexContent>
</xsd:complexType>

3.2.4 Error Handling

If a message cannot be processed for some technical reason such as: it has become corrupted, is not XML or is not a valid FpML message, then the receiver returns a 'MessageRejected' message to the sender. Usually the message will require manual intervention to diagnose and solve any problems. Such rejections will not be show on any of the diagrams in this paper.

images/messaging/MessageRejection.gif

If the message cannot be processed because the request is invalid, given the state of the data to which it applies, then an appropriate business level notification is returned to the sender (e.g. 'TradeNotFound', 'TradeAlreadyMatched', etc.) which in turn could be used to invoke either an automatic recovery or a manual intervention.

The design of the rejection message allows for the inclusion of multiple computer readable error descriptions. Each error is described by a collection of elements with the following interpretation:

  • The reasonCode element contains a numeric code (taken from a standard list) which outlines the kind of error detected.

  • The location element contains either a line and column number (separated by a comma) or an XPath expression. The value of the locationType attribute defines which type of location has been given. It may take the values 'lexical' or 'xpath'.

  • The description element contains human readable text detailing the error.

  • If the error is the result of a violation of a validation rule then the element validationRuleId contains the rule's identifier (e.g. 'ird-1').

  • The additionalData element may contain extra information useful in diagnosing the reason for failure.

Another additionalData element is associated with the MessageRejected message after the error list to allow the source for the failed XML document to be returned. A CDATA section must be placed around the source message to prevent its interpretation as XML content. The following diagram shows the design for the complete message.

images/messaging/messageRejected.png

In order to encapsulate one XML message within another the addition data section would have to use an XML CDATA encoding to prevent the parser from attempting to process the contents.

Message rejections may use any of the following list of error codes to indicate the reason for failure. Institutions may define their own additional error codes in the numeric range provided for user errors.

Level 100: Message transport and delivery problems

  • 100: Default transport error code
  • 101: Transport unavailable
  • 102: Unknown recipient/destination
  • 103: Delivered to wrong recipient
  • 104: Timeout - message delivered past expiration
  • 105: This type of message not accepted on this transport
  • 106: Message generation problem (e.g. data conversion)
  • 110: Message corrupted (e.g. CRC failure)
  • 111: Message text doesn't match digital signature hash

Level 200: Message Integrity and Processing problems

  • 200: Default message processing error code
  • 201: Lexical problem - not well-formed XML
  • 202: Unsupported character set
  • 203: Empty or missing content
  • 204: Content too large
  • 210: System unavailable
  • 211: Message component text doesn't match digital signature hash

Level 300: Message Validation Problems

  • 300: Default validation error code
  • 301: Unknown or unsupported DTD/Schema
  • 302: Unsupported FpML version
  • 303: Invalid FpML message - message doesn't validate w.r.t. specified DTD/schema
  • 304: Validation failure - unsupported message type
  • 305: Validation failure - mandatory FpML rule (a rule we say must always be followed)
  • 306: Validation failure - master agreement rule (a rule 2 parties agree to follow)
  • 307: Validation failure - business policy (a rule that only the recipient has)
  • 308: Validation failure - unsupported product/asset
  • 310: Signature required - message content must be signed
  • 311: Signature not accepted - problem with message signer (cert revoked, unacceptable principal, etc.)

Level 400: Business Process/Workflow Problems

  • 400: Default business process error code
  • 401: Don't know - unrecognized trade
  • 402: Suitability - trade can't be done for client or dealer suitability reasons
  • 403: Credit - trade can't be done for credit reasons
  • 404: Not interested - recipient chooses not to respond
  • 410: Message arrived too late - e.g. trade no longer exists
  • 411: Message expired - message arrived on time, but a response was not generated in time

Level 500: User Defined

3.3 The Confirmation Business Processes

3.3.1 B2B Trade Affirmation

Within the context of FpML, trade affirmation is considered to be a notification of trade execution. An affirmation message may be sent internally or externally after the trade negotiation has completed. At this point the trade may not have been legally confirmed between the two principal parties. Trade affirmations may also be sent by a third party, e.g. a broker, to the principal parties involved.

3.3.1.1 The Affirmation Process

There are a few basic patterns that are used in the industry today for delivery of trade affirmation messages. In all cases the workflow is basically the same. That is, a notification message is sent from a trading system (either an internal/external system or broker) followed by an acknowledgement of receipt (response message) from the message receiver. Acknowledgement of receipt is used to complement the asynchronous nature of the affirmation message and to assure that the message is not deleted from the originating system prior to being persisted in the destination system.

The following sequence diagram illustrates the process for one side of a bilateral affirmation. Both parties to the trade may be executing this process to obtain an affirmation from each other.

images/messaging/BilateralTradeAffirmation.gif

The affirmation message typically contains the same information that is contained in a trade confirmation message. Some details, such as settlement information, could be omitted if it is unknown to the affirmation sender. The following diagram shows the content model for a 'TradeAffirmation' message.

images/messaging/tradeAffirmation.png

The response to the affirmation message indicates its acceptance and indicates the transaction to which it applies. The content model for it is as follows:

images/messaging/tradeAffirmed.png

If the trade affirmation is being generated by a third party, such as a broker, then affirmation could be sought from one side and then the other, or from both simultaneously as shown in the following diagram.

images/messaging/TrilateralTradeAffirmation.gif

The data content of the messages is the same as in the bilateral case.

3.3.2 B2B Trade Confirmation

Today the procedure for achieving trade confirmation is manual for most OTC derivative transactions. Principally this is because the information describing the economic and legal liabilities of the transaction are embedded within a native text document and set amongst legal wording. A skilled human reader is needed to extract and compare the relevant information to determine if it matches the bank's own definition of the same deal.

This section describes how the process of trade confirmation for OTC derivatives might be achieved electronically through the exchange of a sequence of 'messages' between the two parties' computer systems. This can only take place if the parties involved have identified and 'marked-up' the salient details of the transaction using a common vocabulary of terms and data structure, such as those provided by the FpML product definitions.

3.3.2.1 The Confirmation Process

There are two common styles for trade confirmation used by the finance industry today:

  • Bilateral confirmation models the current manual process where one party (the confirmation requester) creates a legal definition of the trade, signs it and sends it to the other party (the confirmation provider) who checks and then countersigns the document and returns it.

images/messaging/BilateralConfirmation.gif
  • This countersigned document becomes the legally binding definition from the transaction once it has been acknowledged back to the requester.

    Both parties might be attempting to obtain a confirmation from the other with this method at the same time.

  • Trilateral confirmation involves both parties to a trade each generating and sending a copy of the agreed upon trade to an independent third party. When the third party determines that two trades match it sends an identical trade representation to both parties to confirm the match.

images/messaging/TrilateralConfirmation.gif
  • The trade description generated by the confirming service becomes the legally binding trade representation.

3.3.2.2 The Matching Process

Matching and comparison are central to confirmation process. In basic terms the matching operation is carried out as follows.

Each new request to confirm a trade results in a search of the system's set of currently unmatched trades to determine if a viable match exists. A trade is comprised of a set of data items that describe its properties and each one of these in turn falls into one of following three categories:

  • Identifying financial items that, if present, must exactly (or within tolerance) match (e.g. common trade identifier, trade date, maturity, product type, currencies, notional amounts, parties, etc.).
  • Non-identifying items that should exactly (or within tolerance) match (e.g. business centers, date roll conventions, etc.).
  • Items irrelevant to the matching process (e.g. comments).

As a result of the matching process a trade is said to be:

  • Matched - If all identifying and non-identifying items agree.
  • Mismatched - If all identifying items agree but the non-identifying items differ.
  • Unmatched - No match on identifying items could be found.

If a trade is matched then both descriptions of a trade are fully reconciled and the parties can agree that it is confirmed. If the trades contain identification information that shows that they should have matched but other significant details differ then the trade is mismatched.

If no match was found then the system must assume that it is yet to receive a copy of the trade from the other party and should add it to the set of unmatched trades and wait for the next request.

Some additional actions are required to prevent trades remaining unmatched indefinitely. There are two cases that can give rise to this situation:

  • The counterparty failed to enter and send his definition of the transaction (so no counter-trade exists in the system).
  • The counterparty incorrectly identified the true party (in which case a counter-trade exists but will never match).

To attempt to recover from both cases after a trade has remained unmatched for a period of time, the system should send a message to the alleged counterparty in order to provoke them into investigating whether they need to send a new trade or correct an existing unmatched trade.

If after an additional time period the trade still remains unmatched, it should be returned as failed.

3.3.2.3 Bilateral Confirmation

The following sections illustrate the end-to-end sequence of message exchanges required to confirm a transaction directly between two parties and the various outcomes that are possible.

3.3.2.3.1 Normal Operation

Under normal operation we would expect a match to be found as soon as both the internally and externally generated copies of the trade are submitted to the confirmation engine.

images/messaging/BilateralNormalOperation.gif

Following a trade negotiation each side generates a 'RequestTradeConfirmation' message which is sent to the confirmation provider's system. These requests are used to initiate a trade matching operation. The structure of the request message is shown below.

images/messaging/requestTradeConfirmation.png

If the request is valid then the trade is passed to the matching engine for processing. The 'RequestTradeMatch' message needs the same basic data content as the confirmation request message.

images/messaging/requestTradeMatch.png

When a match is found the associated notification message needs to identify the two trades (via their identifiers) to the participants.

images/messaging/tradeMatched.png

To finish the process the confirmation requestor confirms his acceptance of the match by issuing a 'ConfirmTrade' message that contains a reference to the matched trade.

images/messaging/confirmTrade.png

The final notification of the confirmation provider reiterates the legally binding definition of the trade.

images/messaging/tradeConfirmed.png

If the request contains the details for a transaction which has already been processed by the confirmation service then a number of possible errors can result in response to the request:

  • If a request to confirm the same trade was made previously and the trade is currently unmatched or mismatched, then the service should reply with a 'TradeAlreadySubmitted' message.

images/messaging/BilateralAlreadySubmitted.gif
  • The 'TradeAlreadySubmitted' message has the following content model:

images/messaging/tradeAlreadySubmitted.png
  • If a request to confirm the same trade was made previously and the trade was successfully matched, then the service should reply with a 'TradeAlreadyMatched' message.

images/messaging/BilateralAlreadyMatched.gif
  • The 'TradeAlreadyMatched' message has the following content model:

images/messaging/tradeAlreadyMatched.png
3.3.2.3.2 Mismatch

If a mistake has occurred in the generation of one trade confirmation request it is possible that the system can detect that two trades should have matched (e.g. they contain a common unique trade identifier) but that they cannot due to significant differences.

images/messaging/BilateralMismatch.gif

The confirmation system keeps trades in its pool following the mismatch notification to allow a subsequent correction or cancellation to be applied to the trade.

The 'TradeMismatched' notification must contain the participants trade identifier as well as the identifier for the counter-trade that it should have matched, together with any other potential matches.

images/messaging/tradeMismatched.png
3.3.2.3.3 Confirmation Correction

Whilst a trade is unconfirmed the requesting party may send new copies of the transaction data to replace the original trade details. The data content of the replacing transaction should match the same requirements as those for initiation. Transactions must be fully re-specified (rather than just the incremental differences). The content model for the 'ModifyTradeConfirmation' message which requests this is as follows:

images/messaging/modifyTradeConfirmation.png

There are a number of scenarios that can result in the processing of such messages:

  • The confirmation system may not be able to locate the original trade description to be modified.

images/messaging/BilateralModifyTradeNotFound.gif
  • The generated 'TradeNotFound' message contains the identifier for the trade the system was unable to find.

images/messaging/tradeNotFound.png
  • The modification may be accepted and propagated to the matching engine but the trade remains unmatched.

images/messaging/BilateralModifyUnmatched.gif
  • As with the initial matching request the 'ModifyTradeMatch' message contains a full copy of the trade.

images/messaging/modifyTradeMatch.png
  • The modification may be accepted and propagated to the matching engine resulting in a mismatched trade.

images/messaging/BilateralModifyMismatch.gif
  • The modification may be accepted and propagated to the matching engine resulting in a matched trade.

images/messaging/BilateralModifyMatch.gif
3.3.2.3.4 Confirmation Cancellation

Whilst a trade is unconfirmed the requesting party may ask the entire confirmation action to be cancelled. The cancellation message needs only to contain the information necessary to identify the transaction it affects and must match a currently unconfirmed transaction.

images/messaging/cancelTradeConfirmation.png

As in earlier cases there are a number of possible processing scenarios depending on the state of the trade within the confirmation system, namely:

  • If the cancellation applies to a trade that can not be located, then the sequence of messages is as follows:

images/messaging/BilateralCancelTradeNotFound.gif
  • If the cancellation applies to an existing unmatched trade then, it generates the following messages:

images/messaging/BilateralConfirmationCancelled.gif
  • Once the confirmation system has identified the trade as unmatched it must request that the matching system remove the trade from its storage. This is done through a 'CancelTradeMatch' message.

images/messaging/cancelTradeMatch.png
  • The response to the confirmation requester completes the process by acknowledging that the confirmation request is cancelled.

images/messaging/confirmationCancelled.png
  • If the cancellation applies to a trade which has already been matched, then the message flow is as follows:

images/messaging/BilateralCancelTradeAlreadyMatched.gif
3.3.2.3.5 Alleged

When the confirmation provider detects an unmatched trade that has been outstanding for a period of time, it sends a copy of the transaction to the indicated counterparty. The trade is not removed from the unmatched trade set so that a subsequent new trade confirmation or modification request may match against the trade.

images/messaging/BilateralTradeAlleged.gif

The 'TradeAlleged' message must provide the identification information for the transaction that is alleged against the counterparty. A confirmation service might provide additional information to suggest current unmatched trades that might be a counter transaction.

images/messaging/tradeAlleged.png
3.3.2.3.6 Unmatched

A request for trade confirmation that remains unmatched, even after alleged trade processing, for a length of time, should be returned to the requester within a message indicating a failure to match.

images/messaging/BilateralTradeUnmatched.gif

The 'TradeUnmatched' notification contains identification information for the unmatched trade and may contain suggestions for possible counter trades.

images/messaging/tradeUnmatched.png
3.3.2.4 Trilateral Confirmation

This section illustrates some processes in action with a third party performing the matching process. In general the sequence of requests and responses is the same as in the bilateral case and there are no additional trilateral specific message types.

3.3.2.4.1 Normal Operation

As before the confirmation process is begun when the trading parties send a description of the trade to the confirmation system, now external to both parties.

images/messaging/TrilateralNormalOperation.gif

The presence of the third party allows the match to be taken as legally binding and it is automatically considered confirmed without the need for any further messages.

If the request contains the details of a transaction that has already been processed by the conformation service then a number of possible errors can result from the request, namely:

  • If the trade has already been submitted and is currently unmatched or mismatched the service should reply with a 'TradeAlreadySubmitted' message.

images/messaging/TrilateralAlreadySubmitted.gif
  • If the trade has already been processed and has been matched, then the service should reply with a 'TradeAlreadyMatched' message.

images/messaging/TrilateralAlreadyMatched.gif
3.3.2.4.2 Mismatch

The message pattern for the detection of a mismatch is the same as in the bilateral processing case.

images/messaging/TrilateralMismatch.gif
3.3.2.4.3 Confirmation Correction

As in the bilateral case either party can request that the details of an unmatched trade be replaced with a new definition. The series of scenarios are identical to the bilateral cases.

  • If no corresponding trade can be found in the confirmation system then a 'TradeNotFound' messages is generated.

images/messaging/TrilateralModifyTradeNotFound.gif
  • The modification may be accepted and propagated to the matching engine but the trade remains unmatched.

images/messaging/TrilateralModifyUnmatched.gif
  • The modification may be accepted and propagated to the matching engine resulting in a mismatched trade.

images/messaging/TrilateralModifyMismatch.gif
  • The modification may be accepted and propagated to the matching engine resulting in a matched trade.

images/messaging/TrilateralModifyMatch.gif
3.3.2.4.4 Confirmation Cancellation

As in the bilateral case either party can request that the confirmation processing for an unmatched trade be suspended and the trade definition removed from the set of unmatched trades.

  • If the cancellation applies to a trade that can not be located, then the sequence of messages is as follows:

images/messaging/TrilateralCancelTradeNotFound.gif
  • If the cancellation applies to an existing unmatched trade, then it generates the following messages:

images/messaging/TrilateralConfirmationCancelled.gif
  • If the cancellation applies to a trade which has already been matched, then the message flow is as follows:

images/messaging/TrilateralCancelTradeAlreadyMatched.gif
3.3.2.4.5 Alleged

The process of notifying a counterparty of an alleged trade is exactly the same as in the bilateral case.

images/messaging/TrilateralTradeAlleged.gif
3.3.2.4.6 Unmatched

As in the bilateral case any trades that remain unmatched, even after alleged trade processing has been attempted, are eventually removed from the unmatched trade set.

images/messaging/TrilateralTradeUnmatched.gif

3.4 The Post-Trade Business Processes

3.4.1 The Novation Process

Scenario:

Institutions ABC (the ‘transferor’) and DEF (the ‘remaining party’) have previously negotiated and confirmed a transaction of some kind. ABC now decides that it would like to novate all or part of the transaction to a third party XYZ (the ‘transferee’).

The following diagrams assume direct and reliable communication between all of the parties (possibly through some central hub).

3.4.1.1 Phase 1: Consent and Negotiation

Before a novation can take place all the parties must give consent to the transfer of rights and liabilities. As the transferor is the initiator of the novation they should be the party that sends the initial messages.

The key problem is one of ensuring that all parties are aware of the acceptance or non-acceptance of their counterparts. The transferor could contact each in turn to request their consent but a more elegant solution to use multiple ‘sendTo’ and ‘copyTo’ facilities of the message header to pass requests and responses between all parties simultaneously.

A ‘NovationConsentRequest’ message passes details of the previously negotiated transaction that the transferor wishes to novate as well as describing the identity and roles of each party. As the same message is sent to both the transferee and remaining party it must contain the complete description of the underlying transaction (rather than just a reference) as the transferee will have no record of it.

images/messaging/SuccessfulNovationConsent.jpg

Figure 1 (above) Successful Novation Consent

The XML model of the ‘NovationConsentRequest’ would look as follows.

images/messaging/novationConsentRequest.png

images/messaging/novation.png

The required ‘transferor’, ‘transferee’, and ‘remainingParty’ elements, with the optional ‘otherRemainingParty’ element, indicate the roles in the transaction by providing references to the ‘party’ elements.

The optional ‘otherRemainingParty’ element is not applicable in a three-way novation and should be omitted. In a four-way novation the party referenced is Transferee 2. Transferee 2 means a party which accepts by way of novation the rights, liabilities, duties and obligations of Transferor 2. ISDA 2004 Novation Term: Transferee 2 (four-way novation).

The ‘oldTransaction’ indicates the original trade between the transferor and the remaining party. This can alternately be represented by the ‘oldTransactionReference’. The ‘newTransaction’ indicates the new trade between the transferor and the remaining party (for a 3-way novation) or other remaining party (for a 4-way novation). This can alternately be represented by 'newTransactionReference'.

The ‘novationDate' is the date on which the rights, obligations etc. transfer between the parties. The 'novationTradeDate' is the date on which the parties agree that they will novate. If a 'novationTradeDate' is not specified, the 'novationTradeDate' will be deemed to be the 'novationDate'. The ‘novatedAmount’ (or ‘novatedNumberOfOptions’) by validation rule must be of the same currency and equal to or less than the appropriate notional amount in the product element within the ‘oldTransaction’ between the transferor and the remaining party.

The 'fullFirstCalculationPeriod’ is of type boolean. If its value is 'true', ‘fullFirstCalculationPeriod’ has the implicit value of “applicable” as detailed in the ISDA novation agreement. On the other hand, if its value is 'false', it has the implicit value of "inapplicable".

The 'firstPeriodStartDate' with respect to the Transferee and Remaining Party is included in the Novations message to be able to make sense of the “new transaction” without requiring reference back to the “old transaction”. The 'href' attribute references the relevant party that is making the payments

The 'nonReliance' element corresponds to the non-Reliance section in the 2004 ISDA Novation Definitions, section 2.1 (c) (i). The element appears in the instance document when non-Reliance is applicable

The 'creditDerivativesNotices' element should be specified if one or more of either a Credit Event Notice, Notice of Publicly Available Information, Notice of Physical Settlement or Notice of Intended Physical Settlement, as applicable, has been delivered by or to the Transferor or the Remaining Party. The type of notice or notices that have been delivered should be indicated by setting the relevant boolean element value(s) to true.

The absence of the 'creditDerivativesNotices' element means that no Credit Event Notice, Notice of Publicly Available Information, Notice of Physical Settlement or Notice of Intended Physical Settlement, as applicable, has been delivered by or to the Transferor or the Remaining Party.

If the receiving party agrees with the novation then they should respond with a ‘NovationConsentGranted’ message. The Transferor or the Transferee may include the details of a payment representing the market value of the transaction.

Since the Novation transaction itself is governed by one or more ISDA contractual definitions and supplements these are specified within the Novation structure with the following two elements: 'contractualDefinitions' and 'contractualSupplements'.

For example, for an IRS novation this will typically reference the 2004 ISDA Novation Definitions and the 2000 ISDA Definitions. For Credit Derivatives it references the 2004 ISDA Novation Definitions, the 2003 ISDA Credit Derivatives Definitions and the May Supplement. So for interest rate products, the following values might be specified:

<novation>
		...
		<contractualDefinitions>ISDA2004Novation</contractualDefinitions>
		<contractualDefinitions>ISDA2000</contractualDefinitions>
		 ...
</novation>
                                        

And for credit derivatives, the following values might be specified:

<novation>
		...
		<contractualDefinitions>ISDA2004Novation</contractualDefinitions>
		<contractualDefinitions>ISDA2003Credit</contractualDefinitions>
		<contractualSupplement>ISDA2003CreditMay2003</contractualSupplement>
		...
</novation>
                                        

images/messaging/novationConsentGranted.png

If the transferee or remaining party choose not to perform the requested novation then they can respond with a ‘NovationConsentRefused’ message.

images/messaging/novationConsentRefused.png

The use of this message results in three possible message flows in the case of refusal (e.g. transferee refuses, remaining party refuses or both refuse). In all cases all of the parties are aware of the outcome and can continue processing appropriately.

images/messaging/UnsuccessfulNovationConsentRemainingParty.jpg

Figure 2 (above) Unsuccessful Novation Consent (Remaining Party Refuses)

images/messaging/UnsuccessfulNovationConsentTransferee.jpg

Figure 3 (above) Unsuccessful Novation Consent (Transferee Refuses)

images/messaging/UnsuccessfulNovationConsentBothParties.jpg

Figure 4 (above) Unsuccessful Novation Consent (Both Parties Refuse)

At end of the process each party should be aware of consent status of the others. Once the transferor has received two; NovationConsentGranted’ messages and has assessed the payment terms specified by the transferee they may either begin the actual novation or request an alternative novation consent with another transferee.

All of the messages exchanged during the negotiation may have passed through an intermediary (such as a confirmation provider) who may monitor message flow, but who plays no part in the initial discovery stage.

3.4.1.2 Transfer of Rights and Obligations

Once all parties have consented to novate a transaction a message from any of the parties may start the transfer process.

The novation process closely resembles that for trade matching and confirmation however there are two underlying transactions that must both be matched for the novation as a whole to be confirmed.

  • The transferor and remaining party must agree on the details of the old transaction
  • The transferee and remaining party must agree on the details of the new transaction
  • Transferor and transferee need to agree on the payment

A novation is considered confirmed when all three parties have submitted a valid ‘RequestNovationConfirmation’ message containing matching transaction descriptions. Any of the parties may initiate the matching process by sending their message first.

images/messaging/requestNovationConfirmation.png

images/messaging/novation.png

The data content of this message varies according to the sender, specifically:

  • The transferor will provide only the old transaction details (or old transaction identifier) and possible payment details if to the transferee
  • The transferee will provide only the new transaction details and possible payment details if to the transferor
  • The remaining party will provide both the old and new transaction details.

The XML grammar for this message does not enforce this content model, rather it is intended to be asserted by a validation rule.

The sequence of processing and messages generated by a confirmation system in response to a request for confirmation will vary according to the order of their arrival from the parties. The diagram ‘Novation model 1’ shows an example of the flows assuming that remaining party sends first followed by the transferor and finally the transferee.

Similar to the trade confirmation process, first request generates ‘NovationAlleged’ messages to inform the other parties that a novation process has been started. Once a party has sent in its confirmation request it receives status notifications until either confirmation is achieved or the process is aborted.

The main difference being that for trade confirmation the alleged messages are only sent after a timeout period.

images/messaging/NovationModel1.jpg

Novation model 1(above)

images/messaging/NovationModel2.jpg

Novation model 2 (above): Order as per original Trade Confirmation

The following diagrams show the model for each status message:

NovationAlleged Message:

images/messaging/novationAlleged.png

NovationMatched Message:

images/messaging/novationMatched.png

NovationConfirmed Message

images/messaging/novationConfirmed.png

The following items are not specifically addressed in the examples above:

  • The matching of the payment details
  • The error conditions

3.4.2 Terminations

The Termination representation in FpML is used for decreasing the notional value of a trade or fully terminating the trade.

images/messaging/termination.png

images/messaging/PartialTerminationAmount.png

The trade element allows the details of the underlying trade to be specified. Alternately, the tradeReference can be used to reference the previously confirmed trade. The terminationTradeDate is the date on which the the parties enter into the termination transaction. The terminationEffectiveDate is the date on which the termination becomes effective.

To indicate a full termination the “full” element is used. Alternately, for partial terminations the “partial” element is used. Depending on the type of product, the amount of the decrease is specified in the decreaseInNotionalAmount or decreaseInNumberOfOptions elements. Similarly, the outstanding amount of the trade after the partial termination is specified in the outstandingNotionalAmount or outstandingNumberOfOptions elements.

A payment for the right of termination may occur.

3.4.2.1 Confirmation Messages

FpML defines a request and a notification message for confirming Terminations:

images/messaging/requestTerminationConfirmation.png

images/messaging/terminationConfirmed.png

RequestTerminationConfirmation is used for requesting that the contained termination be put forward for matching and confirmation.The TerminationConfirmed (notification) message is generated when a Termination is determined to be confirmed.

3.4.3 Increases

The Increase representation in FpML is used for increasing the notional amount of a trade.

images/messaging/increase.png

The trade element allows the details of the underlying trade to be specified. Alternately, the tradeReference can be used to reference the previously confirmed trade. The increaseTradeDate is the date on which the parties enter into the increase transaction. The increaseEffectiveDate is the date on which the increase becomes effective.

Depending on the type of product, the amount of the increase is specified in the increaseInNotionalAmount or increaseInNumberOfOptions elements. Similarly, the outstanding amount of the trade after the increase is specified in the outstandingNotionalAmount or outstandingNumberOfOptions elements.

A payment for the right of increase may occur.

3.4.3.1 Confirmation Messages

FpML defines a request and a notification message for confirming Increases:

images/messaging/requestIncreaseConfirmation.png

images/messaging/increaseConfirmed.png

RequestIncreaseConfirmation is used for requesting that the contained increase be put forward for matching and confirmation.The IncreaseConfirmed (notification) message is generated when an Increase is determined to be confirmed.

3.4.4 Amendments

The Amendment representation in FpML is used for amending the terms of a trade.

images/messaging/amendment.png

The trade element is used to represent the details of the amended trade. (Note that the use of tradeReference is insufficient for providing the amended trade details and is not allowed.) The amendmentTradeDate is the date on which the parties enter into the amendment transaction. The amendmentEffectiveDate is the date on which the amendment becomes effective.

A payment for the right of amendment may occur.

3.4.4.1 Confirmation Messages

FpML defines a request and a notification message for confirming Amendments:

images/messaging/requestAmendmentConfirmation.png

images/messaging/amendmentConfirmed.png

RequestAmendmentConfirmation is used for requesting that the contained amendment be put forward for matching and confirmation.The AmendmentConfirmed (notification) message is generated when an Amendment is determined to be confirmed.

3.5 B2B General Processes

3.5.1 Trade Status Enquiry

At a number of points in the confirmation process it is possible that one or the other or both parties to a transaction received an unexpected error message from the other or the central service.

In order to determine the correct course of action to recover from such an error the participants need to determine the perceived state of their transaction within the other party's systems. This indicates that a simple status enquiry operation would be required to recover the necessary information.

images/messaging/GeneralTradeStatus.gif

For efficiency the trade status enquiry message should allow more than one transaction to be checked at a time (e.g. all outstanding unmatched trades, etc.). Its content model is as follows:

images/messaging/requestTradeStatus.png

The response message returns each identifier with a suitable status code value (i.e. unmatched, matched, confirmed, not known, etc.).

images/messaging/tradeStatus.png
Previous Top Next