Migration du package
Si vous avez des modifications de code, vous pouvez faire un pull (merge) de votre esup-uportal pour récupérer la 4.2 - vous aurez alors forcément des conflits à résoudre.
Dans la majorité des cas, il sera cependant plus simple de repartir d'une version esup-uportal 4.2 fraiche.
L'implémentation du thème étant complètement refondue (university -> respondr), vous devrez réimplementer complètement vos ajustements graphiques.
Le fichier de configuration principal filters/esup.properties est par contre "très" semblable et vous pouvez le reprendre complètement a priori.
L'intégration du driver correspondant à la base de données choisi (postgresql par exemple) se fait maintenant non plus dans le pom.xml principal mais dans uportal-db/pom.xml.
Migration des données
Le changement de thème en respondr est l'occasion de revoir votre ENT. Comme conseillé sur les documentations Jasig https://wiki.jasig.org/display/UPM41/Database+Changes et https://wiki.jasig.org/display/UPM42/Upgrade+Data+Import il semble préférable de repartir d'une base vierge (initdb).
Suivant l'importance (en quantité) des données (nombre de portlets définis, de groupes ...) il peut être intéressant de récupérer tout de même les anciennes données dans votre nouvel ENT.
Les documentations Jasig (pages données ci-dessus) doivent vous aider à faire cela. Nous allons ici tenter de donner quelques informations également vous facilitant cette tâche.
Mode opératoire
L'idée est de conserver un ENT dans l'ancienne version - nos tests ont été faits ici avec un esup-uportal en version 4.0 (version uportal-4.0.15-esup-2 dans nos tests).
Depuis cet ancien ENT, on va procéder à des exports de données.
On procédera aux imports sur le nouvel ENT (4.2).
Entre deux, on devra parfois modifier la structure des fichiers pour les passer d'une structure de 4.0 à une structure de 4.2 - on utilisera pour ce faire des commandes bash ou scripts python.
Groupes PAGS
On récupère les groupes PAGS de notre 4.0 en récupérant simplement le fichier uportal-war/src/main/resources/properties/groups/PAGSGroupStoreConfig.xml
Les groupes PAGS sont maintenant stockés en base de données, on peut les importer via une commande ant data-import, mais il faut pour ce faire disposer d'un fichier XML PAGS par groupe.
Cf la doc Jasig derrière le lien suivant https://wiki.jasig.org/pages/viewpage.action?pageId=65274412 , la structure du xml a de plus quelque peu changé, il faut donc retravailler vos blocs xml en plus de les découper.
Si vous avez beaucoup de groupes, il est intéressant de procéder à cette restructuration par scripts - comme ici :
#!/usr/bin/env python # -*- coding: utf-8 -*- import libxml2, sys doc = libxml2.parseFile("PAGSGroupStoreConfig.xml") mapId2Name = { 'desktop_device_access':'Desktop Device Access', 'mobile_device_access':'Mobile Device Access', 'respondr_theme_users':'Respondr Theme Users' } for n in doc.xpathEval("//group"): mapId2Name[n.xpathEval("group-key")[0].getContent()] = n.xpathEval("group-name")[0].getContent() for n in doc.xpathEval("//group"): n.setName('pags-group') n.setProp('script', 'classpath://org/jasig/portal/io/import-pags-group_v4-1.crn') for n in doc.xpathEval("//member-key"): n.setName('member-name') n.setContent(mapId2Name[n.getContent()]) for n in doc.xpathEval("//group-name"): n.setName('name') for n in doc.xpathEval("//group-description"): n.setName('description') for n in doc.xpathEval("//group-key"): n.unlinkNode() for group in doc.xpathEval("//pags-group"): name = group.xpathEval("name")[0].getContent() f = open( name + '.pags-group.xml','w') group.saveTo(f)
Puis on réimporte les groupes PAGS ainsi :
ant data-import -Ddir=/tmp/ent42/pags
group key / name
Notez bien que le group-key a disparu, il ne reste plus que le (group) name !
Cela peut avoir une forte incidence sur les configurations (descripteurs xml, configs en BD comme pour CalendarPortlet, ....) des portlets - notamment les configurations dans lesquelles on spécifie des identifiants de groupes : en effet vous ne pouvez plus identifier un groupe par (exemple) pags.member-univ-rouen mais par son nom directement uniquement ("Université de Rouen" par exemple).
Aussi pour esup-filemanager par exemple (c'est valable pour plein d'auters portlets !), dans le fichier drives.xml vous devrez éventuellement changer les identifiants des groupes - exemple :
<property name="group" value="pags.univ-rouen" /> pourra devenir <property name="group" value="Université de Rouen" />
Groupes locaux
On récupère les groupes locaux depuis la 4.0 via la commande ant data-export -Ddir=/tmp/ent42 -Dtype=group-membership
On peut alors les réimporter directement depuis la 4.2 ant data-import -Ddir=/tmp/ent42/group-membership
Définitions de portlets
On récupère les définitions de portle depuis la 4.0 via la commande ant data-export -Ddir=/tmp/ent42 -Dtype=portlet-definition
On peut alors les réimporter directement depuis la 4.2 ant data-import -Ddir=/tmp/ent42/portlet-definition
Les définitions de portlets peuvent requérir les groupes (et notamment les groupes pags), d'où le fait d'importer les groupes PAGS avant.