Skip to content

Conversation

@regnosys-prod-user
Copy link
Collaborator

No description provided.

@regnosys-prod-user regnosys-prod-user requested a review from a team as a code owner June 12, 2025 14:32
@regnosys-prod-user regnosys-prod-user added the Rosetta Pull requests which can be viewed in Rosetta label Jun 12, 2025
@regnosys-prod-user
Copy link
Collaborator Author

Party Model - Legal Entity and Party Representation

Background

CDM has been representing parties and legal entities as two separate objects within the model. However, it has been acknowledged that this should not be like this, as a party is actually related to a transaction, and can be either a person, a legal entity, or both. A legal entity is defined independently from a transaction.

This way, all of its structure should point to the same types and attributes, specially to the identification and the identification type, that were the initial motivation for this change.

What is being released?

  • LegalEntity allows now to specify the identification typology, as well as an attribute for contactInformation.

  • Added a condition to LegalEntity to force that either the identifier or the name are specified (and both can be).

  • Created type Organisation, that extends LegalEntity, and also adds attributes businessUnit and account.

  • Modified type Party, that can now be either person or organisation or both.

  • Added a condition to Party, that forces that if it is an organisation it must have an identifier.

  • Added enum EntityIdentifierTypeEnum.

  • Deprecated enum PartyIdentifierTypeEnum.

  • Modified the synonym mappings accordingly to the changes in the model structure.

Review directions

Changes can be reviewed in PR: #3801

Note

This comment was generated via Rosetta.

@netlify
Copy link

netlify bot commented Jun 12, 2025

Deploy Preview for finos-cdm ready!

Name Link
🔨 Latest commit 7c11289
🔍 Latest deploy log https://app.netlify.com/projects/finos-cdm/deploys/685e7a2888ced800083bdaf2
😎 Deploy Preview https://deploy-preview-3801--finos-cdm.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@lolabeis lolabeis linked an issue Jun 13, 2025 that may be closed by this pull request
identifier EntityIdentifier (0..*) <"A legal entity identifier (e.g. RED entity code).">
name string (0..1) <"The legal entity name.">
[metadata scheme]
contactInformation ContactInformation (0..1) <"The postal/street address, telephone number, email address and/or web page. If the contact information is specific to the associated business unit(s) or person (s), it should be associated with those.">
Copy link
Contributor

Choose a reason for hiding this comment

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

Adjust description after the 1st sentence:
"... That contact information must be specific to the legal entity. Other contact information that is specific to a business unit or person should be associated with those instead."

Copy link
Contributor

Choose a reason for hiding this comment

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

A couple of points:

  1. If the purpose of the LegalEntity identifier is to provide a place to store any and all identifiers for an entity the enum list needs to be expanded and more flexibly to add enums not on the list.
  2. It's not clear what the use of the CountryCode enum is suppose to be, is it to indicate the Entity is a country or to identify the country code of the entity? If it's the later then country codes should be derived from other identifiers.
  3. The TaxID needs to be a complex type with a source/issuer attribute.
  4. There needs to be a way to add identifiers not on the list such as US based EIN tax codes and SEC issued CIK codes.

contactInformation ContactInformation (0..1) <"The postal/street address, telephone number, email address and/or web page. If the contact information is specific to the associated business unit(s) or person (s), it should be associated with those.">
organisation Organisation (0..1)

condition PersonOrOrganisationOrBoth:
Copy link
Contributor

Choose a reason for hiding this comment

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

Missing description

condition PersonOrOrganisationOrBoth:
person exists or organisation exists

condition OrganisationID:
Copy link
Contributor

Choose a reason for hiding this comment

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

Ditto, missing description

role NaturalPersonRoleEnum (0..*) <"FpML specifies a person role that is distinct from the party role.">
[metadata scheme]

type Party: <"A class to specify a party, without a qualification as to whether this party is a legal entity or a natural person, although the model provides the ability to associate a person (or set of persons) to a party, which use case would imply that such party would be a legal entity (even if not formally specified as such). ">
Copy link
Contributor

Choose a reason for hiding this comment

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

Party should retain having a key (they are sometimes specified by reference)

if organisation exists then organisation -> identifier exists

type EntityIdentifier: <"Comprises an identifier and a source. The associated metadata key denotes the ability to associate a hash value to the PartyIdentifier instantiations for the purpose of model cross-referencing, in support of functionality such as the event effect and the lineage.">
[metadata key]
Copy link
Contributor

Choose a reason for hiding this comment

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

EntityIdentifier shouldn't need to have a key (even though that was the case for PartyIdentifier, it wasn't used as a reference).

PLID <"Privacy Law Identifier. It refers to the DMO Letter No. 17-16, http://www.cftc.gov/idc/groups/public/@lrlettergeneral/documents/letter/17-16.pdf">

enum PartyIdentifierTypeEnum: <"The enumeration values associated with party identifier sources.">
[deprecated]
Copy link
Contributor

Choose a reason for hiding this comment

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

Ditto: Delete, don't deprecate


set isEqual:
issuerName is absent or issuerName -> issuerName contains query -> issuerName
issuerName is absent or issuerName -> issuerName = query -> issuerName
Copy link
Contributor

Choose a reason for hiding this comment

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

Looks like this change is unrelated? But it's a good change anyway.

The switch from contains to straight = should apply to multiple other functions in this namespace.

organisation Organisation (0..1)

condition PersonOrOrganisationOrBoth:
person exists or organisation exists
Copy link
Contributor

Choose a reason for hiding this comment

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

personRole should exist rather than person, otherwise a person could be incorrectly specified without a role.

identifier exists or name exists

type Organisation extends LegalEntity:
businessUnit BusinessUnit (0..*) <"Optional organization unit information used to describe the organization units (e.g. trading desks) involved in a transaction or business process, incl. the contact information (when relevant).">
Copy link
Contributor

Choose a reason for hiding this comment

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

Consider making businessUnit single cardinality instead. If multiple business units must be specified, they can be represented by multiple organisations, each extending the same legal entity.


type Organisation extends LegalEntity:
businessUnit BusinessUnit (0..*) <"Optional organization unit information used to describe the organization units (e.g. trading desks) involved in a transaction or business process, incl. the contact information (when relevant).">
account Account (0..1) <"The account that might be associated with the party. At most one account can be specified, as it is expected that this information is used in the context of a contract or legal document where only one account per party can be associated with such object.">
Copy link
Contributor

Choose a reason for hiding this comment

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

Adjust description: "party" --> "organisation"

@lolabeis
Copy link
Contributor

lolabeis commented Oct 1, 2025

Superseded by #4043

@lolabeis lolabeis closed this Oct 1, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Rosetta Pull requests which can be viewed in Rosetta

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Entity Identifier Type

4 participants