Page tree
Skip to end of metadata
Go to start of metadata

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.

Table Metadata

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 (created, modified)
  • Columns used in support of Changelog Behavior

Table Status

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.

Table Inventory

Table NameDescriptionCategoryStatusIntroduced
ad_hoc_attributesAd Hoc Attributes for an EntitySecondary ObjectStablev3.3.0 as cm_ad_hoc_attributes
addressesAddresses for an EntitySecondary ObjectStablev0.2 as cm_addresses
api_usersAPI (Programmatic) UsersConfigurationStablev0.2 as cm_api_users
authentication_eventsAuthentication EventsSecondary ObjectStablev2.0.0 as cm_authentication_events
co_settingsCO Specific SettingsConfigurationTentativev0.9.1 as cm_co_settings
cosCollaborative OrganizationsConfigurationStablev0.2 as cm_cos
cousCollaborative Organizational UnitsConfigurationStablev0.3 as cm_cous
dashboardsDashboardsConfigurationTentativev3.2.0 as cm_co_dashboards

Email Addresses for an Entity

Secondary ObjectStablev0.2 as cm_email_addresses
external_identitiesExternal Identities for a PersonSecondary ObjectStablev0.3 as cm_org_identities
external_identity_rolesRoles for an External IdentitySecondary ObjectStablev5.0.0
group_membersGroup MembersSecondary ObjectStablev0.2 as cm_co_group_members
group_nestingsGroup NestingsSecondary ObjectStablev3.3.0 as cm_co_group_nestings
group_ownersGroup OwnersSecondary ObjectTentativev5.0.0
groupsCO GroupsPrimary ObjectStablev0.2 as cm_co_groups
history_recordsTransaction HistorySecondary ObjectStablev0.7 as cm_history_records

Identifiers for an Entity

Secondary ObjectStablev0.2 as cm_identifiers

Platform Meta Information

MetadataStablev0.9.4 as cm_meta
namesNames for an EntitySecondary ObjectStablev0.2 as cm_names
peopleCO PeoplePrimary ObjectStablev0.2 as cm_co_people
person_rolesRoles for a PersonSecondary ObjectStablev0.3 as cm_co_person_roles
pluginsPlugin RegistryMetadataTentativev5.0.0
pronounsPreferred Pronouns for a PersonSecondary ObjectExperimentalv5.0.0
telephone_numbersTelephone Numbers for an EntitySecondary ObjectStablev0.2 as cm_telephone_numbers
typesAttribute Type DefinitionsConfigurationStablev0.6 as cm_co_extended_types
urlsURLs for an EntitySecondary ObjectStablev3.1.0 as cm_urls
  • No labels