---
title: "Ce que l'importateur copie et comment il reconstruit les fils de réponses"
description: "Référence de l'importateur de forums de discussion classiques de Vitextra Discussions : la correspondance champ par champ des sujets et réponses classiques avec les colonnes de Discussions Topics et Discussions Posts, la reconstruction de la hiérarchie des réponses à partir des références classiques à l'élément parent, le sort des forums aplatis et des réponses orphelines, la définition des meilleures réponses, des compteurs de mentions J'aime et de la dernière activité, la restauration des auteurs et des dates, la copie des pièces jointes, ce qui n'est pas copié et comment la colonne Legacy id rend une seconde exécution sûre."
url: https://vitextra.com/fr/support/kb/10418
language: fr
published: 2026-11-02
modified: 2026-11-01
products:
  - "Discussions"
author: "Lidija Reising"
tags: ["correspondance des champs importateur forum de discussion", "reconstruire hiérarchie des réponses", "ParentItemID", "forum de discussion aplati", "réponses orphelines", "colonne Legacy id", "VtxLegacyId", "import meilleure réponse", "Discussions Posts Path Depth", "Vitextra Discussions"]
---

# Ce que l'importateur copie et comment il reconstruit les fils de réponses

Référence de l'importateur de forums de discussion classiques de Vitextra Discussions : la correspondance champ par champ des sujets et réponses classiques avec les colonnes de Discussions Topics et Discussions Posts, la reconstruction de la hiérarchie des réponses à partir des références classiques à l'élément parent, le sort des forums aplatis et des réponses orphelines, la définition des meilleures réponses, des compteurs de mentions J'aime et de la dernière activité, la restauration des auteurs et des dates, la copie des pièces jointes, ce qui n'est pas copié et comment la colonne Legacy id rend une seconde exécution sûre.

## Vue d'ensemble

L'importateur de [Discussions](https://vitextra.com/fr/products/discussions) lit une liste classique **Forum de discussion** (Discussion Board, modèle 108 ou type de base Discussion Board, qui inclut aussi les listes de discussion des sites de communauté) et écrit son contenu dans les deux listes de site du produit, **Discussions Topics** et **Discussions Posts**. Cet article est la référence qui accompagne l'assistant décrit dans [KB10417. Comment importer un forum de discussion SharePoint classique dans Discussions](https://vitextra.com/fr/support/kb/10417) : quel champ classique aboutit dans quelle colonne Discussions, comment l'arborescence des réponses est reconstruite, ce qui est dérivé, ce qui reste en arrière et comment l'importateur reconnaît son propre travail lorsqu'il est relancé. Les colonnes elles-mêmes sont décrites dans [KB10426. Référence des listes et des colonnes de Discussions](https://vitextra.com/fr/support/kb/10426).

## Comment le forum classique stocke un fil

Un forum de discussion classique conserve chaque discussion sous la forme d'un **dossier** de la liste et chaque réponse sous la forme d'un **élément dans ce dossier**. Le dossier porte l'objet, le corps, l'indicateur *Question*, l'indicateur *À la une*, le nombre de mentions J'aime et l'identifiant de la meilleure réponse ; chaque réponse porte son propre corps, son nombre de mentions J'aime et une référence **Élément parent** (Parent item, `ParentItemID`) qui pointe soit vers la discussion elle-même (réponse de premier niveau), soit vers une autre réponse (réponse imbriquée). L'importateur lit la liste par pages de 2 000 éléments, triées par identifiant, et distingue les dossiers des messages par le type d'élément.

Discussions utilise un modèle différent — un élément par sujet, un élément par réponse, avec des recherches vers le sujet et vers le message parent —, si bien que l'import est une traduction entre les deux structures, et non une copie de la liste.

## Sujets

Chaque discussion classique devient un élément de **Discussions Topics** :

| Discussion classique | Colonne de Discussions Topics | Valeur |
|---|---|---|
| Objet | **Title** | Copié ; tronqué à 255 caractères |
| Corps | **Body** (`VtxBody`) | Copié au travers de l'assainisseur HTML du produit : les balises et attributs autorisés restent, les scripts, styles et liens non sûrs sont supprimés |
| — | **Board** (`VtxBoard`) | Le forum sélectionné dans le composant WebPart |
| Question | **Type** (`VtxTopicType`) | *Question* si l'indicateur est défini, sinon *Discussion* |
| — | **Status** (`VtxStatus`) | *Open* ; passe à *Answered* lorsqu'une meilleure réponse a été trouvée (voir ci-dessous) |
| À la une | **Featured** (`VtxIsFeatured`) | Copié |
| Nombre de mentions J'aime | **Likes** (`VtxLikeCount`) | Copié |
| Réponses dans le dossier | **Replies** (`VtxReplyCount`) | Compté par l'importateur |
| — | **Views** (`VtxViewCount`) | 0 |
| Date de création de la réponse la plus récente, ou de la discussion | **Last activity** (`VtxLastActivity`) | Calculé par l'importateur |
| Meilleure réponse | **Accepted post** (`VtxAcceptedPostId`) | L'identifiant de la réponse importée |
| — | **Approval status** (`VtxApprovalStatus`) | *Approved* |
| — | **Reports** (`VtxReportCount`) | 0 |
| Identifiant de la liste et de l'élément | **Legacy id** (`VtxLegacyId`) | `{source list id}:{classic item id}` |
| Créé par, Modifié par, Créé, Modifié | Les mêmes colonnes système | Restaurés avec **Keep original authors and dates** |
| Pièces jointes | Pièces jointes de l'élément | Copiées avec **Copy attachments** |

## Réponses

Chaque réponse classique devient un élément de **Discussions Posts** :

| Réponse classique | Colonne de Discussions Posts | Valeur |
|---|---|---|
| Objet | **Title** | Copié ; `Re:` si vide ; tronqué à 255 caractères |
| Corps | **Body** (`VtxBody`) | Copié au travers de l'assainisseur |
| Dossier de la réponse | **Topic** (`VtxTopic`) | Le sujet importé de ce dossier |
| Élément parent | **Parent post** (`VtxParentPost`) | La réponse parente importée ; vide pour une réponse de premier niveau |
| — | **Path** (`VtxPath`) | `/` pour une réponse de premier niveau ; le chemin du parent suivi de l'identifiant du parent et de `/` pour une réponse imbriquée, par exemple `/341/356/` |
| — | **Depth** (`VtxDepth`) | 0 pour une réponse de premier niveau, sinon profondeur du parent + 1 |
| Meilleure réponse de la discussion | **Is accepted answer** (`VtxIsAccepted`) | *Oui* pour la réponse vers laquelle pointe la discussion |
| Nombre de mentions J'aime | **Likes** (`VtxLikeCount`) | Copié |
| — | **Approval status**, **Reports** | *Approved*, 0 |
| Identifiant de la liste et de l'élément | **Legacy id** (`VtxLegacyId`) | `{source list id}:{classic item id}` |
| Créé par, Modifié par, Créé, Modifié | Les mêmes colonnes système | Restaurés avec **Keep original authors and dates** |
| Pièces jointes | Pièces jointes de l'élément | Copiées avec **Copy attachments** |

![Un fil classique et sa copie importée](https://static.vitextra.com/articles/10418/classic-vs-imported-fr.png)
*Un fil classique et sa copie importée*

## Ce qui n'est pas copié

- Les **évaluations** (notes en étoiles) et la liste des personnes qui ont aimé un élément. Le *nombre* de mentions J'aime est copié ; la colonne **Liked by** reste vide, si bien que chaque utilisateur peut aimer une nouvelle fois un élément importé.
- Les **catégories** : les forums classiques n'en ont pas, et l'importateur laisse **Category** vide. Attribuez des catégories après l'import si le forum en utilise.
- Les **compteurs de vues** : ils partent de 0.
- **Last reply by** : reste vide ; le composant WebPart n'affiche l'auteur de la dernière réponse que pour les réponses publiées après l'import.
- Les **alertes**, les **affichages** classiques et les **formulaires de liste** : ils appartiennent à la liste classique et n'ont pas d'équivalent dans Discussions. Les abonnements sont recréés par les utilisateurs — voir [KB10404. Suivre des forums et des sujets : abonnements et fréquence des résumés](https://vitextra.com/fr/support/kb/10404).
- Les sujets **épinglés** : les forums classiques n'ont pas cet indicateur ; épinglez les sujets voulus après l'import.

## Comment l'arborescence des réponses est reconstruite

1. Les réponses sont triées par leur date classique **Créé**, de la plus ancienne à la plus récente, afin qu'un parent soit toujours créé avant ses enfants.
2. Pour chaque réponse, l'importateur retrouve son sujet grâce au **dossier** dans lequel elle se trouve. Une réponse dont le dossier ne correspond à aucun sujet importé est ignorée avec l'avertissement *Reply skipped: its topic was not imported*.
3. L'**Élément parent** classique est recherché parmi les réponses importées jusque-là dans cette exécution ou auparavant. S'il pointe vers une réponse, le nouveau message reçoit cette réponse comme **Parent post**, hérite de son **Path** et obtient **Depth** + 1. S'il pointe vers la discussion elle-même, est vide ou pointe vers un élément inconnu de l'importateur, le message devient une **réponse de premier niveau** du sujet, avec le chemin `/` et la profondeur 0. Lorsque la réponse parente existe dans la liste classique mais n'a pas pu être créée lors de cette exécution, le message est lui aussi placé au premier niveau, et le rapport reçoit l'avertissement *Parent reply failed to import; the reply was placed at the top level: 419* (419 est l'identifiant classique de la réponse déplacée). Les réponses imbriquées sous la réponse déplacée lui sont rattachées comme d'habitude.

L'imbrication est illimitée : une réponse classique de cinquième niveau arrive au cinquième niveau.

### Forums aplatis et réponses orphelines

Certains outils de migration copient les éléments d'un forum classique mais pas les références **Élément parent** qui les relient ; le forum ressemble alors à une liste de discussions dont toutes les réponses sont sur un seul niveau, ou bien les références pointent vers des identifiants d'éléments qui n'existent plus. La simulation compte ces dernières dans **Replies without a known parent (imported as top-level)** et affiche l'avertissement *Some replies lost their parent (a flattened board).* Ces réponses sont rattachées directement à leur sujet, par ordre chronologique. Les réponses dont l'**Élément parent** est vide ne sont pas comptées dans cette ligne mais sont traitées de la même manière. L'importateur n'essaie pas de deviner le parent d'origine d'après les horodatages ou les objets.

❗ **Important**  
La hiérarchie ne peut être reconstruite qu'à partir des références présentes dans la liste classique au moment de l'import. Si vous disposez encore du forum d'origine — par exemple dans SharePoint Server —, vérifiez que l'outil de migration que vous utilisez pour le déplacer vers SharePoint Online transporte la colonne **Élément parent** ; voir [KB10419. Migrer des forums de discussion de SharePoint Server vers SharePoint Online avec Discussions](https://vitextra.com/fr/support/kb/10419).

## Meilleures réponses, compteurs et dernière activité

Une fois toutes les réponses créées, l'importateur reparcourt les sujets (la phase *Updating counters and answers*) et écrit, pour chaque sujet du plan :

- **Replies** — le nombre de réponses classiques dans le dossier du sujet ;
- **Last activity** — la date **Créé** de la réponse classique la plus récente, ou la date **Créé** de la discussion lorsqu'elle n'a pas de réponses ;
- **Likes** — le nombre de mentions J'aime de la discussion ;
- **Accepted post** et **Status = Answered** — lorsque la *Meilleure réponse* classique pointe vers une réponse qui a été importée ; la réponse elle-même reçoit **Is accepted answer = Oui**. Un indicateur classique *Répondu* sans meilleure réponse est ignoré, et le sujet reste *Open*.

Ces valeurs sont écrites pour chaque sujet du plan, y compris les sujets importés lors d'une exécution précédente, de sorte qu'une seconde exécution recalcule les compteurs.

## Auteurs et dates

Les éléments de liste créés via l'API REST ont toujours pour auteur l'utilisateur qui les crée. Lorsque **Keep original authors and dates** est coché, l'importateur effectue un second appel par élément qui écrit **Créé par** (l'identifiant de connexion de l'auteur classique), **Modifié par** (l'éditeur classique, ou l'auteur s'il n'y en a pas), **Créé** et **Modifié**. SharePoint n'accepte ces valeurs que des comptes autorisés à définir les champs système — en pratique les propriétaires du site disposant du Contrôle total. Lorsqu'un champ est refusé, le rapport contient la ligne *Titre du sujet: Champ — message de SharePoint* ; lorsque tout l'appel est refusé, *Author and dates could not be restored*. L'élément est tout de même importé, avec vous pour auteur et l'heure de l'import pour date.

L'identifiant de connexion de l'auteur doit correspondre à un compte du locataire. Les comptes supprimés, ou les comptes locaux qu'un outil de migration n'a pas mis en correspondance, ne peuvent pas être restaurés et produisent le même avertissement.

![Sujets importés avec leur Legacy id dans la liste Discussions Topics](https://static.vitextra.com/articles/10418/legacy-id-column-fr.png)
*Sujets importés avec leur Legacy id dans la liste Discussions Topics*

## Pièces jointes

Lorsque **Copy attachments** est coché, l'importateur liste les fichiers joints de chaque sujet et réponse classiques, télécharge chaque fichier depuis le site source et le joint au nouvel élément sous son nom d'origine. Les caractères que SharePoint n'autorise pas dans les noms de fichiers (`\ / : * ? " < > | # % & { } ~`) sont remplacés par un trait de soulignement, et les noms de plus de 120 caractères sont raccourcis. Un fichier qui ne peut pas être copié produit l'avertissement *nom du fichier: message de SharePoint* et les autres fichiers sont tout de même traités. Les images incorporées dans le corps font partie du HTML et voyagent avec lui.

## Le Legacy id et la relance de l'import

Chaque sujet et chaque réponse importés stockent `{source list id}:{classic item id}` dans la colonne indexée **Legacy id** — par exemple `3f2a9c1e-…:418`. Avant la simulation et avant l'import, l'assistant lit tous les identifiants hérités du site qui commencent par l'identifiant de la liste classique sélectionnée. Les conséquences :

- un sujet qui possède déjà un identifiant hérité est **ignoré** et signalé dans la ligne **Topics already imported (skipped)** ; sa copie existante sert de parent aux nouvelles réponses ;
- une réponse qui possède déjà un identifiant hérité est ignorée aussi ;
- les **nouvelles réponses** sur un sujet déjà importé sont importées, de sorte qu'un forum encore en usage peut être importé de façon incrémentielle ;
- les auteurs, dates et pièces jointes ne sont restaurés que pour les éléments créés dans l'exécution en cours ;
- le contenu existant du forum cible n'est jamais écrasé ni supprimé.

📝 **Remarque**  
L'identifiant hérité inclut l'**identifiant de la liste classique**. Si le forum classique est copié dans une nouvelle liste — par exemple par une seconde passe de migration ou une copie de site —, la nouvelle liste a un identifiant différent, et un import depuis celle-ci crée un second jeu de sujets. Importez toujours depuis la même liste, ou supprimez le premier jeu avant d'importer depuis la copie.
