The next step in configuring the governance operating model in Anjana Data is to define the notifications that inform users about events, validation workflows, or incidents on the platform.
Notifications are a key mechanism to ensure traceability and communication within data governance, as they alert users or entire roles about actions such as the expiration of an object, the creation of a workflow, an adherence failure, the modification of policies, or the expiration of a license.
In Anjana Data, notifications are configured in the Notifications table of the configuration panel and will subsequently be available in the data portal for the affected users.
Notifications Table in the Configuration Panel (Administrator View)
Notifications are configured in the Notifications table of the configuration panel. Defining notifications is an indispensable step to configure workflows in the BPM and to ensure that key users receive notifications of interest.
Structure of the Notifications Table
Each notification registered in the table is characterized by the following fields:
-
id: unique identifier of the notification (PK). -
moduleType: module to which the notification applies. Currently an informational (legacy) field inherited from older versions. Possible values:-
"BG"→ Business Glossary -
"DC"→ Data Catalog -
"ALL"→ applies to the entire platform (recommended option).
-
-
notificationCode: alphanumeric code that identifies the notification and allows it to be invoked from platform features. -
notificationReceiverType: defines the type of recipient. Possible values:-
"USER"→ the notification is sent to a specific user. -
"ROLE"→ the notification is sent to all users assigned the indicated role.
-
-
traslationKey: translation key that links to the message text in theTranslationstable. The text may contain variables that will be substituted at the time the notification is issued. -
notificationType: type of notification. Possible values:-
"ALERT"→ alert -
"NOTICE"→ notice -
"ADMIN_ALERT"→ alert directed to administrators
-
-
receiverRole: recipient role of the notification (if thenotification_receiver_typeis ROLE). Must match thenamein theRolestable. -
severity: criticality level of the notification. -
subject: translation key that links to the message text in theTranslationstable containing the subject of the notification.
Notification Codes (notificationCode)
For the application to function correctly, the Notifications table must contain records corresponding to a set of predefined notificationCode values.
|
Notification code |
Purpose |
|
ADHERENCE_FAIL |
Indicates the reason why adherence failed. |
|
CHECK_CONFIGURATION_IN_PROVIDER |
Error retrieving user information from the indicated provider. |
|
COMPLETED_AUTOMATIC_METADATA |
Indicates that the automatic metadata import has completed. |
|
DATASET_EXPIRATION_TOT_FAIL |
Failure to delete permissions when a dataset expires. |
|
DATASET_FAIL |
Failure to create a dataset in third-party systems. |
|
DEACTIVATION |
Notice of deactivation to the corresponding roles and user. |
|
DELETE_ENTITY |
Notifies of the deletion of an entity. |
|
DELETE_RELATIONSHIP |
Notifies of the deletion of a relationship. |
|
DEPRECATION |
Notifies all users of a role that the object is going to be deprecated. |
|
DEPRECATION_ADHERED |
Notifies the user that the object they were adhered to (dataset or DSA) is going to be deprecated. |
|
DISADHERENCE |
Indicates that the de-adherence was successfully completed. |
|
DISADHERENCE_FAIL |
De-adherence failure indicating the reason. |
|
DISADHERENCE_LIST |
Reports the details of the result of the de-adherence process. |
|
DISADHERENCE_LIST_OK |
Indicates the list of objects for which de-adherence was successful. |
|
DSA_FAIL |
DSA creation failed, indicating the reason. |
|
DSA_TRANSFER_FAIL |
Informs the administrator that the DSA organizational unit change could not be performed. |
|
ERROR_AUTOMATIC_METADATA |
A failure occurred during metadata import. |
|
EXCEL_IMPORT |
Notification with an error notice during an Excel create/edit operation. |
|
EXCEL_PREPROCESSING |
Notice of completion of preprocessing for an edit Excel file. |
|
EXPIRATION |
The object is expiring. |
|
EXPIRATION_OBJECT_FAIL |
Notifies of a failure in the expiration of an object and the reason. |
|
EXPIRATION_ADHERED |
The object the user was adhered to has expired. |
|
EXPIRATION_WARNING |
Warning sent to the owners of the object because its expiration is approaching. |
|
EXPIRATION_WARNING_ADHERED |
Warning sent to users adhered to the object indicating that its expiration is approaching. |
|
FORM_FAIL |
Errors found in the object's form. |
|
INDEX_FAIL |
An error occurred during indexing. |
|
INDEX_RELATIONSHIP_FAIL |
Indexing error in relationships. |
|
LICENSE_EXPIRED |
The license has expired. |
|
LICENSE_EXPIRING |
Warning that the license, although still valid, is close to expiring. |
|
MUST_DELETE_RELATIONSHIPS_FIRST |
Warning about the need to delete relationships first before deleting an entity. |
|
MUST_DELETE_RELATIONSHIPS_STRUCTURE_FIRST |
Warning about the need to delete the field relationships of a dataset before deleting it. |
|
NEW_DSA |
When the user requests the creation of a new DSA. |
|
PENDING_WF_FAIL_ADHERENCE |
Indicates the failure in creating a workflow. |
|
POLICY_MODIFICATION |
Notifies of the modification of policies on an object. |
|
REQUIRED_FIELDS |
Notifies of errors in the template configuration. |
|
TAXONOMY_BAD_CONFIGURED |
Notifies of an error in the taxonomy configuration of an object subtype. |
|
TRANSLATION_FILE_UPLOAD_FAIL |
Notifies that an error occurred while uploading the translations file to Minio or S3. |
|
USER_CROSS_ROLE_FAIL |
Indicates the users that have not been configured as cross. |
|
WORKFLOW_DELETE_FAIL |
A workflow could not be deleted. |
|
WORKFLOW_INFO_FAIL |
Error in the workflow because it did not have an associated workflow info. Using the administrative API, the last steps of the workflow can be executed so that it does not remain in a bad state if this error occurs. |
|
WORKFLOW_OK |
The workflow has been created. |
|
WORKFLOW_FAIL |
Indicates the reason why the creation of a workflow failed. |
|
WORKFLOW_TASK_FAIL |
Failure in the validation of a workflow step. |
Variables for Key in Translations as Part of the Notification Body
Additionally, notification message bodies defined through translation keys (the Key field in the Translations table) may contain dynamic variables delimited by ##. These variables will be automatically replaced by the corresponding values at the time the notification is generated and sent.
For example:
"Ocurrió un error en el borrado del workflow con id #OBJECT_ID#".
If a variable is included in a message where it has no applicable value, it will be replaced by N/A.
The following details the various variables that Anjana Data supports for use in notifications:
|
Variable |
Purpose |
|
ACTION |
Action performed. |
|
EXPIRATION_DAYS |
Days until an object expires (it is a negative number if the date is in the past). Only allowed in near-expiration warning and deprecation notifications. |
|
OBJECT_ID |
Object identifier. |
|
OBJECT_LIST |
List of objects; used in notifications such as those for requesting the creation of a new DSA. |
|
OBJECT_NAME |
Object name. |
|
OBJECT_SUB_TYPE |
Object subtype. |
|
ORGANIZATIONAL_UNIT |
Organizational unit of the object. |
|
ORGANIZATIONAL_UNIT_CHANGED |
Destination unit of the object in an OU transfer. |
|
REASON |
Reason for workflow approval/rejection. |
|
REQUEST_REASON |
Reason for the action request (for DSA creation request or adherence request notifications, for example). |
|
RESULT |
Result of the action. |
|
ROLE |
Role of the user who must perform the action or receives the notification. |
|
TYPE_OBJECT |
Object type. |
|
USER_NAME |
User who performed the action. |
|
VERSION |
Version number of the object. |
|
WORKFLOW_TYPE |
Type of workflow launched. |
Native Notifications
Anjana Data natively incorporates a large number of ROLE-based notifications to cover the main data governance events (creation, deletion, expiration, workflows, errors, etc.).
It is the responsibility of the functional administrator to correctly configure the receiver_role field in each notification, so that messages reach the appropriate stakeholders according to the governance operating model defined by the organization.
An incorrect or incomplete assignment may cause users not to receive critical alerts or, conversely, to be overloaded with notifications that do not concern them.
Adding a New Notification to the Notifications Table
Adding a new notification (for example, an alert to validate a workflow step) involves:
-
Adding a record to the
Notificationstable with the basic notification data. -
Configuring the translation keys associated with the notification (
translationKeyandsubject) in theTranslationstable, for all languages used by the organization in Anjana Data (Languagestable).
To add the record to the Notifications table and register a new notification:
-
Click the New button in the upper right corner. This will open a wizard with the fields defined in the Table Structure section of
Notifications. -
Fill in the notification fields according to the structure described in the previous section.
-
Click Save to save the role or Cancel to discard.
Translation Configuration for Notifications
Once the notification has been created in the Notifications table, it is necessary to add records to the Translations table for the message body (translationKey) and the subject (subject) in the different languages configured in the application.
The procedure is as follows:
-
Notification body (
translationKey)-
For each notification and for each language registered in the
Languagestable, a record must be created in theTranslationstable. -
In the
keyfield, thetranslationKeydefined in the notification will be used. -
In the
valuefield, the body text of the message in the corresponding language (thelanguagefield) will be included. -
The message body may include dynamic variables delimited by
##(example:#OBJECT_ID#).
-
-
Notification subject (
subject)-
For each notification and for each language registered in the
Languagestable, an additional record must be created in theTranslationstable. -
In the
keyfield, thesubjectkey defined in the notification will be used. -
In the
valuefield, the subject text in the corresponding language (thelanguagefield) will be included.
-
Important:
-
After adding the translations, it is mandatory to upload the updated translations file via the configuration panel actions menu (
Actions > Upload translation files). -
Additionally, it is recommended to clear caches from the configuration panel (
Actions > Clear cache).
Modifying a Notification
Modifying the subject or body of a notification has no impact on the configuration, as long as the translation keys are not altered, i.e., the translationKey or the subject. In this case, only the content of the value field in the corresponding records of the Translations table needs to be modified.
Conversely, if it is necessary to modify the translation keys (translationKey or subject), changes must be applied in both the Notifications table and the Translations table.
Important:
-
Modifications to the body or subject apply retroactively, also affecting notifications that have already been received.
-
After applying changes to translations, it is mandatory to upload the updated translations file via the configuration panel actions menu (
Actions > Upload translation files). -
Additionally, it is recommended to clear caches from the configuration panel (
Actions > Clear cache).
Configuring Notifications via Direct Database Access (Developer View)
The database (DB) table containing the notifications parameters has the following structure:
|
Field |
Data type |
Required |
Description / Purpose |
|---|---|---|---|
|
|
|
✔️ |
Unique identifier of the notification. Primary key ( |
|
|
|
✔️ |
Module to which the notification applies. Possible values: |
|
|
|
Optional |
Alphanumeric code that allows invoking/sending the notification from Anjana features. |
|
|
|
✔️ |
Defines the recipient: |
|
|
|
Optional |
Translation key for the message body in the |
|
|
|
✔️ |
Type of notification. Possible values: |
|
|
|
Optional |
Role that will receive the notification, if the |
|
|
|
|
|
Below is an example query to configure the notifications associated with the DPO role:
INSERT INTO hermes.notification
(id_notification, module_type, notification_code, notification_receiver_type, translation_key, notification_type, receiver_role, severity, subject)
VALUES
(1, 'BG', NULL, 'ROLE', 'NOTIFICATION.1.BG.ROLE', 'ALERT', NULL, 'HIGH', 'NOTIFICATION.SUBJECT.ACTION.MUST.BE.VALIDATED'),
(3, 'BG', NULL, 'ROLE', 'NOTIFICATION.3.BG.ROLE', 'NOTICE', NULL, 'LOW', 'NOTIFICATION.SUBJECT.ACTION.PERFORMED'),
(5, 'BG', NULL, 'USER', 'NOTIFICATION.5.BG.USER', 'NOTICE', NULL, 'LOW', 'NOTIFICATION.SUBJECT.ACTION.PERFORMED'),
(6, 'BG', NULL, 'ROLE', 'NOTIFICATION.1.BG.ROLE', 'ALERT', NULL, 'HIGH', 'NOTIFICATION.SUBJECT.ACTION.MUST.BE.VALIDATED'),
(7, 'DC', NULL, 'ROLE', 'NOTIFICATION.7.DC.USER', 'ALERT', NULL, 'HIGH', 'NOTIFICATION.SUBJECT.ACTION.MUST.BE.VALIDATED'),
(8, 'DC', NULL, 'USER', 'NOTIFICATION.8.DC.USER', 'NOTICE', NULL, 'LOW', 'NOTIFICATION.SUBJECT.ACTION.PERFORMED'),
(9, 'DC', NULL, 'USER', 'NOTIFICATION.ACTION.REJECTED.WITH.REASON', 'NOTICE', NULL, 'LOW', 'NOTIFICATION.SUBJECT.ACTION.REJECTED.WITH.REASON'),
(10, 'DC', NULL, 'ROLE', 'NOTIFICATION.10.DC.ROLE', 'NOTICE', NULL, 'LOW', 'NOTIFICATION.SUBJECT.ACTION.APPROVED'),
(11, 'DC', NULL, 'ROLE', 'NOTIFICATION.11.DC.ROLE', 'NOTICE', NULL, 'LOW', 'NOTIFICATION.SUBJECT.ACTION.REJECTED'),
(12, 'BG', 'NEW_DSA', 'ROLE', 'NOTIFICATION.NEW_DSA', 'NOTICE', 'data_architect', 'LOW', 'NOTIFICATION.SUBJECT.NEW.DSA'),
(13, 'BG', 'EXPIRATION', 'USER', 'NOTIFICATION.EXPIRATION', 'NOTICE', NULL, 'LOW', 'NOTIFICATION.SUBJECT.EXPIRATION'),
(14, 'DC', 'ERROR_AUTOMATIC_METADATA', 'ROLE', 'NOTIFICATION.AUTOMATIC_METADATA', 'NOTICE', 'DataSteward', 'LOW', 'NOTIFICATION.SUBJECT.METADATA'),
(15, 'DC', 'DATASET_FAIL', 'ROLE', 'NOTIFICATION.DATASET_FAIL', 'ADMIN_ALERT', 'DataOwner', 'HIGH', 'NOTIFICATION.SUBJECT.CREATION.FAIL.DATASET'),
(16, 'DC', 'DSA_FAIL', 'ROLE', 'NOTIFICATION.DSA_FAIL', 'ADMIN_ALERT', 'DataOwner', 'HIGH', 'NOTIFICATION.SUBJECT.CREATION.FAIL.DSA');
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 executing the SQL queries directly on the tables. It is recommended to carefully review the Table Structure section.