Configuration
Breadcrumbs

System Variables

This page documents the system variables configured in the App Configuration table. These variables are loaded by each module (Kerno, Hermes, Minerva, Zeus…) at startup and allow defining global behaviors such as validation limits, queue configurations, connections, batch process scheduling, internationalization, among others.

The correct management of these properties is fundamental for the operation of Anjana Data, both for administrators and developers.

Table AppConfiguration in the Configuration Panel (Administrator view)

The system variables configured in the App Configuration table.

image-20250916-090014.png
Table AppConfiguration where system variables are configured

Structure of the AppConfiguration table

Each registered variable is characterized by the following elements:

  • Id: unique table identifier. It is automatically assigned from the Configuration Panel.

  • Key: property to be configured according to the available variables table.

  • Value: value assigned to the property indicated in the key field.

  • Internal: boolean indicating whether the property is visible from the public API (if internal = false, it must not be displayed in plain text).

  • Application: module to which it applies (kerno, hermes, minerva, zeus or null → applies to all). To assign the correct value, refer to the available variables table.

  • Profile: execution profile in which the configured value applies.

  • Label: informational field to organize variables.

Available variables table

The following table shows all available system variables.

key

value

application

description

anjana.activiti.data

true

hermes

Flag to import WFs on Hermes startup

anjana.activiti.input

DC_WF, BG_WF

hermes

Folders to use for importing WFs. If a new folder is created in the BPM editor of the Configuration Panel to store workflows, it must be included in the Value field of this record.

anjana.activiti.output

/data/WF

hermes

Temporary path of the file directory for processing WFs

anjana.async.db.corePoolSize

5

kerno

Database connection pool size

anjana.async.db.maxPoolSize

20

kerno

Maximum database connection pool size

anjana.async.db.queueCapacity

100

kerno

Queue size for database executions

anjana.async.hermes.corePoolSize

5

kerno

Thread pool size for Hermes executions

anjana.async.hermes.maxPoolSize

10

kerno

Maximum thread pool size for Hermes executions

anjana.async.hermes.queueCapacity

1000

kerno

Queue size for Hermes executions

anjana.async.minerva.corePoolSize

5

kerno

Thread pool size for Minerva executions

anjana.async.minerva.maxPoolSize

20

kerno

Maximum thread pool size for Minerva executions

anjana.async.minerva.queueCapacity

100

kerno

Queue size for Minerva executions

anjana.async.pool.corePoolSize

5

hermes

Hermes asynchronous processing pool size

anjana.async.pool.maxPoolSize

20

hermes

Maximum Hermes asynchronous processing pool size

anjana.async.pool.queueCapacity

100

hermes

Hermes processing queue size

anjana.combinations.max

10

kerno

Maximum number of combinations to display in the adherence cart

anjana.expiration.days

7

kerno

Number of days added to the current date to set as the expiration date for the object that is deprecated when versioned via Excel

anjana.group.enableCrossGrouping

true

zeus

Enables grouping of Cross role OUs into a single OU called “Cross”

anjana.internationalization.separatorNameColumnsExcel

_

kerno

Character to use as a separator for multi-valued attribute values in Excel

anjana.last-execution.maxRetry

0

hermes

Number of retries in LastExecution steps of WFs, where 0 means infinite retries

anjana.last-execution.waitRetry

300

hermes

Wait time between retries in LastExecution steps of WFs

anjana.mail.aws[0]

email

zeus

Provider property from which to retrieve the email; multiple values can be set by numbering the properties with ‘[number]’ (see anjana.mail.azure[x] or anjana.mail.google[x] properties)

anjana.mail.azure[0]

mail

zeus

Provider property from which to retrieve the email; multiple values can be set by numbering the properties with ‘[number]’

anjana.mail.azure[1]

otherMails

zeus

Provider property from which to retrieve the email; multiple values can be set by numbering the properties with ‘[number]’

anjana.mail.azure[2]

userPrincipalName

zeus

Provider property from which to retrieve the email; multiple values can be set by numbering the properties with ‘[number]’

anjana.mail.db[0]

email

zeus

Provider property from which to retrieve the email; multiple values can be set by numbering the properties with ‘[number]’

anjana.mail.google[0]

primaryEmail

zeus

Provider property from which to retrieve the email; multiple values can be set by numbering the properties with ‘[number]’

anjana.mail.google[1]

emails

zeus

Provider property from which to retrieve the email; multiple values can be set by numbering the properties with ‘[number]’

anjana.mail.ldap[0]

mail

zeus

Provider property from which to retrieve the email; multiple values can be set by numbering the properties with ‘[number]’

anjana.notification.expiration

4

kerno

Number of advance notice days for notifications indicating the upcoming expiration of an object

anjana.numberDatasetFieldsForWarning

100

kerno

Number of dataset_fields to consider a Dataset as large, in which case actions performed by users will redirect them to the Portal instead of making them wait for completion

anjana.numberEntitiesToSubmit

50

kerno

Number of entities to send for validation at once during Excel import

anjana.provider.primary

Database

zeus

Property to indicate whether a primary provider should be pre-selected on login screens and which one it should be. 

This value must match the security.authentication.<provider> property and the name of the chosen provider instance. 

For database and Ldap the values are ‘Database’ and ‘Ldap’ respectively.

anjana.retries

5

kerno

Retries in case of communication failure during reindexing

anjana.role.defaultRole

default


Role applied to users when registering in Anjana. Allows access to users without a specified role in the application.

anjana.scheduling.enabled

true

kerno

Flag to enable Kerno batches

anjana.scheduling.expiration

0 0 0 ? * *

kerno

Scheduling of object expiration (every day at 00:00h)

anjana.scheduling.licenseNotification

0 0 0 ? * *

zeus

Scheduling of the license expiration warning scheduled task (every day at 00:00)

anjana.scheduling.lineageObjectsPerPacket

1000

kerno

Number of objects per packet for processing lineage

anjana.scheduling.notification

0 45 7 ? * *

kerno

Scheduling of the notification for entities about to expire (every day at 7:45h)

anjana.scheduling.notification

0 0 0 ? * *

zeus

Scheduling of the cross role review scheduled task

anjana.scheduling.objectsPerPacket

500

kerno

Number of objects to process per packet in Anjana internal processing

anjana.scheduling.threads

2

kerno

Number of threads for batches

anjana.scheduling.threadScheduleSeconds

15

kerno

Delay in seconds between indexing packets

anjana.separatorAttribute

_-

kerno

Character used as a separator for multi-valued attributes in the database

anjana.tot.createCustom

false

kerno

Flag so that, when metadata extraction with a plugin retrieves an attribute not found in the template, it is created as a custom attribute of the object

anjana.waitRetry

10

kerno

Wait time between each retry in case of communication failure during reindexing

anjana.workflow.launchIfCustomChanges

true

kerno

Flag to consider custom attributes when checking for changes in an object to determine whether or not to launch the workflow

ARI_OBJECT_SEPARATOR 

:


Character used to separate keywords in the ARI name of files uploaded to Minio or S3

default_language_app

en-US


Default language of the application, value of the i18n_code field from the zeus.languages table

MAX_DECIMAL_PRECISION

16


Maximum number of digits in the decimal part of an input_decimal (or array) allowed

MAX_INTEGER 

9223372036854775807


Maximum number for an integer, decimal, array or range type attribute

MAX_LENGTH_TEXT_BD 

255


Maximum number of characters allowed in the database for input_text type fields and their multilingual counterparts, such as in workflow validation or adherence request

MAX_LENGTH_TEXT_EDITOR 

300000


Maximum number of characters allowed for a text_area, enriched_textarea attribute type and multilingual versions of both

MIN_DECIMAL_PRECISION 

0


Minimum number of digits in the decimal part of an input_decimal (or array) allowed

MIN_INTEGER 

-9223372036854775808


Minimum number for an integer, decimal, array or range type attribute

MIN_LENGTH_TEXT_EDITOR

1


Minimum number of characters allowed for an input_text, text_area, enriched_textarea attribute type and multilingual versions of all three

MIN_LENGTH_SEARCH_USER

0


Minimum number of characters for the user search to start returning results

solr.module.kerno.collection

kerno

minerva

Name of the Solr collection for Anjana objects

solr.module.kerno.generate

true

minerva

Flag to create the objects collection in Solr, if it does not exist, at startup

solr.module.kerno.replication

1

minerva

SolR replication of the objects collection

solr.module.kerno.shards

1

minerva

SolR sharding of the objects collection

solr.module.recommendations.collection

recommendations

minerva

Name of the Solr collection for Anjana Data assistive pills

solr.module.recommendations.generate

true

minerva

Flag to create the recommendations collection in Solr, if it does not exist, at startup

solr.module.recommendations.replication

1

minerva

SolR replication of the recommendations collection

solr.module.recommendations.shards

1

minerva

SolR sharding of the recommendations collection

solr.multivalued-separator

_-

minerva

Character used to concatenate multi-valued attributes, which must match anjana.separatorAttribute in Kerno

wf.async.waiter

20000

hermes

Wait time in ms for Activiti internal tasks

wf.validation.automatic

true

hermes

Flag to enable automatic validation of tasks without requiring human action

Exceptions

Due to database limitations or the behavior of certain attributes, in some cases the values in AppConfiguration take precedence over those configured in Template Attribute Validations.

Validation in template_attribute_validations

Validation in AppConfiguration

Prevailing validation

MAX

MAX_INTEGER

If the MAX value is greater than MAX_INTEGER, the MAX_INTEGER validation takes precedence.

MIN

MIN_INTEGER

If the MIN value is less than MIN_INTEGER, the MIN_INTEGER validation takes precedence.

MAX_DECIMAL_PRECISION

MAX_DECIMAL_PRECISION

If the MAX_DECIMAL_PRECISION value is greater than MAX_DECIMAL_PRECISION in AppConfiguration, the AppConfiguration validation takes precedence.

MIN_DECIMAL_PRECISION

MIN_DECIMAL_PRECISION

If the value in Template Attribute Validations is less than the value in AppConfiguration, the MIN_DECIMAL_PRECISION from AppConfiguration will take priority.

MAX_LENGTH

MAX_LENGTH_TEXT_EDITOR or MAX_LENGTH_TEXT_BD

If the MAX_LENGTH value in Template Attribute Validations exceeds the values configured in AppConfiguration, the one defined in the latter prevails:

  • MAX_LENGTH_TEXT_EDITOR, for attributes of type TEXTAREA.

  • MAX_LENGTH_TEXT_BD, for attributes of type INPUT_TEXT or TEXTAREA used in workflow and adherence modals.

MIN_LENGTH

MIN_LENGTH_TEXT_EDITOR

If the MIN_LENGTH value in Template Attribute Validations is less than MIN_LENGTH_TEXT_EDITOR in AppConfiguration, the MIN_LENGTH_TEXT_EDITOR from AppConfiguration takes precedence. 

Adding/Modifying a variable in the AppConfiguration table

Adding or modifying a variable involves adding or editing a record in the AppConfiguration table.

image-20250916-094324.png
Example of default language configuration in AppConfiguration


To add a record from the Configuration Panel:

  1. Click the New button or the Edit Pencil as appropriate.

  2. Fill in the fields:

    • Key: key corresponding to one of the records in the available variables table (e.g.: default_language_app to set the default language).

    • value: value corresponding to the variable; in the example, the i18n language code configured in Languages (e.g.: es-ES).

    • internal: boolean as appropriate (e.g.: false).

    • application: value according to the variable as per the available variables table. (e.g.: empty).

    • profile: execution profile in which the configured value applies (e.g.: default).

    • Label: informational (e.g.: empty).

  3. Click Save to save the record or Cancel to discard.

Notes:

  • After adding/modifying:

    • It is necessary to run the Clear cache action from the Configuration Panel (Actions > Clear cache) for the changes to be applied and visible in the Data Portal.

    • In some cases it may be necessary to restart the corresponding microservice (Zeus, Kerno, Minerva…)

  • Since variables are loaded at startup, the Portuno microservice must be started before other services for the changes to propagate correctly.

  • If a variable is simultaneously configured in AppConfiguration and in the YAML of a microservice, the configuration that applies is the one in AppConfiguration.