Objects in Grouper have multiple identifiers including:

Object identifierDescription
UUIDGlobally unique identifier
idIndexInteger which is unique in the object type
nameFully qualified system name including all an
display nameFully qualified name on UI

Objects are needed in various places in Grouper to configure things

Configuration locationDescription
Config filesThe value might be an object or list of objects (e.g. groups or folders)
RulesAttribute values could have an object or list of objects
HooksJava code could refer to objects (hopefully through configs)

Here are the issues with using various types of object identifers

Object identifierIssues
UUID

If you export/import the UUID is probably different in different envs

If you delete and recreate the object with same name, it will have a different UUID

idIndex

If you export/import the idIndex is probably different in different envs. 

If you try to import the same idIndex it could cause conflicts in future

If you delete and recreate the object with same name, it will have a different idIndex

nameIf you rename the object then the old pointer will be broken
display nameChanges too frequently and shouldnt be used for configuration

Future direction of configuring objects

After some discussion, the Grouper teams decided to configure objects using the object name.  If there is a rename in Grouper then:

  1. Look for attributes values that have that old name (directly or comma-separated), and edit it with new name
  2. Look for database configs that have that old name (directly or comma-separated), and edit it with new name

This way we can support renames and export/imports....  we need to implement this in a future version of Grouper

  • No labels