Migration technique 4.1 vers 4.3


Avant d'appliquer les migrations Ametys ODF, vous devez appliquer les migrations Ametys CMS 4.2.x vers 4.3.x

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

  1. Modèle de données
    1. Renommage de la vue (metadata-set) "main" en édition
    2. Fusion des contacts
    3. Ajout d'un champ "role" sur le repeater des témoignages
    4. Ajout d'un champ "avatar" (illustration) pour les contacts
    5. Ajout de champs pour l'export Apogée
    6. Gestion des labels des formations
    7. Approche par compétences
    8. Potentiel enseignant
    9. Enumération des étapes porteuses
  2. Workflow
    1. Table de référence
    2. Action de validation globale
    3. Invalidation automatique des éléments parents
    4. Action de republication
    5. Import des archives
  3. Autres migrations
    1. Modification du nom de la feature Apogée
    2. Synchronisation Apogée
      1. Paramétrage des SCC Apogée
      2. Opérateurs de synchronisation Apogée
      3. Fichiers de conversion Apogée
      4. Surcharge des SCC
      5. Fichier de mapping et requête des SCC
    3. Ajout d'un droit pour mutualiser un ELP
    4. Popup sur les ELPs de la fiche formation

Modèle de données

Ce chapitre traite des modifications du modèle de donnée qui nécessite une migration.
Pour voir l'ensemble des modifications apportées au modèle, reportez-vous à la page Modification du modèle de données

Renommage de la vue (metadata-set) "main" en édition

Pour tous les contenus ODF (hors table de référence) la vue d'édition "main" a été renommée en "default-edition".

Dans vos surcharges de contenus ODF (WEB-INF/param/content-types/_override/org.ametys.plugins.odf.Content.*.xml), recherchez toutes les occurrences de:

<cms:metadata-set name="main" type="edition">                             

et remplacer par

<cms:metadata-set name="default-edition" type="edition">                           

Fusion des contacts

Pour les formations, parcours et ELP, les contacts (responsables + contacts administratifs) ont été fusionnés en un seul repeater de contacts.

Si vous avez surcharger les vues (metadata-set) des formations et/ou parcours et/ou ELP la référence aux métadonnées "personInCharge" et "contact" doivent être remplacés par:

<cms:metadata-ref name="contacts">                             
    <cms:metadata-ref name="role"/>                             
    <cms:metadata-ref name="persons"/>                        
</cms:metadata-ref>          

Si vous utilisez une version personnalisée d'un import CDMfr ou ROF ou un autre import XML, les XSL de transformation CDMfr -> Ametys et ROF -> Ametys ont été modifiés.

  • Les templates XSL nommé "program-personInCharge" et "program-contact" ont été remplacés par un seul template "program-contacts"
  • Les templates XSL nommé "course-personInCharge" et "course-contact" ont été replacés par "course-contacts"

Recherchez toutes les occurrences de "program-personInCharge", "program-contact", "course-personInCharge" et "course-contact" dans vos éventuelles surcharges.

S'il s'agit de "xsl:call-template" (ex: <xsl:call-template name="program-personInCharge"/>), remplacez-les simplement par leur équivalent (ex: <xsl:call-template name="program-contacts"/>).

S'il s'agit de "xsl:template" (ex: <xsl:template name="program-personInCharge">), renommez-le par son équivalent (ex: <xsl:template name="program-contacts">) et référez-vous au template Ametys correspondant pour ré-adapter votre surcharge.

Ajout d'un champ "role" sur le repeater des témoignages

Si vous avez surcharger les vues (metadata-set) des formations et/ou parcours, le repeater "testimonies" devient :

<cms:metadata-ref name="testimonies">        
    <cms:metadata-ref name="title" />                             
    <cms:metadata-ref name="role" />                             
    <cms:metadata-ref name="image" />                             
    <cms:metadata-ref name="text" />                        
</cms:metadata-ref>        

Ajout d'un champ "avatar" (illustration) pour les contacts

Si vous avez surcharger les vues (metadata-set) des personnes, ajouter la référence au nouveau "avatar".

<cms:metadata-ref name="avatar"/>          

Ajout de champs pour l'export Apogée

De nouveaux champs ont été ajoutés pour l'export Apogée. Si le vue "default-edition" a été surchargée, il faut rajouter ces champs à l'onglet Apogée pour tous les contenus suivants :

De nouveaux champs ont été ajoutés pour l'export Apogée. Si le vue "default-edition" a été surchargée, il faut rajouter ces champs à l'onglet Apogée pour tous les contenus suivants :

  • Program

<cms:fieldset>                  
    <cms:label i18n="true">PLUGINS_ODF_PROGRAM_APOGEE_FIELDSET</cms:label>                  
    <cms:metadata-ref name="codeApogee" />                  
    <cms:metadata-ref name="cycleApogee" />                  
    <cms:metadata-ref name="start-date-validation" />                  
    <cms:metadata-ref name="end-date-validation" />                  
    <cms:metadata-ref name="start-date-recruitment" />                  
    <cms:metadata-ref name="end-date-recruitment" />                  
</cms:fieldset>                  
  • Parcours
<cms:fieldset>                  
    <cms:label i18n="true">PLUGINS_ODF_PROGRAM_APOGEE_FIELDSET</cms:label>                  
    <cms:metadata-ref name="codeApogee" />                  
    <cms:metadata-ref name="cycleApogee" />                  
    <cms:metadata-ref name="inscription-types" />                  
    <cms:metadata-ref name="cips" />                  
    <cms:metadata-ref name="duration-apogee" />                  
    <cms:metadata-ref name="start-date-validation" />                  
    <cms:metadata-ref name="end-date-validation" />                  
    <cms:metadata-ref name="start-date-recruitment" />                  
    <cms:metadata-ref name="end-date-recruitment" />                  
</cms:fieldset>                  
  • Conteneur
<cms:fieldset>                  
    <cms:label i18n="true">PLUGINS_ODF_PROGRAM_APOGEE_FIELDSET</cms:label>                  
    <cms:metadata-ref name="codeApogee" />                  
    <cms:metadata-ref name="cycleApogee" />                  
    <cms:metadata-ref name="inscription-types" />                  
    <cms:metadata-ref name="cips" />                  
    <cms:metadata-ref name="duration-apogee" />                  
    <cms:metadata-ref name="siseCode" />                  
    <cms:metadata-ref name="orgUnit" />                  
</cms:fieldset>                  
  • Liste d'ELP
<cms:fieldset>                  
    <cms:label i18n="true">PLUGINS_ODF_PROGRAM_APOGEE_FIELDSET</cms:label>                  
    <cms:metadata-ref name="codeApogee" />                  
</cms:fieldset>                  
  • ELP
<cms:fieldset>                  
    <cms:label i18n="true">PLUGINS_ODF_PROGRAM_APOGEE_FIELDSET</cms:label>                  
    <cms:metadata-ref name="codeApogee" />                  
    <cms:metadata-ref name="cips" />                  
</cms:fieldset>                  
  • [Table de référence] Nature (Conteneur)
<cms:metadata-ref name="codeApogee" />                  
  • [Table de référence] Nature (ELP)
<cms:metadata-ref name="codeApogee" />                  
  • [Table de référence] Nature du diplôme
<cms:metadata-ref name="codeApogee" />                  
  • [Table de référence] Diplôme
<cms:metadata-ref name="codeApogee" />            

Gestion des labels des formations

Depuis peu, il est nécessaire d'apposer un label aux formations contrôlée par l'Etat.
La liste des labels existant est imposée par le ministère de l'Enseignement: https://www.enseignementsup-recherche.gouv.fr/cid141235/labels-des-formations-controlees-par-l-etat.html

Pour ce faire, la table de référence des diplômes contient une nouvelle colonne "Labellisation" (certificationLabel) qui permet de choisir parmi une liste déroulante le label associé à un type de diplôme (ex: Diplôme national de licence - contrôlé par l'Etat)

Par ailleurs, un nouveau champ "Formation contrôlée par l'Etat" (certified) de type boolean a été ajouté sur les formation et parcours.

Si vous avez surcharger les vues "main" des formations et/ou parcours, rajoutez ce champ à vos vues.

Ce nouveau champ permet de désigner les formations contrôlée par l'Etat afin de les identifier au moyen du visuel correspondant au label de son type de diplôme.
Ceci est traité dans la charte graphique (voir manuel de migration graphique).       

Approche par compétences

Le modèle de donnée a été modifié pour l'approche par compétences.

Sur les formations / parcours :

  • le champ "requiredSkillSets" (valeur multiple de Blocs de compétences) devient requiredSkills (valeur multiple de Compétences) du même libellé. 
  • le champ "acquiredSkillSets" a été supprimé

Dans vos surcharges des types de contenus (abstractProgram, program et/ou subprogram) recherchez les occurrences de "requiredSkillSets" et remplacez par "requiredSkills", puis supprimez toutes les occurrences de "acquiredSkillSets"

Sur les ELPs:

  • le champ "requiredSkillSets" (valeur multiple de Blocs de compétences) a été remplacé par "requiredSkills" (valeur multiple de Compétences) du même libellé
  • le champ "acquiredSkillSets" (valeur multiple de Blocs de compétences) a été remplacé par le repeater "acquiredSkills" suivant :
    • Compétence acquises (acquiredSkills) - repeater
      • Bloc de compétence (skillSet) - Table de référence - Simple
      • Compéténces (skills) - repeater
        • Compétence (skill) - Table de référence - Simple
        • Niveau d'acquisition (acquisitionLevel) -  Table de référence - Simple

Dans vos surcharges du type de contenu ELP (course) recherchez les occurrences de "requiredSkillSets" et remplacez par "requiredSkills", puis recherchez les occurrences de "<cms:metadata-ref name="acquiredSkillSets" />" et remplacez par :

<cms:metadata-ref name="acquiredSkills">           
    <cms:metadata-ref name="skillSet"/>           
    <cms:metadata-ref name="skills">           
        <cms:metadata-ref name="skill"/>           
        <cms:metadata-ref name="acquisitionLevel"/>           
    </cms:metadata-ref>           
</cms:metadata-ref>         

Potentiel enseignant

Cette migration ne concerne que les applications Ametys ODF utilisant le plugin ODF-Pilotage.

Un repeater de discipline d'enseignement (potentielsEnseignant) a été ajouté sur le type de contenu Composante.
Si vous avez surcharger la vue "default-edition" de ce type de contenu, vous devez ajouter la référence à ce nouveau repeater dans l'onglet "Pilotage":

<cms:fieldset role="tab">    
    <cms:label i18n="true">PLUGINS_ODF_PILOTAGE_FIELDSET</cms:label>    
    <cms:metadata-ref name="codCipApogee" />    
    <cms:metadata-ref name="codCmp" />    
    <cms:metadata-ref name="potentielsEnseignant">    
        <cms:metadata-ref name="discipline" />    
        <cms:metadata-ref name="potentiel" />    
    </cms:metadata-ref>    
</cms:fieldset>    

Le champ Discipline d'enseignement (disciplineEnseignement) a également été ajouté dans l'onglet "Pilotage" des ELPs.
Si vous avez surcharger la vue "default-edition" des ELP (course), vous devez ajouter la référence à ce nouveau champ:

<cms:fieldset role="tab">    
    <cms:label i18n="true">PLUGINS_ODF_PILOTAGE_FIELDSET</cms:label>    
    <cms:metadata-ref name="disciplineEnseignement"/>    
    <cms:metadata-ref name="elpCode" />    
    <cms:metadata-ref name="etapePorteuse" />    
    ...    
</cms:fieldset>    

Enumération des étapes porteuses

L'attribut etapePorteuse du type de contenu ELP, n'est plus lié à un modèle de recherche, mais possède son propre énumérateur.

Dans vos surcharge du type de contenu ELP, recherchez si l'attribut "etapePorteuse" a été surchargé.
Si c'est le cas, remplacez:

<widget-params>      
    <param name="modelId">search-ui.XXXXX</param>      
</widget-params>      

par:

<enumeration>       
    <custom-enumerator class="org.ametys.plugins.odfpilotage.enumerators.StepHolderEnumerator"/>       
</enumeration>   

Attention, certaines modifications du modèle de données implique également une migration des données et une migration graphique. Se référer aux manuels correspondants.

Workflow

Table de référence

Dans le fichier de workflow des tables de référence (reference-table.xml), ajouter l'action 22 (action modification sans exécution de la EditContentFunction) à l'état 3 du workflow:

<step id="3" name="plugin.default-workflow:WORKFLOW_STATE_VALIDATED">                                  
    <actions>                                  
        <common-action id="2" />                                  
        <common-action id="22" />                                  
        <common-action id="220" />                                  
        <common-action id="222" />                                  
    </actions>                                  
</step>         

Action de validation globale

L'action de validation globale n'est plus une action de workflow.
Elle est désormais disponible sur tous les éléments de la maquette de formation et quelque soit leur état.
Elle peut donc être exécutée à tout moment. Seul le cycle de vie des éléments non-validés sera modifié.

Dans les fichiers de workflow des formations (program.xml), parcours (subprogram.xml), conteneurs (container.xml), listes (courselist.xml) et ELP (course.xml), supprimez la déclaration et les références à l'action 900 (validation globale).
Ces fichiers se trouvent dans WEB-INF/param/workflows.

Dans le fichier plugins/default-odf-workflow/plugin.xml, supprimez toutes les occurrences de:
<menu-900-action>Ametys.plugins.odf.program.ProgramActions.globalValidate</menu-900-action>

Invalidation automatique des éléments parents

Lors de la modification d'un élément de la maquette de formation (parcours, conteneur, liste, ELP), la formation parente n'est plus invalidée (elle ne passe plus en brouillon).

Lors de l'ajout d'un élément dans la maquette de formation (nouveau ou par copie), seul élément parent direct est automatiquement invalidé.

Dans les fichiers de workflow container.xml, subprogram.xml, courselist.xml et course.xml :

  • Supprimez toutes les occurrences de la post-fonction org.ametys.odf.workflow.ChangeProgramStateFunction

Action de republication

L'action de republication (9001) est utilisée pour republier une formation sur un portail. Jusqu'à présent elle n'était disponible que si la formation était dans l'état "Validé".

Depuis que la validation globale n'est plus une action de workflow, l'action de workflow de "republication" doit être disponible depuis n'importe quel état, dès lors que la formation a été validé au moins une fois.

C'est la version validée des éléments de la maquette qui sera republiée.

Dans le fichier de workflow WEB-INF/param/workflows/program.xml, recherchez l'action "9001".
Si elle existe, déplacez-là dans la section "<common-actions>" et ajoutez la condition de workflow suivante :

<condition type="avalon">              <arg name="role">org.ametys.odf.workflow.ODFContentPublishedCondition</arg>                 
</condition>         

Puis pour chaque état (step), faites référence à l'action 9001. Exemple :

<step id="1" name="plugin.default-odf-workflow:WORKFLOW_STATE_DRAFT">                      
    <actions>                          
        <!-- Edit Action -->                          
        <common-action id="2" />                          
        <common-action id="22" />                          
        ....                          
        <!-- Republish Action -->                          
        <common-action id="9001" />                      
    </actions>                 
</step>               

Import des archives

Pour que l'import des contenus d'une archive fonctionne, le workflow des contenus 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-odf-workflow:WORKFLOW_ACTION_CREATE">         
    <results>         
        <unconditional-result old-status=" " status=" " step="1" />         
    </results>         
</action>         

Cette action devrait être notamment manquante pour les fichiers reference-table.xml, orgunit.xml et person.xml

En cas de doute, comparez vos fichiers avec ceux du template ODF ou ODFWeb pour appliquer les modifications nécessaires.
- ODF Web : https://code.ametys.org/projects/ODF/repos/template-odfweb/browse/webapp/cms/WEB-INF/param/workflows
- ODF : https://code.ametys.org/projects/ODF/repos/template-odf/browse/webapp/WEB-INF/param/workflows
Comparez également votre plugin "default-odf-workflow" avec celui du template.

Autres migrations

Modification du nom de la feature Apogée

Dans le fichier WEB-INF/param/runtime.xml, remplacez

<feature>odf-sync/configuration.apogee</feature>                                       

par

<feature>odf-sync/odfsync.apogee</feature>                                       

Vous trouverez normalement cette ligne dans la section <exclude> si vous n'utilisez pas de synchro Apogée.

Synchronisation Apogée

Les migrations de ce chapitre ne concernent que les applications ODF avec synchro Apogee.

Paramétrage des SCC Apogée

La source Apogée et l'année administrative qui étaient des paramètres de configuration, deviennent des paramètres des collections Apogée.

Dans le fichier de configuration $AMETYS_HOME/config/config.xml, vous pouvez supprimer les lignes suivantes :

<odf.apogee.jdbc.datasource>XXX</odf.apogee.jdbc.datasource>                                         
<odf.apogee.administrative.year>XXX</odf.apogee.administrative.year>                                         

La suppression de ces lignes n'est pas obligatoire mais évitera des warnings dans les journaux de l'application.

Vous devez ensuite reconfigurer les 6 synchros Apogée pour définir dans chacune d'elles ces 2 anciens paramètres de configuration.

Vous pouvez le faire :

- soit via l'outil d'administration en modifiant les synchros Apogée depuis l'outil "Synchronisation de contenus",

- soit manuellement en modifiant le fichier $AMETYS_HOME/config/synchronizable-collections.xml.

Dans ce fichier, recherchez les collections Apogée, c'est à dire les collections liées à un modèle avec l'identifiant préfixé par "org.ametys.plugins.odfsync.apogee.scc" et rajoutez les paramètres "datasourceId" et "year" correspondant respectivement aux anciens paramètres de configuration "odf.apogee.jdbc.datasource" et "odf.apogee.administrative.year".

Par exemple :

<collection id="formations-apogee">                                        
  <label>Formations Apogée</label>                                        
  <!-- // autre -->                                        
  <model id="org.ametys.plugins.odfsync.apogee.scc.program">                                        
  <param name="datasourceId">SQL-jvnsnpln</param>                                        
  <param name="year">2019</param>                                        
  </model>                                        
</collection>           

Opérateurs de synchronisation Apogée

Les opérateurs de synchronisation Apogée ont été uniformisés, les opérateurs spécifiques aux ELP et conteneurs ont notamment été supprimés.

Via l'interface d'administration et depuis l'outil "Synchronisation de contenus", modifiez les synchronisations Apogée existantes pour les ELPs et les conteneurs, et choisissez l'opérateur de synchronisation Conversion des données Apogée vers Ametys.

Si votre application contient une surcharge du composant JAVA org.ametys.plugins.odfsync.apogee.scc.operator.ApogeeSynchronizingContentOperatorHelper, il est possible que cette surcharge ne soit plus nécessaire ou qu'elle doit être réadaptée.

Recherchez le composant avec "org.ametys.plugins.odfsync.apogee.scc.operator.ApogeeSynchronizingContentOperatorHelper" dans les plugin.xml de votre application :

  • si la classe associée à ce composant est une classe Ametys, vous pouvez supprimer cette surcharge
  • si la classe associée à ce composant n'est pas une classe Ametys mais une classe spécifique à votre application, il est nécessaire de réadapter cette classe pour identifier ce qu'elle apporte et réactualiser la configuration du helper en supprimant les conversions

Fichiers de conversion Apogée

Si votre application contient une surcharge des fichiers de conversion Apogée vers Ametys, ils doivent être renommés. 
Leur nom doit correspondre au nom exact de la table de référence cible en minuscules et tronquée de odf-enumeration. suivi de _conversion.xml.

Par exemple :

  • degrees_conversion.xml devient degree_conversion.xml
  • educationTypes_conversion.xml devient programtype_conversion.xml

Ces fichiers se trouvent dans le répertoire WEB-INF/param/odf/apogee/code de votre application.

Surcharge des SCC

Ce chapitre ne concerne que les surcharges de synchronisation Apogée, à partir de la version 4.3.11

Si vous avez surchargé les classes JAVA de synchronisation Apogée (classes héritant de org.ametys.plugins.contentio.synchronize.SynchronizableContentsCollection), et notamment la méthode _search, il faut faire le changement suivant :

Remplacer

if (!searchParams.containsKey("__count") && (searchParams.containsKey("apogeeSyncCode") || searchParams.containsKey("parentCode")))

par

if (!searchParams.containsKey("__count") && (searchParams.containsKey("apogeeSyncCode") || searchParams.containsKey("parentCode") || searchParams.containsKey("isGlobalSync")))

Fichier de mapping et requête des SCC

Ce chapitre ne concerne que les surcharges de synchronisation Apogée, à partir de la version 4.3.11

Si vous avez surchargé dans votre application les fichiers de requêtes Apogée du dossier WEB-INF/params/odf :

Fichier apogee-mapping.xml

Remplacer tous les occurrences de LIB_MEV par COD_MEV.

S'assurer qu'à la fin la ligne suivante soit présente :

{"metadata-ref":"mention","attribute":"COD_MEV","synchro":true}

Fichier apogee-requests.xml

Remplacer tous les occurrences de LIB_MEV de la table mention par COD_MEV de la table vdi.

Ainsi la jointure suivante peut normalement être supprimée aussi :

LEFT OUTER JOIN mention_vdi mention ON vdi.COD_MEV = mention.COD_MEV

Ajout d'un droit pour mutualiser un ELP

Les actions pour créer un ELP ou ajouter un ELP existant ont été séparé dans 2 boutons distincts :

  • Nouveau ELP
  • Mutualiser un ELP existant

Le bouton "Mutualiser un ELP" est protégé par son propre droit "Mutualiser un ELP" (ODF_Rights_Course_Share)
Il faut donc adapter vos contextes de droit pour ajouter ce nouveau droit.

Popup sur les ELPs de la fiche formation

Cette migration ne concerne que les applications utilisant la charte ODF noyau

Sur une fiche formation, par défaut, dans le tableau "Programme", un clic sur un ELP ouvre une popup avec quelques champs de l'ELP.
Les champs disponibles et affichés dans cette popup sont ceux de la vue (metadata-set) "structure".

Pour un affichage correct, dans votre surcharge WEB-INF/param/content-types/_override/org.ametys.plugins.odf.Content.course.xml, rajoutez une surcharge de la vue "structure" comme suit :

<cms:metadata-set name="structure" type="view" internal="true">   
    <cms:fieldset role="fieldset" name="benefits">   
    <cms:label i18n="false">benefits</cms:label>   
        <cms:metadata-ref name="level" />   
        <cms:metadata-ref name="ects"/>   
        <cms:metadata-ref name="orgUnit"/>   
        <cms:metadata-ref name="nbHours" />   
        <cms:metadata-ref name="teachingTerm" />   
    </cms:fieldset>   
    <cms:metadata-ref name="description" />   
</cms:metadata-set>   

Vous pouvez choisir d'autres infos à afficher dans la zone "benefits". Attention cependant à se limiter à 5 données maximun.

Si vous ne souhaitez pas afficher des popups sur ces liens, mais que vous souhaitez continuer à accéder à la page de l'ELP directement depuis le tableau, une surcharge graphique est nécessaire (voir migration graphique)

Retour en haut