MIGRATION.md 27.5 KB
Newer Older
1
2
3
4
5
6
# Migration 2.8.2

## Modification dans la configuration :
### Ajout
Dans la section [recordsManagement], ajout de la directive `ownerIsSuperUser` qui permet de définir si les utilisateurs appartenant au service d'opérateur d'archvivage ont le droit ou non d'accéder à toutes les archives du système. Si `true`, alors les opérateurs ont accès à toutes les archives du système. Si `false`, l'opérateur d'archivage sera considéré comme n'importe quel autre service producteur et aura accès uniquement à ses propres archives dont il est déclaré comme producteur.

Jerome Boucher's avatar
Jerome Boucher committed
7
8
# Migration 2.7 vers 2.8

9
## Vhost :
10
### Ajout du bundle 'collection'
Jerome Boucher's avatar
Jerome Boucher committed
11

12
Afin d'accéder aux fonctionnalités relatives aux collections, le bundle `Collection` doit être ajoutée à l'instance dans le fichier vhost.conf :
13

14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
```
SetEnv LAABS_BUNDLES audit;auth;batchProcessing;contact;digitalResource;lifeCycle;organization;recordsManagement;filePlan;medona;mades;digitalSafe;Statistics;Collection
```

### Blocage de l'accès au répertoire 'web/public' dans l'URL

Modifications vhost. Retrait de la condition Rewrite. Remplacer : 
```
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} -f [OR]
    RewriteCond %{REQUEST_URI} ^/public [NC]

```

Par :
```
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} -f
```



### Ajout d'un exemple de configuration pour la vérification d'authentification via Kerberos.
35
36

## Modification dans la configuration :
37
### Ajout
38
39
40
41
42
43
44
45
Dans la section [recordsManagement], ajout de la directive `actionWithoutCommunicationRule` qui permet de définir le comportement de l'application si une archive ne possède pas de règle de communication. `deny` = ne pas autoriser la demande de communication, `allow` = autoriser la demande de communication.

Dans la section [lifeCycle], ajout de la directive `notifications` qui permet de paramétrer des notifications email en se branchant sur les évènements du cycle de vie de l'application.

Dans la section [dependency.fileSystem], ajout de la directive `fullTextServices` qui permet de paramétrer les services qui effectueront l'extraction FullText.

Dans la section [dependency.fileSystem], ajout des directives `tikaJarExecutable` et `tesseractExecutable` qui sont 2 exemples de services permettant l'extraction de texte à partir d'un document ou d'une image.

46
47
### Modification
Mise à jour de la route de service dans [auth] -> 'servicePrivileges' pour le contrôle d'intégrité qui n'aboutissait pas car la casse était mauvaise.
48

49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
Dans la section [dependency.sdo], modification de la directive `datetimeFormat` pour respecter le format de date iso 8601.

Dans la section [batchProcessing], ajout d'une tâche dans la directive `tasks` qui permet d'ajouter la tâche planifiée qui exécute l'extraction FullText.
## Menu
### Point de menu Collection / Favoris
Un point de menu a été ajouté pour accéder directement à la vue de ses archives favorites :  
 `menu` :
```
    {
        'label' : '',
        'title' : 'Favoris',
        'href'  : '/collection',
        'class' : 'fa fa-star fa-fw'
    }
```
64
65
66
67
68
69
## Schéma SQL

Voir le fichier spécifique

    laabs/data/maarchRM/sql/pgsql/migrationV2.7_V2.8.sql

70
71
72
73
# Migration 2.6 vers 2.7
## Configuration

## Ajout dans la configuration
Alexandre Goldstein's avatar
Alexandre Goldstein committed
74

75
Dans la section [recordsManagement], ajout de la directive `archiveIdGenerator` qui permet de configurer la cotation automatique lors d'un versement dans l'application.
76
77
78
79
80
81
82
83
84
85
86

Dans la section [medona], ajout de la directive `packageConnectors` qui permet la configuration de connecteurs pour faciliter le versement de paquets externes au format incomplet.

Dans la section nouvellement créee [dependency.timestamp], la directive `pathToOpenSSL` a été ajoutée pour faciliter la prise en charge sur Windows :

```
pathToOpenSSL="C:\Program Files\OpenSSL-Win64\bin\openssl"
```

### Ajout d'un droit utilisateur

Alexandre Goldstein's avatar
Alexandre Goldstein committed
87
88
89
90
91
92
93
94
95
96
97
98
99
Si le mode transactionnel est activé, ajout du droit de traiter manuellement les communications.
Pour l'ajouter :

```
        {
            'serviceURI' : 'medona/ArchiveDelivery/updateProcessBatch',
            'description' : 'Traiter les communications'
        },
```

dans la directive `servicePrivileges` présente dans la section [auth] de votre fichier de configuration.

De fait, un point de menu a été ajouté sur l'écran d'Echange pour traiter manuellement les communication, il faut ajouter dans la directive `menu` :
100

Alexandre Goldstein's avatar
Alexandre Goldstein committed
101
102
103
104
105
106
107
108
```
        {
            'label' : 'Communications à finaliser',
            'href'  : '/delivery/Process'
        },
```

c'est un `submenu` présent sous le label `Communication` de la section [medona] de votre fichier de configuration.
109

110
### Ajout du bundle Statistiques et configuration de session dans virtual host
111
112
113
114
115
116
117

Afin d'accéder aux fonctionnalités relatives aux statistiques, le bundle `Statistics` doit être ajoutée à l'instance dans le fichier vhost.conf :

```
SetEnv LAABS_BUNDLES audit;auth;batchProcessing;contact;digitalResource;lifeCycle;organization;recordsManagement;filePlan;medona;mades;digitalSafe;Statistics
```

118
119
120
121
122
123
Modifications liées à la configuration de la session :
```
SetEnv LAABS_SESSION_START Off
#SetEnv LAABS_SECURE_COOKIE On
```

124
125
## Ajout d'un droit de compte de Service

Alexandre Goldstein's avatar
Alexandre Goldstein committed
126
127
128
Ajout d'une fonctionnalité permettant de récupérer directement le contenu d'une ressource d'archive, il faut ajouter :

```
129
130
131
132
    {
        'serviceURI' : 'recordsManagement/archive/read_archiveId_Digitalresource_resId_Contents',
        'description' : 'Récupérer directement le contenu d\'une ressource d\'archive'
    }
Alexandre Goldstein's avatar
Alexandre Goldstein committed
133
134
135
```

dans la directive `servicePrivileges` présente dans la section [auth] de votre fichier de configuration.
136
137
138

### Modification de configuration

139
140
Dans la section [presentation.maarchRM], la directive `maxResults` livrée par défaut est désormais à 500.
Dans la section [auth], modification de la configuration du CSRF :
141

142
```
143
144
145
146
csrfConfig = '{
    "cookieName" : "Csrf",
    "tokenLength" : 32
}'
147
```
148

149
Dans la section [recordsManagement], modification de la configuration des schémas de description :
150

Cyril Vazquez's avatar
Cyril Vazquez committed
151
```
152
153
154
155
156
157
158
159
160
161
162
163
164
descriptionSchemes = "{
    'extension' : {
        'label' : 'extension',
        'type' : 'json',
        'uri' : '%laabsDirectory%/data/maarchRM/samples/sample.json'
    },
    'log' : {
        'label' : 'log',
        'type' : 'php',
        'uri' : 'recordsManagement/log',
        'search': 'recordsManagement/log'
    }
}"
Cyril Vazquez's avatar
Cyril Vazquez committed
165
```
166
167

## Service horodatage tiers de test
Alexandre Goldstein's avatar
Alexandre Goldstein committed
168
169

Dans la section [lifeCycle] du fichier de configuration, si la directive `chainWithTimestamp` est activé, vous pouvez choisir votre service d'horodatage tiers dans la section nouvellement crée [dependency.timestamp] parmis les 3 suivants :
170
171
172
173
174
175
176
177
178
179

```
; The URL of the TSA provider
; Somme open and free TSA test services :
; tsaUrl=http://zeitstempel.dfn.de
; tsaUrl=http://timestamp.entrust.net/TSS/RFC3161sha2TS
; tsaUrl=http://time.certum.pl
```

### Mise à jour des fichiers de signature DROID
Alexandre Goldstein's avatar
Alexandre Goldstein committed
180

181
182
183
184
185
186
187
188
189
190
191
192
193
194
Mise à jour des fichiers signature et container permettant la détection du format des fichiers

```
signatureFile = "%laabsDirectory%/data/maarchRM/droidSignatureFiles/DROID_SignatureFile_V97.xml"
containerSignatureFile = "%laabsDirectory%/data/maarchRM/droidSignatureFiles/container-signature-20201001.xml"
```

## Schéma SQL

Voir le fichier spécifique

    laabs/data/maarchRM/sql/pgsql/migrationV2.6_V2.7.sql


Cyril Vazquez's avatar
Cyril Vazquez committed
195
# Migration 2.5 vers 2.6
Alexandre Morin's avatar
Alexandre Morin committed
196
197
## Configuration
### Lien de téléchargement d'une ressource
Jerome Boucher's avatar
Jerome Boucher committed
198
Cette configuration facultative permet au moment de la consultation, de recevoir une uri vers une ressource au lieu du contenu binaire.
Alexandre Morin's avatar
Alexandre Morin committed
199

Jerome Boucher's avatar
Jerome Boucher committed
200
À renseigner dans [recordsManagement] :
Alexandre Morin's avatar
Alexandre Morin committed
201
202
203
```
exportPath = "%laabsDirectory%/web/tmp"
```
Cyril Vazquez's avatar
Cyril Vazquez committed
204
205
206
207

## Configuration des instances publiées (hôte(s) virtuel(s) http et scripts en ligne de commande)

### Externalisation du bundle `digitalSafe`
Jerome Boucher's avatar
Jerome Boucher committed
208
209
Le bundle `digitalSafe` qui présente les fonctions relatives à l'usage du produit
comme composant de coffre-fort numérique, ajouté en V2.5, a été déplacé dans une nouvelle
Cyril Vazquez's avatar
Cyril Vazquez committed
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
extension du même nom.

Les instances ne doivent plus faire référence à ce bundle si l'extension `digitalSafe` n'est pas installée.

Socle SAE seul :
```
SetEnv LAABS_BUNDLES audit;auth;batchProcessing;contact;digitalResource;lifeCycle;organization;recordsManagement;filePlan;medona;mades
```

Avec l'usage CCFN :
```
SetEnv LAABS_BUNDLES audit;auth;batchProcessing;contact;digitalResource;lifeCycle;organization;recordsManagement;filePlan;medona;mades;digitalSafe
SetEnv LAABS_EXTENSIONS digitalSafe
```

### Nouvelle dépendance technique CSV
Jerome Boucher's avatar
Jerome Boucher committed
226
Les fonctions d'import et d'export de référentiel utilisent une nouvelle dépendance qui
Cyril Vazquez's avatar
Cyril Vazquez committed
227
228
229
230
231
232
gère les conversions en CSV. Ladépendance `csv` doit être ajoutée à l'instance :

```
SetEnv LAABS_DEPENDENCIES repository;xml;html;localisation;datasource;sdo;json;fileSystem;notification;PDF;csrf;timestamp;csv
```

Jerome Boucher's avatar
Jerome Boucher committed
233
## Configuration
Cyril Vazquez's avatar
Cyril Vazquez committed
234
235
236
237
238
239
240
### Protection CSRF
Il faut ajouter des routes en liste blanche pour la protection contre les requêtes en Cross-Site Forgery:

```
csrfWhiteList = "['user/login', 'user/password', 'user/prompt', 'user/logout', 'user/generateResetToken']"
```

241
242
243
244
245
246
247
### Mise à jour des fichiers de signature DROID
Mise à jour des fichiers signature et container permettant la détection du format des fichiers
```
signatureFile = "%laabsDirectory%/data/maarchRM/droidSignatureFiles/DROID_SignatureFile_V96.xml"
containerSignatureFile = "%laabsDirectory%/data/maarchRM/droidSignatureFiles/container-signature-20200121.xml"
```

Cyril Vazquez's avatar
Cyril Vazquez committed
248
249
250
251
252
253
254
255
## Schéma SQL

Voir le fichier spécifique

    laabs/data/maarchRM/sql/pgsql/migrationV2.5_V2.6.sql

___

256
# Migration 2.4 vers 2.5
Alexandre Goldstein's avatar
Alexandre Goldstein committed
257
258
259
260

## Présentation et fonctionnalités orientées "archives publiques"

### Situation dans les versions antérieures
261

Alexandre Goldstein's avatar
Alexandre Goldstein committed
262
263
264
265
266
267
268
269
270
271
Dans la section `[presentation.maarchRM]`, la directive `publicArchives` définissait les comportements suivants :
  * dans la gestion des utilisateurs, un seul rôle autorisé par utilisateur
  * dans la gestion des rôles, pas de gestion des utilisateurs rattachés
  * dans l'organigramme fonctionnel, pas de gestion des accès aux profils d'archive (géré par accords de versement uniquement)
  * dans la gestion des règles de communicabilité, pas de suppression ni de modification (règles issues du référentiel contrôlé par les Archives de France)
  * dans la gestion des règles de conservation, pas de gestion du sort final

La directive `menu` n'intégrait pas le point de menu vers la gestion du dictionnaire de données (champs de description);

Dans la section `[auth]`, la directive `blackListedUserStories` inhibait les droits sur les fonctions suivantes :
272
273
  * versement direct dans l'Archive
  * gestion du dictionnaire de données
Alexandre Goldstein's avatar
Alexandre Goldstein committed
274

275
### Nouvelles configurations
Alexandre Goldstein's avatar
Alexandre Goldstein committed
276

277
Ces directives sont utilisables à la place de la directive existante `publicArchives` pour gérer plus finement les fonctionnalités correspondantes :
Alexandre Goldstein's avatar
Alexandre Goldstein committed
278

279
280
Dans la section `[presentation.maarchRM]`, ajout du paramètre maxResults de type nombre (valeur par défaut à 200), qui permet de définir le nombre maximum d'archives retournées lors d'une recherche dans l'application.

281
Dans la section `[auth]`, ajout de la directive `restrictUserRoles`, de type booléen.
282
Si activée, chaque utilisateur ne peut avoir qu'un rôle et la gestion des rôles ne permet plus d'ajouter ou retirer des utilisateurs.
Alexandre Goldstein's avatar
Alexandre Goldstein committed
283
284
285

Dans la section `[recordsManagement]`, la valeur de directive `archivalProfileType` définit désormais le comportement suivant :
  * `1` indique des profils de versement de type MEDONA et inhibe la gestion des accès aux profils dans l'organigramme
286
  * `2` indique des profils d'archive avec description des métadonnées et règles de gestion, puis active la gestion des accès aux profils dans l'organigramme
Alexandre Goldstein's avatar
Alexandre Goldstein committed
287
288
289
290
291
  * `3` indique des profils mixtes (MEDONA et description interne) et active la gestion des accès aux profils dans l'organigramme

## Branchement des schémas de description

Dans la section `[recordsManagement]`, la directive `descriptionSchemes` permet de définir
292
les schémas de description en lieu et place des entrées de la table `recordsManagement.descriptionClass`
Alexandre Goldstein's avatar
Alexandre Goldstein committed
293
294
qui doit être supprimée.

295
A chaque identifiant de schéma de description (éventuellement précédemment inscrit dans la table) correspond un élément
Alexandre Goldstein's avatar
Alexandre Goldstein committed
296
297
298
299
300
de configuration qui fournit :

  * le libellé affiché
  * le format de description : classe php, schema json, schéma XML
  * le nom du schéma
301
  * les URIs des différents services utilisés par l'application pour la gestion des données,
Alexandre Goldstein's avatar
Alexandre Goldstein committed
302
303
304
305
306
    la recherche, la transformation, la présentation, etc.

```
descriptionSchemes = "{
  'seda2' : {
307
    'name' : 'SEDA 2',
Alexandre Goldstein's avatar
Alexandre Goldstein committed
308
309
310
311
312
313
    'type' : 'php',
    'uri' : 'seda2/Content',
    'controller' : '',
    'presenter' : ''
  }
}"
Cyril Vazquez's avatar
Cyril Vazquez committed
314
```
315

316
## Regroupement Socle + ThirdPartyArchiving
317
318
319

Rapatriement de la configuration de l'extension thirdPartyArchiving dans le socle.

320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
Création d'une nouvelle section `[medona]`

```
[medona]
; Enable or disable the transaction mode
; true = Enable
; false = Disable
transaction = false

messageDirectory = "%laabsDirectory%/data/maarchRM/medona"
autoValidateSize = 2147000

;packageSchemas = "{
;    'seda' : {
;         'label' : 'Seda 1',
;         'xmlNamespace' : 'fr:gouv:culture:archivesdefrance:seda:v1.0',
336
337
;         'phpNamespace' : 'seda',
;         'presenter' : 'seda/message'
338
339
340
341
;    },
;    'seda2' : {
;         'label' : 'Seda 2',
;         'xmlNamespace' : 'fr:gouv:culture:archivesdefrance:seda:v2.0',
342
343
;         'phpNamespace' : 'seda2',
;         'presenter' : 'seda2/message'
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
;    }
;}"

; Array of task to remove medona message directories
; 'type' is an array of medona message type
; 'status' is an array of medona message status
; 'delay' is the difference with the current date
;removeMessageTask = "{
;    'task1' : {
;        'type' : ['ArchiveTransfer', 'ArchiveTransferReply'],
;        'status' : ['processed'],
;        'delay' : '-P1Y'
;    },
;    'task2' : {
;        'type' : ['ArchiveModificationNotification'],
;        'status' : ['sent'],
;        'delay' : '-P6M'
;    }
;}"

menu = "[
   {
       'label' : 'Transferts entrants',
       'href'  : '#',
       'class' : 'fa fa-sign-in fa-fw',
       'submenu' : [
           {
               'label' : 'Importer un bordereau',
               'href'  : '/transfer'
           },
           {
               'label' : 'Transferts en attente de traitement',
               'href'  : '/transfer/sent'
           },
           {
               'label' : 'Transferts à traiter',
               'href'  : '/transfer/received'
           },
           {
               'label' : 'Historique de transfert',
               'href'  : '/transfer/history'
           }
       ]
   },
   {
       'label' : 'Communication',
       'href'  : '#',
       'class' : 'fa fa-share fa-fw',
       'submenu' : [
           {
               'label' : 'Demandes d\'autorisation',
               'href'  : '/delivery/Authorizationrequest'
           },
           {
               'label' : 'Communications à valider',
               'href'  : '/delivery/request'
           },
           {
               'label' : 'Communications à récupérer',
               'href'  : '/delivery/list'
           },
           {
               'label' : 'Historique de communication',
               'href'  : '/delivery/history'
           }
       ]
   },
   {
       'label' : 'Restitution',
       'href'  : '#',
       'class' : 'fa fa-reply fa-fw',
       'submenu' : [
           {
               'label' : 'Demandes à valider',
               'href'  : '/restitution/Requestvalidation'
           },
           {
               'label' : 'Restitutions à récupérer',
               'href'  : '/restitution/validation'
           },
           {
               'label' : 'Restitutions à finaliser',
               'href'  : '/restitution/process'
           },
           {
               'label' : 'Historique de restitution',
               'href'  : '/restitution/history'
           }
       ]
   },
   {
       'label' : 'Élimination',
       'href'  : '#',
       'class' : 'fa fa-remove fa-fw',
       'submenu' : [
           {
               'label' : 'Demandes d\'autorisation',
               'href'  : '/destruction/Authorizationrequests'
           },
           {
               'label' : 'Demandes à valider',
               'href'  : '/destruction/processlist'
           },
           {
               'label' : 'Historique d\'élimination',
               'href'  : '/destruction/history'
           }
       ]
   },
   {
       'label' : 'Transferts sortants',
       'href'  : '#',
       'class' : 'fa fa-sign-out fa-fw',
       'submenu' : [
           {
               'label' : 'Transferts à acquitter',
               'href'  : '/outgoingTransfer/received'
           },
           {
               'label' : 'Transferts à finaliser',
               'href'  : '/outgoingTransfer/Process'
           },
           {
               'label' : 'Historique de transfert',
               'href'  : '/outgoingTransfer/history'
           }
       ]
   },
   {
       'label' : 'Notifications',
       'href'  : '/notifications',
       'class' : 'fa fa-bell-o fa-fw'
   }
]"
```
## SQL
Cyril Vazquez's avatar
Cyril Vazquez committed
480

481
482
483
484
Voir le fichier spécifique

    laabs/data/maarchRM/sql/pgsql/migrationV2.4_V2.5.sql

Cyril Vazquez's avatar
Cyril Vazquez committed
485
## Branchement de listes externes
486
487

Une nouvelle fonctionnalité permet de brancher des référentiels externes afin d'utiliser des valeurs ou des paires de clé et valeur dans les métadonnées descriptives des archives.
Cyril Vazquez's avatar
Cyril Vazquez committed
488

Alexandre Goldstein's avatar
Alexandre Goldstein committed
489
Pour le moment, uniquement les csv sur deux colonnes sont gérés. Il est nécessaire de créer un dossier avec l'ensemble des référentiels externes à l'intérieur. Le chemin vers ce fichier est à renseigner dans la valeur de configuration [recordsManagement] refDirectoy, par exemple :
Cyril Vazquez's avatar
Cyril Vazquez committed
490

491
492
[recordsManagement]
refDirectory = "%laabsDirectory%/data/maarchRM/ref"
Cyril Vazquez's avatar
Cyril Vazquez committed
493

Arnaud Pauget's avatar
Arnaud Pauget committed
494
Les csv sont considérés comme étant séparés par des virgules et les données présentes entre des guillemets ("").
Alexandre Goldstein's avatar
Alexandre Goldstein committed
495
496
Lors de l'ajout d'un mot clé, il est désormais donné la possibilité de choisir un référentiel externe. Le nom du reférentiel externe doit correspondre avec le nom du fichier csv à charger dans le dossier renseigné dans la configuration, sans son extension.
Lors de la saisie d'une archive, un typeahead viendra aider l'opérateur dans la saisie. Il est à noter que la première colonne du csv sert d'identification dans la base de données; Les données affichéees à l'écran sont celles de la deuxième colonne. Les colonnes surnuméraires sont chargées mais ne servent que d'aide à la recherche lors de la saisie.
497

498
499
500
501
## Plugins

Ajout du plugin dateTimePicker, permettant la saisie simultanée d'une date et d'un horaire au sein d'un même champ (au format DD-MM-YYYY HH:mm:ss par défaut) via une interface.

Cyril Vazquez's avatar
Cyril Vazquez committed
502
503
___

504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
# Migration 2.3 vers 2.4

## Evenement

Ajout de l'évènement recordsManagement/resourceDestruction dans la table "lifeCycle.eventFormat" qui permet la suppression d'une ressource détenue dans une archive.

Ajout de l'évènement recordsManagement/updateRelationship dans la table "lifeCycle.eventFormat" qui permet de mettre à jour les relations d'archives.

Ajout de l'évènement recordsManagement/restitutionRequest dans la table "lifeCycle.eventFormat" qui permet de faire une demande de restitution de l'archive.

Ajout de l'évènement recordsManagement/restitutionRequestCanceling dans la table "lifeCycle.eventFormat" qui permet d'annuler une demande de restitution de l'archive.

## Configuration

Rajout des options dateTimeFormat, timestampFormat, timezone dans les paramètres dependency.localisation

```
[dependency.localisation]
@Adapter                        = Gettext
lang                            = fr
dateFormat                      = d-m-Y
dateTimeFormat                  = "Y-m-d H:i:s \(P\)"
timestampFormat                 = "Y-m-d H:i:s \(P\)"
timezone                        = Europe/Paris
```

530
Ces paramètres permettent de modifier le fuseau horaire et l'affichage des dates à l'écran.
531
532
533
534
535
536
537
538
539
540
Le paramètre `dateTimeFormat` définit le format d'affichage des valeurs date et heure en suivant le formalisme d'affichage php (se référer à http://php.net/manual/fr/function.date.php )
Le paramètre `timestampFormat` définit le format d'affichage des temps en suivant le formalisme d'affichage php.
Le paramètre `timeZone` définit le fuseau horaire utilisé pour l'affichage en heure locale.
Si ces paramètres sont ignorés, les valeurs par défaut sont chargées par le logiciel, correspondant à un format respectant le standard ISO8601.

Ajout d'un paramètre "actionWithoutRetentionRule" pour permettre ou non l'élimination d'une archive n'ayant pas de règle de conservation.
Ce paramètre peut prendre deux valeurs : "preserve" ou "dispose" (valeur "preserve" par défaut).
La valeur preserve bloque la suppression d'une archive si aucune règle de conservation ne lui a été attribuée.
La valeur dispose permet la suppression d'une archive si aucune règle de conservation ne lui a été attribuée.

541
542
543
544
545
546
Mise à jour des fichiers signature et container permettant la détection du format des fichiers
```
signatureFile = "%laabsDirectory%/data/maarchRM/droidSignatureFiles/DROID_SignatureFile_V94.xml"
containerSignatureFile = "%laabsDirectory%/data/maarchRM/droidSignatureFiles/container-signature-20180920.xml"
```

547
548
549
550
551
552
## SQL

Voir le fichier spécifique

    laabs/data/maarchRM/sql/pgsql/migrationV2.3_V2.4.sql

Cyril Vazquez's avatar
Cyril Vazquez committed
553
554
___

555
# Migration 2.2 vers 2.3
556
557
558
559
560

## Configuration

### Ecran de connexion

561
Un style peut être appliqué à l'écran de connexion utilisateur, via la directive
562
563
564
565
566
567
568
569
570
571
572
573
574
"loginBackground" de la section "presentation.maarchRM":

```
loginBackground = ".modal-backdrop {
    background-image: url('presentation/img/19093d7d-21f4-491b-bca1-5f57704c29d9.jpg');
    background-repeat: no-repeat;
    background-position: center top;
    background-color: #fff;
    background-size: cover;
    opacity: 1 !important;
}"
```

575
De même, le logo utilisé dans la mire de connexion peut être modifié séparément
576
577
578
579
580
581
582
583
584
de celui affiché dans la barre de navigation:

```
altLogo = "/presentation/img/RM.svg"

```

### CSRF

585
Modification de la configuration :
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615

    csrfWhiteList = "['user/login', 'user/password']"
    csrfConfig = '{
        "cookieName" : "CSRF",
        "tokenLength" : 32
    }'
    # Migration 2.1 => 2.2

Pour toutes les modifications ci-dessous, merci de vous référer à la documentation **AVANT tout changement** pour plus de détails'.

## Exploitation

Les clés des comptes de service doivent être réinitialisées

## Virtual host

Suppression de la dépendance CSRF dans le fichier **vhost.conf**

## SQL

Voir le fichier spécifique

    laabs/data/maarchRM/sql/pgsql/migrationV2.1_V2.2.sql

## Configuration

Les modifications de configuration font référence au fichier **configuration.ini**

### CSRF

616
Ajout de la configuration suivante :
617
618
619
620
621
622

    csrfWhiteList = "['user/login']"
    csrfConfig = '{
        "cookieName" : "CSRF",
        "tokenLength" : 32
    }'
623
624

[Documentation](https://labs.maarch.org/maarch/maarchRM.doc/blob/b5ff8d2a3c3ad5669eeb01b0ec56f33184ee474e/conf/csrf.md)
625
626
627

### Customisation CSS

628
L'ajout de la customisation CSS permet d'utiliser une feuille de style personnalisable.
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644

    css = "/presentation/css/style.css"

[Documentation](https://labs.maarch.org/maarch/maarchRM.doc/blob/b5ff8d2a3c3ad5669eeb01b0ec56f33184ee474e/conf/customisation.md)

### Gestion des répertoires de log

Les répertoires des logs sont personnalisables depuis la 2.2.

    ; The path of journals in the file plan
    ; To include the type of log you must use <type>
    ; To include a part of date, you must use <date(format)>.
    ;   - Y for a full numeric representation of a year, 4 digits
    ;   - m for the numeric representation of a month, with leading zeros
    ;   - d for day of the month, 2 digits with leading zeros
    logFilePlan = "<type>/<date(Y)>/<date(m)>"
645

646
647
648
649
650
    translationLogType = "
    {
         'lifeCycle' : 'Journal du cycle de vie',
         'application' : 'Journal de l\'application',
         'system' : 'Journal du système'
651
     }"
652
653
654
655
656

[Documentation](https://labs.maarch.org/maarch/maarchRM.doc/blob/b5ff8d2a3c3ad5669eeb01b0ec56f33184ee474e/conf/log_filePlan_path.md)

### Rôle d'organisation

657
Les rôles d'organisation ont été déplacés de la base de données vers la configuration.
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716

    orgUnitRoles = "
    {
        'owner' : {
            'code' : 'owner',
            'description' : 'The system owner'
        }
    }"

[Documentation](https://labs.maarch.org/maarch/maarchRM.doc/blob/b5ff8d2a3c3ad5669eeb01b0ec56f33184ee474e/conf/organization_roles.md)

### Ajout d'une nouvelle tâche planifiée

Une tâche se prénommant "Mise à jour de la durée d'utilité administrative" a été ajoutée.

De ce fait, il faut ajouter le privilège :

    servicePrivileges = "[
        {
            'serviceURI': 'audit/event/createChainjournal',
            'description' : 'Chaîner le journal de l\'application'
        },
        {
            'serviceURI': 'batchProcessing/scheduling/updateProcess',
            'description' : 'Exécution automatique des tâches planifiées'
        },
        {
            'serviceURI': 'lifeCycle/journal/createChainjournal',
            'description' : 'Chaîner le journal du cycle de vie'
        },
        {
            'serviceURI': 'recordsmanagement/archivecompliance/readperiodic',
            'description' : 'Valider l\'intégrité des archives'
        },
        {
            'serviceURI': 'recordsManagement/archives/deleteDisposablearchives',
            'description' : 'Détruire les archives'
        },
        {
            'serviceURI': 'recordsManagement/archives/updateIndexfulltext',
            'description' : 'Extraction plein texte'
        },
        {
            'serviceURI': 'recordsManagement/archive/create',
            'description' : 'Création d\'une archive'
        },
        {
            'serviceURI': 'recordsManagement/archive/createArchiveBatch',
            'description' : 'Création par batch d\'archive(s)'
        },
        {
            'serviceURI' : 'recordsManagement/archives/updateArchivesretentionrule',
            'description' : 'Mise à jour de la durée d\'utilité administrative'
        },
        {
            'serviceURI': '*',
            'description' : 'Tous les droits'
        }
    ]"
717

718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
et toutes les tâches :

    [batchProcessing]
    tasks = "[
                {
                    'taskId': '01',
                    'route' : 'audit/event/createChainjournal',
                    'description' : 'Chainer le journal de l\'application'
                },
                {
                    'taskId': '02',
                    'route' : 'lifeCycle/journal/createChainjournal',
                    'description' : 'Chainer le journal du cycle de vie'
                },
                {
                    'taskId': '03',
                    'route' : 'recordsManagement/archiveCompliance/readPeriodic',
                    'description' : 'Valider l\'intégrité des archives'
                },
                {
                    'taskId': '04',
                    'route' : 'recordsManagement/archives/deleteDisposablearchives',
                    'description' : 'Détruire les archives'
                },
                {
                    'taskId': '05',
                    'route' : 'batchProcessing/notification/updateProcess',
                    'description' : 'Envoyer notification'
                },
                {
                    'taskId': '06',
                    'route' : 'recordsManagement/archives/updateIndexfulltext',
                    'description' : 'Extraction plein texte'
                },
                {
                    'taskId': '07',
                    'route' : 'recordsManagement/archives/updateArchivesretentionrule',
                    'description' : 'Mise à jour de la durée d\'utilité administrative'
                }
            ]"
758
759

[Documentation](https://labs.maarch.org/maarch/maarchRM.doc/blob/b5ff8d2a3c3ad5669eeb01b0ec56f33184ee474e/conf/scheduling.md)