Skip to content

Commit dd54d78

Browse files
committed
Upgrade model version from 7.0.0-dev.52 to 7.0.0-dev.53
2 parents 855f0e6 + 57a5416 commit dd54d78

File tree

45 files changed

+666
-2414
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

45 files changed

+666
-2414
lines changed

RELEASE.md

Lines changed: 19 additions & 93 deletions
Original file line numberDiff line numberDiff line change
@@ -1,103 +1,29 @@
1-
# *Legal Documentation - Valuation/Calculation Agent*
1+
# *Ingestion Framework - Rune DSL syntax replacing static Java functions*
22

33
_Background_
44

5-
D2LT and ISDA are working to enhance the legal documentation aspect of CDM. D2LT has reviewed the Initial Margin / Variation Margin (IM/VM) and Legacy Credit Support documentation and is updating the model to accurately represent the clauses. This includes reducing duplication in the model where possible.
5+
This change is required to remove references to the hard-coded choice functions such as ToDocumentChoice. These functions are implemented in static Java and can instead be implemented with the switch operator in the Rune syntax.
66

77
_What is being released?_
88

9-
Calculation Agent:
10-
- Changed the party type from `CounterpartyRoleEnum` to `CalculationValuationAgentPartyEnum`.
11-
- Updated type and attribute descriptions.
12-
13-
Valuation Agent:
14-
- Removed duplicate `CollateralValuationAgent`
15-
- Renamed `LegacyValuationDate`/`LegacyValuationTime`/`LegacyValuationDate` to `ValuationDate`/`ValuationTime`/`ValuationLocation`.
16-
- Updated type and attribute descriptions.
17-
18-
`CalculationValuationAgentPartyEnum` and `ValuationCalculationDateLocation`:
19-
- Standardised types and enums used under both Valuation Agent and Calculation Agent.
20-
21-
22-
_Review Directions_
23-
24-
Changes can be reviewed in PR: [#4080](https://github.com/finos/common-domain-model/pull/4080)
25-
26-
# _Infrastructure - Dependency Update_
27-
28-
_What is being released?_
29-
30-
This release updates the `DSL` dependency.
31-
32-
Version updates include:
33-
- `DSL` `9.68.0` Allow usage of the `switch` operator on types which exist in other namespaces. See DSL release notes: [DSL 9.68.0](https://github.com/finos/rune-dsl/releases/tag/9.68.0)
34-
35-
No expectations are updated as part of this release.
36-
37-
_Review Directions_
38-
39-
The changes can be reviewed in PR: [#4134](https://github.com/finos/common-domain-model/pull/4134)
40-
41-
# *Legal Documentation - Initial Margin and Variation Margin Clause Updates*
42-
43-
_Background_
44-
45-
D2LT and ISDA are working to enhance the legal documentation aspect of CDM. D2LT has reviewed the Initial Margin / Variation Margin (IM/VM) and Legacy Credit Support documentation and is updating the model to accurately represent the clauses. This includes reducing duplication in the model where possible.
46-
47-
_What is being released?_
48-
49-
Dispute Resolution:
50-
- Merged `valueTerms` and `legacyValue`.
51-
- Merged `resolutionTime` and `legacyResolutionTime`.
52-
- Renamed `LegacyResolutionValue` to `ResolutionValue`.
53-
54-
IneligibleCreditSupport:
55-
- Changed `specifiedParty` type from `Party` to `CounterpartyRoleEnum`.
56-
- Updated type and attribute descriptions.
57-
58-
SensitivityMethodologies:
59-
- Added `partyElection` attribute with a type `SensitivityMethodologiesPartyElection`.
60-
- Split `SensitivityToEquity` into `sensitivityToIndices`, `sensitivityToFunds`, and `sensitivityToETFs`.
61-
- Updated type and attribute descriptions.
62-
63-
Substitution:
64-
- Added `partyElection` attribute with a type `SubstitutionPartyElection`.
65-
66-
Covered Transactions:
67-
- Merged `exposure` and `legacyExposure`.
68-
- Updated type and attribute descriptions.
9+
Everywhere in the ingestion functions where we use a choice function, the function call has been replaced with a switch operator which is now capable of switching over types that extend a base type.
10+
The following rosetta files are affected:
11+
12+
- rosetta-source/src/main/rosetta/ingest-fpml-confirmation-common-func.rosetta
13+
- rosetta-source/src/main/rosetta/ingest-fpml-confirmation-datetime-func.rosetta
14+
- rosetta-source/src/main/rosetta/ingest-fpml-confirmation-legal-func.rosetta
15+
- rosetta-source/src/main/rosetta/ingest-fpml-confirmation-message-func.rosetta
16+
- rosetta-source/src/main/rosetta/ingest-fpml-confirmation-party-func.rosetta
17+
- rosetta-source/src/main/rosetta/ingest-fpml-confirmation-payment-func.rosetta
18+
- rosetta-source/src/main/rosetta/ingest-fpml-confirmation-pricequantity-func.rosetta
19+
- rosetta-source/src/main/rosetta/ingest-fpml-confirmation-product-commodityswap-func.rosetta
20+
- rosetta-source/src/main/rosetta/ingest-fpml-confirmation-product-creditdefaultswap-func.rosetta
21+
- rosetta-source/src/main/rosetta/ingest-fpml-confirmation-product-equityswaptransactionsupplement-func.rosetta
22+
- rosetta-source/src/main/rosetta/ingest-fpml-confirmation-product-returnswap-func.rosetta
23+
- rosetta-source/src/main/rosetta/ingest-fpml-confirmation-product-swap-func.rosetta
24+
- rosetta-source/src/main/rosetta/ingest-fpml-confirmation-tradestate-func.rosetta
6925

7026
_Review Directions_
7127

72-
Changes can be reviewed in PR: [#4081](https://github.com/finos/common-domain-model/pull/4081)
73-
74-
## Legal documentation - Updating the Legacy Threshold and Minimum Transfer Amount types
75-
76-
*Background*
77-
78-
D2LT and ISDA are working to enhance the legal documentation aspect of CDM. D2LT has reviewed the Initial Margin / Variation Margin (IM/VM) and Legacy Credit Support documentation and is updating the model to accurately represent the clauses. This includes reducing duplication in the model where possible.
79-
80-
*What is being released?*
81-
82-
The following updates were applied to Threshold and Minimum Transfer Amount (MTA) types:
83-
84-
Threshold
85-
- Merged Legacy threshold and threshold types.
86-
- Added party elections to specify the party to which the threshold applies.
87-
- Changed infinity attribute to boolean.
88-
- Added conditions for robustness.
89-
- Change fixed amount type to money.
90-
- Added Zero event to fixed amount.
91-
- Updated descriptions of types and attributes.
92-
93-
Minimum Transfer Amount
94-
- Merged Legacy MTA and MTA.
95-
- Added party elections to specify the party to which the MTA applies.
96-
- Added conditions for robustness.
97-
- Change fixed amount type to money.
98-
- Added Zero event to fixed amount.
99-
- Updated descriptions of types and attributes.
100-
101-
*Review Directions*
10228

103-
Changes can be reviewed in PR: [#4107](https://github.com/finos/common-domain-model/pull/4107)
29+
Changes can be reviewed in PR: [#4156](https://github.com/finos/common-domain-model/pull/4156)

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@
8181
<!-- release version is overridden in rosetta-source -->
8282
<maven.compiler.release>11</maven.compiler.release>
8383

84-
<rune-fpml.version>1.1.0</rune-fpml.version>
84+
<rune-fpml.version>1.2.0</rune-fpml.version>
8585
<rosetta.dsl.version>9.68.0</rosetta.dsl.version>
8686
<rosetta.bundle.version>11.89.3</rosetta.bundle.version>
8787
<rosetta.code-gen.version>${rosetta.bundle.version}</rosetta.code-gen.version>

rosetta-source/src/main/rosetta/ingest-fpml-confirmation-common-func.rosetta

Lines changed: 61 additions & 89 deletions
Original file line numberDiff line numberDiff line change
@@ -16,51 +16,14 @@ import cdm.product.common.schedule.*
1616
import cdm.product.common.settlement.*
1717
import cdm.product.template.*
1818

19-
import fpml.confirmation.custom.*
20-
import fpml.consolidated.* as fpml
21-
import fpml.consolidated.* as fpml
22-
import fpml.consolidated.accumulator.* as fpml
2319
import fpml.consolidated.asset.* as fpml
24-
import fpml.consolidated.bond.option.* as fpml
2520
import fpml.consolidated.business.events.* as fpml
26-
import fpml.consolidated.business.events.* as fpml
27-
import fpml.consolidated.cd.* as fpml
28-
import fpml.consolidated.clearing.processes.* as fpml
2921
import fpml.consolidated.com.* as fpml
30-
import fpml.consolidated.confirmation.processes.* as fpml
31-
import fpml.consolidated.correlation.swaps.* as fpml
32-
import fpml.consolidated.credit.event.notification.* as fpml
33-
import fpml.consolidated.dividend.swaps.* as fpml
3422
import fpml.consolidated.doc.* as fpml
35-
import fpml.consolidated.eq.shared.* as fpml
3623
import fpml.consolidated.eqd.* as fpml
37-
import fpml.consolidated.fpmlenum.* as fpml
38-
import fpml.consolidated.fpmlenum.* as fpml
39-
import fpml.consolidated.fpmlreturn.swaps.* as fpml
40-
import fpml.consolidated.fpmlstandard.* as fpml
4124
import fpml.consolidated.fx.* as fpml
42-
import fpml.consolidated.fx.accruals.* as fpml
43-
import fpml.consolidated.fx.targets.* as fpml
44-
import fpml.consolidated.generic.* as fpml
45-
import fpml.consolidated.ird.* as fpml
46-
import fpml.consolidated.loan.* as fpml
47-
import fpml.consolidated.main.* as fpml
48-
import fpml.consolidated.mktenv.* as fpml
49-
import fpml.consolidated.msg.* as fpml
5025
import fpml.consolidated.option.shared.* as fpml
51-
import fpml.consolidated.recordkeeping.processes.* as fpml
52-
import fpml.consolidated.reg.fpmlreporting.product.* as fpml
53-
import fpml.consolidated.reg.fpmlreporting.shared.* as fpml
54-
import fpml.consolidated.repo.* as fpml
55-
import fpml.consolidated.riskdef.* as fpml
56-
import fpml.consolidated.sec.lending.* as fpml
5726
import fpml.consolidated.shared.* as fpml
58-
import fpml.consolidated.valuation.* as fpml
59-
import fpml.consolidated.valuation.fpmlreporting.* as fpml
60-
import fpml.consolidated.variance.swaps.* as fpml
61-
import fpml.consolidated.volatility.swaps.* as fpml
62-
import fpml.custom.*
63-
import fpml.custom.*
6427

6528
func GetFpmlTrade:
6629
inputs:
@@ -93,8 +56,21 @@ func MapStringWithScheme:
9356
stringWithScheme string (0..1)
9457
[metadata scheme]
9558

96-
set stringWithScheme: value
97-
set stringWithScheme -> scheme: scheme
59+
set stringWithScheme: value with-meta {
60+
scheme: scheme
61+
}
62+
63+
func MapStringWithReference:
64+
inputs:
65+
value string (0..1)
66+
reference string (0..1)
67+
output:
68+
stringWithReference string (0..1)
69+
[metadata reference]
70+
71+
set stringWithReference: value with-meta {
72+
reference: reference
73+
}
9874

9975
func MapCurrency:
10076
inputs:
@@ -113,7 +89,8 @@ func MapCurrencyReference:
11389
currencyReference string (0..1)
11490
[metadata reference]
11591

116-
set currencyReference -> reference: fpmlIdentifiedCurrencyReference -> href
92+
set currencyReference:
93+
MapStringWithReference(empty, fpmlIdentifiedCurrencyReference -> href)
11794

11895
func MapResolvablePriceQuantityReference:
11996
inputs:
@@ -122,7 +99,9 @@ func MapResolvablePriceQuantityReference:
12299
quantityReference ResolvablePriceQuantity (0..1)
123100
[metadata reference]
124101

125-
set quantityReference -> reference: fpmlHref
102+
set quantityReference: empty with-meta {
103+
reference: fpmlHref
104+
}
126105

127106
func MapProductTaxonomyList:
128107
inputs:
@@ -159,8 +138,9 @@ func MapAssetClassWithScheme:
159138
enumWithScheme AssetClassEnum (0..1)
160139
[metadata scheme]
161140

162-
set enumWithScheme: value to-enum AssetClassEnum
163-
set enumWithScheme -> scheme: scheme
141+
set enumWithScheme: value to-enum AssetClassEnum with-meta {
142+
scheme: scheme
143+
}
164144

165145
func MapUnitTypeWithScheme:
166146
inputs:
@@ -188,8 +168,9 @@ func MapCapacityUnitWithScheme:
188168
enumWithScheme CapacityUnitEnum (0..1)
189169
[metadata scheme]
190170

191-
set enumWithScheme: MapCapacityUnitEnum(value)
192-
set enumWithScheme -> scheme: scheme
171+
set enumWithScheme: MapCapacityUnitEnum(value) with-meta {
172+
scheme: scheme
173+
}
193174

194175
func MapWeatherUnitWithScheme:
195176
inputs:
@@ -199,8 +180,9 @@ func MapWeatherUnitWithScheme:
199180
enumWithScheme WeatherUnitEnum (0..1)
200181
[metadata scheme]
201182

202-
set enumWithScheme: value to-enum WeatherUnitEnum
203-
set enumWithScheme -> scheme: scheme
183+
set enumWithScheme: value to-enum WeatherUnitEnum with-meta {
184+
scheme: scheme
185+
}
204186

205187
func MapFinancialUnitWithScheme:
206188
inputs:
@@ -210,19 +192,9 @@ func MapFinancialUnitWithScheme:
210192
enumWithScheme FinancialUnitEnum (0..1)
211193
[metadata scheme]
212194

213-
set enumWithScheme: value to-enum FinancialUnitEnum
214-
set enumWithScheme -> scheme: scheme
215-
216-
func MapCommodityFrequencyWithScheme:
217-
inputs:
218-
value string (0..1)
219-
scheme string (0..1)
220-
output:
221-
frequency Frequency (0..1)
222-
[metadata scheme]
223-
224-
set frequency -> key: value
225-
set frequency -> scheme: scheme
195+
set enumWithScheme: value to-enum FinancialUnitEnum with-meta {
196+
scheme: scheme
197+
}
226198

227199
func MapTaxonomySourceEnum:
228200
inputs:
@@ -247,8 +219,9 @@ func MapFeeTypeEnumWithScheme:
247219
enumWithScheme FeeTypeEnum (0..1)
248220
[metadata scheme]
249221

250-
set enumWithScheme: MapFeeTypeEnum(value)
251-
set enumWithScheme -> scheme: scheme
222+
set enumWithScheme: MapFeeTypeEnum(value) with-meta {
223+
scheme: scheme
224+
}
252225

253226
func MapProductIdentifierList:
254227
inputs:
@@ -316,9 +289,10 @@ func MapReferenceCurrency:
316289
[metadata id]
317290
[metadata scheme]
318291

319-
set currency: fpmlReferenceCurrency -> value
320-
set currency -> id: fpmlReferenceCurrency -> id
321-
set currency -> scheme: fpmlReferenceCurrency -> currencyScheme
292+
set currency: fpmlReferenceCurrency -> value with-meta {
293+
id: fpmlReferenceCurrency -> id,
294+
scheme: fpmlReferenceCurrency -> currencyScheme
295+
}
322296

323297
func MapComposite:
324298
inputs:
@@ -381,8 +355,9 @@ func MapQuotedCurrencyPairWithLocation:
381355
quotedCurrencyPair QuotedCurrencyPair (0..1)
382356
[metadata location]
383357

384-
set quotedCurrencyPair: MapQuotedCurrencyPair(fpmlQuotedCurrencyPair)
385-
set quotedCurrencyPair -> location: CreateQuotedCurrencyPairKey(fpmlQuotedCurrencyPair) // TODO: fix code gen issue when setting using with-meta
358+
set quotedCurrencyPair: MapQuotedCurrencyPair(fpmlQuotedCurrencyPair) with-meta {
359+
location: CreateQuotedCurrencyPairKey(fpmlQuotedCurrencyPair)
360+
}
386361

387362
func MapFxSpotRateSource:
388363
inputs:
@@ -513,20 +488,19 @@ func MapExerciseTerms:
513488
)
514489

515490
set exerciseTerms:
516-
ToExerciseChoice(fpmlExercise)
517-
switch
518-
EuropeanExercise then MapEuropeanExerciseTerms(item, cdmExerciseProcedure),
519-
EquityEuropeanExercise then MapEquityEuropeanExerciseTerms(item, cdmExerciseProcedure),
520-
CommodityEuropeanExercise then MapCommodityEuropeanExerciseTerms(item, cdmExerciseProcedure),
521-
FxEuropeanExercise then MapFxEuropeanExerciseTerms(item, cdmExerciseProcedure),
522-
BermudaExercise then MapBermudaExerciseTerms(item, cdmExerciseProcedure),
523-
EquityBermudaExercise then MapEquityBermudaExerciseTerms(item, cdmExerciseProcedure),
524-
AmericanExercise then MapAmericanExerciseTerms(item, cdmExerciseProcedure),
525-
EquityAmericanExercise then MapEquityAmericanExerciseTerms(item, cdmExerciseProcedure),
526-
CommodityAmericanExercise then MapCommodityAmericanExerciseTerms(item, cdmExerciseProcedure),
527-
FxAmericanExercise then MapFxAmericanExerciseTerms(item, cdmExerciseProcedure),
528-
FxDigitalAmericanExercise then MapFxDigitalAmericanExercise(item, cdmExerciseProcedure),
529-
default empty
491+
fpmlExercise switch
492+
fpml.EuropeanExercise then MapEuropeanExerciseTerms(item, cdmExerciseProcedure),
493+
fpml.EquityEuropeanExercise then MapEquityEuropeanExerciseTerms(item, cdmExerciseProcedure),
494+
fpml.CommodityEuropeanExercise then MapCommodityEuropeanExerciseTerms(item, cdmExerciseProcedure),
495+
fpml.FxEuropeanExercise then MapFxEuropeanExerciseTerms(item, cdmExerciseProcedure),
496+
fpml.BermudaExercise then MapBermudaExerciseTerms(item, cdmExerciseProcedure),
497+
fpml.EquityBermudaExercise then MapEquityBermudaExerciseTerms(item, cdmExerciseProcedure),
498+
fpml.AmericanExercise then MapAmericanExerciseTerms(item, cdmExerciseProcedure),
499+
fpml.EquityAmericanExercise then MapEquityAmericanExerciseTerms(item, cdmExerciseProcedure),
500+
fpml.CommodityAmericanExercise then MapCommodityAmericanExerciseTerms(item, cdmExerciseProcedure),
501+
fpml.FxAmericanExercise then MapFxAmericanExerciseTerms(item, cdmExerciseProcedure),
502+
fpml.FxDigitalAmericanExercise then MapFxDigitalAmericanExercise(item, cdmExerciseProcedure),
503+
default empty
530504

531505
func MapExerciseProcedure:
532506
inputs:
@@ -925,19 +899,17 @@ func GetPerUnitOfForEquityDerivativeBase:
925899
output:
926900
perUnitOf UnitType (0..1)
927901

928-
alias assetChoice:
929-
ToAssetChoice(
930-
fpmlEquityDerivativeBase -> underlyer -> singleUnderlyer -> underlyingAsset
931-
)
902+
alias fpmlUnderlyingAsset:
903+
fpmlEquityDerivativeBase -> underlyer -> singleUnderlyer -> underlyingAsset
932904

933905
alias financialUnit:
934-
assetChoice switch
935-
Index then if instrumentId exists then FinancialUnitEnum -> IndexUnit,
936-
default FinancialUnitEnum -> Share
906+
fpmlUnderlyingAsset switch
907+
fpml.Index then if instrumentId exists then FinancialUnitEnum -> IndexUnit,
908+
default empty
937909

938910
set perUnitOf:
939911
UnitType {
940-
financialUnit: financialUnit,
912+
financialUnit: financialUnit default FinancialUnitEnum -> Share,
941913
...
942914
}
943915

0 commit comments

Comments
 (0)