Skip to content

CDM Context #1604

Open
Open
@robmoffat

Description

@robmoffat

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:

  1. 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.

  2. CDM has its own versioning scheme. Since this moves independently of FDC3, we should probably include a version number in the json.

  3. data... or can someone think of a better name for the container?

  4. 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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions