### Administration - Mise à jour

C'est ici que l'on peut mettre à jour la version en service de son portail par une version plus récente (ou égale) ou par la version de développement (master) !...
Cette mise à jour s'effectue en deux étapes d'abord les fichiers puis la base de données.

#### Mise à jour des fichiers

L'interface surtout explicatif ne permet en fait que le choix d'un paramètre : la version qui va remplacer celle en service sur le portail.
Un premier écran présente :

- le récapitulatif des versions : version en service sur le portail et dernière version stable disponible
- un message variable faisant le point
- une liste déroulante permettant un choix orienté de la version pour préparer la mise à jour
- le bouton `Préparer la mise à jour` qui vous permet après votre choix d'accéder au deuxième écran

Le deuxième écran indique les recommandations préalables et le rappel des options choisies ou imposées pour la mise à jour. Il contient deux boutons :

- `Retour` ==> (retour au premier écran) ...
- `Lancer la mise à jour` ==> déclanche une alerte javascript de confirmation (ou pas) et lance la procédure de mise à jour dans le déployeur ...

Vous voici dans l'interface progressive de contrôle et d'informations des process qui durent entre 2 et 3 minutes au total.
En cas de succès un bouton `Accéder à l'administration` permet de revenir dans l'administration sur l'écran de confirmation de réussite de la mise à jour des fichiers.

#### Migration base de données

Si tout c'est bien passé vous avez maintenant accès au bouton `Migrer la base de données` qui déclanche une alerte javascript de confirmation (ou pas) et lance la migration de la base de données.
Conseil : Avant de lancer une mise à jour, effectuez une sauvegarde complète de votre base de données via phpMyAdmin ou NPDS `/admin.php?op=SavemySQL`.
L'écran suivant résume le contexte l'analyse des différences structurelle et les requêtes générées qui vont être exécutées grâce au bouton `Executer la migration` et modifier la base de donnée en service...

Un dernier écran affichera le résultat de la migration de la base de données et de la mise à jour dans son ensemble.

En cas d'échec de la migration de la base de données, un lien vous permettra de relancer la procédure sans perte des paramètres de mise à jour.

#### Mémo technique

- Toute mise à jour génère automatiquement une sauvegarde des fichiers sensibles (une archive .zip : file_backup_ suivi de l'heurodatage) disponible dans `/lib/deployer/npds_backups/`
- La migration de la base de données c'est une mise à jour de la structure et une mise à jour des données des tables fonctions et metalang. Elle est basée sur une comparaison des deux fichiers contenant le schéma SQL : le fichier en cours d'utilisation et le fichier provenant de la nouvelle version.
  - pour la mise à jour structurelle, des requêtes UPDATE seront générées en fonction de la comparaison.
  - pour la mise à jour des données des tables fonctions et metalang, des requêtes `DELETE/INSERT` seront générées. Cette opération préserve vos customisations tout en mettant à jour le code système. (cette mise à jour de ces deux tables est systématique)
- Toute la procédure de mise à jour du portail est monitorée et consignée dans les logs de php et les logs de npds (`/slogs/install.log`)

NPDS - Manuel administration