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.
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
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">
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.
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.
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>
Si vous avez surcharger les vues (metadata-set) des personnes, ajouter la référence au nouveau "avatar".
<cms:metadata-ref name="avatar"/>
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>
<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>
<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>
<cms:fieldset> <cms:label i18n="true">PLUGINS_ODF_PROGRAM_APOGEE_FIELDSET</cms:label> <cms:metadata-ref name="codeApogee" /> </cms:fieldset>
<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>
<cms:metadata-ref name="codeApogee" />
<cms:metadata-ref name="codeApogee" />
<cms:metadata-ref name="codeApogee" />
<cms:metadata-ref name="codeApogee" />
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).
Le modèle de donnée a été modifié pour l'approche par compétences.
Sur les formations / parcours :
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:
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>
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>
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.
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>
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>
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 :
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>
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.
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.
Les migrations de ce chapitre ne concernent que les applications ODF avec synchro Apogee.
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>
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 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 :
Ces fichiers se trouvent dans le répertoire WEB-INF/param/odf/apogee/code de votre application.
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")))
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
Les actions pour créer un ELP ou ajouter un ELP existant ont été séparé dans 2 boutons distincts :
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.
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)