Releases: finos/common-domain-model
Release list
8.0.0-dev.4
Amending ingestion mappings - Commodity Swap was being incorrectly mapped
Background
Mapping Price Schedules for Commodity Swap to the correct values
What is being released?
changes to following functions to remove priceSubType and changing priceType to AssetPrice: MapCommmodityFixedPriceToPriceSchedule MapCommmodityFixedPriceScheduleToPriceSchedule
Review Directions
Changes can be reviewed in PR: #5025
Product Qualification - Zero Coupon Enhancement
Background
The Qualify_Transaction_ZeroCoupon function only recognises zero-coupon transactions when the payment frequency is explicitly represented as 1T (term). Transactions where the payment frequency equals the full contract duration are not identified as Zero Coupon, although they represent the same economic outcome.
What is being released?
Extended the qualification logic in to Qualify_Transaction_ZeroCoupon recognise alternative representations of zero-coupon transactions by adding a condition where the payment frequency corresponds to the duration between the effective date and the maturity date. The following new common functions have been introduced to handle frequency-to-day conversions () and dates operations required for the matching logic: - AddPeriod - PeriodCalculation Finally, it has been adjusted the input parameters for the AuxiliarEffectiveDate and AuxiliarTerminationDate to take the EconomicTerms instead of the Trade.
Review Directions
Changes can be reviewed in PR: #4989
Infrastructure - Dependency Update
Version updates include:
DSL10.4.0- Add CVE Scanning Schedule. See DSL release notes: 10.4.0DSL10.5.0- Fix invalid Renovate config: remove redundant * from matchPackageNames. See DSL release notes: 10.5.0DSL10.6.0- Namespaces produced by a tool are now marked, and hand edits to them are reported in review.. See DSL release notes: 10.6.0DSL10.7.0- Generate a LabelProvider per labelled type. See DSL release notes: 10.7.0Rune-Fpml3.5.0- DSL/bundle updates See release notes: 3.5.0
Review Directions
Changes can be reviewed in PR: #5053
Instruction Composition Reset Step 3: Adjust the period
Background
Building upon the functional milestones introduced in the previous release for Step 2 (#4379), the CDM Smart Contract Taskforce is advancing the state-machine execution capabilities within the Instruction Composition Framework. This release delivers the components required to execute Step 3 (Adjust Calculation Period) of the 8-step Interest Rate Reset processing workflow. By introducing this phase, the model can now deterministically apply calendar adjustments and financial business day conventions to unadjusted schedules. For further information, see issue #4389.
What is being released?
This release provides the core business day alignment logic, holiday calendar resolution hooks, and state accumulator mutations necessary to transition an unadjusted calculation period into its adjusted lifecycle state. It incorporates payload bindings for Step 3 into the reusable instruction containers and expands the historical overlay tracking mechanisms to capture the final adjusted period bounds.
Functions
Changes in the cdm.base.datetime namespace:
AdjustDateToBusinessDayConvention: Core mapping function that routes an unadjusted date through a selected business day convention matrix when a calendar clash is detected.ApplyFollowing: Recursive utility evaluating calendar forward-shifts to find the next valid business day.ApplyPreceding: Recursive utility evaluating calendar backward-shifts to find the previous valid business day.ApplyModFollowing: Evaluation function ensuring forward-shifted dates do not cross month boundaries, defaulting to preceding lookbacks where necessary.
Changes in the cdm.event.instructioncomposition.reset namespace:
Create_AdjustPeriodInstruction: An operational mapping function that compiles adjusted starting and ending coordinates for a calculation period using defined business conventions and holiday datasets.GetNonBusinessDates: An externalized code-implementation hook to query and extract non-business dates from financial calendar providers using either distinct date vectors or defined boundary periods.
Changes in the cdm.event.instructioncomposition namespace:
UpdateResetCompositionState: (Updated) Expanded to implement "Step 3" overlay logic. It conditionally captures the incoming adjustPeriod payload to update the active adjustedCalculationPeriod parameter.
Types and Choices
Changes in the cdm.event.instructioncomposition namespace:
CompositionStepInstructions(Updated): Expanded to include adjustPeriod, allowing the global step orchestrator to wrap period adjustment data structures.
Changes in the cdm.event.instructioncomposition.reset namespace:
AdjustPeriodInstruction: Introduced as the official type for Step 3.ResetInstructionState(Updated): Expanded to hold its third phase state variable (adjustedCalculationPeriod), allowing the cumulative workflow to track adjusted parameters over its lifecycle.
Review Directions
Navigate to the following paths to inspect the new models:
- rosetta-source/src/main/rosetta/instructionComposition-type.rosetta: Review the updated CompositionStepInstructions container to verify the inclusion of the Step 3 instruction payload mapping.
- rosetta-source/src/main/rosetta/instructionComposition-func.rosetta: Examine the updated field overlay logic inside UpdateResetCompositionState handling adjusted period state tracking.
- rosetta-source/src/main/rosetta/instructionComposition-reset-type.rosetta: Inspect the new AdjustPeriodInstruction type structure and the updated tracking properties embedded within ResetInstructionState.
- rosetta-source/src/main/rosetta/instructionComposition-reset-func.rosetta: Inspect the schedule compilation logic inside Create_AdjustPeriodInstruction and the GetNonBusinessDates interface.
6.25.0
Infrastructure - Dependency and CVE Update
What is being released?
This release fixed the “Common Vulnerabilities and Exposures” (CVE) scan, for further details see #4966. The following libraries with high-severity CVEs have been updated:
jackson-databind-2.17.1—CVE-2026-54512(8.1),CVE-2026-54513(8.1)logback-core-1.4.12—CVE-2023-6481(7.5),CVE-2025-11226(7.3),CVE-2026-13006(7.0)plexus-utils-3.6.0—CVE-2025-67030(8.8, Zip Slip)- plus two Eclipse/Xtext CPE false positives (
CVE-2020-27225,CVE-2019-10249).
Review Directions
Product Qualification - Zero Coupon Enhancement
Background
The Qualify_Transaction_ZeroCoupon function only recognises zero-coupon transactions when the payment frequency is explicitly represented as 1T (term). Transactions where the payment frequency equals the full contract duration are not identified as Zero Coupon, although they represent the same economic outcome.
What is being released?
Extended the qualification logic in to Qualify_Transaction_ZeroCoupon recognise alternative representations of zero-coupon transactions by adding a condition where the payment frequency corresponds to the duration between the effective date and the maturity date. The following new common functions have been introduced to handle frequency-to-day conversions () and dates operations required for the matching logic: - AddPeriod - PeriodCalculation Finally, it has been adjusted the input parameters for the AuxiliarEffectiveDate and AuxiliarTerminationDate to take the EconomicTerms instead of the Trade.
Review Directions
Changes can be reviewed in PR: #4960
CDM Model: FpML executionNotification ingestion mapping to CDM ExecutionInstruction
What is being released
An ingestion mapping has been added for the FpML executionNotification message so that its Trade element is now mapped onto a CDM ExecutionInstruction, in place of the previous mapping which produced a ContractFormationInstruction. This aligns the outcome of ingesting an executionNotification with the semantics of a newly executed trade, rather than a contract formation event that requires a pre-existing trade state.
To support this, a new enumerated value Execution has been added to the EventIntentEnum in the cdm.event.common namespace, with the description "The intent is to execute a new trade." This new intent is used by the ingestion functions to identify that the incoming FpML message represents a new trade execution.
The following ingestion functions have been updated in the cdm.ingest.fpml namespace:
MapExecutionNotificationToWorkflowStep(iningest-fpml-confirmation-message-func.rosetta) — now remaps the resolved FpML intent toExecutionwhen the raw intent isContractFormationor absent, so thatexecutionNotificationmessages are routed through the new execution path.MapWorkflowStep(iningest-fpml-confirmation-workflowstep-func.rosetta) — whenintent = Execution, the workflow step'sInstructionis now built with anexecutionPrimitiveInstruction(and nobeforeTradeState), instead of the generic primitive instruction with abeforestate.- A new function
MapTradeToExecutionInstructionhas been added to map an FpMLTrade(together with the party and quotation lists) directly to a CDMExecutionInstruction, populatingproduct,priceQuantity,counterparty,ancillaryParty,parties,partyRoles,executionDetails,tradeDateandtradeIdentifier.
Expected output JSON files for existing FpML confirmation and record-keeping samples that exercise executionNotification messages have been regenerated to reflect the new ExecutionInstruction-based output.
Review directions
In the CDM Portal open the Textual Browser, search for EventIntentEnum in the cdm.event.common namespace and observe the new Execution value. Then search for MapExecutionNotificationToWorkflowStep, MapWorkflowStep and MapTradeToExecutionInstruction in the cdm.ingest.fpml namespace to review the updated ingestion logic. Ingesting any of the updated FpML executionNotification sample files (e.g. pkg-ex01-pkge-execution-notification, pkg-ex55-execution-notification, msg-ex19-cds-execution-allocations) will now produce a WorkflowStep whose Instruction contains an execution PrimitiveInstruction rather than a contractFormation one.
Inspect Pull Request: #4928 and #5061
Inspect Issue: #4774
Adding Qualify_ForeignExchange_NDO function - To backport qualification function from CDM 7
Background
Qualify_ForeignExchange_NDO is missing from cdm 6
What is being released?
adding Qualify_ForeignExchange_NDO
Review Directions
Changes can be reviewed in PR: #5023
Populating ResolvedQuantity - Populating ResolvedQuantity with a secondary quantity
Background
In CDM 7+ we populate a derived quantity to allow for us to access both quantity without needing to check outside of the settlementPayout to bring these two back in sync we have decided to populated ResolvedQuantity quantity allowing us to have the other Quantity populate directly in the payout
What is being released?
adding total to QuantitySchedule and adding ingest mappings for fx products to Populate the ResolvedQuantity
Review Directions
Changes can be reviewed in PR: #5054
7.1.0
Infrastructure - Dependency and CVE Update
What is being released?
This release fixed the “Common Vulnerabilities and Exposures” (CVE) scan, for further details see #4966. The following libraries with high-severity CVEs have been updated:
jackson-databind-2.17.1—CVE-2026-54512(8.1),CVE-2026-54513(8.1)logback-core-1.4.12—CVE-2023-6481(7.5),CVE-2025-11226(7.3),CVE-2026-13006(7.0)plexus-utils-3.6.0—CVE-2025-67030(8.8, Zip Slip)- plus two Eclipse/Xtext CPE false positives (
CVE-2020-27225,CVE-2019-10249).
Review Directions
Changes can be reviewed in PR: #5011
Background
This adds a defaultSerialisationFormat to the model config, setting RUNE_JSON as the default serialiser for the CDM.
What is being released?
rosetta-config.yml(renamedrune-config.yml) now setsdefaultSerialisationFormat: RUNE_JSONundermodel:
Version updates include:
DSL10.3.0- adds default serialiser config support. See DSL release notes: 10.3.0
Review Directions
Changes are available for review in PR: #5037
Instruction Composition Reset Step 2
Background
Building upon the functional milestones introduced in the Phase 1 release (#4168), the CDM Smart Contract Taskforce is extending the state-machine execution capabilities within the Instruction Composition Framework. This release delivers the complete set of components required to execute Step 2 (Determine Unadjusted Calculation Period & Reset Date) of the 8-step Interest Rate Reset processing workflow. By introducing this phase, the model advances its stateful progression logic, enabling deterministic interpolation of unadjusted transactional schedules from raw product parameters. For further information, see issue #4379.
What is being released?
This release provides the structural payloads, operational transition logic, and state accumulator mutations required to calculate, route, and capture calculation period boundaries. It populates the reusable instruction containers with Step 2 payload bindings and completes the overlay handlers for this phase of the execution timeline.
Functions
Changes that can be found in the cdm.event.instructioncomposition.reset namespace:
Create_DetermineUnadjustedCalculationPeriodInstruction: An operational mapping function that evaluates baseline calculation period schedules alongside theoretical fixings to construct and export the structured unadjusted calculation period boundaries.UpdateResetCompositionState: (Updated) Modified to implement the "Step 2" overlay logic. It conditionally checks for the presence of the determineUnadjustedCalculationPeriod payload, incrementally updating the active period parameters or preserving existing historical fields if absent.
Types and Choices
Changes that can be found in the cdm.event.instructioncomposition namespace:
CompositionStepInstructions(Updated): Expanded to include determineUnadjustedCalculationPeriod as an active data payload property, allowing the global step orchestrator to wrap period determination data structures.
Changes that can be found in the cdm.event.instructioncomposition.reset namespace:
DetermineUnadjustedCalculationPeriodInstruction: Introduced to act as the official payload signature for Step 2, carrying the calculated CalculationPeriodBase coordinates and the accompanying unadjusted reset date.ResetInstructionState: (Updated) Expanded to hold its second active phase state variables (unadjustedCalculationPeriod and unadjustedResetDate), allowing the cumulative workflow "Golden Record" to track schedule parameters over its lifecycle.
Review Directions
Navigate to the following paths to inspect the new models:
- rosetta-source/src/main/rosetta/instructionComposition-type.rosetta: Review the updated CompositionStepInstructions container to verify the inclusion of the Step 2 instruction payload mapping.
- rosetta-source/src/main/rosetta/instructionComposition-func.rosetta: Examine the updated field overlay logic inside UpdateResetCompositionState handling calculation period state tracking.
- rosetta-source/src/main/rosetta/instructionComposition-reset-type.rosetta: Inspect the new DetermineUnadjustedCalculationPeriodInstruction type structure and the updated tracking properties embedded within ResetInstructionState.
- rosetta-source/src/main/rosetta/instructionComposition-reset-func.rosetta: nspect the mathematical schedule compilation logic inside Create_DetermineUnadjustedCalculationPeriodInstruction.
Changes are available for review in PR: #5039
8.0.0-dev.3
Instruction Composition Reset Step 2
Background
Building upon the functional milestones introduced in the Phase 1 release (#4168), the CDM Smart Contract Taskforce is extending the state-machine execution capabilities within the Instruction Composition Framework. This release delivers the complete set of components required to execute Step 2 (Determine Unadjusted Calculation Period & Reset Date) of the 8-step Interest Rate Reset processing workflow. By introducing this phase, the model advances its stateful progression logic, enabling deterministic interpolation of unadjusted transactional schedules from raw product parameters. For further information, see issue #4379.
What is being released?
This release provides the structural payloads, operational transition logic, and state accumulator mutations required to calculate, route, and capture calculation period boundaries. It populates the reusable instruction containers with Step 2 payload bindings and completes the overlay handlers for this phase of the execution timeline.
Functions
Changes that can be found in the cdm.event.instructioncomposition.reset namespace:
Create_DetermineUnadjustedCalculationPeriodInstruction: An operational mapping function that evaluates baseline calculation period schedules alongside theoretical fixings to construct and export the structured unadjusted calculation period boundaries.UpdateResetCompositionState: (Updated) Modified to implement the "Step 2" overlay logic. It conditionally checks for the presence of the determineUnadjustedCalculationPeriod payload, incrementally updating the active period parameters or preserving existing historical fields if absent.
Types and Choices
Changes that can be found in the cdm.event.instructioncomposition namespace:
CompositionStepInstructions(Updated): Expanded to include determineUnadjustedCalculationPeriod as an active data payload property, allowing the global step orchestrator to wrap period determination data structures.
Changes that can be found in the cdm.event.instructioncomposition.reset namespace:
DetermineUnadjustedCalculationPeriodInstruction: Introduced to act as the official payload signature for Step 2, carrying the calculated CalculationPeriodBase coordinates and the accompanying unadjusted reset date.ResetInstructionState: (Updated) Expanded to hold its second active phase state variables (unadjustedCalculationPeriod and unadjustedResetDate), allowing the cumulative workflow "Golden Record" to track schedule parameters over its lifecycle.
Review Directions
Navigate to the following paths to inspect the new models:
- rosetta-source/src/main/rosetta/instructionComposition-type.rosetta: Review the updated CompositionStepInstructions container to verify the inclusion of the Step 2 instruction payload mapping.
- rosetta-source/src/main/rosetta/instructionComposition-func.rosetta: Examine the updated field overlay logic inside UpdateResetCompositionState handling calculation period state tracking.
- rosetta-source/src/main/rosetta/instructionComposition-reset-type.rosetta: Inspect the new DetermineUnadjustedCalculationPeriodInstruction type structure and the updated tracking properties embedded within ResetInstructionState.
- rosetta-source/src/main/rosetta/instructionComposition-reset-func.rosetta: nspect the mathematical schedule compilation logic inside Create_DetermineUnadjustedCalculationPeriodInstruction.
8.0.0-dev.2
CDM Contribution Workflow & Feature/Task Update with Business Justification
Background
The CDM WG Workflow as a diagram was present on GitHub, however further detail has been added to make the individual steps clearer.
There has also been a need to add a Business Justification section to Features & Issues to illustrate the purpose, use case and WG the issue is applicable to
What is being released?
- CDM-Contribution-Workflow under the GitHub documentation
- Business Justification added to Features and Issue templates
Review Directions
Changes can be reviewed in PR: #4964
7.0.0
CDM Version 7.0
CDM 7.0, a production release, consolidates over 130 individual upgrades and releases to the model made in the development environment over the last one year.
What is being released
The release includes changes to the CDM model itself (manifested in changes to .rosetta source files) together with enhancements to supporting tooling, sample data, documentation, ingestion frameworks, validation logic, and build infrastructure.
Key themes delivered in CDM 7.0 include:
- Moving from using synonym based mappings to functional ingestion mappings.
- Legal Agreement model expansion through migration of ISDA Foundations content and enhanced support for CSA, CTA, GMSLA and umbrella agreements.
- Smart Contracts Framework from the 2026 CDM roadmap
- Asset, Product and Observable model refactoring and harmonization.
- Significant Event Model enhancements, including transfer, reset, lifecycle, quantity change and workflow improvements.
- Securities Finance and Collateral model enhancements.
- Reference data and taxonomy support has been enhancements
- The upgrade from DSL 9 to DSL 10
- Infrastructure & Tooling
- Expanded sample data, visualizations and testing coverage.
- Serialization on CDM 7
- Python Version of CDM Available at PyPI
Each of the above is described in more detail below.
1. FpML Confirmation Ingestion Framework
A major focus of CDM 7 has been the continued development of the FpML Confirmation Ingestion Framework. This work expands the CDM's ability to transform FpML confirmations into native CDM representations across a broader range of asset classes and product types, while improving consistency, maintainability and alignment with market standards.
The release significantly increases ingestion coverage for Rates, Foreign Exchange, Credit, Equity and Commodity products, introduces support for additional transaction supplements and lifecycle events, and completes the transition away from legacy synonym-based ingestion approaches. The adoption of a flattened FpML model further simplifies mapping logic by aligning the generated model structure more closely with source FpML documents and improving the maintainability of ingestion mappings.
This has enabled CDM 7 to completely move away from Synonym based mappings to using Functional Ingestion Mapping. This allows anyone with knowledge of CDM to make changes to the model, opposed to only those with technical Java implementation experience
Individual releases include:
- Initial FpML Confirmation Model to CDM Model ingestion framework: 7.0.0-dev.39
- Equity product mapping enhancements: 7.0.0-dev.44
- FX payer and receiver mapping: 7.0.0-dev.46
- WorkflowStep, Equity Options and CDS mappings: 7.0.0-dev.48
- Retirement of legacy FpML synonym mappings: 7.0.0-dev.51
- Ingestion Framework - Rune DSL syntax replacing static Java functions 7.0.0-dev.53
- Volatility Swap Transaction Supplement 7.0.0-dev.63
- Ingestion - FpML Confirmation Ingestion Tests 7.0.0-dev.65
- Dividend Swap transaction supplement support: 7.0.0-dev.67
- Fixed Rate Price mapping: 7.0.0-dev.70
- Credit Default Swaption underlier mapping: 7.0.0-dev.71
- Equity Swap transaction supplement mapping: 7.0.0-dev.73
- Credit Default Swap Option mapping: 7.0.0-dev.79
- Principal Payment Schedule mapping: 7.0.0-dev.87
- FX and Rates mapping coverage: 7.0.0-dev.89
- Credit, Equity and Commodity coverage improvements: 7.0.0-dev.92
- Mapping coverage improvements and ingestion alignment: 7.0.0-dev.105
- Flattened FpML model adoption: 7.0.0-dev.111
2. Legal Agreement & Documentation Model
CDM 7 substantially expands the legal agreement capabilities of the model through the incorporation of content migrated from ISDA Foundations and the continued development of agreement-specific representations. These enhancements strengthen the CDM's ability to digitally represent legal documentation, elections, negotiated provisions and contractual relationships across a range of industry-standard agreements.
The release introduces richer support for Credit Support Annexes (CSA), Credit Terms Annexes (CTA), GMSLA agreements, umbrella agreements and associated elections, while improving the representation of agreement metadata, valuation responsibilities and calculation agent provisions. Together, these changes move the CDM closer to providing a comprehensive and interoperable representation of legal agreements alongside transaction and lifecycle data.
Key releases include:
- Dedicated legal agreement namespaces and transaction components: 7.0.0-dev.2, 7.0.0-dev.10
- CSA components migration from ISDA Foundations: 7.0.0-dev.11
- Trade Association Agreement framework: 7.0.0-dev.12
- ISDA Foundations cleanup and integration: 7.0.0-dev.13
- Documentation descriptions and metadata improvements: 7.0.0-dev.17
- Legal Agreement Model and Legal Documentation Updates 7.0.0-dev.37
- Valuation and Calculation Agent support: 7.0.0-dev.52
- Legal Agreement contact information refactoring 7.0.0-dev.56
- CSA and CTA election refactoring: 7.0.0-dev.62
- Additional CSA election support and catch-all attributes: 7.0.0-dev.64
- Posting obligations updates: 7.0.0-dev.68
- Umbrella Agreement enhancements: 7.0.0-dev.78
- Expanded ISLA GMSLA elections: 7.0.0-dev.105
- Added more elections to the ISDA master agreement Framework 7.0.0-dev.129
3. Smart Contracts Framework
CDM 7 introduces the first major components of the Smart Contracts Framework through the development of the Instruction Composition Framework and associated lifecycle execution enhancements. While the CDM has historically provided a declarative representation of contractual terms, events and state transitions, this work begins to establish a standardized framework for representing how contractual processes are operationally executed. The objective is to provide a deterministic, auditable and reusable mechanism for modelling multi-step lifecycle workflows directly within the CDM, reducing reliance on proprietary procedural implementations and improving consistency across market participants.
The initial implementation focuses on interest rate reset processing and introduces a state-machine based execution framework capable of tracking workflow progress, accumulating intermediate state and determining the next operational step in a lifecycle process. Supporting enhancements to the Event Model refactor reset calculations so that observations, rate determinations and audit information are evaluated upstream and explicitly captured within lifecycle instructions before execution occurs. Together, these changes establish the foundation for future smart contract and workflow automation capabilities within the CDM by introducing standardised instruction composition, state accumulation and deterministic lifecycle execution patterns.
Individual releases include:
- Instruction Composition Framework 7.0.0-dev.116
- Event Model - Reset Instruction and Create_Reset Refactoring: 7.0.0-dev.117
- Instruction Composition Framework Functions 7.0.0-dev.119 7.0.0-dev.131
4. Asset, Product & Observable Model
CDM 7 continues the product ...
7.0.0-dev.132
FpML Ingestion - Functional Mappings for LinkId
Background
This change migrates a Java custom mapper LinkIdMappingProcessor to Rune functional mappings
What is being released?
- Modification to the
MapPartyTradeIdentifierToTradeIdentifierListto mapLinkIdfor trade identifiers. - Modification to
MapEventIdentifierto mapLinkIdfor event identifiers
Review Directions
Changes can be reviewed in PR: #4867
Settlement Centre Refactoring and Party-Based Settlement Centre Support
Background
Prior versions of the CDM SettlementBase included an enum, SettlementCentre that only supported two enums using a separate enum, SettlementCentreEnum. SettlementCentre is primarily used by securities and assets like bonds and equities. Once a settlement centre is defined at issuance, it does not change except by corporate action. Settlement centres should be defined using a party reference that includes and LEI, and it's also necessary to separate settlement centres for security and cash.
What is being released?
This PR refactored SettlementBase by adding new attributes, securitySettlementCentre and cashSettlementCentre, both are AssetAncillaryPartyRoleEnum with new enums values. Use of these attributes requires adding the settlement centre party to the asset.
Review Directions
Changes can be reviewed in PR: #4914
PriceQuantity – Restricting Quantity Cardinality and Introducing Derived Quantity
Background
The quantity attribute on PriceQuantity previously had a cardinality of (0..*), allowing multiple quantities to be associated with a single price.
This made it difficult to distinguish the primary trade quantity from a quantity derived through the application of the price. In some cases, that distinction could only be determined by inspecting the surrounding tradeLot structure rather than directly from the associated payout.
This release introduces a clearer separation between the quantity to which a price applies and the resulting quantity derived from that price.
What is being released?
The following model changes are included:
-
The cardinality of
PriceQuantity.quantityhas been reduced from(0..*)to(0..1). -
A new optional
derivedQuantityattribute has been added toPriceSchedule. This represents a quantity derived from applying the price to the associated trade quantity. -
QuantitySchedulenow extendsMeasureBaseand includes:- an optional
frequency; - an optional
total, representing the aggregate quantity across the schedule.
- an optional
-
A
TotalQuantitycondition requiresfrequencyto be populated whentotalis specified. -
NonNegativeQuantityScheduleoverridestotalas aNonNegativeSchedule. -
Price and quantity unit handling has been updated to maintain consistency between the priced unit and the associated quantity.
-
The
PriceQuantityTriangulationlogic and related CDM functions have been updated to support the revised structure. -
FpML-to-CDM ingestion mappings, expected outputs, documentation, and tests have been updated across the affected asset classes.
Important
Reducing the cardinality of PriceQuantity.quantity is a breaking model change. Implementations that currently populate multiple quantities within a single PriceQuantity must be updated to represent the primary quantity through quantity and any calculated result through PriceSchedule.derivedQuantity, or to use separate PriceQuantity instances where appropriate.
Review Directions
Changes can be reviewed in PR: #4915
Documentation - Rune JSON Serialization Guide
Rune JSON serialization was enabled in version 7.0.0-dev.121,. For further details, see GitHub issue: #4746.
What is being released
This update includes:
- A new page for the CDM website "Next" version describing Serialization
- Updates the common-domain-model.md file to link to the new Serialization page
- Updates the sidebars.js to include the new Serialization page
- Updates the home.mdx file to include the new Serialization page
- Updates package.json and package-lock.json to include the docusaurus mermaid theme (version 3.9.2 which is the current website docusaurus version)
- Updates docusaurus.config.js to allow mermaid markdown and include the mermaid theme
Review Directions
Changes can be reviewed in PR: #4935
Infrastructure - Dependency Update
Version updates include:
DSL10.1.0- Preserve alias identity in as and switch operations. See DSL release notes: 10.1.0DSL10.2.0- Fail the read-only workflow on a missing config and point [externalConfig] errors at the annotation. See DSL release notes: 10.2.0DSL10.2.1- Bump jackson, undici and linkify-it to patch high-severity CVEs. See DSL release notes: 10.2.1DSL10.2.2- Fix NPE when reading an attribute overridden to zero cardinality. See DSL release notes: 10.2.2
Review Directions
5.40.0
Infrastructure - Dependency Update
Background
The CDM infrastructure includes a feature for enumerations that allows them to be linked directly to an FpML or ISO coding scheme. By assigning the appropriate canonical URI to the enumeration, it can automatically stay in sync with updates to the underlying coding scheme.
What is being released?
The FpML Coding Scheme 2.26 was recently published, the changes to coding schemes can be viewed here. To keep in sync with the new published FpML Coding Scheme, the FloatingRateIndexEnum has been updated with the following values:
PHP_ORR_OIS_Compound
This release also updates the DSL and Bundle dependencies:
Version updates include:
DSL9.84.0-asoperation. See DSL release notes: 9.84.0Bundle11.122.2- Update FpML coding scheme to 2.26
Review Directions
Changes can be reviewed in PR: #4925
function Create_ProposedWorkflowStep - propagate action attribute to proposedWorkflowStep
Background
The function cdm.event.workflow.Create_ProposedWorkflowStep has the input parameter action, which is not propagated to the proposedWorkflowStep WorkflowStep action attribute
What is being released?
Add the action mapping to proposedWorkflowStep
Review Directions
Changes can be reviewed in PR: #4830
6.24.0
Infrastructure - Dependency Update
Background
The CDM infrastructure includes a feature for enumerations that allows them to be linked directly to an FpML or ISO coding scheme. By assigning the appropriate canonical URI to the enumeration, it can automatically stay in sync with updates to the underlying coding scheme.
What is being released?
The FpML Coding Scheme 2.26 was recently published, the changes to coding schemes can be viewed here. To keep in sync with the new published FpML Coding Scheme, the FloatingRateIndexEnum has been updated with the following values:
PHP_ORR_OIS_Compound
This release also updates the DSL and Bundle dependencies:
Version updates include:
DSL9.84.0-asoperation. See DSL release notes: 9.84.0Bundle11.122.2- Update FpML coding scheme to 2.26
Review Directions
Changes can be reviewed in PR: #4924
Ingest - Mapping FpML LinkId to TradeIdentifier and EventIdentifier
Background
Ingest functions for FpML Confirmation to CDM are available in the CDM 7-dev version for beta testing by the CDM community. There are still gaps in the original synonym mapping and ingest functional mapping which will be addressed in this PR.
What is being released?
Added new functional mapping for FpML linkId fields:
MapPartyTradeIdentifierToTradeIdentifierList— mapslinkIdentries with the ESMA report tracking number scheme (esma-report-tracking-number) intoassignedIdentifieronTradeIdentifierMapEventIdentifier— extended to acceptfpmlPartyTradeIdentifierand mapslinkIdentries matching ESMA PTRR schemes (esma-ptrr-compression,esma-ptrr-portfolio-rebalancing,esma-ptrr-margin-management) intoeventIdentifier- Updated expectations for
custom-basket-linkId-ptrr-compandcustom-basket-linkId-rtntest cases to reflect the newly mappedLinkIdvalues
Review Directions
Changes can be reviewed in PR: #4875
7.0.0-dev.131
Instruction Composition Framework Functions
Background
Building upon the structural orchestration engine introduced in the foundational Instruction Composition Framework release (#4165), the CDM Smart Contract Taskforce is progressing with the functional implementation of workflow state machines. This release delivers the specific components necessary to execute Step 1 (Floating Rate Index & Trade Date collection) of the 8-step Interest Rate Reset processing lifecycle. By formalizing this execution pattern, the model transitions from a structural shell into a practical, stateful execution engine that deterministically processes transactional events. For further information, see issue #4168.
What is being released?
This release provides the structural types, functions, state wrappers, and enumerations required to extract, route, and store data elements for the initial phase of the Interest Rate Reset workflow. It populates the top-level orchestration types with specific execution instructions and implements the content layer for the underlying state-machine functions.
Functions
Changes that can be found in the cdm.event.instructioncomposition namespace:
NextCompositionStepToExecute: (Updated) Populated with operational execution logic that evaluates the total transaction history to determine the active workflow phase and return the targeted process-specific instruction set.
Changes that can be found in the cdm.event.instructioncomposition.reset namespace:
Create_CollectFloatingRateOptionInstruction: An operational mapping function that safely inspects an interest rate trade's InterestRatePayout floating leg, unwraps nested choice type structures, and extracts the underlying benchmark index name and trade date for the initial phase.UpdateResetCompositionState: (Updated) Modified to implement the "Step 1" overlay logic. It conditionally checks for the presence of the collectFloatingRateOption payload, incrementally updating the cumulative state variables or preserving existing historical fields if absent.
Types and Choices
Changes that can be found in the cdm.event.instructioncomposition namespace:
CompositionStepInstructions(Updated): Expanded to include collectFloatingRateOption as a concrete data payload property, governed by a new one-of constraint (NonEmptyInstruction) to ensure structural validity when wrapping reusable workflow steps.
Changes that can be found in the cdm.event.instructioncomposition.reset namespace:
CollectFloatingRateOptionInstruction: Introduced to act as the official payload signature for Step 1, carrying the extracted FloatingRateIndexEnum and trade execution date.ResetInstructionState: (Updated) Expanded to hold its first active phase state variables (floatingRateIndex and tradeDate), converting this object into a live data accumulator for downstream processing.ResetInstructionSteps: (Updated) Completed to encapsulate and expose the specific process phase enumeration.ResetInstructionCompositionStepsEnum: Defines the strictly sequenced 8-step execution path of an Interest Rate Reset lifecycle (from initial index collection through to calculation and final output generation).
Review Directions
Navigate to the following paths to inspect the new models:
- rosetta-source/src/main/rosetta/instructionComposition-type.rosetta: Review the updated CompositionStepInstructions container and its NonEmptyInstruction structural condition.
- rosetta-source/src/main/rosetta/instructionComposition-func.rosetta: Examine the state-machine logic routing inside UpdateResetCompositionState and the operational behavior of NextCompositionStepToExecute.
- rosetta-source/src/main/rosetta/instructionComposition-reset-type.rosetta: Inspect the new data model payload CollectFloatingRateOptionInstruction, the updated fields inside ResetInstructionState, and the ResetInstructionSteps routing shell.
- rosetta-source/src/main/rosetta/instructionComposition-reset-func.rosetta: Inspect the deep-choice extraction syntax within Create_CollectFloatingRateOptionInstruction designed to parse out benchmark index details safely.