Import CSV

Importez l'ensemble de vos publications en toute sécurité et avec toutes les données souhaitées !

Les bénéfices

Le module d'import CSV est un module performant conçu pour simplifier le processus d'importation de données à partir de fichiers CSV (Comma-Separated Values). Que vous ayez besoin de mettre à jour votre base de données, d'ajouter de nouveaux enregistrements ou de migrer des données, ce module offre une solution conviviale pour importer et intégrer rapidement vos données.

Ce module simplifie considérablement le processus d'importation de données à partir de fichiers CSV, en garantissant une correspondance précise et une gestion efficace des erreurs. En automatisant les étapes fastidieuses et en offrant des options de personnalisation, ce module optimise l'intégration des données dans vos systèmes existants, contribuant ainsi à une gestion des données plus fluide et efficace.

Ainsi avec ce module vous pourrez :

  • Simplifier le processus d'importation de données à partir de fichiers CSV ;
  • Assurer une correspondance précise entre les colonnes et les champs de base de données ;
  • Minimiser les erreurs d'import grâce à une validation ;
  • Personnaliser vos imports via une interface de mapping permettant de lier les champs des publications avec les valeurs du fichier CSV.

Les fonctionnalités

Les fonctionnalités du module d'import CSV sont simples et efficaces :

  • Importation simplifiée : le module permet aux utilisateurs de télécharger facilement des fichiers CSV, automatisant ainsi le processus d'importation de données ;
  • Mapping de colonnes intuitif : associez les colonnes du fichier CSV aux champs correspondants, garantissant une correspondance précise ;
  • Gestion des erreurs : réceptionnez des logs d’import et résolvez des éventuels liens cassés.
  • Validation des Données : le module effectue une vérification automatique des données pour identifier et signaler les erreurs, permettant une correction préalable à l'importation. A la fin de l'import, le rapport est envoyé apr mail à l'adresse renseignée ;
  • Gestion du mtultilingue : L’import prend en compte les champs à valeur multiple et multilingue ;
  • Rapport et statut d'import : A la fin de l’import, un rapport est envoyé par mail à l’adresse renseignée listant les éventuelles erreurs d'import.

Les clients aiment

La flexibilité du module avec ses nombreuses options d'import.
Les outils de gestion des erreurs et l'interface de suivi de l'import permettant de contrôler son exécution en temps réel.

FAQ

Il s’agit de tous les autres types de donnée non indiqués dans la liste.
Exemple : Texte et zone de texte, booléen, énuméré, date, etc…

Cette information permet d’indiquer au système où aller chercher l’ID de l’objet en question, en fonction de la donnée de votre fichier d’import.
S’il s’agit de l’ID d’un objet JCMS connu dans votre application, sélectionnez « ID JCMS ».
S’il s’agit de l’ID d’une application source, sélectionnez « ID d’origine ».

Lors de l’import, les publications n’étant pas encore créées, les liens avec ces publications ne peuvent pas encore être mis en place. Le système génère donc des liens cassés qui peuvent être résolus en lançant un traitement spécifique qui va repasser sur l’ensemble des publications pour créer les liens. Ce traitement peut être exécuté après l’import depuis l’administration de l’espace, lien « Résoudre les liens cassés ».

Il permet d’importer tous les types de publication : contenu, contenu utilisateur, portlet, formulaire.
Il permet également d'importer des catégories.

Informations détaillées

Prérequis techniques

Droits nécessaires

L’import est accessible pour les administrateurs techniques et fonctionnels habilités depuis le back office de JPlatform.

 

Format du fichier d'import

Les données d’entrées doivent être fournies via un fichier plat de type *.csv généré à partir d’un éditeur type « Excel » (par exemple) et encodé en UTF8 sans BOM.

 

Compatibilité JSync

Ce module est compatible jSync, il fonctionnera sans problème sur un environnement à plusieurs réplicas.

En revanche, l’accès au formulaire d’import ne s’effectue que depuis le nœud principal.

 

Compatibilité JDK

Ce module est compatible avec la version 1.7 de JDK (Java Development Kit). Si vous êtes sur la version 1.6 de JDK, contactez-nous.

 

Configuration du module

Installation et paramétrage du module

Ajouter ce module avec le gestionnaire de modules depuis l’administration technique et redémarrer l’application 2 fois.

 

Editez le module pour paramétrer ou modifier ses propriétés.

Les changements de valeur des propriétés sont pris en compte directement lors de l'enregistrement sans avoir besoin de redémarrer l'application.

 

Création et paramétrage du contenu de mapping

Le module crée dans l’application un type de contenu nommé « Import CSV Mapping » permettant de réaliser la liaison entre les champs du contenu cible à importer et les colonnes du fichier source *.csv. Ce type de contenu doit être activé sur tous les espaces de travail sur lesquels un import doit être effectué.

Cette première étape consiste à construire le contenu de mapping permettant de réaliser cette liaison.

Il faut donc créer un contenu de type « Import CSV Mapping » sur lequel l’import sera joué depuis l’espace de travail :

importCSvPlugin ajout mapping 

 

Et y renseigner les informations de mapping :

importCSvPlugin mapping Import 1 

 

Libellé du champ

Editeur

Commentaires

Titre

Champ texte

Titre du contenu de mapping visible en BO.

Type de contenu à importer

Enuméré

Nom JAVA : contentType

Affiche tous les types actifs de l’espace de travail courant.

Séparateur du fichier csv

Champ texte

Nom JAVA : csvSeparator

S’affiche à la sélection du champ « Type de contenu à importer ».

Caractères interdits : * [ ] { } ^

Permet d’indiquer le type de séparateur utilisé pour les valeurs du fichier csv.

Sélection du fichier CSV

Champ sélection fichier

Permet de charger le fichier csv à importer.

S’affiche à la sélection du champ « Type de contenu à importer ».

L'encodage du fichier doit être en UTF-8 (sans BOM).

Langues importées

Champ texte

Nom JAVA : languagesImport

S’affiche à la sélection du champ « Sélection du fichier CSV ».

Affiche toutes les langues actives du site.

Format des dates du fichier CSV

Enuméré

Nom JAVA : dateFormat

S’affiche à la sélection du champ « Sélection du fichier CSV ».

Permet de préciser le format des dates utilisé dans le fichier CSV :

  • dd/MM/yyyy
  • dd/MM/yyyy H:mm
  • MM/dd/yyyy
  • MM/dd/yyyy H:mm

Séparateur champ multilingue

Champ texte

Nom JAVA : languageSeparator

S’affiche à la sélection du champ « Sélection du fichier CSV ».

Par défaut, c’est la valeur du module.

Séparateur champ à valeur multiple

Champ texte

Nom JAVA : multivalueSeparator

S’affiche à la sélection du champ « Sélection du fichier CSV ».

Par défaut, c’est la valeur du module.

Libellé colonne fichier CSV

Enuméré groupé

Nom JAVA : columnsName

S’affiche à la sélection du champ « Sélection du fichier CSV ».

Champ multivalué permettant de sélectionner les colonnes du fichier CSV à importer (titre de chaque colonne).

Libellé du champ du type à importer

Enuméré groupé

Nom JAVA : fieldsName

S’affiche à la sélection du champ « Sélection du fichier CSV ».

Champ multivalué permettant de sélectionner les champs du type de publication ciblé (libellé de chaque champ de publication).

Type de donnée *

Enuméré groupé

Nom JAVA : dataType

S’affiche à la sélection du champ « Sélection du fichier CSV ».

Permet de préciser le type de données ciblé pour chaque colonne du fichier.

Identifiant du contenu source

Champ texte

Ce champ est une ExtraDBData positionnée sur l’ensemble des publications, catégories, groupes et membres afin de gérer les liaisons entre contenus sources importés. Le système doit persister l’identifiant SGBD du contenu source.

 
* Détails sur le type de donnée :

  • Lien vers type de publication (Suivant ID d’origine) : Il s’agit d’un champ qui pointe vers une ou plusieurs publications et dont la valeur est un ID qui ne provient pas de JPlateform (à noter que cet ID est conservé dans un champ « Identifiant du contenu source » de la publication cible).
  • Lien vers type de publication (Suivant ID JPlateform) : Il s’agit d’un champ qui pointe vers une ou plusieurs publications et dont la valeur est un ID JPlateform.
  • Pièces jointes (de type URL) : Il s’agit d’un champ qui pointe vers une ou plusieurs pièces-jointes (création d'un document) et dont la valeur pour récupérer le fichier est une URL.
  • Pièces jointes (de type chemin vers fichier) : Il s’agit d’un champ qui pointe vers une ou plusieurs pièces-jointes (création d'un document) et dont la valeur est le chemin d'accès au fichier.
  • Pièces jointes (de type chemin vers fichier depuis la racine d’un ZIP) : Il s’agit d’un champ qui pointe vers une ou plusieurs pièces-jointes (création d'un document) et dont la valeur est le chemin d'accès au fichier qui est stocké dans un ZIP à charger via le formulaire d’import.
  • Catégorie (suivant ID d’origine) : Il s’agit d’un champ qui pointe vers une ou plusieurs catégories et dont la valeur est un ID qui ne provient pas de JPlateform (à noter que cet ID est conservé dans un champ « Identifiant de la catégorie source » de la catégorie cible).
  • Catégorie (suivant ID JPlateform) : Il s’agit d’un champ qui pointe vers une ou plusieurs catégories et dont la valeur est un ID JPlateform.
  • Catégorie (Recherche par le nom) : Il s’agit d’un champ qui pointe vers une ou plusieurs catégories et dont la valeur est le nom d’une catégorie.
  • Catégorie suivant une arborescence (Recherche par le nom avec création si non trouvée) : Il s’agit d’un champ qui pointe vers une ou plusieurs catégories suivant une arborescence précise. Si l’arborescence n’existe pas dans votre application, elle sera automatiquement créée. Utilisez des « / » ou « \ » pour séparer chaque niveau d’arborescence (exemple de valeur : Catégorie niveau 1/catégorie niveau 2/catégorie niveau 3).
  • Catégorie suivant une arborescence (Recherche par le nom sans création si non trouvée) : Il s’agit d’un champ qui pointe vers une ou plusieurs catégories suivant une arborescence précise. Même si la catégorie n’existe pas dans votre application, elle ne sera pas créée. Utilisez des « / » ou « \ » pour séparer chaque niveau d’arborescence (exemple de valeur : Catégorie niveau 1/catégorie niveau 2/catégorie niveau 3).
  • Groupe (suivant ID d’origine) : Il s’agit d’un champ qui pointe vers un ou plusieurs groupes et dont la valeur est un ID qui ne provient pas de JPlateform (à noter que cet ID est conservé dans un champ « Identifiant du groupe source » du groupe cible).
  • Groupe (suivant ID JPlateform) : Il s’agit d’un champ qui pointe vers un ou plusieurs groupes et dont la valeur est un ID JPlateform.
  • Groupe (Recherche par le nom) : Il s’agit d’un champ qui pointe vers un ou plusieurs groupes et dont la valeur est le nom d’un groupe.
  • Membre (suivant ID d’origine) : Il s’agit d’un champ qui pointe vers un ou plusieurs membres et dont la valeur est un ID qui ne provient pas de JPlateform (à noter que cet ID est conservé dans un champ « Identifiant du membre source » de la fiche du membre cible).
  • Membre (Recherche par l’ID JPlateform) : Il s’agit d’un champ qui pointe vers un ou plusieurs membres et dont la valeur est un ID JPlateform.
  • Membre (Recherche par l’e-mail) : Il s’agit d’un champ qui pointe vers un ou plusieurs membres et dont la valeur est l’e-mail d’un membre.
  • Autre : Il s’agit de tous les autres types de donnée (texte et zone de texte, booléen, énuméré, date, etc…).

 

Import des contenus et état d’avancement

Une fois le contenu de mapping créé, l’import peut être lancé.

Pour cela, il faut vous rendre dans l’administration de l’espace, bloc « Configuration » et cliquer sur le lien « Importer des données » (lien accessible uniquement depuis le leader si vous travaillez sur un environnement à plusieurs réplicas) :

importCSvPlugin administration

 

L’interface d’import s’affiche dans une nouvelle page et se décompose en deux parties :

  • Formulaire d’import permettant de paramétrer le prochain import
  • L’état d’avancement de l’import une fois lancé

 

importCSvPlugin Formulaire Import 

 

Libellé du champ

Editeur

Commentaires

Adresse mail

E-mail

Nom JAVA : reportMail

Adresse mail sur laquelle est envoyé le rapport d’import.

Prend par défaut l’adresse mail de l’utilisateur.

Type de contenu à importer

Enuméré

Nom JAVA : contentType

Affiche tous les types actifs de l’espace de travail courant.

Permet de sélectionner le type de contenu à importer.

Contenu mapping

Enuméré

Nom JAVA : mappingContent

S’affiche à la sélection du champ « Type de contenu à importer ».

Affiche tous les Mapping de l’espace courant associés au type à importer.

Permet de sélectionner le contenu de mapping parmi ceux déjà créés.

Fichier CSV

Champ sélection fichier

Nom JAVA : csvFile

S’affiche à la sélection du champ « Contenu mapping ».

Permet de sélectionner le fichier csv contenant les contenus à importer.

L'encodage du fichier doit être en UTF-8 (sans BOM).

Fichier ZIP des pièces jointes

Champ sélection fichier

Nom JAVA : zipFile

S’affiche à la sélection du champ « Contenu mapping ».

Permet de sélectionner le fichier zip contenant les pièces jointes éventuelles liés aux contenus à importer.

Type de document à créer

Enuméré

Nom JAVA : documentType

Permet de préciser si les documents à importer doivent être créés en tant que DB document (stockage en base) ou Document (stockage dans le store).

Auteur par défaut

Lien sur « Membre »

Nom JAVA : importAuthor

S’affiche à la sélection du champ « Contenu mapping ».

Permet de préciser l’auteur des contenus à importer si aucune correspondance n'est trouvée.

 

Une fois l’import lancé, la page se rafraichit et affiche en temps réelle l’avancé de l’import.

Attention, un seul import peut être lancé à la fois (un message d’avertissement vous sera affiché si vous tentez d’en lancer un autre).

Si un problème technique survient, un retour arrière sur tous les types importés est effectué. Les créations de publication sont supprimées et les publications modifiées reprennent leur version initiale. L’utilisateur est informé via un message d’erreur dans le back office et depuis le fichier des logs d’imports envoyés par e-mail.

 

Réception des logs d’import et résolution des éventuels liens cassés

A la fin de l’import, les logs sont envoyés sur l’adresse e-mail précisée dans le formulaire d’import.

Les logs permettent d’obtenir les informations détaillées du déroulement de l’import et notamment d’obtenir plus de détail sur des éventuels problèmes intervenus (liens cassés, fichiers upload ou champs obligatoires manquant, etc.).

 

Extrait d’un fichier de logs :

importCSvPlugin logs

 

Pour gérer les liens cassés, le module intègre une fonction de résolution. Pour cela, il suffit de se rendre dans l’administration de l’espace et de cliquer sur le lien « Résoudre les liens cassés » dans le bloc « Configuration » :

importCSvPlugin administration résoudre les liens cassés 

 

Ceci vous amène dans la page de résolution des liens dans laquelle vous pouvez lancer la résolution en cliquant sur « Lancer la résolution des liens cassés » :

importCSvPlugin résolution des liens cassés 1 

 

Une fois la résolution terminée, un rapport de résolution est affiché contenant la liste éventuelle des liens cassés non résolus : importCSvPlugin résolution des liens cassés 2

 

Le lien de résolution des liens cassés reste affiché tant qu’il reste des liens cassés non résolus.

  • Nom technique jcmsplugin.importcsvplugin.csv.file.separator
  • Description ermet de préciser la valeur par défaut du séparateur proposé dans le contenu « Mapping Import CSV ».
  • Nom technique jcmsplugin.importcsvplugin.find-by-jplatform-id.boolean
  • Description Si OUI, lorsque le système ne trouve pas de contenu via le champ "Identifiant du contenu source" alors la recherche d'un contenu se fait via l'identifiant JPlatform. Si aucun contenu n'a été trouvé, le système le crée Si un contenu a été trouvé via l'identifiant JPlatform, celui-ci est mis à jour. Remarque : le champ "Identifiant du contenu source" ne sera pas mis à jour.
  • Nom technique jcmsplugin.importcsvplugin.import.create.import.cat.boolean
  • Description Tous les contenus importés seront associés à cette catégorie. Cette option permet de créer une catégorie « Import » dans chaque espace concerné sur laquelle les contenus seront associés. Cela permet notamment de retrouver facilement l’ensemble des contenus importés sans impacter le rattachement de ces contenus à d’autres catégories éventuelles.
  • Nom technique jcmsplugin.importcsvplugin.import.first.csv.line.boolean
  • Description Permet d’indiquer si le fichier d’import contient une ligne d’en-têtes de colonne ou non.
  • Nom technique jcmsplugin.importcsvplugin.is.big.volume.boolean
  • Description Permet d'augmenter la vitesse d'import dans le cas de gros volume de contenus à importer en base de données. Si OUI, la rapidité de persistance en base de données est augmentée (environ 10%) mais cela génère des logs d'avertissement A soft-locked cache entry was expired by the underlying Ehcache. Cet avertissement n'a pas de conséquence sur le bon fonctionnement de l'import et de l'application. Voir la documentation Jalios. Attention, le système n'effectura pas de mises à jour sur les contenus, uniquement des créations. Ainsi si votre import contient 2 lignes pour un même contenu, cela créera 2 fois le contenu et générera un problème d'intégrité. Assurez-vous donc de ne pas avoir plusieurs lignes d'un même contenu dans votre fichier d'import.
  • Nom technique jcmsplugin.importcsvplugin.log.directory
  • Description Permet de personnaliser le nom du répertoire contenant les logs d’import.
  • Nom technique jcmsplugin.importcsvplugin.mail.from
  • Description Permet de personnaliser l’adresse e-mail de l’émetteur des logs d’import.
  • Nom technique jcmsplugin.importcsvplugin.multilanguage.separator
  • Description Permet de préciser la valeur par défaut du séparateur des champs multilingue proposé dans le contenu « Mapping Import CSV ».
  • Nom technique jcmsplugin.importcsvplugin.multivalue.separator
  • Description Permet de préciser la valeur par défaut du séparateur des champs à valeur multiple proposé dans le contenu « Mapping Import CSV ».
  • Nom technique jcmsplugin.importcsvplugin.search.existing.document.boolean
  • Description Si OUI, pendant un import et lors de la création d'un document, le système vérifie si un document avec le même nom et le même poids existe déjà dans l'espace de travail. Si cette propriété est activée, la propriété Affecter les catégories au document existant dans l'espace de travail est appliquée. Vérifiez donc le bon paramétrage de celle-ci.
  • Nom technique jcmsplugin.importcsvplugin.search.existing.document.choice.boolean
  • Description Si OUI, le document trouvé dans l'espace de travail sera mis à jour en ajoutant les catégories du document à importer. Si NON, le document ne sera pas importé. Cette propriété ne s'applique que si la propriété "Vérifier si un document existe déjà dans l'espace de travail" est à OUI.
  • Nom technique jcmsplugin.importcsvplugin.show.extradbdata.boolean
  • Description Si OUI, le champ sera visible lors de l'édition des données JPlatform.
  • Nom technique jcmsplugin.importcsvplugin.upload.max.size
  • Description Permet de limiter le poids des fichiers à importer.
  • Nom technique jcmsplugin.importcsvplugin.import.first.csv.line.boolean
  • Description Permet de modifier le niveau d’affinement des logs d’import.
Corrections
  • Corrige le problème de non persistance s'il n'y a qu'un seul lien cassé de résolu pour le traitement "Résoudre les liens cassés des zones WYSIWYG"

Évolution

  • Mise à jour du script "Résoudre les liens cassés des zones WYSIWYG" afin d'offrir la possibilité de rechercher la cible dans tous les espaces de travail
Correction
  • Corrige le problème lié au champ multilingue dont la dernière valeur est vide dans le fichier CSV.
Correction
  • Correctif du problème de conservion PDF qui ne se lance pas pour les DBFileDocument
Évolution

Ajout la fonctionnalité suivante : 

  • Lors de la mise à jour d'une Publication, les catégories de la Publication peuvent être supprimées si le mapping ne référence pas de catégorie
    • Cela est activable via la prorpriété du module "Vider les catégories du contenu" (par défaut NON)
  • Pouvoir rechercher un membre par son login
  • Optimisation de la persistance des données en désactivant via le contexte les notifications, notes de WF, etc...
Évolutions

Ajoute à nouveau lien nommé "Module d'import : Résoudre les liens cassés des zones WYSIWYG" est disponible depuis l'administration d'un espace de travail.

Cette fonctionnalité est nécessaire dans les cas suivants :

  • Des contenus ont été déplacés dans cet espace et les documents référencés dans les zones WYSIWG des contenus ont été importés dans cet espace. Les anciens documents ont été supprimés donc il y a des liens cassés dans les zones WYSIWYG Des contenus car ils n'ont pas été importés mais déplacés.
  • Vérifier si des liens cassés sont présents dans les zones WYSIWYG.

La résolution analyse les taglibs <jalios:media/> et <jalios:link/> et recherche le contenu associé dans l'espace de travail courant.

Remarque : la métrique Nombre de liens résolus inclut les liens cassés résolus ainsi que les liens non cassés.

 

Cette version de module ajoute également un correctif afin d'améliorer la recherche des liens cassés dans les zones WYSIWYG pendant les phases d'import et pendant la résolution des liens cassés via le lien "Module d'import : Résoudre les liens cassés"

Correction

Correctif sur le formulaire d'import au niveau du champ Type de document à créer :

  • Désormais, la liste déroulante remonte tous les contenus héritant de FileDocument qui sont actifs dans l'espace de travail d'import

Prise en compte des taglib <jalios:media> et <jalios:link> dans les zones WYSIWYG pour la résolution des liens

Évolution
  • Amélioration de la fonctionnalité "Catégorie (Recherche par le nom)". Cela permet de pouvoir faire la recherche sur les descendants de la racine de catégorie du champ sélectionné et non sur toutes les catégories de l'espace de travail.
  • Ajout d'un nouveau champ à importer : Espaces de rattachement
Corrections
  • Un NullPointerException lorsqu'un contenu de type Document pointe vers un autre contenu de type Document
  • Lorsque la propriété "Vérifier si un document existe déjà dans l'espace de travail" est à OUI, la recherche se fait uniquement lors d'une création (afin de pouvoir conserver l'historique des versions importé)
Évolution
  • Ajoute une nouvelle propriété (Importer de gros volume de donnée en base de données) permettant si la valeur == OUI de persister plus rapidement en base de données.

La rapidité de persistance en base de données est augmentée (environ 10%) mais cela génère des logs d'avertissement A soft-locked cache entry was expired by the underlying Ehcache. Cet avertissement n'a pas de conséquence sur le bon fonctionnement de l'import et de l'application. Voir la documentation Jalios
La mise à jour durant la même phase d'import ne fonctionne pas (fait une nouvelle création)

Évolution 
  • Ajout de la règle de gestion : 
    • Mise en place d'un script pour considérer les champs de type image comme des champs document
Évolutions

 

  • Ajout de la règle de gestion :
    • Lors d'un import de Document, si un Document avec le même nom de fichier et avec le même poids existe déjà dans l'espace de travail, le système peut affecter les catégories du Document à importer au Document existant dans l'espace de travail
  • Modification des propriétés du module :
    • Modification de la bulle d'aide sur la propriété de module Vérifier si un document existe déjà dans l'espace de travail
    • Ajout de la propriété de module Affecter les catégories au document existant dans l'espace de travail
  • Modification de la persistance d'un Mapping d'import lorsque celui-ci concerne un Document

Remarque : lors de l'installation de cette version de module, si des  Mapping d'import concernant un Document existe déjà dans le système, il faut les mettre à jour afin que la modification de la persistance soit effective.

Correction
  • Correctif pour les types héritant de DBFileDocument
1.0

Sur le même thème...