This document describes Registry v5.0.0 and later. For earlier versions, see Registry Data Model.

Overview

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.

Tables

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.
  • Artifacts: Objects created in the management of Primary or Secondary objects. In general, Artifacts become read only once the process that creates them is completed.
  • Configuration Objects: Configuration objects primarily relate to the behavior of the application.
  • Metadata: Objects used internally by Registry.

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

Core Tables

Table NameDescriptionCategoryStatusIntroduced
ad_hoc_attributesAd Hoc Attributes for an EntitySecondary ObjectStablev5.0.0 (v3.3.0 as cm_ad_hoc_attributes)
addressesAddresses for an EntitySecondary ObjectStablev5.0.0 (v0.2 as cm_addresses)
api_usersAPI (Programmatic) UsersConfigurationStablev5.0.0 (v0.2 as cm_api_users)
authentication_eventsAuthentication EventsArtifactStablev5.0.0 (v2.0.0 as cm_authentication_events)
co_settingsCO Specific SettingsConfigurationTentativev5.0.0 (v0.9.1 as cm_co_settings)
cosCollaborative OrganizationsConfigurationStablev5.0.0 (v0.2 as cm_cos)
cousCollaborative Organizational UnitsConfigurationStablev5.0.0 (v0.3 as cm_cous)
dashboardsDashboardsConfigurationTentativev5.0.0 (v3.2.0 as cm_co_dashboards)
email_addresses

Email Addresses for an Entity

Secondary ObjectStablev5.0.0 (v0.2 as cm_email_addresses)
enrollment_flow_steps

Enrollment Flow Steps

ConfigurationTentativev5.0.0
enrollment_flows

Enrollment Flows

ConfigurationTentativev5.0.0 (v0.3 as cm_co_enrollment_flows)
ext_identity_source_records

External Identity Source Records

ArtifactTentativev5.0.0 (v2.0.0 as cm_org_identity_source_records)
external_identitiesExternal Identities for a PersonSecondary ObjectStablev5.0.0 (v0.3 as cm_org_identities)
external_identity_rolesRoles for an External IdentitySecondary ObjectStablev5.0.0
external_identity_sourcesExternal Identity SourcesConfigurationTentativev5.0.0 (v2.0.0 as cm_org_identity_sources)
group_membersGroup MembersSecondary ObjectStablev5.0.0 (v0.2 as cm_co_group_members)
group_nestingsGroup NestingsSecondary ObjectStablev5.0.0 (v3.3.0 as cm_co_group_nestings)
group_ownersGroup OwnersSecondary ObjectObsoletev5.0.0 (designed for MR11, replaced with Owners Groups in MR11)
groupsCO GroupsPrimary ObjectStablev5.0.0 (v0.2 as cm_co_groups)
history_recordsTransaction HistoryArtifactStablev5.0.0 (v0.7 as cm_history_records)
identifier_assignmentsIdentifier AssignmentsConfigurationTentativev5.0.0 (v0.6 as cm_co_identifier_assignments)
identifiers

Identifiers for an Entity

Secondary ObjectStablev5.0.0 (v0.2 as cm_identifiers)
job_history_recordsJob History RecordsArtifactStablev5.0.0 (v2.0.0 as cm_co_job_history_records)
jobsJobsArtifactStablev5.0.0 (v2.0.0 as cm_co_jobs)
meta

Platform Meta Information

MetadataStablev5.0.0 (v0.9.4 as cm_meta)
namesNames for an EntitySecondary ObjectStablev5.0.0 (v0.2 as cm_names)
peopleCO PeoplePrimary ObjectStablev5.0.0 (v0.2 as cm_co_people)
person_rolesRoles for a PersonSecondary ObjectStablev5.0.0 (v0.3 as cm_co_person_roles)
petition_history_recordsPetition History RecordsArtifactTentativev5.0.0 (v0.3 as cm_co_petition_history_records)
petition_step_resultsPetition Step ResultsArtifactTentativev5.0.0
petitionsPetitionsArtifactTentativev5.0.0 (v0.3 as cm_co_petitions)
pipelinesPipelinesConfigurationTentativev5.0.0 (v2.0.0 as cm_co_pipelines)
pluginsPlugin RegistryMetadataTentativev5.0.0
pronounsPreferred Pronouns for a PersonSecondary ObjectExperimentalv5.0.0
provisioning_history_records

Provisioning History Records

ArtifactTentativev5.0.0
provisioning_targetsProvisioning TargetsConfigurationTentativev5.0.0 (v0.8 as cm_co_provisioning_targets)
serversServersPrimary ObjectTentativev5.0.0 (v3.2.0 as cm_servers)
telephone_numbersTelephone Numbers for an EntitySecondary ObjectStablev5.0.0 (v0.2 as cm_telephone_numbers)
typesAttribute Type DefinitionsConfigurationStablev5.0.0 (v0.6 as cm_co_extended_types)
urlsURLs for an EntitySecondary ObjectStablev5.0.0 (v3.1.0 as cm_urls)

Plugin Tables

Tables for Available Plugins will not be created until the Plugin is activated.

Table NameDescriptionPluginCategoryStatusIntroduced
api_source_recordsAPI Source RecordsAPI Source PluginAvailableTentativev5.0.0 (v3.3.0 as cm_api_source_records)
api_sourcesAPI SourcesAPI Source PluginAvailableTentativev5.0.0 (v3.3.0 as cm_api_sources)
file_provisionersFile ProvisionersFile Provisioner PluginAvailableExperimentalv5.0.0 (v0.8 as cm_co_changelog_provisioner_targets)
file_sourcesFile SourcesFile Source PluginAvailableTentativev5.0.0 (v2.0.0 as cm_file_sources)
format_assigner_sequencesFormat Assigner SequencesFormat Identifier Assignment PluginCoreTentativev5.0.0 (v0.6 as cm_co_sequential_identifier_assignments)
format_assignersFormat AssignersFormat Identifier Assignment PluginCoreTentativev5.0.0 (v0.6 as cm_co_identifier_assignments)
sql_assignersSQL AssignersSQL Identifier Assignment PluginCoreTentativev5.0.0
sql_provisionersSQL ProvisionersSQL Provisioner PluginAvailableTentativev5.0.0 (v3.3.0 as cm_co_sql_provisioner_targets)
sql_serversSQL ServersCore Server PluginCoreTentativev5.0.0 (v3.2.0 as cm_sql_servers)
  • No labels