Migration technique 4.2 vers 4.3


Ce guide traite de la migration technique de votre application Ametys CMS d'une version 4.2.x à 4.3.0.
Reportez-vous également au guide de migration graphique et au guide de migration des données.

  1. Tableau de compatibilité des plugins
  2. Fichiers de paramétrage (WEB-INF/param)
    1. Fichier scripts.xml
    2. Fichiers de workflow
  3. Types de contenus
    1. Mots clés réservés
    2. Vérification des vues de contenus
    3. Tables de référence privées
  4. Désactivation de feature
  5. Journaux de logs
  6. Applications Ametys ODF
  7. Autres plugins
  8. Solr et données indexées

Tableau de compatibilité des plugins

Reportez-vous au tableau de compatibilité des plugins et incrémentez les versions de vos plugins (prendre pour chaque plugin la version la plus récente compatible 4.3)

Fichiers de paramétrage (WEB-INF/param)

Fichier scripts.xml

Le fichier WEB-INF/param/scripts.xml permet de définir ses propres fonctions de scripts pouvant être exécutées depuis la console de script.
Le format XML de ce fichier a changé en 4.3. Si vous possédez votre propre fichier, vous devez donc le migrer vers le format 4.3.
Reportez-vous à la page Editeur de script

Fichiers de workflow

Pour que l'import des contenus d'une archive fonctionne, le workflow des contenus (de tout type) doit contenir l'action avec id=0.
Vérifiez que les fichiers de workflow se trouvant dans le répertoire WEB-INF/param/workflows contiennent bien cette action et si non, ajoutez-là dans la section <initial-actions> comme dans l'exemple ci-dessous :

<action id="0" name="plugin.default-workflow:WORKFLOW_ACTION_CREATE">         
    <results>         
        <unconditional-result old-status=" " status=" " step="1" />         
    </results>         
</action>         

Types de contenus

Mots clés réservés

Les mots clés suivants sont réservés et ne peuvent plus être utilisés comme nom de champs dans vos types de contenus :
creator, icon-small, workflow-step, rowBodyLoaded, creationDate, lastMajorValidationDate, contributorDisplay, site, contributor, lastValidationDate, rowBodyContent, firstValidationDate, workflow-step-id, icon-glyph, icon-decorator, name, lastModified, id, workflow-icon-small.

Si vos types de contenus déclarent un champ nommé avec un de ces mots réservés, votre application ne démarre pas, un log d'erreur précisera quel champs rentre en conflit avec cette liste.

Vous devrez alors :

  • renommer ce champ dans la déclaration du type de contenu.
  • rechercher et remplacer dans vos XSL de rendu l'utilisation de ce champ
  • vérifier que ce champ n'est pas utilisé dans vos classes java pour d'autres traitements (exports, ...)
  • passer un script de migration sur vos données (non fourni à ce jour sauf pour le champ "site")

Si le conflit concerne l'attribut "site", le guide migration des données fournit un exemple de script pour migrer ce champ "site" vers un autre attribut "location".    

Vérification des vues de contenus

Dans un type de contenu, si une vue (metadata-set) référence un attribut (metadata-ref) qui n'est pas défini par ce type, une exception est lancée et Ametys démarre en mode sans échec.

Dans ce cas, il suffit de supprimer ces références dans les vues concernées.

Tables de référence privées

Le menu "Table de référence" exclus désormais les tables de référence "privées".
Si vos tables de références n'apparaissent plus dans ce menu c'est qu'elles sont certainement déclarées comme "privé" alors qu'elles ne le devraient pas.

Recherchez dans la définition de vos types de contenus, les types contenant l'étiquette <cms:tag>reference-table</cms:tag>.
Pour chacun d'eux, supprimez l'étiquette privée <cms:tag>private</cms:tag> si elle s'y trouve alors que vous souhaitez accéder à vos tables de référence via le menu "Table de référence".

Désactivation de feature

Si votre application possède ces propres plugins (hormis les plugins default-** et welcome), vous devrez vérifier toutes les "feature" qui en désactivent d'autres. Pour cela, recherchez dans les fichiers plugin.xml de ces plugins le mot clé "deactivates" :

<feature name="..." deactivates="...">        
[...]        
</feature>        

Dans certains cas, le comportement souhaité n'est pas une désactivation (deactivates) mais une surcharge (overrides). Chaque cas devra être étudié et éventuellement modifié.

Journaux de logs

Les fichiers de logs sont désormais encodés en UTF-8.

Ouvrez le fichier WEB-INF/log4j.xml (et éventuellement WEB-INF/log4.xml.deliver) des applications CMS et site et ajoutez:

<appender ...>      
     <param name="Encoding" value="UTF-8" />
<!-- à faire sur tous les <appender> en début d'appender -->           
     ...           
</appender>      

Par ailleurs, fin d'être en mesure de suivre les migrations automatiques (nouveauté 4.3), il est conseillé de mettre le niveau de log du point d'extension concerné en INFO dans le fichier WEB-INF/log4j.xml (et WEB-INF/log4j.deliver.xml le cas échéant) :

<appender name="migration" class="org.apache.log4j.rolling.RollingFileAppender">
<param name="Encoding" value="UTF-8" />
<rollingPolicy class="org.apache.log4j.rolling.TimeBasedRollingPolicy">
<param name="FileNamePattern" value="${ametys.home.dir}/logs/migration-%d.log"/>
</rollingPolicy>
<layout class="org.apache.log4j.PatternLayout"> 
<param name="ConversionPattern" value="%d %-5p [%c] (%t;%X{requestURI}) %m%n"/>
</layout>
<filter class="org.ametys.core.util.AmetysExceptionFilter"/>
</appender>

<category name="org.ametys.core.migration.MigrationExtensionPoint" additivity="false">
<priority value="info"/>
<appender-ref ref="migration"/>
</category>

Cette manipulation doit être faite sur l'application CMS et sur l'application SITE

Applications Ametys ODF

Si votre application est une application Ametys ODF, suivez le guide de migration de la version 4.1 à la version 4.3 de l'ODF

Autres plugins

Suivant les plugins Ametys que vous utilisez, vous devez suivre les migrations techniques et/ou graphiques propres à chaque plugin :

Solr et données indexées

Le serveur Solr doit être réinstallé. 
Télécharger la version 4.3 http://releases.ametys.org/release/org.ametys/solr-app/4.3.x/4.3.0/zips/

Vérifier que le fichier setenv-solr.sh positionne Java 11 dans SOLR_JAVA_HOME (ou la jvm par défaut qui serait java11)

Après redémarrage du serveur Solr puis Ametys, lancez une indexation totale.

Retour en haut