This document describes Registry v5.0.0 and later. For earlier versions, see Registry Data Model.
The COmanage Registry Data Model revolves around the Person, which conceptually represents one person associated with an organization.
- A COmanage installation is referred to as a Collaboration Management Platform, or CMP.
- A CMP is a multi-tenant installation, each tenant is referred to as a Collaborative Organization or CO.
- The core operational record of a participant within the CO is the Person.
- The Person record maintains information that is unique to a person within the CO, such as names and identifiers.
- An individual person should only have one Person record within a CO.
- However, an individual person may participate in multiple COs housed within the same CMP, and could therefore have multiple Person records (each isolated from the other) within the CMP.
- A Person may have zero or more External Identities. An External Identity conceptually represents the Person's identity as asserted by a "home" or "external" institution, such as their University or a social identity provider.
- A CO Person may have one or more Person Roles within the CO. A Person Role record maintains information that is unique to a role a person has within a CO, such as title and physical address.
Registry is a database oriented application, with quite a few tables under the hood. These tables fall into a few broad categories:
- Primary Objects: Primary objects are those that directly relate to the primary purpose of Registry: storing information about people and other entities related to the organization. Example include People and Departments. Primary Objects can be identified because they belongTo Cos, and are not configuration objects.
- Secondary Objects: Secondary objects store additional information about Primary objects, in particular when there is a many-to-one relationship. Examples include Name and Email Address. Secondary Objects belongTo a Primary Object or another Secondary Object.
- Configuration Objects: Configuration objects primarily relate to the behavior of the application.
In addition to the column definitions available for each table below, all tables have additional columns used by the framework and supporting code. These columns include
- Timestamps managed by Cake (
- Columns used in support of Changelog Behavior
The statuses for each table are defined as
- Stable: The table definition will not change in a backwards-incompatible manner across minor releases. Stable tables may only be removed in major releases.
- Tentative: The table definition will likely become stable, but may change in a backwards-incompatible manner across minor and patch releases. Tentative tables may be refactored or removed without notice.
- Experimental: No specific assertion is made about the stability of the table. It may be changed significantly or even removed without notice.
- Obsolete: The table is no longer in use as of the specified version.
- Not Implemented: The table definition is for planning purposes only.
Major, minor, and patch releases are as defined in semantic versioning.
|ad_hoc_attributes||Ad Hoc Attributes for an Entity||Secondary Object||Stable||v3.3.0 as cm_ad_hoc_attributes|
|addresses||Addresses for an Entity||Secondary Object||Stable||v0.2 as cm_addresses|
|api_users||API (Programmatic) Users||Configuration||Stable||v0.2 as cm_api_users|
|authentication_events||Authentication Events||Secondary Object||Stable||v2.0.0 as cm_authentication_events|
|co_settings||CO Specific Settings||Configuration||Tentative||v0.9.1 as cm_co_settings|
|cos||Collaborative Organizations||Configuration||Stable||v0.2 as cm_cos|
|cous||Collaborative Organizational Units||Configuration||Stable||v0.3 as cm_cous|
|dashboards||Dashboards||Configuration||Tentative||v3.2.0 as cm_co_dashboards|
Email Addresses for an Entity
|Secondary Object||Stable||v0.2 as cm_email_addresses|
|external_identities||External Identities for a Person||Secondary Object||Stable||v0.3 as cm_org_identities|
|external_identity_roles||Roles for an External Identity||Secondary Object||Stable||v5.0.0|
|group_members||Group Members||Secondary Object||Stable||v0.2 as cm_co_group_members|
|group_nestings||Group Nestings||Secondary Object||Stable||v3.3.0 as cm_co_group_nestings|
|group_owners||Group Owners||Secondary Object||Tentative||v5.0.0|
|groups||CO Groups||Primary Object||Stable||v0.2 as cm_co_groups|
|history_records||Transaction History||Secondary Object||Stable||v0.7 as cm_history_records|
Identifiers for an Entity
|Secondary Object||Stable||v0.2 as cm_identifiers|
Platform Meta Information
|Metadata||Stable||v0.9.4 as cm_meta|
|names||Names for an Entity||Secondary Object||Stable||v0.2 as cm_names|
|people||CO People||Primary Object||Stable||v0.2 as cm_co_people|
|person_roles||Roles for a Person||Secondary Object||Stable||v0.3 as cm_co_person_roles|
|pronouns||Preferred Pronouns for a Person||Secondary Object||Experimental||v5.0.0|
|telephone_numbers||Telephone Numbers for an Entity||Secondary Object||Stable||v0.2 as cm_telephone_numbers|
|types||Attribute Type Definitions||Configuration||Stable||v0.6 as cm_co_extended_types|
|urls||URLs for an Entity||Secondary Object||Stable||v3.1.0 as cm_urls|