Description
Enhancement Request
Use Case:
Support CDM being passed between apps as context items.
I could list off hundreds of use cases here, many of which are already covered by FDC3. However, the ability to pass data app-to-app in a standard format is pretty useful.
Two examples:
- Sharing PriceQuantity information (see example)
- Sending details of lifecycle events (e.g. novation, cash flow etc).
Contexts
After discussion in #1603, it would be nice to have a fairly generic FDC3 container for some CDM data.
I'm thinking something like this:
{
"type": "fdc3.cdm", (1)
"version": "6.0", (2)
"data": { (3)
"$schema": "https://cdm.finos.org/schemas/6.0/cdm-observable-asset-PriceQuantity.schema.json", (4)
"price": [
{
"value": {
"priceExpression": "PerUnitOfAmount",
"priceType": "Clean",
"price": [
{
"value": 99.75
}
],
"perUnitOfAmount": {
"currency": "USD"
}
}
}
],
"quantity": [
{
"value": {
"schedule": [
{
"value": 1000000
}
],
"unitOfMeasure": "USD"
}
}
],
"observable": {
"value": {
"productIdentifier": [
{
"identifier": "US1234567890",
"source": "CUSIP"
}
]
}
},
"effectiveDate": {
"adjustableDate": {
"unadjustedDate": "2025-04-01",
"dateAdjustments": {
"businessDayConvention": "FOLLOWING",
"businessCenters": {
"businessCenter": [
"USNY"
]
}
}
}
}
}
}
Some notes:
-
We discussed in the meeting that it might be best to just have an FDC3 object that can hold _any _ cdm. However, it would also be possible to use type for the different types of CDM object. I have a feeling that might be overkill for the amount of integration we need with FDC3.
-
CDM has its own versioning scheme. Since this moves independently of FDC3, we should probably include a version number in the json.
-
data
... or can someone think of a better name for the container? -
I think it would be also useful to include some kind of schema reference for the data you're adding. Is "$schema" allowed here? Or only at top level? 🤔
Related Broadcasting
The above example contains at least three "identifier"-style FDC3 contexts:
- A date
- A currency
- An instrument
Ideally, we should have some piece of FDC3 logic that is able to parse a CDM context and extract these items to be broadcast alongside the main fdc3.cdm context. This allows more intelligent updating of other context listeners.