The first step to land the organization's governance model in Anjana Data is to establish the data domain structure, also referred to as organizational units.
A data domain is the mechanism through which custody and accountability over data assets is established, allowing the organization's reality to be represented in terms of functional or semantic domains. Data assets are classified into these units, and users who perform a governance role in a domain are responsible for the objects that belong to it.
Each data domain also acts as the foundation of the authorization mechanisms, determining which users can exercise which roles over the associated assets.
The structure can be configured in two ways:
-
As a flat hierarchy, with a single level.
Example of a flat domain hierarchy -
As a multi-level hierarchy, which allows reflecting different levels of granularity in governance.
Example of a multi-level domain hierarchy
Once the hierarchy is defined, names must be assigned to each unit according to the organization's governance model.
Important note: data domains should not be confused with the organizational hierarchy or the company's org chart. While the hierarchical structure tends to change frequently, data domains should remain relatively stable over time, as they reflect the semantics and business logic of the organization.
In Anjana Data, organizational units are configured in the organizational_unit table and will subsequently be available on object creation screens.
The Organizational Unit Table in the Configuration Panel (Administrator View)
Data domains (organizational units) are configured in the Organizational Unit table. Defining these units is an indispensable prerequisite for configuring authorization, i.e., the assignment of roles to users within specific organizational units, which is managed in the User-Ou-Roles table.
Within this table there is a fictitious organizational unit called Cross that allows authorizing users with cross-cutting roles without having to assign the role in each of the existing units. Although this organizational unit is created by the platform itself, it can be deleted and recreated at any time.
Structure of the Organizational Unit table
Each registered organizational unit is characterized by the following fields:
-
id_organizational_unit: unique identifier of the organizational unit.-
It is assigned automatically from the Configuration Panel, based on database sequences.
-
-
description: textual description of the organizational unit.-
It is an informational and internal field, with no direct functionality within the platform.
-
-
module: purely informational field (legacy, inherited from older versions). It is currently deprecated, although it retains three possible values:-
"BG"→ Business Glossary -
"DC"→ Data Catalog -
"ALL"→ applies to the entire platform (recommended option).
-
-
alias: alias of the organizational unit.-
Must include the full hierarchy path (example:
Parent/Child/ChildOfChild). -
It is used as a translation key, which allows adding translations in the
translationstable of the configuration panel using the sameconfig_keyas the alias.
Each of the parts that make up the alias of the organizational unit are concatenated with “/” (for example:Parent/Child/ChildOfChild). This concatenation will be the translation key if you want to display unit names in the different application languages.In other words, the Alias must be equivalent to the full hierarchical path from the root node to the organizational unit's own node.
-
Important:
-
The alias of organizational units must not contain the characters: “:” or “#”, to avoid interfering with Anjana Data's internal identifiers.
-
The alias “Cross” is reserved for the fictitious organizational unit that allows authorizing users with cross-cutting roles without having to authorize users performing a cross role in all organizational units.
Notes:
-
The separator for the different levels that make up an organizational unit, in this table, will always be “/”. Therefore, in the case of a flat hierarchy (a single level), “/” should be avoided in the alias.
-
Two organizational units with the same alias are not permitted.
-
-
parent: reference to the alias of the immediate parent organizational unit in the case of a multi-level hierarchy.-
If the hierarchy is flat or this is a root level, this field is left empty.
-
Only aliases of organizational units that have been previously created can be referenced.
-
Example: if the hierarchy Parent/Child/ChildOfChild is configured, when registering ChildOfChild the value of parent will be Child, not Parent/Child.
-
organizationalUnitType: informational field indicating the hierarchical level to which the organizational unit belongs.
Adding an Organizational Unit to the Organizational Unit table
Adding a new organizational unit (understood as the complete hierarchy, for example Parent/Child/ChildOfChild) involves registering in the Organizational Unit table as many records as the hierarchy has levels (unless some already exist).
To add each record:
-
Click the New button in the upper right corner. This will open a wizard with the fields defined in the Structure of the
Organizational Unittable section. -
Complete the fields according to the structure described in the previous section.
-
Click Save to save the role or Cancel to discard.
Example: Configuration of the Parent1/Child1/Child1OfChild1 unit
-
First level
-
Module: ALL
-
Alias: Parent1
-
Parent: (empty)
-
Description: (at the administrator's discretion)
-
OrganizationalUnitType: Level 1 (at the administrator's discretion)
-
-
Second level
-
Module: ALL
-
Alias: Parent1/Child1
-
Parent: Parent1 (select from the dropdown)
-
Description: (at the administrator's discretion)
-
OrganizationalUnitType: Level 2 (at the administrator's discretion)
-
-
Third level
-
Module: ALL
-
Alias: Parent1/Child1/Child1OfChild1
-
Parent: Parent1/Child1 (select from the dropdown)
-
Description: (at the administrator's discretion)
-
OrganizationalUnitType: Level 3 (at the administrator's discretion)
-
Modifying an Organizational Unit in the Organizational Unit table
Modification of the Alias and Parent fields should only be done if no objects associated with those organizational units or their descendants exist in the data portal.
If it is necessary to change the hierarchical structure of organizational units that are in use within the data portal, a data deletion must first be performed from the configuration panel menu (Actions > Clear data).
Important: Modifying the organizational unit structure can have an impact on other configuration elements, such as:
-
Role assignments to users
-
Validation workflows
-
Translations
If it is necessary to change the Organizational Unit to which an object belongs, it is recommended to:
Option 1:
Change the translation key for the translation value of the alias in the translations table.
Option 2:
Follow the steps below
-
Create a new Organizational Unit with the new value hierarchy
-
Transfer custody of the objects assigned to the old Organizational Unit using the Organizational Unit change functionality via a user with a Role with
CHANGE_OUpermissions. -
Verify whether there are attributes of the Organizational Unit type in any object template. If so, perform a bulk edit using a user with a Role with
API_ADMINpermissions to remove the value. -
Once custody of all objects has been transferred, it is recommended to:
-
Remove the user authorization in the old Organizational Unit
-
(Optional) The Organizational Unit can be deleted from the
Organizational Unittable
-
Configuring organizational units via direct database access (Developer View)
The database (DB) table containing the organizational unit configuration has the following structure:
|
Column |
Data type |
Constraints / Notes |
|---|---|---|
|
|
|
PRIMARY KEY. Not null. Unique identifier of the organizational unit. |
|
|
|
NOT NULL. Must be unique. |
|
|
|
Optional ( |
|
|
|
Optional ( |
|
|
|
Optional ( |
|
|
|
NOT NULL. Type of the organizational unit. |
Below is an example script to configure the organizational units for the Spain domain corresponding to the following image:
INSERT INTO zeus.organizational_unit
(id_organizational_unit, alias, description, "module", parent, organizational_unit_type)
VALUES
(7, 'España', 'PAIS: ESPAÑA', 'ALL', NULL, '1'),
(9, 'España/Clientes', 'Dominio Clientes', 'BG', 7, '2'),
(10, 'España/Productos o Servicios', 'Dominio Productos o Servicios', NULL, 7, '2'),
(11, 'España/Finanzas', 'Dominio Finanzas', NULL, 7, '2'),
(12, 'España/Recursos Humanos', 'Dominio Recursos Humanos', NULL, 7, '2'),
(13, 'España/Ventas y Marketing', 'Dominio Ventas y Marketing', NULL, 7, '2'),
(14, 'España/Operaciones', 'Dominio Operaciones', NULL, 7, '2'),
(15, 'España/Proveedores', 'Dominio Proveedores', NULL, 7, '2'),
(16, 'España/Compliance y Legal', 'Dominio Compliance y Legal', NULL, 7, '2'),
(17, 'España/Tecnología y Sistemas', 'Dominio Tecnología y Sistemas', NULL, 7, '2'),
(18, 'España/I+D', 'Dominio I+D', 'ALL', 7, '2');
Important:
-
Once the insert has been executed, run the sequence update for the table. (From the Configuration Panel under
Actions > Reset DQ sequences, the sequences for all tables, including this one, can be updated). -
All the weight of the configuration logic falls on the developer who executes the SQL queries directly on the tables. It is strongly recommended to carefully review the Structure of the
Organizational Unittable section.