Vue d'ensemble

L'importateur de 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 : 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.

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 classiqueColonne de Discussions TopicsValeur
ObjetTitleCopié ; tronqué à 255 caractères
CorpsBody (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
QuestionType (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 uneFeatured (VtxIsFeatured)Copié
Nombre de mentions J'aimeLikes (VtxLikeCount)Copié
Réponses dans le dossierReplies (VtxReplyCount)Compté par l'importateur
—Views (VtxViewCount)0
Date de création de la réponse la plus récente, ou de la discussionLast activity (VtxLastActivity)Calculé par l'importateur
Meilleure réponseAccepted 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émentLegacy id (VtxLegacyId){source list id}:{classic item id}
Créé par, Modifié par, Créé, ModifiéLes mêmes colonnes systèmeRestaurés avec Keep original authors and dates
Pièces jointesPièces jointes de l'élémentCopiées avec Copy attachments

Réponses

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

Réponse classiqueColonne de Discussions PostsValeur
ObjetTitleCopié ; Re: si vide ; tronqué à 255 caractères
CorpsBody (VtxBody)Copié au travers de l'assainisseur
Dossier de la réponseTopic (VtxTopic)Le sujet importé de ce dossier
Élément parentParent 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 discussionIs accepted answer (VtxIsAccepted)Oui pour la réponse vers laquelle pointe la discussion
Nombre de mentions J'aimeLikes (VtxLikeCount)Copié
—Approval status, ReportsApproved, 0
Identifiant de la liste et de l'élémentLegacy id (VtxLegacyId){source list id}:{classic item id}
Créé par, Modifié par, Créé, ModifiéLes mêmes colonnes systèmeRestaurés avec Keep original authors and dates
Pièces jointesPièces jointes de l'élémentCopiées avec Copy attachments

Un fil classique et sa copie importée

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.
  • 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.

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

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.

Articles à la une

Team Absence Calendar : affichages Chronologie et Mois

Présentation du composant WebPart Vitextra Team Absence Calendar pour SharePoint Online et Microsoft Teams : le bloc « Absents aujourd'hui », la barre d'outils, les affichages Chronologie et Mois, la navigation entre les périodes et le contenu du calendrier.

39 5 min
Comment supprimer une solution Vitextra de SharePoint Online et Microsoft Teams

Guide pas à pas pour désinstaller complètement un produit Vitextra SPFx : supprimer les composants WebPart des pages, supprimer l'application des sites et de Microsoft Teams, supprimer le package du catalogue d'applications et de sa corbeille, révoquer les autorisations d'API, nettoyer les données créées par le produit et libérer la licence.

22 8 min
Discussions, Forum de discussion SharePoint classique, Viva Engage ou canaux Teams : que choisir

Comparaison pratique des façons de gérer un forum dans Microsoft 365 : le Forum de discussion SharePoint classique (Discussion Board), les communautés Viva Engage, les canaux Microsoft Teams et le composant WebPart Vitextra Discussions — pages modernes, autorisations et invités, fils de réponses, meilleure réponse, notifications, modération, conformité, disponibilité selon le cloud et licences, avec des conseils sur le cas d'usage de chaque option.

8 9 min

Partager