@@ -40,20 +40,67 @@ Objectif : Doubles statuts et refonte des données personnelles
## Notes de mise à jour
* PHP 7.4 minimum requis : attention à bien mettre à jour vos serveurs
Merci de lire ceci **AVANT** d'entamer la mise à jour!!
* Cette version comporte de nombreux changements en particulier sur la gestion des intervenants.
La migration ne sera possible qu'à partir de la version 14.11.
Si vous êtes sur une version antérieure à la 14, merci de migrer en 14.11 **AVANT** de migrer vers la 15.
La mise à jour n'est en effet pas réversible.
* La base de données ayant été remaniée, il vous faudra adapter vos connecteurs RH. En particulier les vues sources visant les tables INTERVENANT, STRUCTURE, PAYS et DEPARTEMENT.
Une nouvelle documentation sur les connecteurs est disponible ici : [Import de données via les connecteurs](doc/Connecteurs%20Import/Connecteurs%20IMPORT.md).
Nous vous recommandons en outre de vous entrainer au préalable sur une instance de préproduction avant de passer en production.
* Lors de la mise à jour, les différents objets qui concernent vos connecteurs et sur lesquels il y a des changements à faire s'afficheront en erreur. Il vous revient de mettre à jour par vous-mêmes ces connecteurs.
### 1. PHP7.4
PHP 7.4 est maintenant requis : attention à bien mettre à jour vos serveurs
* Attention : un bug est connu et en cours de résolution : il se produit lorsqu'en tant qu'intervenant vous saisissez vos données personnelles. Une page d'erreur s'affiche au moment ou vous sélectionnez votre statut. Une mise à jour de la page suffit pour pouvoir continuer la saisie du formulaire.
### 2. OSE 14.11 minimum
Pour cette version, il n'est pas possible de migrer depuis dde trop anciennes instances de OSE.
Avant la V15, vous devrez préalablement migrer en version 14.16.
Et ce n'est qu'à partir de la 14.16 que vous pourrez migrer vers la 15.
### 3. Connecteurs
La structure de la base de données OSE a évolué.
Voici pour information la liste des changements opérés au niveau des structures de données : ([Changements de structures BDD 14->15](doc/Divers/migration-bdd-14-vers-15.sql)).
Ce script ne doit pas être exécuté, la procédure de migration se chargera de cela toute seule.
Certains de vos connecteurs devront être adaptés, en particulier au niveau RH.
De même, si vous avez créé des requêtes personnalisées, des états de sortie, attention à bien tenir compte ces changmements!
Niveau connecteurs, les changements à faire sont les suivants :
* La vue matérialisée [MV_INTERVENANT](doc/Connecteurs%20Import/Création%20tables/INTERVENANT.md) devra être adaptée pour fournir toutes les colonnes nécessaires.
* La vue [SRC_INTERVENANT](doc/Connecteurs%20Import/Générique/SRC_INTERVENANT.sql) doit être utilisée telle quelle, sans adaptation de votre part
* Suppression d'anciennes tables, dont les vues sources correspondantes doivent être supprimées par vos soins :
* DROP VIEW V_DIFF_ADRESSE_INTERVENANT
* DROP VIEW SRC_ADRESSE_INTERVENANT
* DROP VIEW V_DIFF_ADRESSE_STRUCTURE
* DROP VIEW SRC_ADRESSE_STRUCTURE
* Ces vues devront être supprimées AVANT la mise à jour. Le script de migration ne le fait pas automatiquement afin de vous laisser le temps de les sauvegarder le cas échéant.
Plus généralement, [une nouvelle documentation sur les connecteurs est disponible](doc/Connecteurs Import/Connecteurs IMPORT.md).
### 4. Activation du stockage des fichiers dans le filesystem
Pas obligatoire, mais recommandé (sur votre instance de production).
*[Activer le stockage des fichiers dans le système de fichiers plutôt qu'en base de données (recommandé pour la production)](doc/Stockage-fichiers.md)
### 5. Gestion des employeurs
OSE peut maintenant gérer un référentiel des employeurs
Vous avez deux options au choix :
* soit importer votre propre liste d'employeurs via une vue source [SRC_EMPLOYEUR](doc/Connecteurs%20Import/Création%20tables/EMPLOYEUR.md) dédiée, à l'instar des autres connecteurs
* soit injecter dans OSE la totalité des employeurs de France, liste issue du référentiel SIRENE via la commande `./bin/ose update-employeur`
Cette commande devra être exécutée de manière régulière, une fois par mois environ si vous voulez que votre référentiel d'employeurs soit à jour.
Dans OSE, les fichiers, que ce soient les pièces justificatives ou les contrats ou tout autre fichier téléversé,
sont par défaut stockés dans la table FICHIER et leur contenu dans la colonne CONTENU.
Au bout de plusieures années d'exploitation, cela devient problématique, car le tablespace Oracle est extensible jusqu'à 32Go, mais par au-delà.
Il existe donc une alternative qui permet de stocker ces données directement dans le système de fichiers de votre serveur.
## Mise en œuvre du stockage dans le système de fichiers
Le stockage dans le système de fichiers est recommandé pour une instance de production uniquement.
Deux opérations sont nécessaires pour pouvoir stocker vos données dans votre système de fichiers :
### 1. Configuration
Dans votre fichier config.local.php, la rubrique "fichiers" doit être personnalisée.
Si vous avez un ancien fichier config.local.php qui ne comporte pas cette ubrique, veuillez copier/coller cette dernière depuis le fichier [config.local.php.default](../config.local.php.default).
Exemple de configuration :
```php
/* Fichiers */
'fichiers'=>[
/* file => dans le système de fichiers par défaut, bdd => en base de données par défaut */
'stockage'=>'file',
/* Répertoire où seront stockés les fichiers (pièces justificatives, contrats déposés, etc.
* A savoir : le répertoire par défaut data/fichiers est ignoré par GIT.
* Il est nécessaire de prévoir une sauvegarde de ce répertoire.
* IMPORTANT : ce répertoire doit être accéssible en lecture/écriture par l'utilisateur www-data d'Apache.
*/
'dir'=>__DIR__.'/data/fichiers',
],
```
Paramètre "stockage" :
- bdd => Stockage par défaut directement dans la base de données
- file => Stockage dans le système de fichiers, dans un répertoire spécifique
Paramètre "dir" :
- Ce paramètre vous permet de préciser dans quel répertoire stocker ces fichiers. Vous pouvez utiliser
comme ci-dessus la variable magique __DIR__ qui permet de partir du répertoire OSE, ou alors opter pour un chemin absolu en débutant par "/".
A Caen, nous avons opté pour un répertoire data de OSE lié symboliquement à un répertoire monté en réseau sur un espace de stockage distinct du serveur et sauvegardé régulièrement.
Au cas ou le fichier ne pourrait pas être enregistré (espace disque insuffisant, problème réseau, droits mal configurés, etc.), alors le contenu sera stocké en base de données afin de ne pas être perdu.
### 2. Transfert des données en base vers le système de fichiers
Une fois votre configuration OK, un script vous permet de transférer tous les fichiers stockés dans votre base de données vers le système de fichiers, soulageant ainsi votre tablespace.
```bash
./bin/ose fichiers-vers-filesystem
```
### 3. Exploitation
Si OSE a besoin d'accéder au contenu d'un fichier, en mode "file", l'application ira chercher d'abord le contenu dans le système de fichier et s'il ne trouve rien il cherchera dans FICHIER.CONTENU.
Une fois que vous avez identifié le ou les volumes horaires à traiter, plusieurs cas de figure se présentent :
* Si le volume horaire a un contrat, alors il est impossible de le modifier, il faut donc supprimer d’abord le contrat correspondant dans OSE avant de pouvoir le modifier.
* Si le volume horaire a une validation, alors il faut
* Soit supprimer la validation dans OSE (mais cela va impacter aussi d’autres volumes horaires)
* Soit retirer un volume horaire spécifique d’une validation (procédure ci-dessous).
Ensuite, procéder aux opérations suivantes :
* Historiser le volume horaire (procédure ci-dessous)
* Recalculer la feuille de route de l’intervenant : la fiche de service ayant changé, il convient de recalculer la feuille de route de l’intervenant, car cela peut avoir de l’influence sur l’état d’avancement du Workflow.
### Requêtes :
Retirer un volume horaire d’une validation (s’il ne fait pas l’objet d’un contrat) :