Description
###########

Ce module se compose de jobs *quartz* pouvant être activés au besoin grâce à la configuration d'Ansible.

* AuditObjectJob
* AuditDataConsistencyMongoEsJob
* IdentityExpirationJob
* MetadataReconstructionJob
* OfferLogCompactionJob
* PersistentIdentifierReconstructionJob
* ProcessObsoleteComputedInheritedRulesJob
* PurgeDipJob
* PurgeSipJob
* ReconstructionAccessionRegisterJob
* ReconstructionOperationJob
* ReconstructionReferentialJob
* ReferentialCreateSymblolicAccessionRegisterJob
* RuleManagementAuditJob
* StorageBackupLogJob
* StorageLogTraceabilityJob
* StoreGraphJob
* TraceabilityAuditJob
* TraceabilityJob
* TraceabilityLFCJob

Les détails de ces jobs sont expliqués ci-dessous.

Jobs quartz
============

Les jobs du planificateur s'activent automatiquement selon la configuration souhaitée.

.. caution:: Attention, il faut que le délai d'exécution du job soit supérieur à ``org.quartz.scheduler.idleWaitTime``, qui est réglé à 30 secondes par défaut.
Si le délai d'exécution a été réglé par erreur à une valeur inférieure, il peut arriver qu'il soit impossible de changer le délai d'exécution à une valeur correcte.
Dans ce cas, la procédure à suivre est de mettre les jobs en pause (``PUT http://<host>:<port admin>/scheduler/v1/pause/ALL``), attendre au minimum 30 secondes, puis réinitialiser les jobs (``POST http://<host>:<port admin>/scheduler/v1/jobs``)

AuditObjectJob.java
-------------------

Ce job lance le workflow d'audit d'intégrité et/ou d'existence à travers la configuration *auditType*.
Le job d'intégrité se déclenche toutes les 4 heures, en commençant à 00:30.
Le job d'existence se déclenche toutes les 4 heures, en commençant à 00:50.

Ce job prend deux paramètres :

- **operationsDelayInMinutes** : permet de ne pas prendre les données fraîchement enregistrées.
- **selectedTenants: une liste de tenants sur lesquels l'audit sera lancé.
- **auditType** : prend l'une des valeurs *Existence* ou *Integrity*.

AuditDataConsistencyMongoEsJob.java
------------------------------------

Ce job permet de vérifier et corriger les incohérences entre MongoDB et Elasticsearch.

IdentityExpirationJob.java
---------------------------

Ce job vérifie s'il y a des certificats qui vont expirer. Il est programmé par défaut pour s'exécuter chaque jour à minuit.

MetadataReconstructionJob.java
-------------------------------

Ce job facilite la reconstruction depuis l'offre vers MongoDB et Elasticsearch sur un site secondaire.
On peut le programmer à travers la valeur ``vitam_timers.metadata.frequency_reconstruction``, et par défaut, il se lance chaque 5 minutes.

OfferLogCompactionJob.java
---------------------------

Ce job gère la compaction des journaux de chaque offre et ne se lance que sur le site primaire.
On peut le programmer à travers la valeur ``vitam_timers.offer.frequency_offerlog_compaction``, et par défaut, il se lance toutes les 30 minutes, en commençant à la 10e minute de l'heure.

PersistentIdentifierReconstructionJob.java
------------------------------------------

Ce job facilite la reconstruction des identifiants persistants.
On peut le programmer à travers la valeur ``vitam_timers.metadata.frequency_persistent_identifier_reconstruction``, par défaut, il est désactivé.


ProcessObsoleteComputedInheritedRulesJob.java
---------------------------------------------

Ce job s'occupe du traitement des règles calculées ou héritées devenues obsolètes et ne se lance que sur le site primaire.
On peut le programmer à travers la valeur ``vitam_timers.metadata.frequency_computed_inherited_rules``, par défaut, il se lance chaque jour à 2h30 du matin.

PurgeDipJob.java
----------------

Ce job effectue la purge des anciens *DIP* et ne se lance que sur le site primaire.
On peut le programmer à travers la valeur ``vitam_timers.metadata.frequency_purge_dip``, par défaut, il se lance chaque heure.

PurgeSipJob.java
----------------

Ce job effectue la purge des anciens *SIP* et ne se lance que sur le site primaire.
On peut le programmer à travers la valeur ``vitam_timers.metadata.frequency_purge_transfers_sip``, par défaut, il se lance chaque matin à 2h25.

ReconstructionAccessionRegisterJob.java
---------------------------------------

Ce job permet de faire la reconstruction des données concernant AccessionRegisterSymbolic et AccessionRegisterDetail portées par le composant functional-administration uniquement sur le site secondaire.
On peut le programmer à travers la valeur ``vitam_timers.functional_administration.frequency_accession_register_reconstruction``, par défaut, il se lance chaque 5min.

ReconstructionOperationJob.java
-------------------------------

Ce job permet de faire la reconstruction des opérations depuis l'offre et logbook et ne se lance que sur le site secondaire.
On peut le programmer à travers la valeur ``vitam_timers.logbook.frequency_logbook_reconstruction``, par défaut, il se lance chaque 5min.


ReconstructionReferentialJob.java
---------------------------------

Ce job permet de faire la reconstruction des données portées par le composant functional-administration uniquement sur le site secondaire.
On peut le programmer à travers la valeur ``vitam_timers.functional_administration.frequency_reconstruction``, par défaut, il se lance chaque 5min.

ReferentialCreateSymblolicAccessionRegisterJob.java
---------------------------------------------------

Ce job permet de déclencher une commande qui va calculer le registre des fonds symbolique et les ajoute dans les bases de données uniquement sur le site primaire.
On peut le programmer à travers la valeur ``vitam_timers.functional_administration.frequency_create_accession_register_symbolic``, par défaut, il se lance chaque 5min.

RuleManagementAuditJob.java
---------------------------

Ce job permet de faire la validation de la cohérence des règles de gestion entre les offres de stockage et les bases de données uniquement sur le site primaire.
On peut le programmer à travers la valeur ``vitam_timers.functional_administration.frequency_rule_management_audit``, par défaut, il se lance chaque jour, à 40 minutes passées de chaque heure.

StorageBackupLogJob.java
------------------------

Ce job effectue la sauvegarde des journaux d'accès et des journaux d'écriture uniquement sur le site primaire.
On peut le programmer à travers la valeur ``vitam_timers.storage.vitam_storage_accesslog_backup``, par défaut, il se lance toutes les 4 heures, en commençant à minuit et 10 minutes.


StorageLogTraceabilityJob.java
------------------------------

Ce job assure la sécurisation des opérations de stockage uniquement sur le site primaire.
On peut le programmer à travers la valeur ``vitam_timers.storage.frequency_traceability_log``, par défaut, il se lance toutes les 4 heures, en commençant à minuit et 40 minutes.

StoreGraphJob.java
------------------

Ce job permet la sauvegrade des graphs sur l'offre uniquement sur le site primaire.
On peut le programmer à travers la valeur ``vitam_timers.metadata.frequency_store_graph``, par défaut, il se lance toutes les 30 minutes, en commençant à la 10e minute de chaque heure.

TraceabilityAuditJob.java
-------------------------

Ce job vérifie s'il y a eu une traçabilité au cours de la dernière période uniquement sur le site primaire.
On peut le programmer à travers la valeur ``vitam_timers.logbook.frequency_traceability_audit``, par défaut, il se lance à 00:55 chaque jour.
Ce job prend 4 paramètres :
 - **operationTraceabilityMaxRenewalDelay**
 - **operationTraceabilityMaxRenewalDelayUnit**
 - **lifecycleTraceabilityMaxRenewalDelay**
 - **lifecycleTraceabilityMaxRenewalDelayUnit**

TraceabilityJob.java
--------------------

Ce job sécurise les opérations dans le logbook uniquement sur le site primaire.
On peut le programmer à travers la valeur ``vitam_timers.logbook.frequency_traceability_operations``, par défaut, il se lance toutes les heures, à la 5e minute de chaque heure.

TraceabilityLFCJob.java
-----------------------

Ce job sécurise les événements du cycle de vie dans le logbook uniquement sur le site primaire.
On peut le programmer à travers la valeur ``vitam_timers.logbook.frequency_traceability_lfc_objectgroup``, par défaut, il se lance toutes les heures, à la 15e minute de chaque heure.
