Table of Contents

Migration périphérique

Migration d'une base existante

De manière générale, si vous utilisiez déjà Pims dans une version précédente, il est souvent nécessaire de migrer les données. Pour cela

  1. Connectez-vous à la BD PimsDB, avec PgAdmin par exemple, en utilisant le user pims_db_user (cf. chapitre Config postgresql)
  2. Exécuter un ou plusieurs fichiers de migration (voir ci-dessous) de la même façon que l'on exécute ePimsModel.sql (cf chapitre postgresql ).

La base de données ePims est versionnée depuis ePims 4.0M2. Pour connaitre la version de votre BD, exécuter la requête SQL suivante:

select max(model_version) from admin_infos 


Selon la version affichée, vous devez exécuter tous les scripts Data_Migration ayant un suffixe supérieur. Par exemple, si vous avez la version 4, vous devez exécuter les scripts:


Pour les versions précédentes de la BD dans lesquelles il n'y avait pas de numéro de version enregistré, la correspondance entre les versions ePims et les scripts sont

Pour le passage en version 6 de la BD

Attention, le passage en version 6 de la BD, certaines étapes spécifiques doivent être suivies suite à une modification importante autour de la gestion des fichiers attachés aux données.

1. Incohérence attached_file.path:

Exécuter la commande suivante afin de vérifier si il y a des incohérences entre le path et le type des fichiers enregistrés dans la base

      select * from attached_file
      where attached_file.path not like ('%/' || attached_file.file_type || '/')

Si c'est le cas, faire les modifications manuellement afin

Une incohérence est possible pour les installations d'ePims qui ont été réalisé avec des versions antérieures à la version 3.0 d'ePims !! Par exemple, dans le cas où le path fini par 'demande_analyse' au lieu de 'analyse_request', exécuter :

      update attached_file
      set path = regexp_replace(path, '/demande_analyse/', '/'||file_type || '/')
      where id in (
              select attached_file.id from attached_file, study_attached_file
              where attached_file.path not like ('%/' || attached_file.file_type || '/')
              and study_attached_file.file= attached_file.id
      )

2. Ajouter le langage procédural

Pour certaines modifications, il est nécessaire d'ajouter le support du langage plpgsql à la BD pims. Normalement toute installation postgresql supporte ce langage procédural. Cette commande doit être exécuter en tant que superuser

      CREATE LANGUAGE plpgsql;

3. Exécuter le script de migration : Exécuter le script Data_migration-6.sql qui :

et qui migre acquisition_result dans attached file :

4. Vérifier les orphelins de la table attached_file

Afin de s'assurer qu'il n'y a pas d'enregistrement d'attached_file associé à aucune entité, exécuter :

      select * from attached_file where attached_file.id NOT IN (
              select distinct fl.attached_file from file_link as fl
      )

Si il existe de tels fichiers, il est alors nécessaire de corriger manuellement les erreurs…. et au final

5. Suppression des dernières tables - colonnes après les ultimes vérifications

Exécuter le script Data_migration-6final.sql qui :

Migration d'un répertoire racine d'ePims

Pour la version 4.0 (à partir de la 4.0RC1) le répertoire de données d'ePims à subit une modification dans sa structure (par exemple les fichiers de données de spectroscopie ne sont plus contenu dans les dossier [étude]/raw mais dans [étude]/samples/data/RAW). Afin de faire migrer le répertoire dans la bonne structure un programme a été créé : ePimsRoot-pre4.0-migration.jar .

Utilisation d'ePimsRoot-pre4.0-migration.jar

Requis

Ce programme s'utilise en ligne de commande (shell sous UNIX ou “Démarrer ⇒ Exécuter ⇒ cmd” sous Windows). Il nécessite d'avoir Java 1.5 d'installé sur la machine qui va l'exécuter.

Utilisation normal

java -jar ePimsRoot-pre4.0-migration.jar -pimsroot [chemin vers le répertoire ePims] -v

Un fichier de logs sera créé automatiquement dans le dossier où s'exécute le programme, son nom étant ePimsRoot-pre4.0-migration.log. Nota : Sous LINUX il faut faire attention à l'utilisateur qui exécute le programme. Il doit être le même que l'utilisateur auquel sera identifié ePims pour gérer son dossier source (ou ce dernier doit avoir des droits supérieur).

Utilisation particulière

Liste des dossiers utilisés

Pour fonctionner ce programme doit avoir la liste des noms de répertoires utilisés pour l'organisation actuelle du répertoire racines d'ePims. Cette liste est celle définie dans le fichier eP-Core.properties lors de l'installation d'ePims. Par défaut il utilise les valeurs suivantes :

PIMS_REPOSITORY_1=a
PIMS_REPOSITORY_2=b
PIMS_REPOSITORY_3=c
PIMS_REPOSITORY_4=d
PIMS_REPOSITORY_5=e
STUDY_RAW_DIR=raw
STUDY_SPECTRA_DIR=spectra
STUDY_RESULTS_DIR=results
STUDY_SAMPLES_DIR=samples
STUDY_SEARCH_DIR=search
STUDY_ANALYSIS_REQUEST_DIR=analysis_request
STUDY_OTHER_DIR=others
STUDY_CARDS_DIR=forms
STUDY_SCANS_DIR=scans
STUDY_ANNOTATIONS_DIR=annotation

Si ces valeurs ne correspondent pas à votre installation d'ePims vous devez spécifier au programme d'autre valeurs. Pour ce faire il faut créer un fichier texte contenant les propriétés qui changent par rapport aux valeurs par défaut. Par exemple :

PIMS_REPOSITORY_1=repo1
PIMS_REPOSITORY_2=repo2
STUDY_SPECTRA_DIR=mgf

(Nota, cas spécial pour les repository : redéfinir un PIMS_REPOSITORY annule toute les valeurs des autres repository par défaut. Dans l'exemple précédent le programme ira chercher les repository dans les dossier repo1/, repo2/ mais pas dans c/ d/ e/ même si PIMS_REPOSITORY_3 4 et 5 n'ont pas été redéfinis).

Spécifier les nouvelles valeurs au programme

Il faut utiliser l'argument -properties suivi du chemin d'accès au fichier que vous avez écrit.
Exemple :

java -jar ePimsRoot-pre4.0-migration.jar -pimsroot [chemin vers le répertoire ePims] -v -properties /temp/properties_file.txt

:!: Les propriétés UNDEF_DIR_NAME, PIMS_SHARE, PIMS_SYSTEM, PIMS_ARCHIVE, PIMS_ARCHIVE_FILE ne sont pas utilisées par le programme de migration. Si vous les incluez dans le fichier listant les nouvelles valeurs, le programme affichera une erreur : ERROR in given properties file. Element [propriété] isn't recognize as a valid property.. Si [propriété] est une de celle non utilisée, ne vous inquiétez pas, cela ne posera pas de problème pour la migration.

Arguments

java -jar pimsRoot-pre4.0-migration.jar -pimsroot dir [-v] [-noLogFile] [-properties file]

PROPERTY1=VALUE1
PROPERTY2=VALUE2
etc...