Pages enfant
  • 05 - Migration de données uPortal 3.2 vers uPortal 4.0

Comparaison des versions

Légende

  • Ces lignes ont été ajoutées. Ce mot a été ajouté.
  • Ces lignes ont été supprimées. Ce mot a été supprimé.
  • La mise en forme a été modifiée.

...

  • modifier l'extension du fichier « .channel-type » par l'extension « .portlet-type.xml » utilisée en version 4.x

Exemple pour le channel-type « Bookmarks_Portlet.channel-type »

Fichier « Bookmarks_Portlet.channel-type » avanttransformation :

...

Bloc de code
languagehtml/xml
linenumberstrue
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<portlet-type xmlns="https://source.jasig.org/schemas/uportal/io/portlet-type" xmlns:ns2="https://source.jasig.org/schemas/uportal/io/permission-owner" xmlns:ns3="https://source.jasig.org/schemas/uportal/io/stylesheet-descriptor" xmlns:ns4="https://source.jasig.org/schemas/uportal/io/portlet-definition" xmlns:ns5="https://source.jasig.org/schemas/uportal" xmlns:ns6="https://source.jasig.org/schemas/uportal/io/user" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="4.0" xsi:schemaLocation="https://source.jasig.org/schemas/uportal/io/portlet-type https://source.jasig.org/schemas/uportal/io/portlet-type/portlet-type-4.0.xsd">
	<name>Bookmarks Portlet</name>
	<description>UWisc Bookmarks Portlet</description>
	<uri>/org/jasig/portal/portlets/bookmarks/BookmarksPortlet.cpd.xml</uri>
</portlet-type>

 

Import des « channel-type » dans uPortal v4.x

...

Si l'import s'est déroulé avec succès, un message « Build successful » devrait alors être affiché dans la console. Dans le cas échéant, un message « Build failed » sera alors affiché et les traces détaillant les différentes erreurs rencontrées seront alors visibles dans le répertoire « UPORTAL_ROOT/target/data-import-reports » du portail en version 4.x.

 

Import des « entity-type »

 

Dans le but de réaliser un import de données cohérent, il est nécessaire pour les « entity-type » de ne conserver seulement ceux qui sont personnalisés et qui ont été définis « manuellement » dans le portail 3.2 servant de socle de migration. Ainsi, identiquement aux « channel-type », tous les « entity-type » inclus nativement dans la version 3.2 pourront être supprimés du répertoire de travail utilisé pour l’import des données en base en version 4.x. 

Afin de réaliser cette tâche de manière rigoureuse, il est également conseillé d’effectuer une comparaison entre le répertoire « entity-type » obtenu depuis l'export et le répertoire « entity-type » du portail natif en version 3.2 (situé dans « UPORTAL_ROOT/uportal-impl/src/main/resources/properties/db/entities/entity-type »)

 

Les « entity-type » personnalisés peuvent alors être importés dans le portail v4.x via la commande Ant suivante :

...

Si l'import s'est déroulé avec succès, un message « Build successful » devrait alors être affiché dans la console. Dans le cas échéant, un message « Build failed » sera alors affiché et les traces détaillant les différentes erreurs rencontrées seront alors visibles dans le répertoire « UPORTAL_ROOT/target/data-import-reports » du portail en version 4.x. 

Import des « user »

...

Pour effectuer l'import dans le portail v4.x des utilisateurs depuis les données exportées en v3.x, il suffit juste de jouer la commande Ant ci-dessous :

...

Si l'import s'est déroulé avec succès, un message « Build successful » devrait alors être affiché dans la console. Dans le cas échéant, un message « Build failed » sera alors affiché et les traces détaillant les différentes erreurs rencontrées seront alors visibles dans le répertoire « UPORTAL_ROOT/target/data-import-reports » du portail en version 4.x. 

Import des « group-membership »

Afin de pouvoir importer dans la version 4.x les groupes exportés depuis la version 3.2 il est nécessaire de réaliser deux modifications majeures dans la configuration  d’uPortal v4.x. 

Modification de la configuration de la version 4.x

 

Les modifications permettant la mise en conformité des groupes concernent deux fichiers XML :

 

  • Le premier : « PAGSGroupStoreConfig.xml », situé dans « UPORTAL_ROOT/ uportal-war/src/main/resources/properties/groups », permet de configurer la gestion des attributs des utilisateurs appartenant aux différents groupes.

 

 

  • Le deuxième : « personDirectoryContext.xml », situé dans le répertoire « UPORTAL_ROOT/ uportal-war/src/main/resources/properties/contexts », permet quant à lui de définir les attributs des utilisateurs en fonction de leur source respective (utilisateur enregistré en base, utilisateur LDAP etc…)

 

Concernant le premier fichier « PAGSGroupStoreConfig.xml », le travail consiste à ajouter dans le fichier l’ensemble des groupes personnalisés (groupes LDAP entre autres)  définis dans le fichier « PAGSGroupStoreConfig.xml » de la version 3.2.  Il est donc juste nécessaire de réaliser une comparaison entre les deux fichiers afin d’inclure dans le fichier de la version 4.x tous les groupes ajoutés dans le fichier source de la version 3.2 

Concernant le fichier « personDirectoryContext.xml », il est nécessaire également de réaliser une comparaison du fichier avec celui de la version 3.2 afin de vérifier si un bean Java supplémentaire est défini dans celui-ci. Ceci devrait d’ailleurs être le cas pour la gestion des attributs des utilisateurs synchronisés avec le LDAP. Dans ce cas, il est alors nécessaire d’ajouter le bean manquant dans le fichier de la nouvelle version et d’ajouter la référence à ce nouveau bean dans la liste des bean inclus dans la balise <property name="personAttributeDaos"> du bean « mergedPersonAttributeDao ». 

Voici un exemple illustrant l’ajout de la gestion des attributs des utilisateurs LDAP :

  • Ajout du bean définissant les attributs LDAP utilisés pour les utilisateurs synchronisés avec un LDAP :

    Bloc de code
    languagehtml/xml
    linenumberstrue
    <bean id="cachinguPortalLdapUserSource" class="org.jasig.services.persondir.support.CachingPersonAttributeDaoImpl">
            <property name="usernameAttributeProvider" ref="usernameAttributeProvider" />
            <property name="cacheNullResults" value="true" />
            <property name="userInfoCache">
                <bean class="org.jasig.portal.utils.cache.MapCacheFactoryBean">
                    <property name="cacheFactory" ref="cacheFactory" />
                    <property name="cacheName" value="org.jasig.services.persondir.USER_INFO.ldap_person_dir" />
                </bean>
            </property>
            <property name="cacheKeyGenerator" ref="userAttributeCacheKeyGenerator" />
            <property name="cachedPersonAttributesDao" >
                <bean id="uPortalLdapAttributeSource" class="org.jasig.services.persondir.support.ldap.LdapPersonAttributeDao">
                      <property name="contextSource" ref="defaultLdapContext" />
                        <property name="baseDN" value="${ldap.baseDn}" />
                        <property name="queryAttributeMapping">
                            <map>
                                <entry key="username" value="uid" />
                            </map>
                        </property>
                        <property name="resultAttributeMapping">
                            <map>                            
                                <entry key="eduPersonPrimaryAffiliation">    <value>eduPersonPrimaryAffiliation</value></entry>
                                <entry key="cn">                            <value>cn</value></entry>
                                <entry key="description">                   <value>description</value></entry>
                                <entry key="displayName">                   <value>displayName</value></entry>
                                <entry key="givenName">                     <value>givenName</value></entry>
                                <entry key="sn">                            <value>sn</value></entry>
                                <entry key="uid">                           <value>uid</value></entry>
                                <entry key="eduPersonAffiliation">          <value>eduPersonAffiliation</value></entry>
                                <entry key="objectClass">                   <value>Affiliation</value></entry>    
                                <entry key="ENTPersonContrib">                <value>ENTPersonContrib</value></entry>
                                <entry key="ENTPersonAdmin">                <value>ENTPersonAdmin</value></entry>
                                 <entry key="ENTPersonAdminInstitutionnel">    <value>ENTPersonAdminInstitutionnel</value></entry>
                                 <entry key="ENTPersonContribInstitutionnel"> <value>ENTPersonContribInstitutionnel</value></entry>
                                <entry key="ENTPersonCollectivite">            <value>ENTPersonCollectivite</value></entry>
                                <entry key="ENTPersonServicesALaCarte">        <value>ENTPersonServicesALaCarte</value></entry>
                                <entry key="ENTPersonAdminRessource">        <value>ENTPersonAdminRessource</value></entry>    
                                <!-- SYMPA -->
                                <entry key="mail"><value>mail</value></entry>                    
                            </map>
                          </property>
                </bean>
            </property>
        </bean>
  • Ajout de la référence à ce bean pour l’utiliser dans le cas des utilisateurs synchronisés avec le LDAP :

    Bloc de code
    languagehtml/xml
    linenumberstrue
        <bean id="mergedPersonAttributeDao"
            class="org.jasig.services.persondir.support.CachingPersonAttributeDaoImpl">
            <property name="usernameAttributeProvider" ref="usernameAttributeProvider" />
            <property name="cacheNullResults" value="true" />
            <property name="userInfoCache">
                <bean class="org.jasig.portal.utils.cache.MapCacheFactoryBean">
                    <property name="cacheFactory" ref="cacheFactory" />
                    <property name="cacheName" value="org.jasig.services.persondir.USER_INFO.merged" />
                </bean>
            </property>
            <property name="cacheKeyGenerator" ref="userAttributeCacheKeyGenerator" />
            <property name="cachedPersonAttributesDao" >
                <bean class="org.jasig.services.persondir.support.CascadingPersonAttributeDao">
                    <property name="usernameAttributeProvider" ref="usernameAttributeProvider" />
                    <property name="personAttributeDaos">
                        <list>
                            <ref bean="uPortalAccountUserSource" />
                            <ref bean="uPortalJdbcUserSource" />
                            <!-- ADDITIONAL ATTRIBUTE SOURCES GET ADDED HERE -->
                            <ref bean="cachinguPortalLdapUserSource"/>
                        </list>
                    </property>
                </bean>
            </property>
        </bean>

...

Une fois ces modifications effectuées, il est recommandé de redémarrer l’application en version 4.x afin de s’assurer que les modifications apportées n’ont pas affecté son bon fonctionnement.

...