MIGRATION.md 28.2 KB
Newer Older
1
2
# Migration 2.8.5

Arnaud Pauget's avatar
Arnaud Pauget committed
3
## Modification dans le fichier vhost :
4
### Ajout
Arnaud Pauget's avatar
Arnaud Pauget committed
5
Dans la directive [LAABS_CONTENT_TYPES], ajout du content-type "multipart/form-data".
6
7
8
9
10
11
12
13
14
15
16

Avant : 
```
SetEnv LAABS_CONTENT_TYPES "url:application/x-www-form-urlencoded;html:text/html,application/xhtml+xml;xml:application/xml;json:application/json,application/javascript;soap:application/soap+xml;csv:text/csv"  
```    

Après :  
```  
SetEnv LAABS_CONTENT_TYPES "url:application/x-www-form-urlencoded,multipart/form-data;html:text/html,application/xhtml+xml;xml:application/xml;json:application/json,application/javascript;soap:application/soap+xml;csv:text/csv"  
```

17
18
19
20
21
Adapter également les directives suviantes dans le php.ini du serveur : 
**upload_max_filesize**  
**post_max_size**  
  

22
23
24
25
26
27
# 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
28
29
# Migration 2.7 vers 2.8

30
## Vhost :
31
### Ajout du bundle 'collection'
Jerome Boucher's avatar
Jerome Boucher committed
32

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

35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
```
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.
56
57

## Modification dans la configuration :
58
### Ajout
59
60
61
62
63
64
65
66
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.

67
68
### 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.
69

70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
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'
    }
```
85
86
87
88
89
90
## Schéma SQL

Voir le fichier spécifique

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

91
92
93
94
# Migration 2.6 vers 2.7
## Configuration

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

96
Dans la section [recordsManagement], ajout de la directive `archiveIdGenerator` qui permet de configurer la cotation automatique lors d'un versement dans l'application.
97
98
99
100
101
102
103
104
105
106
107

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
108
109
110
111
112
113
114
115
116
117
118
119
120
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` :
121

Alexandre Goldstein's avatar
Alexandre Goldstein committed
122
123
124
125
126
127
128
129
```
        {
            '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.
130

131
### Ajout du bundle Statistiques et configuration de session dans virtual host
132
133
134
135
136
137
138

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
```

139
140
141
142
143
144
Modifications liées à la configuration de la session :
```
SetEnv LAABS_SESSION_START Off
#SetEnv LAABS_SECURE_COOKIE On
```

145
146
## Ajout d'un droit de compte de Service

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

```
150
151
152
153
    {
        '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
154
155
156
```

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

### Modification de configuration

160
161
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 :
162

163
```
164
165
166
167
csrfConfig = '{
    "cookieName" : "Csrf",
    "tokenLength" : 32
}'
168
```
169

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

Cyril Vazquez's avatar
Cyril Vazquez committed
172
```
173
174
175
176
177
178
179
180
181
182
183
184
185
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
186
```
187
188

## Service horodatage tiers de test
Alexandre Goldstein's avatar
Alexandre Goldstein committed
189
190

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 :
191
192
193
194
195
196
197
198
199
200

```
; 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
201

202
203
204
205
206
207
208
209
210
211
212
213
214
215
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
216
# Migration 2.5 vers 2.6
Alexandre Morin's avatar
Alexandre Morin committed
217
218
## Configuration
### Lien de téléchargement d'une ressource
Jerome Boucher's avatar
Jerome Boucher committed
219
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
220

Jerome Boucher's avatar
Jerome Boucher committed
221
À renseigner dans [recordsManagement] :
Alexandre Morin's avatar
Alexandre Morin committed
222
223
224
```
exportPath = "%laabsDirectory%/web/tmp"
```
Cyril Vazquez's avatar
Cyril Vazquez committed
225
226
227
228

## 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
229
230
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
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
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
247
Les fonctions d'import et d'export de référentiel utilisent une nouvelle dépendance qui
Cyril Vazquez's avatar
Cyril Vazquez committed
248
249
250
251
252
253
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
254
## Configuration
Cyril Vazquez's avatar
Cyril Vazquez committed
255
256
257
258
259
260
261
### 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']"
```

262
263
264
265
266
267
268
### 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
269
270
271
272
273
274
275
276
## Schéma SQL

Voir le fichier spécifique

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

___

277
# Migration 2.4 vers 2.5
Alexandre Goldstein's avatar
Alexandre Goldstein committed
278
279
280
281

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

### Situation dans les versions antérieures
282

Alexandre Goldstein's avatar
Alexandre Goldstein committed
283
284
285
286
287
288
289
290
291
292
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 :
293
294
  * versement direct dans l'Archive
  * gestion du dictionnaire de données
Alexandre Goldstein's avatar
Alexandre Goldstein committed
295

296
### Nouvelles configurations
Alexandre Goldstein's avatar
Alexandre Goldstein committed
297

298
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
299

300
301
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.

302
Dans la section `[auth]`, ajout de la directive `restrictUserRoles`, de type booléen.
303
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
304
305
306

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
307
  * `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
308
309
310
311
312
  * `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
313
les schémas de description en lieu et place des entrées de la table `recordsManagement.descriptionClass`
Alexandre Goldstein's avatar
Alexandre Goldstein committed
314
315
qui doit être supprimée.

316
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
317
318
319
320
321
de configuration qui fournit :

  * le libellé affiché
  * le format de description : classe php, schema json, schéma XML
  * le nom du schéma
322
  * les URIs des différents services utilisés par l'application pour la gestion des données,
Alexandre Goldstein's avatar
Alexandre Goldstein committed
323
324
325
326
327
    la recherche, la transformation, la présentation, etc.

```
descriptionSchemes = "{
  'seda2' : {
328
    'name' : 'SEDA 2',
Alexandre Goldstein's avatar
Alexandre Goldstein committed
329
330
331
332
333
334
    'type' : 'php',
    'uri' : 'seda2/Content',
    'controller' : '',
    'presenter' : ''
  }
}"
Cyril Vazquez's avatar
Cyril Vazquez committed
335
```
336

337
## Regroupement Socle + ThirdPartyArchiving
338
339
340

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

341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
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',
357
358
;         'phpNamespace' : 'seda',
;         'presenter' : 'seda/message'
359
360
361
362
;    },
;    'seda2' : {
;         'label' : 'Seda 2',
;         'xmlNamespace' : 'fr:gouv:culture:archivesdefrance:seda:v2.0',
363
364
;         'phpNamespace' : 'seda2',
;         'presenter' : 'seda2/message'
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
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
;    }
;}"

; 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
501

502
503
504
505
Voir le fichier spécifique

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

Cyril Vazquez's avatar
Cyril Vazquez committed
506
## Branchement de listes externes
507
508

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
509

Alexandre Goldstein's avatar
Alexandre Goldstein committed
510
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
511

512
513
[recordsManagement]
refDirectory = "%laabsDirectory%/data/maarchRM/ref"
Cyril Vazquez's avatar
Cyril Vazquez committed
514

Arnaud Pauget's avatar
Arnaud Pauget committed
515
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
516
517
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.
518

519
520
521
522
## 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
523
524
___

525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
# 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
```

551
Ces paramètres permettent de modifier le fuseau horaire et l'affichage des dates à l'écran.
552
553
554
555
556
557
558
559
560
561
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.

562
563
564
565
566
567
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"
```

568
569
570
571
572
573
## SQL

Voir le fichier spécifique

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

Cyril Vazquez's avatar
Cyril Vazquez committed
574
575
___

576
# Migration 2.2 vers 2.3
577
578
579
580
581

## Configuration

### Ecran de connexion

582
Un style peut être appliqué à l'écran de connexion utilisateur, via la directive
583
584
585
586
587
588
589
590
591
592
593
594
595
"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;
}"
```

596
De même, le logo utilisé dans la mire de connexion peut être modifié séparément
597
598
599
600
601
602
603
604
605
de celui affiché dans la barre de navigation:

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

```

### CSRF

606
Modification de la configuration :
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636

    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

637
Ajout de la configuration suivante :
638
639
640
641
642
643

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

[Documentation](https://labs.maarch.org/maarch/maarchRM.doc/blob/b5ff8d2a3c3ad5669eeb01b0ec56f33184ee474e/conf/csrf.md)
646
647
648

### Customisation CSS

649
L'ajout de la customisation CSS permet d'utiliser une feuille de style personnalisable.
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665

    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)>"
666

667
668
669
670
671
    translationLogType = "
    {
         'lifeCycle' : 'Journal du cycle de vie',
         'application' : 'Journal de l\'application',
         'system' : 'Journal du système'
672
     }"
673
674
675
676
677

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

### Rôle d'organisation

678
Les rôles d'organisation ont été déplacés de la base de données vers la configuration.
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
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737

    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'
        }
    ]"
738

739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
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'
                }
            ]"
779
780

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