# Trade model: MMRFS

This page describes the FX Integration API's **MMRFS** trade model, as defined in the file `config/TradingAdapter/Blade/DataSource/etc/trademodels.xml` in the FX Integration API Kit.

This documentation is for the FX Integration API 12.10.0.

Trade models are XML-defined state machines used by the [Java Trading API](https://docs.caplin.com/developer/api/trading_java/latest/) and Caplin Trader's [Trading API](../caplin-trader/4/trading-api/index.md) to manage trading workflows. For more information on trade model XML definitions, see the [Trade model XML schema](../caplin-platform/cis/cis-trade-model-schema.md) reference.

## State model

The MMRFS trade model's state model in Mermaid JS format:

```mermaid
%% State diagram for the MMRFS trade model
stateDiagram-v2
    [*] --> Initial
    Initial --> Submitted : Submit (client)
    Submitted --> Error : Error (server)
    Submitted --> Queued : SubmitAck (server)
    Submitted --> TradeConfirmed : TradeConfirmation (server)
    Submitted --> Rejected : Reject (server)
    Submitted --> ClientCloseSent : ClientClose (client)
    Error --> [*] 
    Queued --> Expired : Expire (server)
    Queued --> ClientCloseSent : ClientClose (client)
    Queued --> PickedUp : PickUp (server)
    Queued --> Rejected : Reject (server)
    Queued --> Error : Error (server)
    Queued --> Error : Execute (client)
    Expired --> [*] 
    ClientCloseSent --> ClientClosed : ClientCloseAck (server)
    ClientClosed --> [*] 
    PickedUp --> Rejected : Reject (server)
    PickedUp --> Queued : Hold (server)
    PickedUp --> Executable : PriceUpdate (server)
    PickedUp --> ClientCloseSent : ClientClose (client)
    PickedUp --> Error : Execute (client)
    Rejected --> [*] 
    Executable --> Error : Error (server)
    Executable --> Rejected : Reject (server)
    Executable --> Expired : Expire (server)
    Executable --> ExecuteSent : Execute (client)
    Executable --> Executable : PriceUpdate (server)
    Executable --> Submitted : Resubmit (client)
    Executable --> ClientCloseSent : ClientClose (client)
    Executable --> PickedUp : Withdraw (server)
    ExecuteSent --> Executed : ExecuteAck (server)
    ExecuteSent --> Rejected : Reject (server)
    ExecuteSent --> ExecuteSent : PriceUpdate (server)
    ExecuteSent --> WarningSent : Warning (server)
    ExecuteSent --> Error : Error (server)
    ExecuteSent --> Error : Hold (server)
    ExecuteSent --> Error : Withdraw (server)
    Executed --> Error : Error (server)
    Executed --> Rejected : Reject (server)
    Executed --> Expired : Expire (server)
    Executed --> TradeConfirmed : TradeConfirmation (server)
    TradeConfirmed --> [*] 
    WarningSent --> AcceptWarningSent : AcceptWarning (client)
    WarningSent --> Executable : RejectWarning (client)
    WarningSent --> ClientCloseSent : ClientClose (client)
    WarningSent --> Error : Withdraw (server)
    WarningSent --> Error : Error (server)
    AcceptWarningSent --> Executed : AcceptWarningAck (server)
    AcceptWarningSent --> Error : Error (server)
```

The MMRFS trade model's state model in a flat state-transition matrix:

| Source state | Event trigger | Origin | Target state |
| ------------ | ------------- | ------ | ------------ |
| [*] | - | - | Initial |
| Initial | Submit | client | Submitted |
| Submitted | Error | server | Error |
| Submitted | SubmitAck | server | Queued |
| Submitted | TradeConfirmation | server | TradeConfirmed |
| Submitted | Reject | server | Rejected |
| Submitted | ClientClose | client | ClientCloseSent |
| Error | - | - | [*] |
| Queued | Expire | server | Expired |
| Queued | ClientClose | client | ClientCloseSent |
| Queued | PickUp | server | PickedUp |
| Queued | Reject | server | Rejected |
| Queued | Error | server | Error |
| Queued | Execute | client | Error |
| Expired | - | - | [*] |
| ClientCloseSent | ClientCloseAck | server | ClientClosed |
| ClientClosed | - | - | [*] |
| PickedUp | Reject | server | Rejected |
| PickedUp | Hold | server | Queued |
| PickedUp | PriceUpdate | server | Executable |
| PickedUp | ClientClose | client | ClientCloseSent |
| PickedUp | Execute | client | Error |
| Rejected | - | - | [*] |
| Executable | Error | server | Error |
| Executable | Reject | server | Rejected |
| Executable | Expire | server | Expired |
| Executable | Execute | client | ExecuteSent |
| Executable | PriceUpdate | server | Executable |
| Executable | Resubmit | client | Submitted |
| Executable | ClientClose | client | ClientCloseSent |
| Executable | Withdraw | server | PickedUp |
| ExecuteSent | ExecuteAck | server | Executed |
| ExecuteSent | Reject | server | Rejected |
| ExecuteSent | PriceUpdate | server | ExecuteSent |
| ExecuteSent | Warning | server | WarningSent |
| ExecuteSent | Error | server | Error |
| ExecuteSent | Hold | server | Error |
| ExecuteSent | Withdraw | server | Error |
| Executed | Error | server | Error |
| Executed | Reject | server | Rejected |
| Executed | Expire | server | Expired |
| Executed | TradeConfirmation | server | TradeConfirmed |
| TradeConfirmed | - | - | [*] |
| WarningSent | AcceptWarning | client | AcceptWarningSent |
| WarningSent | RejectWarning | client | Executable |
| WarningSent | ClientClose | client | ClientCloseSent |
| WarningSent | Withdraw | server | Error |
| WarningSent | Error | server | Error |
| AcceptWarningSent | AcceptWarningAck | server | Executed |
| AcceptWarningSent | Error | server | Error |

## Event message specifications

This section describes the messages sent between client and server when a state-model event occurs. The origin of an event (the client or the server) is specified in brackets after the name of the event.

The specification of some events depends on the type of financial product being traded, and when this applies, the variant specifications are detailed under level-4 headings.

Back-end developers build server events by using classes in the Caplin's FX Integration API, a Java library that makes it easy to provide data to Caplin's web applications. Where appropriate, the specifications below include references to JavaDoc documentation and code examples.

### Event: AcceptWarning (client)

Message specification:

```json
{
  "trade_model_name": "MMRFS",
  "trade_model_trigger": "AcceptWarning",
  "message_origin": "client",
  "fields": [
    {
      "name": "MsgType",
      "type": "String",
      "flags": "",
      "definition": "Name of the transition",
      "example_value": "AcceptWarning",
      "deprecated": false
    },
    {
      "name": "RequestID",
      "type": "String",
      "flags": "",
      "definition": "The RequestID. A Unique identifier, must remain the same for each event in the trade model",
      "example_value": "",
      "deprecated": false
    }
  ]
}
```

### Event: ClientClose (client)

Message specification:

```json
{
  "trade_model_name": "MMRFS",
  "trade_model_trigger": "ClientClose",
  "message_origin": "client",
  "fields": [
    {
      "name": "MsgType",
      "type": "String",
      "flags": "",
      "definition": "Name of the transition",
      "example_value": "ClientClose",
      "deprecated": false
    },
    {
      "name": "RequestID",
      "type": "String",
      "flags": "",
      "definition": "The RequestID. A Unique identifier, must remain the same for each event in the trade model",
      "example_value": "",
      "deprecated": false
    }
  ]
}

### Event: Execute (client)

Message specification:

```json
{
  "trade_model_name": "MMRFS",
  "trade_model_trigger": "Execute",
  "message_origin": "client",
  "parts": [
    {
      "part_name": "Execution",
      "parts": [
        {
          "part_name": "SettlementLeg",
          "fields": [
            {
              "name": "Un_PaySettlementId",
              "type": "",
              "flags": "",
              "definition": "The Id corresponding to the payee's settlement details.",
              "example_value": "",
              "deprecated": false
            },
            {
              "name": "Un_PaySettlementRemarks",
              "type": "",
              "flags": "",
              "definition": "The remarks corresponding to the payee's settlement details.",
              "example_value": "",
              "deprecated": false
            },
            {
              "name": "Un_PaySettlementInstructionType",
              "type": "",
              "flags": "",
              "definition": "The type of settlement instruction on the pay side.",
              "example_value": "",
              "deprecated": false
            },
            {
              "name": "Un_ReceiveSettlementId",
              "type": "",
              "flags": "",
              "definition": "The Id corresponding to the recipient's settlement details.",
              "example_value": "",
              "deprecated": false
            },
            {
              "name": "Un_ReceiveSettlementRemarks",
              "type": "",
              "flags": "",
              "definition": "The remarks corresponding to the recipient's settlement details.",
              "example_value": "",
              "deprecated": false
            },
            {
              "name": "Un_ReceiveSettlementInstructionType",
              "type": "",
              "flags": "",
              "definition": "The type of settlement instruction on the receive side.",
              "example_value": "",
              "deprecated": false
            },
            {
              "name": "Un_ReceiveSettlementType",
              "type": "",
              "flags": "",
              "definition": "The type of settlement attached to a trade. Supported types are [PRINCIPAL, INTEREST].",
              "example_value": "",
              "deprecated": false
            }
          ]
        }
      ],
      "fields": [
        {
          "name": "QuoteID",
          "type": "string",
          "flags": "",
          "definition": "Unique id for a quote, used to determine which quote has been used for trade execution.",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "TradingType",
          "type": "string",
          "flags": "",
          "definition": "The type of the trade. Supported types are [LOAN, DEPOSIT, CALL-DEPOSIT, TERM-DEPOSIT, FLEXI-NOTICE-DEPOSIT, TREASURY-BILL or GOVERNMENT-BOND].",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "InterestRate",
          "type": "decimal",
          "flags": "",
          "definition": "Interest rate on the given PrincipalAmount.",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "InterestMargin",
          "type": "decimal",
          "flags": "",
          "definition": "Interest margin on the given InterestRate.",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "InterestAmount",
          "type": "decimal",
          "flags": "",
          "definition": "Interest amount (specified in the provided Currency) calculated from the interest rate and principal amount.",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "PrincipalPlusInterest",
          "type": "decimal",
          "flags": "",
          "definition": "Composite amount between principal amount and interest amount.",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "AppID",
          "type": "",
          "flags": "",
          "definition": "A unique identifier for the client application",
          "example_value": "",
          "deprecated": false
        }
      ]
    }
  ],
  "fields": [
    {
      "name": "MsgType",
      "type": "String",
      "flags": "",
      "definition": "Name of the transition",
      "example_value": "Execute",
      "deprecated": false
    },
    {
      "name": "RequestID",
      "type": "String",
      "flags": "",
      "definition": "The RequestID. A Unique identifier, must remain the same for each event in the trade model",
      "example_value": "",
      "deprecated": false
    }
  ]
}

### Event: RejectWarning (client)

Message specification:

```json
{
  "trade_model_name": "MMRFS",
  "trade_model_trigger": "RejectWarning",
  "message_origin": "client",
  "fields": [
    {
      "name": "MsgType",
      "type": "String",
      "flags": "",
      "definition": "Name of the transition",
      "example_value": "RejectWarning",
      "deprecated": false
    },
    {
      "name": "RequestID",
      "type": "String",
      "flags": "",
      "definition": "The RequestID. A Unique identifier, must remain the same for each event in the trade model",
      "example_value": "",
      "deprecated": false
    }
  ]
}

### Event: Resubmit (client)

Message specification:

```json
{
  "trade_model_name": "MMRFS",
  "trade_model_trigger": "Resubmit",
  "message_origin": "client",
  "parts": [
    {
      "part_name": "MMRFSSubmission",
      "parts": [
        {
          "part_name": "SettlementLeg",
          "fields": [
            {
              "name": "Un_PaySettlementId",
              "type": "",
              "flags": "",
              "definition": "The Id corresponding to the payee's settlement details.",
              "example_value": "",
              "deprecated": false
            },
            {
              "name": "Un_PaySettlementRemarks",
              "type": "",
              "flags": "",
              "definition": "The remarks corresponding to the payee's settlement details.",
              "example_value": "",
              "deprecated": false
            },
            {
              "name": "Un_PaySettlementInstructionType",
              "type": "",
              "flags": "",
              "definition": "The type of settlement instruction on the pay side.",
              "example_value": "",
              "deprecated": false
            },
            {
              "name": "Un_ReceiveSettlementId",
              "type": "",
              "flags": "",
              "definition": "The Id corresponding to the recipient's settlement details.",
              "example_value": "",
              "deprecated": false
            },
            {
              "name": "Un_ReceiveSettlementRemarks",
              "type": "",
              "flags": "",
              "definition": "The remarks corresponding to the recipient's settlement details.",
              "example_value": "",
              "deprecated": false
            },
            {
              "name": "Un_ReceiveSettlementInstructionType",
              "type": "",
              "flags": "",
              "definition": "The type of settlement instruction on the receive side.",
              "example_value": "",
              "deprecated": false
            },
            {
              "name": "Un_ReceiveSettlementType",
              "type": "",
              "flags": "",
              "definition": "The type of settlement attached to a trade. Supported types are [PRINCIPAL, INTEREST].",
              "example_value": "",
              "deprecated": false
            }
          ]
        }
      ],
      "fields": [
        {
          "name": "TOBOUser",
          "type": "string",
          "flags": "",
          "definition": "The client who the trade is for.",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "Account",
          "type": "string",
          "flags": "",
          "definition": "The used account for the trade.",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "PrincipalAmount",
          "type": "decimal",
          "flags": "",
          "definition": "The original amount that the trade was created with specified in the provided Currency.",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "Currency",
          "type": "string",
          "flags": "",
          "definition": "The currency in which the trade is made.",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "TradingType",
          "type": "string",
          "flags": "",
          "definition": "The type of the trade. Supported types are [LOAN, DEPOSIT, CALL-DEPOSIT, TERM-DEPOSIT, FLEXI-NOTICE-DEPOSIT, TREASURY-BILL or GOVERNMENT-BOND].",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "NumberOfDays",
          "type": "string",
          "flags": "",
          "definition": "The number of days between the start and maturity dates.",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "StartDate",
          "type": "date",
          "flags": "",
          "definition": "The start date of the trade.",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "StartTenor",
          "type": "string",
          "flags": "",
          "definition": "The start tenor of the trade.",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "MaturityDate",
          "type": "date",
          "flags": "",
          "definition": "The maturity date of the trade.",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "MaturityTenor",
          "type": "string",
          "flags": "",
          "definition": "The maturity tenor of the trade.",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "PaymentFrequency",
          "type": "string",
          "flags": "",
          "definition": "Interest payment frequencies for term deposits, this could be ZERO-COUPON, MONTHLY, QUARTERLY, SEMI-ANNUALLY or ANNUALLY.",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "Action",
          "type": "string",
          "flags": "",
          "definition": "Withdraw or deposit for Call Deposit.",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "CallAccount",
          "type": "string",
          "flags": "",
          "definition": "The account which is being withdrawn from or deposited to.",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "ShariaTrade",
          "type": "",
          "flags": "",
          "definition": "Boolean that describes whether a MM trade is a Sharia trade or not.",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "NoticePeriod",
          "type": "string",
          "flags": "",
          "definition": "The notice period for the trade.",
          "example_value": "32D",
          "deprecated": false
        },
        {
          "name": "AppID",
          "type": "",
          "flags": "",
          "definition": "A unique identifier for the client application",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "RequestID",
          "type": "String",
          "flags": "",
          "definition": "The RequestID. A Unique identifier, must remain the same for each event in the trade model",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "AssetClass",
          "type": "",
          "flags": "",
          "definition": "The asset class for the trade; used by permissioning and licensing.",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "TradingProtocol",
          "type": "",
          "flags": "",
          "definition": "The trade protocol, e.g, MMRFS or MMPostTrade. The Trading DataSource library needs this so that it knows which state model to use for the trade. Also used for permissioning.",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "MsgType",
          "type": "String",
          "flags": "",
          "definition": "The name of the transition",
          "example_value": "",
          "deprecated": false
        }
      ]
    }
  ]
}

### Event: Submit (client)

Message specification:

```json
{
  "trade_model_name": "MMRFS",
  "trade_model_trigger": "Submit",
  "message_origin": "client",
  "parts": [
    {
      "part_name": "MMRFSSubmission",
      "parts": [
        {
          "part_name": "SettlementLeg",
          "fields": [
            {
              "name": "Un_PaySettlementId",
              "type": "",
              "flags": "",
              "definition": "The Id corresponding to the payee's settlement details.",
              "example_value": "",
              "deprecated": false
            },
            {
              "name": "Un_PaySettlementRemarks",
              "type": "",
              "flags": "",
              "definition": "The remarks corresponding to the payee's settlement details.",
              "example_value": "",
              "deprecated": false
            },
            {
              "name": "Un_PaySettlementInstructionType",
              "type": "",
              "flags": "",
              "definition": "The type of settlement instruction on the pay side.",
              "example_value": "",
              "deprecated": false
            },
            {
              "name": "Un_ReceiveSettlementId",
              "type": "",
              "flags": "",
              "definition": "The Id corresponding to the recipient's settlement details.",
              "example_value": "",
              "deprecated": false
            },
            {
              "name": "Un_ReceiveSettlementRemarks",
              "type": "",
              "flags": "",
              "definition": "The remarks corresponding to the recipient's settlement details.",
              "example_value": "",
              "deprecated": false
            },
            {
              "name": "Un_ReceiveSettlementInstructionType",
              "type": "",
              "flags": "",
              "definition": "The type of settlement instruction on the receive side.",
              "example_value": "",
              "deprecated": false
            },
            {
              "name": "Un_ReceiveSettlementType",
              "type": "",
              "flags": "",
              "definition": "The type of settlement attached to a trade. Supported types are [PRINCIPAL, INTEREST].",
              "example_value": "",
              "deprecated": false
            }
          ]
        }
      ],
      "fields": [
        {
          "name": "TOBOUser",
          "type": "string",
          "flags": "",
          "definition": "The client who the trade is for.",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "Account",
          "type": "string",
          "flags": "",
          "definition": "The used account for the trade.",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "PrincipalAmount",
          "type": "decimal",
          "flags": "",
          "definition": "The original amount that the trade was created with specified in the provided Currency.",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "Currency",
          "type": "string",
          "flags": "",
          "definition": "The currency in which the trade is made.",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "TradingType",
          "type": "string",
          "flags": "",
          "definition": "The type of the trade. Supported types are [LOAN, DEPOSIT, CALL-DEPOSIT, TERM-DEPOSIT, FLEXI-NOTICE-DEPOSIT, TREASURY-BILL or GOVERNMENT-BOND].",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "NumberOfDays",
          "type": "string",
          "flags": "",
          "definition": "The number of days between the start and maturity dates.",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "StartDate",
          "type": "date",
          "flags": "",
          "definition": "The start date of the trade.",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "StartTenor",
          "type": "string",
          "flags": "",
          "definition": "The start tenor of the trade.",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "MaturityDate",
          "type": "date",
          "flags": "",
          "definition": "The maturity date of the trade.",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "MaturityTenor",
          "type": "string",
          "flags": "",
          "definition": "The maturity tenor of the trade.",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "PaymentFrequency",
          "type": "string",
          "flags": "",
          "definition": "Interest payment frequencies for term deposits, this could be ZERO-COUPON, MONTHLY, QUARTERLY, SEMI-ANNUALLY or ANNUALLY.",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "Action",
          "type": "string",
          "flags": "",
          "definition": "Withdraw or deposit for Call Deposit.",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "CallAccount",
          "type": "string",
          "flags": "",
          "definition": "The account which is being withdrawn from or deposited to.",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "ShariaTrade",
          "type": "",
          "flags": "",
          "definition": "Boolean that describes whether a MM trade is a Sharia trade or not.",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "NoticePeriod",
          "type": "string",
          "flags": "",
          "definition": "The notice period for the trade.",
          "example_value": "32D",
          "deprecated": false
        },
        {
          "name": "AppID",
          "type": "",
          "flags": "",
          "definition": "A unique identifier for the client application",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "RequestID",
          "type": "String",
          "flags": "",
          "definition": "The RequestID. A Unique identifier, must remain the same for each event in the trade model",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "AssetClass",
          "type": "",
          "flags": "",
          "definition": "The asset class for the trade; used by permissioning and licensing.",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "TradingProtocol",
          "type": "",
          "flags": "",
          "definition": "The trade protocol, e.g, MMRFS or MMPostTrade. The Trading DataSource library needs this so that it knows which state model to use for the trade. Also used for permissioning.",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "MsgType",
          "type": "String",
          "flags": "",
          "definition": "The name of the transition",
          "example_value": "",
          "deprecated": false
        }
      ]
    }
  ]
}




### Event: Submit (server)

Message specification:

```json
{
  "trade_model_name": "MMRFS",
  "trade_model_trigger": "AcceptWarningAck",
  "message_origin": "server"
}

### Event: ClientCloseAck (server)

Message specification:

```json
{
  "trade_model_name": "MMRFS",
  "trade_model_trigger": "ClientCloseAck",
  "message_origin": "server"
}

### Event: Error (server)

Message specification:

```json
{
  "trade_model_name": "MMRFS",
  "trade_model_trigger": "Error",
  "message_origin": "server"
}

### Event: ExecuteAck (server)

Message specification:

```json
{
  "trade_model_name": "MMRFS",
  "trade_model_trigger": "ExecuteAck",
  "message_origin": "server"
}

### Event: Expire (server)

Message specification:

```json
{
  "trade_model_name": "MMRFS",
  "trade_model_trigger": "Expire",
  "message_origin": "server"
}

### Event: Hold (server)

Message specification:

```json
{
  "trade_model_name": "MMRFS",
  "trade_model_trigger": "Hold",
  "message_origin": "server"
}

### Event: PickUp (server)

Message specification:

```json
{
  "trade_model_name": "MMRFS",
  "trade_model_trigger": "PickUp",
  "message_origin": "server"
}




### Event: PriceUpdate (server)

Message specification:

```json
{
  "trade_model_name": "MMRFS",
  "trade_model_trigger": "PriceUpdate",
  "message_origin": "server",
  "java_class": "com.caplin.generated.motif.mm.rates.QuoteTypesDef.Quote",
  "javadoc": "https://docs.caplin.com/developer/api/fxintegration/com/caplin/generated/motif/mm/rates/QuoteTypesDef.Quote.html",
  "instantiation_pattern": "Builder (via .newBuilder())",
  "code_example": "https://docs.caplin.com/developer/api/fxintegration/latest/com/caplin/examples/fxapi/generated/motif/mm/rates/QuoteTypesDef/QuoteExample.html",
  "parts": [
    {
      "part_name": "CommonFields",
      "java_class": "com.caplin.generated.motif.mm.rates.QuotePartsDef.CommonFields",
      "javadoc": "https://docs.caplin.com/developer/api/fxintegration/com/caplin/generated/motif/mm/rates/QuotePartsDef.CommonFields.html",
      "fields": [
        {
          "name": "LoanQuoteID",
          "type": "string",
          "flags": "",
          "definition": "Unique id for a loan quote, used to determine which quote has been used for trade execution.",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "DepositQuoteID",
          "type": "string",
          "flags": "",
          "definition": "Unique id for a deposit quote, used to determine which quote has been used for trade execution.",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "LoanInterestRate",
          "type": "decimal",
          "flags": "",
          "definition": "Interest rate on loaning the given PrincipalAmount.",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "InterestRateDPS",
          "type": "decimal",
          "flags": "",
          "definition": "The precision for a specified InterestRate.",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "DepositInterestRate",
          "type": "decimal",
          "flags": "",
          "definition": "Interest rate on depositing the given PrincipalAmount.",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "DepositClientInterestRate",
          "type": "decimal",
          "flags": "",
          "definition": "Client interest rate on depositing the given PrincipalAmount.",
          "example_value": "5.04",
          "deprecated": false
        },
        {
          "name": "LoanInterestAmount",
          "type": "decimal",
          "flags": "",
          "definition": "Interest amount (specified in the provided Currency) calculated from the loan interest rate and principal amount",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "DepositInterestAmount",
          "type": "decimal",
          "flags": "",
          "definition": "Interest amount (specified in the provided Currency) calculated from the deposit interest rate and principal amount",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "LoanPrincipalPlusInterest",
          "type": "decimal",
          "flags": "",
          "definition": "Composite amount between principal amount and loan interest amount.",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "DepositPrincipalPlusInterest",
          "type": "decimal",
          "flags": "",
          "definition": "Composite amount between principal amount and deposit interest amount.",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "OverallTimeout",
          "type": "integer",
          "flags": "",
          "definition": "The amount in seconds in which the trade will expire.",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "RemainingTimeOutMillis",
          "type": "integer",
          "flags": "",
          "definition": "The number of milliseconds remaining of the OverallTimeOut before this stream is timed out. This is not present for standard price updates.",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "Fees",
          "type": "decimal",
          "flags": "",
          "definition": "Fees on the given PrincipalAmount for unwind.",
          "example_value": "10.0",
          "deprecated": false
        }
      ]
    }
  ]
}
```

Java class: [com.caplin.generated.motif.mm.rates.QuoteTypesDef.Quote](https://docs.caplin.com/developer/api/fxintegration/latest/com/caplin/generated/motif/mm/rates/QuoteTypesDef.Quote.html)

Instantiation pattern: Static Factory Method (via `QuoteTypesDef.Quote.newBuilder()`)

Java code example:

```java
package com.caplin.examples.fxapi.generated.motif.mm.rates.QuoteTypesDef; 

import java.math.BigInteger;

import com.caplin.generated.motif.mm.rates.QuotePartsDef;
import com.caplin.generated.motif.mm.rates.QuoteTypesDef;

public class QuoteExample {
    public static void main(String[] args) {
                    		
		QuoteTypesDef.Quote quote =
		QuoteTypesDef.Quote
			.newBuilder()
			.setCommonFields(
			QuotePartsDef.CommonFields
				.newBuilder()
				.setDepositClientInterestRate("")
				.setDepositInterestAmount(BigDecimal.valueOf(0.0))
				.setDepositInterestRate(BigDecimal.valueOf(0.0))
				.setDepositPrincipalPlusInterest("")
				.setDepositQuoteID("")
				.setFees("")
				.setInterestRateDPS("")
				.setLoanInterestAmount(BigDecimal.valueOf(0.0))
				.setLoanInterestRate("")
				.setLoanPrincipalPlusInterest(BigDecimal.valueOf(0.0))
				.setLoanQuoteID("")
				.setOverallTimeout("")
				.setRemainingTimeOutMillis("")
				.build())
			.build();
            
    }
}
```


### Event: Reject (server)

Message specification:

```json
{
  "trade_model_name": "MMRFS",
  "trade_model_trigger": "Reject",
  "message_origin": "server"
}

### Event: SubmitAck (server)

Message specification:

```json
{
  "trade_model_name": "MMRFS",
  "trade_model_trigger": "SubmitAck",
  "message_origin": "server"
}


### Event: TradeConfirmation (server)

Message specification:

```json
{
  "trade_model_name": "MMRFS",
  "trade_model_trigger": "TradeConfirmation",
  "message_origin": "server",
  "java_class": "com.caplin.generated.motif.mm.tradeconfirmation.TradeConfTypesDef.TradeConfirmation",
  "javadoc": "https://docs.caplin.com/developer/api/fxintegration/com/caplin/generated/motif/mm/tradeconfirmation/TradeConfTypesDef.TradeConfirmation.html",
  "instantiation_pattern": "Builder (via .newBuilder())",
  "code_example": "https://docs.caplin.com/developer/api/fxintegration/latest/com/caplin/examples/fxapi/generated/motif/mm/tradeconfirmation/TradeConfTypesDef/TradeConfirmationExample.html",
  "parts": [
    {
      "part_name": "CommonTradeConfirmationFields",
      "java_class": "com.caplin.generated.motif.mm.tradeconfirmation.TradeConfPartsDef.CommonTradeConfirmationFields",
      "javadoc": "https://docs.caplin.com/developer/api/fxintegration/com/caplin/generated/motif/mm/tradeconfirmation/TradeConfPartsDef.CommonTradeConfirmationFields.html",
      "fields": [
        {
          "name": "TOBOUser",
          "type": "string",
          "flags": "",
          "definition": "The client who the trade is for.",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "TraderUsername",
          "type": "string",
          "flags": "",
          "definition": "The name of the trader providing the price to the user, or NO_TRADER if there is none.",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "Account",
          "type": "string",
          "flags": "",
          "definition": "The used account for the trade.",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "Action",
          "type": "string",
          "flags": "",
          "definition": "Withdraw or deposit for Call Deposit.",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "CallAccount",
          "type": "string",
          "flags": "",
          "definition": "The account which is being withdrawn from or deposited to.",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "Currency",
          "type": "string",
          "flags": "",
          "definition": "The currency in which the trade is made.",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "MaturityDate",
          "type": "date",
          "flags": "",
          "definition": "The maturity date of the trade.",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "MaturityTenor",
          "type": "string",
          "flags": "",
          "definition": "The maturity tenor of the trade.",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "StartDate",
          "type": "date",
          "flags": "",
          "definition": "The start date of the trade.",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "StartTenor",
          "type": "string",
          "flags": "",
          "definition": "The start tenor of the trade.",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "TradeID",
          "type": "string",
          "flags": "",
          "definition": "The unique id identifying the trade.",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "PrincipalAmount",
          "type": "decimal",
          "flags": "",
          "definition": "The original amount that the trade was created with specified in the provided Currency.",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "InterestRate",
          "type": "decimal",
          "flags": "",
          "definition": "Interest rate on the given PrincipalAmount.",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "IndicativeProfitRate",
          "type": "string",
          "flags": "",
          "definition": "Indicative profit rate on the given PrincipalAmount.",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "InterestRateDPS",
          "type": "decimal",
          "flags": "",
          "definition": "The precision for a specified InterestRate.",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "InterestAmount",
          "type": "decimal",
          "flags": "",
          "definition": "Interest amount (specified in the provided Currency) calculated from the interest rate and principal amount.",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "PrincipalPlusInterest",
          "type": "decimal",
          "flags": "",
          "definition": "Composite amount between principal amount and interest amount.",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "PaymentFrequency",
          "type": "string",
          "flags": "",
          "definition": "Interest payment frequencies for term deposits, this could be ZERO-COUPON, MONTHLY, QUARTERLY, SEMI-ANNUALLY or ANNUALLY.",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "AllocationMode",
          "type": "string",
          "flags": "",
          "definition": "Determines whether the amount will be alLocated to a single or multiple accounts. Supported types are [SINGLE, MULTIPLE] and is defaulted to SINGLE.",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "NumberOfDays",
          "type": "string",
          "flags": "",
          "definition": "The number of days between the start and maturity dates.",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "ExecutionDateTime",
          "type": "string",
          "flags": "",
          "definition": "",
          "example_value": "20160322123621",
          "deprecated": false
        },
        {
          "name": "EntityId",
          "type": "string",
          "flags": "",
          "definition": "The entity the trade is on behalf of. For example, if the logged in user user1@customer.co.za wishes to make a trade on behalf of entity CUSTONE, then the value of this field will be CUSTONE. If this field is absent on a leg then the default entity should be presumed.",
          "example_value": "CUSTONE",
          "deprecated": false
        },
        {
          "name": "EntityDescription",
          "type": "string",
          "flags": "",
          "definition": "The description of a trade on behalf of entity.",
          "example_value": "Customer 1",
          "deprecated": false
        },
        {
          "name": "TradeDate",
          "type": "string",
          "flags": "",
          "definition": "",
          "example_value": "20160314",
          "deprecated": false
        },
        {
          "name": "TradingType",
          "type": "string",
          "flags": "",
          "definition": "The type of the trade. Supported types are [LOAN, DEPOSIT, CALL-DEPOSIT, TERM-DEPOSIT, FLEXI-NOTICE-DEPOSIT, TREASURY-BILL or GOVERNMENT-BOND].",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "QuoteID",
          "type": "string",
          "flags": "",
          "definition": "Unique id for a quote, used to determine which quote has been used for trade execution.",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "QuoteDateTime",
          "type": "string",
          "flags": "",
          "definition": "",
          "example_value": "20160314013000",
          "deprecated": false
        },
        {
          "name": "CanAffirm",
          "type": "boolean",
          "flags": "",
          "definition": "Ability to Affirm the Trade Details are as agreed.",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "DisplayFields",
          "type": "string",
          "flags": "",
          "definition": "Configuration for a frontend to display label-value pairs. Use DefaultDisplayFields builders to provide Caplin default and/or custom fields.",
          "example_value": "method={'import':'static com.caplin.motif.mm.config.DefaultDisplayFields.addDefaultMMTermSummaryDisplayFields','name':'addDefaultMMTermSummaryDisplayFields','comment':'See DefaultDisplayFields javadoc for parameters and available builder methods.'}",
          "deprecated": false
        },
        {
          "name": "CanCapitalIncrease",
          "type": "boolean",
          "flags": "",
          "definition": "Ability to Capital Increase the Trade amount.",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "CanRollOver",
          "type": "boolean",
          "flags": "",
          "definition": "Ability to Roll Over the Trade amount.",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "CanChangeSSI",
          "type": "boolean",
          "flags": "",
          "definition": "Ability to Change the Settlement Instructions.",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "CanGiveNotice",
          "type": "boolean",
          "flags": "",
          "definition": "Ability to Give notice for Money Market trades.",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "HasPostTradeHistory",
          "type": "boolean",
          "flags": "",
          "definition": "Define whether post-trade history (related deals) is available.",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "NoticePeriodDescription",
          "type": "string",
          "flags": "",
          "definition": "The notice period description for the trade, sent as the raw display value or a translation token.",
          "example_value": "32 Days",
          "deprecated": false
        },
        {
          "name": "NoticePeriod",
          "type": "string",
          "flags": "",
          "definition": "The notice period for the trade.",
          "example_value": "32D",
          "deprecated": false
        },
        {
          "name": "IsShariaTrade",
          "type": "boolean",
          "flags": "",
          "definition": "Indicates whether the trade is a Sharia trade",
          "example_value": "true",
          "deprecated": false
        },
        {
          "name": "CanConfirm",
          "type": "boolean",
          "flags": "",
          "definition": "Ability to Confirm the Settlement Details are now final.",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "ConfirmedBy",
          "type": "string",
          "flags": "",
          "definition": "The name of the user who confirmed a trade.",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "Tags",
          "type": "string",
          "flags": "",
          "definition": "Tags for a trade.",
          "example_value": "method={'import':'static com.caplin.motif.fx.config.definitions.common.Tag','name':'Arrays.asList'}",
          "deprecated": false
        },
        {
          "name": "ConfirmedDateTime",
          "type": "datetime",
          "flags": "",
          "definition": "The time at which a trade was confirmed in ISO-8601 format",
          "example_value": "2018-03-16T07:25:16+00:00",
          "deprecated": false
        },
        {
          "name": "CanUnwind",
          "type": "boolean",
          "flags": "",
          "definition": "Ability to Unwind the Trade amount.",
          "example_value": "true",
          "deprecated": false
        },
        {
          "name": "Fees",
          "type": "decimal",
          "flags": "",
          "definition": "Fees on the given PrincipalAmount for unwind.",
          "example_value": "10.0",
          "deprecated": false
        },
        {
          "name": "ParentTradeID",
          "type": "string",
          "flags": "",
          "definition": "The unique id identifying the parent trade of this trade in the case of post trade workflows.",
          "example_value": "00002456",
          "deprecated": false
        },
        {
          "name": "NoticeGiven",
          "type": "boolean",
          "flags": "",
          "definition": "Reflects if notice has been given.",
          "example_value": "true",
          "deprecated": false
        }
      ]
    },
    {
      "part_name": "SettlementTradeFields",
      "java_class": "com.caplin.generated.motif.mm.settlementinstructions.SettlementInstructionsPartsDef.SettlementTradeFields",
      "javadoc": "https://docs.caplin.com/developer/api/fxintegration/com/caplin/generated/motif/mm/settlementinstructions/SettlementInstructionsPartsDef.SettlementTradeFields.html",
      "parts": [
        {
          "part_name": "SettlementFields",
          "java_class": "com.caplin.generated.motif.mm.settlementinstructions.SettlementInstructionsPartsDef.SettlementFields",
          "javadoc": "https://docs.caplin.com/developer/api/fxintegration/com/caplin/generated/motif/mm/settlementinstructions/SettlementInstructionsPartsDef.SettlementFields.html",
          "fields": [
            {
              "name": "Un_PaySettlementId",
              "type": "string",
              "flags": "",
              "definition": "The identifier for the settlement instruction.",
              "example_value": "",
              "deprecated": false
            },
            {
              "name": "Un_PayIsDefaultSettlementInstruction",
              "type": "boolean",
              "flags": "",
              "definition": "Is this the default settlement instruction for this currency",
              "example_value": "",
              "deprecated": false
            },
            {
              "name": "Un_PaySettlementInstructionType",
              "type": "string",
              "flags": "",
              "definition": "The type of settlement instruction attached to a trade. Supported types are [EXISTING, ADHOC, NONE]",
              "example_value": "EXISTING",
              "deprecated": false
            },
            {
              "name": "Un_PaySettlementType",
              "type": "string",
              "flags": "",
              "definition": "The type of settlement attached to a trade. Supported types are [PRINCIPAL, INTEREST]",
              "example_value": "PRINCIPAL",
              "deprecated": false
            },
            {
              "name": "Un_PaySettlementRemarks",
              "type": "string",
              "flags": "",
              "definition": "The remarks corresponding to the settlement details",
              "example_value": "",
              "deprecated": false
            },
            {
              "name": "Un_PaySettlementDisplayName",
              "type": "string",
              "flags": "",
              "definition": "The name of the settlement instruction. This field can be omitted.",
              "example_value": "[CCY] Account 1",
              "deprecated": false
            }
          ]
        },
        {
          "part_name": "SettlementFields",
          "java_class": "com.caplin.generated.motif.mm.settlementinstructions.SettlementInstructionsPartsDef.SettlementFields",
          "javadoc": "https://docs.caplin.com/developer/api/fxintegration/com/caplin/generated/motif/mm/settlementinstructions/SettlementInstructionsPartsDef.SettlementFields.html",
          "fields": [
            {
              "name": "Un_ReceiveSettlementId",
              "type": "string",
              "flags": "",
              "definition": "The identifier for the settlement instruction.",
              "example_value": "",
              "deprecated": false
            },
            {
              "name": "Un_ReceiveIsDefaultSettlementInstruction",
              "type": "boolean",
              "flags": "",
              "definition": "Is this the default settlement instruction for this currency",
              "example_value": "",
              "deprecated": false
            },
            {
              "name": "Un_ReceiveSettlementInstructionType",
              "type": "string",
              "flags": "",
              "definition": "The type of settlement instruction attached to a trade. Supported types are [EXISTING, ADHOC, NONE]",
              "example_value": "EXISTING",
              "deprecated": false
            },
            {
              "name": "Un_ReceiveSettlementType",
              "type": "string",
              "flags": "",
              "definition": "The type of settlement attached to a trade. Supported types are [PRINCIPAL, INTEREST]",
              "example_value": "PRINCIPAL",
              "deprecated": false
            },
            {
              "name": "Un_ReceiveSettlementRemarks",
              "type": "string",
              "flags": "",
              "definition": "The remarks corresponding to the settlement details",
              "example_value": "",
              "deprecated": false
            },
            {
              "name": "Un_ReceiveSettlementDisplayName",
              "type": "string",
              "flags": "",
              "definition": "The name of the settlement instruction. This field can be omitted.",
              "example_value": "[CCY] Account 1",
              "deprecated": false
            }
          ]
        }
      ],
      "fields": [
        {
          "name": "Un_CanAffirm",
          "type": "boolean",
          "flags": "",
          "definition": "Ability to Affirm the Trade Details are as agreed.",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "Un_IsReceiveInterestSplit",
          "type": "boolean",
          "flags": "",
          "definition": "Whether the receive Settlement Instruction has been split into separate Principal and Interest instructions.",
          "example_value": "",
          "deprecated": false
        }
      ]
    }
  ]
}
```

Java class: [com.caplin.generated.motif.mm.tradeconfirmation.TradeConfTypesDef.TradeConfirmation](https://docs.caplin.com/developer/api/fxintegration/latest/com/caplin/generated/motif/mm/tradeconfirmation/TradeConfTypesDef.TradeConfirmation.html)

Instantiation pattern: Static Factory Method (via `TradeConfTypesDef.TradeConfirmation.newBuilder()`)

Java code example:

```java
package com.caplin.examples.fxapi.generated.motif.mm.tradeconfirmation.TradeConfTypesDef; 

import java.math.BigInteger;
import static com.caplin.motif.fx.config.DefaultDisplayFields.addDefaultSalesAllocationDetailsUpdateFields;
import static com.caplin.motif.fx.config.definitions.common.Tag;

import com.caplin.generated.motif.mm.settlementinstructions.SettlementInstructionsPartsDef;
import com.caplin.generated.motif.mm.tradeconfirmation.TradeConfPartsDef;
import com.caplin.generated.motif.mm.tradeconfirmation.TradeConfTypesDef;

public class TradeConfirmationExample {
    public static void main(String[] args) {
                    		
		TradeConfTypesDef.TradeConfirmation tradeConfirmation =
		TradeConfTypesDef.TradeConfirmation
			.newBuilder()
			.addSettlementTradeFields(
			SettlementInstructionsPartsDef.SettlementTradeFields
				.newBuilder()
				.setCanAffirm(true)
				.setIsReceiveInterestSplit("")
				.setPay(
				SettlementInstructionsPartsDef.SettlementFields
					.newBuilder()
					.setIsDefaultSettlementInstruction("")
					.setSettlementDisplayName("[CCY] Account 1")
					.setSettlementId("")
					.setSettlementInstructionType("EXISTING")
					.setSettlementRemarks("")
					.setSettlementType("")
					.build())
				.setReceive(
				SettlementInstructionsPartsDef.SettlementFields
					.newBuilder()
					.build())
				.build())
			.setCommonFields(
			TradeConfPartsDef.CommonTradeConfirmationFields
				.newBuilder()
				.setAccount("Garfields|GARF")
				.setAction("")
				.setAllocationMode("")
				.setCallAccount("")
				.setCanAffirm(true)
				.setCanCapitalIncrease("")
				.setCanChangeSSI(true)
				.setCanConfirm("")
				.setCanGiveNotice("")
				.setCanRollOver(true)
				.setCanUnwind("")
				.setConfirmedBy("")
				.setConfirmedDateTime("2018-03-16T07:25:16+00:00")
				.setCurrency("USD")
				.setDisplayFields(addDefaultSalesAllocationDetailsUpdateFields(/* See DefaultDisplayFields javadoc for parameters and available builder methods. */))
				.setEntityDescription("Customer 1")
				.setEntityId("CUSTONE")
				.setExecutionDateTime("20160322123621")
				.setExtraFields("")
				.setFees("")
				.setHasPostTradeHistory("")
				.setIndicativeProfitRate("")
				.setInterestAmount(BigDecimal.valueOf(0.0))
				.setInterestRate(BigDecimal.valueOf(0.0))
				.setInterestRateDPS("")
				.setIsShariaTrade("")
				.setMaturityDate(LocalDate.now())
				.setMaturityTenor("")
				.setNoticeGiven("")
				.setNoticePeriod("")
				.setNoticePeriodDescription("")
				.setNumberOfDays("")
				.setParentTradeID("")
				.setPaymentFrequency("")
				.setPrincipalAmount(BigDecimal.valueOf(0.0))
				.setPrincipalPlusInterest("")
				.setQuoteDateTime("")
				.setQuoteID("")
				.setStartDate(LocalDate.now())
				.setStartTenor("1W")
				.setTOBOUser("client@customer.co.za")
				.setTags(Arrays.asList(/* ... */))
				.setTradeDate("20160314")
				.setTradeID("00001561")
				.setTraderUsername("sales_trader@novobank.co.za")
				.setTradingType("SPOT")
				.build())
			.setSettlementTradeFields(
			SettlementInstructionsPartsDef.SettlementTradeFields
				.newBuilder()
				.build(), 0)
			.build();
            
    }
}
```


### Event: Warning (server)

Message specification:

```json
{
  "trade_model_name": "MMRFS",
  "trade_model_trigger": "Warning",
  "message_origin": "server"
}

### Event: Withdraw (server)

Message specification:

```json
{
  "trade_model_name": "MMRFS",
  "trade_model_trigger": "Withdraw",
  "message_origin": "server"
}