Skip to content
Closed
Show file tree
Hide file tree
Changes from 2 commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
1fe81f1
Legaldocumentation - Enhance the Umbrella functionality within the Le…
AdrianJenksD2LT Nov 14, 2025
30185ef
Revisions to the Umbrella functionality Contribution to reflect the c…
AdrianJenksD2LT Dec 1, 2025
f8817d1
Updated contribution to remove some types that had been added for Ame…
AdrianJenksD2LT Dec 2, 2025
93a46d0
Contribution amended after discussions regarding LegalEntityIdentifie…
AdrianJenksD2LT Dec 5, 2025
e7eca6c
Upgrade model version from 7.0.0-dev.54 to 7.0.0-dev.71
AdrianJenksD2LT Dec 17, 2025
50e8042
Contribution updated to reflect comments received on the original con…
AdrianJenksD2LT Dec 17, 2025
f08b4c8
Upgrade model version from 7.0.0-dev.71 to 7.0.0-dev.72
AdrianJenksD2LT Dec 18, 2025
c78b8cb
Updated description to remove a typo
AdrianJenksD2LT Dec 18, 2025
d76cf73
Upgrade model version from 7.0.0-dev.72 to 7.0.0-dev.73
AdrianJenksD2LT Dec 19, 2025
ae2cc09
Updated description added to the UmbrellaPartyRoleEnum
AdrianJenksD2LT Dec 19, 2025
fafdf62
UmbrellaPartyRoleEnum descriptions updated to provide clarity on Cont…
AdrianJenksD2LT Dec 19, 2025
5d4545d
Upgrade model version from 7.0.0-dev.73 to 7.0.0-dev.74
AdrianJenksD2LT Dec 23, 2025
acf5025
Amendments made to Type names as advised within the contribution comm…
AdrianJenksD2LT Dec 23, 2025
c33d9a5
Upgrade model version from 7.0.0-dev.74 to 7.0.0-dev.76
AdrianJenksD2LT Jan 6, 2026
4a51fa4
Updated comments to maintain consistency of use of term nonlegal enti…
AdrianJenksD2LT Jan 6, 2026
4a72819
Upgrade model version from 7.0.0-dev.76 to 7.0.0-dev.77
AdrianJenksD2LT Jan 7, 2026
f4717e5
Added a condition under LegalAgreement to enforce a condition so both…
AdrianJenksD2LT Jan 7, 2026
32132e9
Updated contribution added a full stop to a description to allow Easy…
AdrianJenksD2LT Jan 9, 2026
fa0ca25
Updated descriptions with full stop to allow contribution and resolve…
AdrianJenksD2LT Jan 9, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -280,3 +280,19 @@ enum TerminationCurrencyConditionEnum:
FreelyAvailable <"A currency that is freely available.">
PaymentsDueAndFreelyAvailable <"A currency in which payments would be due under one or more Transactions and that is freely available.">
Specified <"Termination Currency Conditions are specified.">

enum UmbrellaPartyRoleEnum:
Agent <"Represents a Legal Entity who has authority to negotiate, execute and deliver confirmations on behalf of each affiliate that is linked to the Agent.">
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi @AdrianJenksD2LT are the descriptions of the values here all correct in regard to the LegalEntity / Party distinction?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have added a clarification to the description

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you do the same for all the other enum values if required.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All Enum descriptions updated and contributed

InvestmentManager <"Represents a Legal Entity who has been authorised to act as a centralised authority empowered to negotiate, execute and manage transactions on behalf of multiple affiliated funds or accounts.">
Principal <"Represents a Legal Entity that enters into and assumes direct responsibility for transactions.">
SubAccount <"Represents an individual trading entity, fund, portfolio or managed account associated to a principal, Investment Manager or Agent Legal Entity.">
Sleeve <"Represents a distinct trading strategy, portfolio, or sub account managed within a broader legal entity or fund. It is not a legal party to the agreement.">
enum AmendmentPurposeEnum:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Minor, looking at it, all enums prior to this had a line of whitespace between them for readability. Would recommend following suit

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This was resolved by removing some code that was part of a later planned submission

AmendTerms <"Amendment of Legal Agreement Terms">
AmendEntities <"Add, Remove or Amend Legal Entities to the agreement">
AmendandRestate <"Amend terms and restate the legal agreement elections">
Novation <"Novate trades from existing agreement to alternative agreement">
Superseding <"Terminate existing agreement and define new agreement as superseding original agreement">
Termination <"Termination of existing agreement">
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Super minor, these descriptions are missing full stops and they appear to be in the rest of the descriptions in this file

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks Paul, those types should not have been in this contribution I will revert



Original file line number Diff line number Diff line change
Expand Up @@ -63,14 +63,20 @@ type AgreementTerms: <"Specification of the content of a legal agreement.">
clauseLibrary boolean (0..1) <"Specification of whether the agreement terms have been negotiated using the clause library methodology.">
counterparty Counterparty (2..2) <"Specification of the roles of the counterparties to the agreement.">

type AmendmentTerms: <"Represents the purpose and terms associated with an Amendment document">
purpose AmendmentPurposeEnum (1..*) <"Purpose of the amendment">
impactedAgreements LegalAgreementBase (0..*) <"Test">
agreementTerms AgreementTerms (0..*) <"Test">
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should not have "Test" as a description

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks Paul, those types should not have been in this contribution I will revert

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm presuming the AmendmentTerms here are capturing which agreements (which presumably will most likely just be 1) are impacted, and what the updated agreementTerms are.

Is there a way to add some validation here that will allow for a quick sanity check that the impacted agreements and the terms line up correctly? even checking just that e.g. length of agreement terms is not greater than impacted agreements would be sensible.

And final point, should both of these not be (1..*). I wouldn't have an amendment term without impacting at least one agreement with related terms?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks Paul, those types should not have been in this contribution I will revert

Ah, typed out more info before I saw reply, you can ignore my other comment


type LegalAgreement extends LegalAgreementBase: <"The specification of a legal agreement between two parties, being negotiated or having been executed. This includes the baseline information and the optional specialised elections">
[metadata key]
[rootType]

agreementTerms AgreementTerms (0..1) <"Specification of the content of the legal agreement.">
relatedAgreements LegalAgreement (0..*) <"Specifies the agreement(s) that govern the agreement, either as a reference to such agreements when specified as part of the CDM, or through identification of some of the key terms of those agreements, such as the type of agreement, the publisher, the vintage, the agreement identifier and the agreement date.">
amendment AmendmentTerms (0..*) <"Represents the legal purpose of an amendment document and the Legal agreements which are impacted by the amendment">
umbrellaAgreement UmbrellaAgreement (0..1) <"The determination of whether Umbrella Agreement terms are applicable (True) or Not Applicable (False).">

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

super minor, unnecessary indent

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Amended

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What is the relationship between agreementTerms and umbrellaAgreement. Should it be possible to have both included under one LegalAgreement?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

agreementTerms is used to capture the terms of a one way or Bilateral CSA. The umbrellaAgreement is used as the entry point to define that the structure of this agreement being captured is an Umbrella.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

When capturing an agreement you should either capture agreementTerms or umbrallaAgreement not both.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If we should only have agreementTerms OR umbrellaAgreement and not both then we’ll need to add a condition under LegalAgreement to enforce this. Something like this should work – please feel free to adapt the comment to better describe an umbrella agreement:

condition AgreementType: <"Either the Agreement Terms (i.e. a bilateral agreement) or an Umbrella Agreement (i.e. an agreement with multiple parties) should be included, not both.">
        required choice agreementTerms, umbrellaAgreement

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Condition added as recommended and contribution submitted

condition ConsistentlyExecutedAgreements: <"An executed agreement can only point to executed related agreements if any.">
if relatedAgreements exists and agreementDate exists
then relatedAgreements -> agreementDate exists
Expand Down Expand Up @@ -153,18 +159,27 @@ type AgreementName: <"Specifies the agreement name through an agreement type and
if creditSupportAgreementMarginType exists
then creditSupportAgreementType exists

type UmbrellaAgreement: <"A class to specify a set of legal entities which are part of a legal agreement beyond the two contracting parties to that agreement. This data representation reflects the ISDA Create representation.">
type UmbrellaAgreement: <"Specifies a set of legal entities which are part of a legal agreement beyond the two contracting parties to that agreement.">

isApplicable boolean (1..1) <"The determination of whether Umbrella Agreement terms are Applicable (True), or Not Applicable (False)">
language string (0..1) <"The language associated with the umbrella agreement, and which applies to all the parties to the umbrella agreement.">
parties UmbrellaAgreementEntity (0..*) <"Underlying principals to the umbrella agreement.">
agreementSet UmbrellaAgreementSet (1..*) <"The language associated with the umbrella agreement, and which applies to all the parties to the umbrella agreement.">
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Following on from the comment above, I believe this type should be Agreement with a cardinality of (0..1). Then you can specify multiple parties, but they are only party to one agreement.

If you have multiple agreements they can all be added in LegalAgreement -> UmbrellaAgreement if it has a cardinality of (0..*)

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agreed to update the UmbrellaAgreementSet type to use the following structure

type UmbrellaAgreementSet: 
    agreement Agreement (0..1) 
    umbrellaAgreementParty UmbrellaAgreementParty (2..*) 
    language string (0..1)

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Updated as recommended

parties UmbrellaAgreementEntity (2..*) <"Specifies the underlying entities to the agreement that either act as legal parties to the agreement or represent Legal constructs that are managed by a party to the agreement but do not represent a Legal Entity as of themselves.">
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Aware the Legal Entity capitalisation is standard, but gave me pause at Legal constructs. Very minor

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Amended capitalisation

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

On line 156 we state this captures the legal entities beyond the two contracting parties. But then we specify here parties must be a minimum of length 2. If I have an umbrella agreement between bank A and bank B, but bank B is acting as an agent for a single principal, would this not fall down? Aware that scenario is unlikely, but it would be technically possible?

Party A Bank A
Party B Bank B (acting as an agent)
Principal Fund 1

Or would the top layer parties also be captured here, in which case the description is slightly off?

Again, legalese not my forte, so point out the flaws in my logic

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think the description is off and needs to be updated to reflect the scenario you state. A party can be both an Agent on the agreement and a Principal as well.

language string (0..1) <"Represents any additional language that may need to be captured regarding the structure or application of terms that may exist for the agreement.">

condition UmbrellaAgreementExists: <"Umbrella Agreement language and parties should not exist when Umbrella Agreement terms are Not Applicable.">
if isApplicable = True then language exists and parties exists
type UmbrellaAgreementEntity extends Counterparty: <"A class to specify the legal entities that are part of the umbrella agreement.">
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this description technically true now? We are defining both legal and non legal entities in this type? I believe the parentParty does need to be legal, but the actual entity possibly not?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Description amended

umbrellaPartyrole UmbrellaPartyRoleEnum (0..1) <"Represents the legal role that each defined entity to the agreement performs within the structure of that agreement.">
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

umbrellaPartyRole as the type name

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This should just be partyRole

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Amended as requested

parentParty Parentparty (0..1) <"Represents the identification of a parent child relationship between two entities in the Umbrella agreement, allowing non-legal entities to be linked to the appropriate legal entity and allowing funds, portfolio or managed accounts to be linked to their applicable Investment Manager or Agent within the agreement.">
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would rename Parentparty to ParentParty for syntax

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Changed as recommended


type UmbrellaAgreementEntity extends LegalEntity: <"A class to specify the legal entities that are part of the umbrella agreement.">
condition Parentparty: <"Identifies where a parent child relationship exists between two parties to the Umbrella agreement, allowing none legal entities to be linked to the appropriate legal entity and allowing funds, protfolio or managed accounts to be linked to their applicable Investment Manager or Agent within the agreement.">
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we remove the word "none" from the comment?
protfolio = portfolio

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think it is important to retain something in the description to state that not all Entities are Legal Entities, I have therefore removed the word none and replaced with non-legal, if this still feels incorrect I can just leave the description as entities but I want to ensure that members recognise that all form of entities to the Umbrella agreement should be captured under this type.

if umbrellaPartyrole = UmbrellaPartyRoleEnum -> Sleeve then parentParty exists
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So a sleeve is the only non legal entity here, sub accounts can stand on their own right?

And in the same breath, a principal or an investment manager can have an agent as a parent?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

At the moment that is true, although if there are believed to be other entity types these can be added to the enum and the appropriate condition added to ensure compliance to ensure non legal entities have a legal entity parent.

As you state we also need to recognise that any Legal entity can also have a parent but we cannot enforce that a Legal Entity must have a parent if they are not an Agent or Investment Manager.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@AdrianJenksD2LT was there logic originally around UmbrellaPartyRoleEnum -> Agent where parentParty didn't exists?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There was but it was not needed

or
if umbrellaPartyrole = UmbrellaPartyRoleEnum -> Agent then parentParty is absent

terms string (0..1) <"The terms that might be associated with each party to the umbrella agreement.">
type Parentparty: <"A class to specify the hierarchical structure of the entity relationships within the Umbrella agreement.">
parentIdentifier string (0..1) <"Represents the Entity Identifier of the parent entity on this agreement for the party defined.">
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What is the Entity Identifier going to be? Would this be a Legal Entity and thus could use the LegalEntity type?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As not all entities will be Legal Entities as described earlier, I believe this needs to be as open as possible allowing the user to define how they are using the Entity Identifier to accurately record relationships between entities.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

But is this not always going to be ParentParty and hence will be a legal entity? in which case Chris is right, and it would provide a good sanity check that nobody sets up a non legal entity as a parent?

If non legal entities can be parents, please ignore me, but as far as I can see this is sensible


type UmbrellaAgreementSet: <"Represents the groups of agreement term elections that exist within the agreement and to which entities that particular group of elections apply. Where all entities under the umbrella have the same set of elections only one agreement set will exist. At least one agreement set must be defined for an Umbrella agreement">
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This type can be removed.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agreed to update the UmbrellaAgreementSet type to use the following structure

type UmbrellaAgreementSet: 
    agreement Agreement (0..1) 
    umbrellaAgreementParty UmbrellaAgreementParty (2..*) 
    language string (0..1)

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Updated as requested

agreement Agreement (1..1) <"Specification of the standard set of terms that define a legal agreement.">
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

When specifying the agreement (whether it is here in UmbrellaAgreementSet or in UmbrellaAgreement, depending on the final contribution), we need to ensure that the ISLA GMSLA is excluded as it is not applicable for use within an umbrella agreement. This can be done using a condition like this for example:

condition ExcludeGMSLA:
        agreement -> masterAgreementElections -> islaGmsla is absent

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added as requested

partyId PartyIdentifier (1..*) <"The identifier associated with a party, e.g. the 20 digits LEI code.">

type AddressForNotices: <"Specification of the address and other details for notices.">
primaryNotices ContactElection (1..1) <"Specification of primary notice details">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -715,8 +715,6 @@ synonym source CreateiQ_1_0 extends CreateiQ
[value "documentType"]

UmbrellaAgreement:
+ isApplicable
[set to True when "is_applicable" = "applicable" , set to False when "is_applicable" = "not_applicable"]
+ language
[value "language" maps 2 removeHtml]
+ parties
Expand Down
Loading