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, Sujets de discussion et Publications de discussion. 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 n'est pas transféré 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 colonnes de recherche vers le sujet et le message parent -, si bien que l'import est une conversion entre les deux structures, et non une copie de la liste.
Sujets
Chaque discussion classique devient un élément de Sujets de discussion :
| Discussion classique | Colonne de Sujets de discussion | Valeur |
|---|---|---|
| Objet | Titre | Copié ; tronqué à 255 caractères |
| Corps | Contenu (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 |
| - | Forum (VtxBoard) | Le forum sélectionné dans le composant WebPart |
| Question | Type (VtxTopicType) | Question si l'indicateur est défini, sinon Discussion |
| - | Statut (VtxStatus) | Open ; passe à Answered lorsqu'une meilleure réponse a été trouvée (voir ci-dessous) |
| À la une | En vedette (VtxIsFeatured) | Copié |
| Nombre de mentions J'aime | J'aime (VtxLikeCount) | Copié |
| Réponses dans le dossier | Réponses (VtxReplyCount) | Compté par l'importateur |
| - | Vues (VtxViewCount) | 0 |
| Date de création de la réponse la plus récente, ou de la discussion | Dernière activité (VtxLastActivity) | Calculé par l'importateur |
| Meilleure réponse | Réponse acceptée (VtxAcceptedPostId) | L'identifiant de la réponse importée |
| - | Statut d'approbation (VtxApprovalStatus) | Approved |
| - | Signalements (VtxReportCount) | 0 |
| Identifiant de la liste et de l'élément | ID hérité (VtxLegacyId) | {source list id}:{classic item id} |
| Créé par, Modifié par, Créé, Modifié | Les mêmes colonnes système | Restaurés avec Conserver les auteurs et dates d'origine |
| Pièces jointes | Pièces jointes de l'élément | Copiées avec Copier les pièces jointes |
Réponses
Chaque réponse classique devient un élément de Publications de discussion :
| Réponse classique | Colonne de Publications de discussion | Valeur |
|---|---|---|
| Objet | Titre | Copié ; Re: si vide ; tronqué à 255 caractères |
| Corps | Contenu (VtxBody) | Copié au travers de l'assainisseur |
| Dossier de la réponse | Sujet (VtxTopic) | Le sujet importé de ce dossier |
| Élément parent | Publication parente (VtxParentPost) | La réponse parente importée ; vide pour une réponse de premier niveau |
| - | Chemin (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/ |
| - | Niveau (VtxDepth) | 0 pour une réponse de premier niveau, sinon profondeur du parent + 1 |
| Meilleure réponse de la discussion | Réponse acceptée (VtxIsAccepted) | Oui pour la réponse vers laquelle pointe la discussion |
| Nombre de mentions J'aime | J'aime (VtxLikeCount) | Copié |
| - | Statut d'approbation, Signalements | Approved, 0 |
| Identifiant de la liste et de l'élément | ID hérité (VtxLegacyId) | {source list id}:{classic item id} |
| Créé par, Modifié par, Créé, Modifié | Les mêmes colonnes système | Restaurés avec Conserver les auteurs et dates d'origine |
| Pièces jointes | Pièces jointes de l'élément | Copiées avec Copier les pièces jointes |

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 Aimé par 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 Catégorie vide. Attribuez des catégories après l'import si le forum en utilise.
- Les compteurs de vues : ils partent de 0.
- Dernière réponse par : 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
- 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.
- 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 Réponse ignorée : son sujet n'a pas été importé.
- 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 Publication parente, hérite de son Chemin et obtient Niveau + 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 La réponse parente n'a pas pu être importée ; la réponse a été placée au niveau supérieur: 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 exige des références parentes valides dans l'ordre de création et est contrainte par le chemin des réponses parentes, limité à 255 caractères. Lors d'un nouvel import, l'importateur actuel traite les réponses parentes déjà importées avec une profondeur de 0 et un chemin / ; les nouvelles réponses qui leur sont rattachées peuvent donc avoir une profondeur ou un chemin incorrect. Vérifiez les réponses imbriquées après un import incrémentiel.
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 Réponses sans parent connu (importées au niveau supérieur) et affiche l'avertissement Certaines réponses ont perdu leur parent (un forum aplati). 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.
Meilleures réponses, compteurs et dernière activité
Une fois toutes les réponses créées, l'importateur reparcourt les sujets (la phase Mise à jour des compteurs et réponses) et écrit, pour chaque sujet du plan :
- Réponses - le nombre de réponses classiques dans le dossier du sujet ;
- Dernière activité - 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 ;
- J'aime - le nombre de mentions J'aime de la discussion ;
- Réponse acceptée et Statut = 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 Réponse acceptée = 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.
Le compteur de réponses se fonde sur la source classique, y compris les réponses dont l'import a échoué. En cas d'erreurs dans le rapport, comparez-le aux réponses effectivement importées.
Auteurs et dates
Les éléments créés via l'API REST ont initialement l'utilisateur actuel pour auteur et l'heure de l'import pour dates. Avec Conserver les auteurs et dates d'origine, l'importateur restaure Créé par, Modifié par, Créé et Modifié pour les nouveaux éléments via SharePoint CSOM, après la mise à jour des pièces jointes, des compteurs et des réponses. L'auteur et la dernière personne ayant modifié l'élément sont associés aux utilisateurs du site ; si cette dernière est introuvable, l'auteur est utilisé. Le compte doit pouvoir définir les champs système, généralement un propriétaire du site avec Contrôle total. Les erreurs apparaissent sous la forme Titre du sujet : erreur SharePoint ou L'auteur et les dates n'ont pas pu être restaurés. L'élément reste importé ; les champs non restaurés conservent leurs valeurs actuelles.
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.

Pièces jointes
Lorsque Copier les pièces jointes 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 adresses des images intégrées restent dans le HTML nettoyé. Les fichiers image ne sont pas copiés ; les fichiers d'origine doivent rester accessibles à leurs adresses.
Le ID hérité 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 ID hérité - 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 Sujets déjà importés (ignorés) ; 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 ;
- les titres et corps des sujets existants ne sont pas écrasés, mais les compteurs, l'activité et les références aux réponses acceptées peuvent être mis à jour ; les éléments importés ne sont pas supprimés.
📝 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.