# Messages in FX Professional

FX Professional executes trade and order workflows by exchanging a series of messages over Caplin Platform [messaging channels](../caplin-platform/platform-architecture/channels.md#messaging-channels) with back end adapters that implement Caplin’s [FX Integration API](../fx-integration-api/index.md).

The choreography of messages in each workflow is managed by a trade model. The trade model determines the states in the workflow and the permitted transitions between them. Transitions between states are triggered by messages, and the message specification for the trade model documents the expected fields in each message.

Trade models and message specifications are published with each release of the FX Integration API. Each release of FX Professional requires a minimum version of the FX Integration API, documented in the release notes.

## Trade models and message specifications

<dl><dt><strong>📌 NOTE</strong></dt><dd>

The trade models and message specifications listed below are published with the FX Integration API 3, which has been a back-end requirement for FX Professional from version 2.19. For the version of FX Integration API supported by your version of FX Professional, please see the FX Sales release notes.

For trade models and message specifications required by versions of FX Professional prior to version 2.19, see the archived [FX Professional 2 documentation,window="_blank"](2/messages-in-the-fx-motif.md).
</dd></dl>

For more information on the FX Integration API trade models and message specifications, see the links below:

* [Message specification: Blotter records](../fx-integration-api/fxapi-blotter-records.md)
* [Trade model: ESP](../fx-integration-api/fxapi-trade-model-esp.md)
* [Trade model: RFS](../fx-integration-api/fxapi-trade-model-rfs.md)
* [Trade model: Amend](../fx-integration-api/fxapi-trade-model-amend.md)
* [Trade model: Cancel](../fx-integration-api/fxapi-trade-model-cancel.md)
* [Trade model: OrderSubmission](../fx-integration-api/fxapi-trade-model-ordersubmission.md)
* [Trade model: OrderCancellation](../fx-integration-api/fxapi-trade-model-ordercancel.md)
* [Trade model: OrderChangeState](../fx-integration-api/fxapi-trade-model-orderchangestate.md)
* [Trade model: BulkOrderSubmission](../fx-integration-api/fxapi-trade-model-bulkordersubmission.md)
* [Trade model: BulkOrderAction](../fx-integration-api/fxapi-trade-model-bulkorderaction.md)
* [Trade model: EditStrategy](../fx-integration-api/fxapi-trade-model-editstrategy.md)
* [Trade model: Allocate](../fx-integration-api/fxapi-trade-model-allocate.md)

## Subjects

Assuming a typical back end system has the following [integration adapters](the-fx-integration-api.md#novodescription): Rates, Trading, Orders, Calendar, Historic. The following table denotes what is requested:

| Item | Data Type | Adapters Providing | Route | Unmapped Subject | Mapped Subject |
| --- | --- | --- | --- | --- | --- |
| Streaming rates | Record | Rates | Direct | /FX/USDJPY/&lt;Tenor>/&lt;DealtCurrency>/&lt;Amount> | /FX/USDJPY/&lt;Tenor>/&lt;DealtCurrency>/&lt;Amount>/&lt;MarginBand> |
| ESP, RFS and PostAllocation trade channel | Record | Trading | Direct | /PRIVATE/TRADE/FX%1 | /PRIVATE/%U/TRADE/FX%1 |
| Post Allocations - Viewing | Record | Historic | Direct | /PRIVATE/FX/ALLOCATIONS/&lt;TradeId> | /PRIVATE/%u/FX/ALLOCATIONS/&lt;TradeId> |
| Orders trade channel | Record | Orders | Direct | /PRIVATE/ORDERS/FX%1 | /PRIVATE/%U/ORDERS/FX%1 |
| Pricing Grids | Container | Rates | via [Transformer](../caplin-platform/transformer/index.md) | /FX/CONTAINER/&lt;ContainerName> | /FX/CONTAINER/&lt;ContainerName> |
| Activity Blotter | Container | Trading | via [Transformer](../caplin-platform/transformer/index.md) | /PRIVATE/FX/BLOTTER/ACTIVITY | /PRIVATE/%u/FX/BLOTTER/ACTIVITY |
| Activity blotter items | Record | Trading | via [Transformer](../caplin-platform/transformer/index.md) | /PRIVATE/FX/BLOTTER/ACTIVITY/ITEM/%1 | /PRIVATE/%u/FX/BLOTTER/ITEM/%1 |
| Execution Blotter | Container | Trading, Historic | via [Transformer](../caplin-platform/transformer/index.md) | /PRIVATE/FX/BLOTTER/ACTIVITY | /PRIVATE/%u/FX/BLOTTER/ACTIVITY |
| Execution blotter items | Record | Trading, Historic | via [Transformer](../caplin-platform/transformer/index.md) | /PRIVATE/FX/BLOTTER/ACTIVITY/ITEM/%1 | /PRIVATE/%u/FX/BLOTTER/ITEM/%1 |
| Historic blotter | Container | Historic | Direct | /PRIVATE/FX/BLOTTER/HISTORIC | /PRIVATE/%u/FX/BLOTTER/HISTORIC |
| Historic blotter items | Record | Historic | Direct | /PRIVATE/FX/BLOTTER/HISTORIC-ITEM/%1 | /PRIVATE/%u/FX/BLOTTER/HISTORIC-ITEM/%1 |
| Order Blotter | Container | Orders | via [Transformer](../caplin-platform/transformer/index.md) | /PRIVATE/FX/BLOTTER/ORDER | /PRIVATE/%u/FX/BLOTTER/ORDER |
| Tenor Dates | Record | Calendar | Direct | /CALENDAR/TENORDATES/&lt;CurrencyPair> | No mapping |
| Settlement Dates | Record | Calendar | Direct | /CALENDAR/SETTLEMENTDATE/&lt;CurrencyPair>/&lt;Year>/&lt;Month> | No mapping |

For explanations on data types ([records](../caplin-platform/datasource/datasource-records.md) and [containers](../caplin-platform/datasource/datasource-containers.md)) see [here](../caplin-platform/datasource/datasource-data-types.md).

A _Direct_ route implies a request for data sent directly through a [Liberator](../caplin-platform/liberator/index.md) and not via a Transformer
