API de migration d’importation SharePoint (CreationMigrationJob)
Documentation de l’API
La description d’API suivante est basée sur l’utilisation du modèle objet SharePoint côté client (CSOM). Nous recommandons l’utilisation de packs NuGet lorsque vous référencez CSOM dans votre solution.
Vous trouverez la dernière version du package du modèle objet SharePoint côté client CSOM à partir de la galerie NuGet. Utilisez l’ID dans la propriété Microsoft.SharePointOnline.CSOM.
Important
Les fichiers de plus de 15 Go doivent maintenant créer la somme de contrôle requise en utilisant QuickXorHash. Nous avons fourni un exemple ici.
Le QuickXorHash/Checksum doit être calculé pour le fichier original avant le cryptage (si le fichier est crypté). Ceci est différent de l'exigence MD5hash.
La méthode antérieure MD5Hash demeure requise pour les fichiers de moins de 2 Go. Cette exigence sera toutefois supprimée à un moment donné dans le futur.
Méthodes
CreateMigrationJob
Cette méthode crée un nouveau travail d’importation de migration et le met en attente pour traitement ultérieur par un travail de minuteur distinct. Le travail utilisera un pack d’importation bien formé (format prédéfini) situé dans le conteneur de stockage BLOB Azure spécifié dans cette méthode. SLA traitement de travail de migration est contrôlé via une file d’attente préconfigurée et des paramètres de limitation de chargement de travail, et il n’y a aucune SLA garantie ni temps de retour pour une tâche soumise.
Syntaxe
public Guid CreateMigrationJob(
Guid gWebId,
string azureContainerSourceUri,
string azureContainerManifestUri,
string azureQueueReportUri)
Paramètres
gWebID
L’identificateur unique du site web de destination ciblé pour l’importation de pack. Les informations supplémentaires et identifiants pour l’importation sont spécifiés dans le pack d’importation. Cet identificateur est accessible par programme en interrogeant le web cible à l’aide des appels csom.
azureContainerSourceUri
L’URL valide, y compris les jetons SAS pour accéder au conteneur de stockage Azure Blob qui contient les fichiers binaires de bloc de type. Les jetons SAS doivent avoir été créée avec uniquement des permissions Lecture et Liste ou la tâche de migration échouera. Les jetons SAS doivent au moins disposer d’une durée de vie qui commence au moment où la tâche a été envoyée, avec un délai raisonnable pour une importation réussie.
Les autorisations requises sont les suivantes dans l’API de stockage Azure :
(SharedAccessBlobPermissions.Read | SharedAccessBlobPermissions.List)
Remarque : la modification pour appliquer des autorisations de lecture et de liste sur le jeton SAS sera effectuée dans une future version. D’ici là, elle ne sera pas appliquée. Toutefois, il est recommandé d’utiliser ces valeurs.
Tous les fichiers dans le conteneur doivent avoir au moins un instantané unique qui leur est appliqué pour vous assurer qu’aucune modification d’un fichier ne peut être effectuée par le client pendant l’importation. Tous les fichiers qui ne disposent pas d’un instantané seront ignorés lors de l’importation et auront une erreur déclarée, bien que la tâche tentera de continuer l’importation. Le pipeline d’importation utilise le dernier instantané du fichier disponible au moment de l’importation. Voici un exemple de code qui peut être utilisé pour créer un instantané dans un fichier une fois qu’il a été téléchargé vers un Stockage Blob Azure :
CloudBlockBlob blob = blobContainerObj.GetBlockBlobReference(file);
blob.UploadFromStream(stm);
blob.CreateSnapshot();
Notes
La modification pour demander et utiliser les derniers instantanés sur tous les fichiers arrive dans une build future et en attendant est ignorée.
azureContainerManifestUri
L’URL valide, y compris les jetons SAS pour accéder au conteneur de stockage Azure Blob qui contient les objets blob de bloc pour le manifeste et un autre pack décrivant les fichiers XML. Cet emplacement est également utilisé pour la sortie de journal. Ce conteneur ne peut pas être identique à celui utilisé pour l’azureContainerSourceUri. Les jetons SAS doivent avoir été créés avec uniquement des permissions Écriture et Liste ou la tâche de migration échouera. Les jetons SAS doivent au moins disposer d’une durée de vie qui commence au moment où la tâche a été envoyée, avec un délai raisonnable pour une importation réussie.
Notes
La modification pour appliquer des autorisations de lecture, liste et écriture sur le jeton SAS sera dans une future version et jusque là n'est pas appliquée, toutefois, il est recommandé d’utiliser ces valeurs. Si un problème survient dans une version actuelle, essayez de supprimer l’autorisation de liste comme une solution de contournement temporaire, en notant qu’elle sera bientôt requise.
Tous les fichiers dans le conteneur doivent avoir au moins un instantané unique qui leur est appliqué pour vous assurer qu’aucune modification d’un fichier ne peut être effectuée par le client pendant l’importation. N’importe quel fichier qui ne dispose pas d’un instantané causera des échecs pendant l’importation et déclarera des erreurs, faisant potentiellement échouer la tâche de migration entière.
Notes
La modification pour demander et utiliser les derniers instantanés sur tous les fichiers arrive dans une build future. Ils seront ignorés dans l’intervalle.
azureQueueReportUri
L’URL valide, y compris les jetons SAS pour accéder à la file d’attente Azure fournie à l’utilisateur utilisée pour renvoyer les notifications de l’avancement de tâche de migration. Cette valeur peut être null si aucune file d’attente de notification n’est utilisée pendant l’importation. Si cette valeur n’est pas null et les droits d’accès sont donnés dans le jeton SAS dans cette URL, elle sera utilisée pour mettre à jour le statut en temps réel. Les jetons SAS doivent avoir été créés avec uniquement des permissions Ajout, Lecture et Mise à jour ou la tâche de migration ne pourra pas ajouter d’événements à la file d'attente. Les autorisations requises sont les suivantes dans l’API de stockage Azure :
(SharedAccessQueuePermissions.Add | SharedAccessQueuePermissions.Read | SharedAccessQueuePermissions.Update)
Une fois accepté, l’ID de travail est inscrit dans la file d’attente notification s’il a été fourni et l’accès est valide. La file d’attente notification peut être utilisée pour plusieurs tâches de migration en même temps, car chaque tâche identifie elle-même les valeurs envoyées à la file d’attente de notification.
Voici des exemples de tous les types d’événements enregistrés dans la file d’attente de rapports Azure :
Event:JobQueued JobId:845daca4-5529-4b0e-85ab-a603efee5b12 Time:09/29/2020 19:56:02.883 SiteId:48917234-de43-474a-9f1b-8d98ffa08425 DbId:8fd09323-b23f-430d-8957-213586ce3861 TotalRetryCount:0 MigrationType:None MigrationDirection:Import CorrelationId:c8d97e9f-802f-0000-ceac-44663834d510
Event:JobPostponed JobId:845daca4-5529-4b0e-85ab-a603efee5b12 Time:09/29/2020 19:56:57.598 NextPickupTime:09/29/2020 20:16:57.519 SiteId:48917234-de43-474a-9f1b-8d98ffa08425 DbId:8fd09323-b23f-430d-8957-213586ce3861 JobsInQueue: TotalRetryCount:0 MigrationType:None MigrationDirection:Import CorrelationId:d5d97e9f-702c-0000-ceb9-354fefa5e9f6
Event:JobLogFileCreate JobId:071f9aad-36e6-4bef-9f09-40b5c7498ecd Time:09/29/2020 19:56:29.053 FileName:Import-071f9aad-36e6-4bef-9f09-40b5c7498ecd-1.log CorrelationId:22ca20ec-23de-468b-add3-4e52e90d3a68
Event:JobStart JobId:071f9aad-36e6-4bef-9f09-40b5c7498ecd Time:09/29/2020 19:56:29.100 SiteId:48917234-de43-474a-9f1b-8d98ffa08425 WebId:36b66979-4a43-4b93-9b92-909c7186ff98 DBId:8fd09323-b23f-430d-8957-213586ce3861 FarmId:211e600c-f48d-4319-ba92-61150c8e8e8c ServerId:cfd27448-822a-420b-bcc8-4f39629b01bc SubscriptionId:51812136-3cba-482d-9696-532cddceab31 TotalRetryCount:0 MigrationType:None MigrationDirection:Import CorrelationId:c308c0ea-a7f5-4be9-acd4-1ebd39867434
Event:JobProgress JobId:845daca4-5529-4b0e-85ab-a603efee5b12 Time:09/29/2020 19:56:32.265 FilesCreated:15 BytesProcessed:45 ObjectsProcessed:217 TotalExpectedSPObjects:403 TotalErrors:0 TotalWarnings:0 TotalRetryCount:0 MigrationType:None MigrationDirection:Import WaitTimeOnSqlThrottlingMilliseconds:0 TotalDurationInMs:0 CpuDurationInMs:0 SqlDurationInMs:0 SqlQueryCount:0 CreatedOrUpdatedFileStatsBySize:{"0-1K":{"Count":15,"TotalSize":45,"TotalDownloadTime":251,"TotalCreationTime":6754}} ObjectsStatsByType:{"SPUser":{"Count":1,"TotalTime":289,"AccumulatedVersions":0,"ObjectsWithVersions":0},"SPFolder":{"Count":2,"TotalTime":144,"AccumulatedVersions":0,"ObjectsWithVersions":0},"SPDocumentLibrary":{"Count":1,"TotalTime":173,"AccumulatedVersions":0,"ObjectsWithVersions":0},"SPFile":{"Count":200,"TotalTime":6765,"AccumulatedVersions":0,"ObjectsWithVersions":0},"SPListItem":{"Count":14,"TotalTime":2111,"AccumulatedVersions":0,"ObjectsWithVersions":0}} TotalExpectedBytes:0 CorrelationId:ccd97e9f-a0cc-0000-ceb9-37a900bec68d
Event:JobEnd JobId:16d658cf-ecd3-485f-9c9e-1ca268565e24 Time:09/29/2020 20:29:38.180 FilesCreated:200 BytesProcessed:600 ObjectsProcessed:403 TotalExpectedSPObjects:403 TotalErrors:0 TotalWarnings:0 TotalRetryCount:0 MigrationType:None MigrationDirection:Import WaitTimeOnSqlThrottlingMilliseconds:0 TotalDurationInMs:372294.0861 CpuDurationInMs:17351 SqlDurationInMs:98359 SqlQueryCount:1998 CreatedOrUpdatedFileStatsBySize:{"0-1K":{"Count":200,"TotalSize":600,"TotalDownloadTime":15448,"TotalCreationTime":275662}} ObjectsStatsByType:{"SPUser":{"Count":1,"TotalTime":44,"AccumulatedVersions":0,"ObjectsWithVersions":0},"SPFolder":{"Count":2,"TotalTime":108,"AccumulatedVersions":0,"ObjectsWithVersions":0},"SPDocumentLibrary":{"Count":1,"TotalTime":50,"AccumulatedVersions":0,"ObjectsWithVersions":0},"SPFile":{"Count":200,"TotalTime":293628,"AccumulatedVersions":0,"ObjectsWithVersions":0},"SPListItem":{"Count":200,"TotalTime":76541,"AccumulatedVersions":0,"ObjectsWithVersions":0}} TotalExpectedBytes:0 CorrelationId:59db7e9f-a003-0000-ceb9-300001119ee3
Event:JobDeleted JobId:071f9aad-36e6-4bef-9f09-40b5c7498ecd Time:09/29/2020 19:56:29.053 CorrelationId:22ca20ec-23de-468b-add3-4e52e90d3a68
Event:JobCancelled JobId:071f9aad-36e6-4bef-9f09-40b5c7498ecd Time:09/29/2020 19:58:29.053 TotalRetryCount:0 CancelledByUser:false MigrationType:None MigrationDirection:Import CorrelationId:22ca20ec-23de-468b-add3-4e52e90d3a68
Event:JobError JobId:b427d8d7-2b91-4da0-aee5-4b5a5a5d867e Time: 02/05/2019 06:56:09.732 TotalRetryCount:0 MigrationType:None MigrationDirection:Import ObjectType:File Url:Shared Documents/file.pdf Id:fae7b4b0-2912-11e9-b0f3-7b554a52d6ab ErrorCode:-2147024816 ErrorType:Microsoft.SharePoint.SPException Message:ErrorMessage CorrelationId:d8e9bc9e-20e2-8000-aa83-48a62fc5ce75
Event:JobWarning JobId:b427d8d7-2b91-4da0-aee5-4b5a5a5d867e Time: 02/05/2019 06:56:09.732 TotalRetryCount:0 MigrationType:None MigrationDirection:Import ObjectType:File Url:Shared Documents/file.pdf Id:fae7b4b0-2912-11e9-b0f3-7b554a52d6ab ErrorCode:-2147024816 ErrorType:Microsoft.SharePoint.SPException Message:ErrorMessage CorrelationId:d8e9bc9e-20e2-8000-aa83-48a62fc5ce75
Event:FinishManifestFileUpload JobId:b427d8d7-2b91-4da0-aee5-4b5a5a5d867e Time:02/05/2019 06:56:09.732 ManifestFileName:Filename CorrelationId:d8e9bc9e-20e2-8000-aa83-48a62fc5ce75
Valeurs de retour
L’identificateur unique de la tâche de migration est renvoyé si la tâche est correctement mise en file d’attente, ou si elle échoue, une valeur null est renvoyée. L’identificateur unique de travail de migration peut être utilisé pour interroger l’état de tâche de migration s’il est dans la file d’attente ou en utilisant la méthode GetMigrationJobStatus en cours de traitement.
Exemple :
Guid MigrationJobId = TargetSite.CreateMigrationJob(
TargetWebId,
azureContainerSourceUri,
azureContainerManifestUri,
azureQueueReportUri);
GetMigrationJobStatus
Cette méthode interroge la file d’attente concernant l’état du travail de migration spécifié. Il s’agit d’une vérification facultative après l’appel de la méthode CreateMigrationJob. Une fois la tâche de migration terminée, il ne s’affichera plus dans la file d’attente et la file d’attente notification et/ou sortie de journal devra être vérifiée pour un statut détaillé.
Syntaxe
[ClientNS.ClientCallableMethod]
public SPMigrationJobState GetMigrationJobStatus(Guid MigrationJobId)
Paramètres
ID
Identificateur unique de la tâche de migration renvoyé par la méthode CreateMigrationJob.
Valeurs de retour
L’état de tâche de migration est renvoyé à l’aide d’un objet SPMigrationJobState si la tâche est trouvée dans la file d’attente, ou si elle échoue, une valeur d’aucune (0) est renvoyée.
Exemple
SPMigrationJobState CurrentJobState = TargetSite.GetMigrationJobStatus(MigrationJobId);
Énumérations
SPMigrationJobState
SPMigrationJobState est une énumération qui recense les états principaux possibles dans la file d’attente importation.
Members
| Nom du membre | Description |
|---|---|
| Aucun | La tâche de migration est actuellement inconnue de la file d’attente, soit par achèvement et suppression ou identificateur de travail non valide. Valeur=0. |
| En file d’attente | La tâche de migration est connue actuellement par la file d’attente et n’est pas traitée. Valeur=2. |
| Traitement | La tâche de migration est connue actuellement par la file d’attente et est en cours de traitement. Valeur=4. |
Structure d’un pack d’importation
La structure d’un pack est basée sur une version du schéma de pack de déploiement de contenu. La documentation pour le schéma complet d’origine est accessible sous docs.microsoft.com. Jusqu'à ce qu’elle soit publiée sur docs.microsoft.com, la structure est accessible dans ce document dans l’appendice.
| Fichier XML | Fichier de schéma | Description |
|---|---|---|
| ExportSettings.xml | Schéma DeploymentExportSettings | Fournit la validation du fichier ExportSettings.XML exporté dans le pack de migration de contenu. ExportSettings.XML effectue ce qui suit : -Contient les paramètres d’exportation spécifiés à l’aide de la classe SPExportSettings et autres classes qui font partie du modèle objet migration de contenu. -Garantit que le processus d’importation suivant (sur le site cible migration) applique les directives spécifiées dans les paramètres d’exportation. -Tient à jour un catalogue de tous les objets exportés vers le pack de migration. |
| LookupListMap.xml | Schéma DeploymentLookupListMap | Fournit la validation du fichier LookupListMap.XML exporté dans le pack de migration de contenu. LookupListMap.XML gère une liste de recherche simple qui enregistre références des éléments de liste SharePoint (élément de liste à élément de liste). |
| Manifest.xml | Schéma DeploymentManifest | Fournit la validation du fichier Manifest.xml exporté dans le package de migration de contenu. Fournit un manifeste complet contenant des listes du contenu et de la structure du site source. L’opération de migration utilise le fichier manifeste pour reconstituer le site source et ses composants lorsqu’il est importé sur le site de destination. |
| Requirements.xml | Schéma DeploymentRequirements | Fournit la validation du fichier Requirements.xml exporté dans le pack de migration du contenu. Requirements.xml gère la liste des conditions de déploiement sous la forme de configuration requise pour l’installation du côté de la destination de la migration, comme les définitions de fonctionnalité, les versions des modèles, les assemblys de composants WebPart, les modules linguistiques, etc. |
| RootObjectMap.xml | Schéma DeploymentRootObjectMap | Fournit la validation du fichier RootObjectMap.xml exporté dans le pack de migration de contenu. RootObjectMap.xml gère une liste des mappages des objets (dépendants) secondaires, ce qui permet à la phase d’importation de l’opération de migration de placer correctement les objets dépendants par rapport aux emplacements des mappages objet racine. |
| SystemData.xml | Schéma DeploymentSystemData | Fournit la validation du fichier SystemData.xml exporté dans le pack de migration de contenu. SystemData.xml effectue les opérations suivantes : collecte un large éventail de données du système de bas niveau. Enregistre le nombre et le nom des fichiers Manifest.xml (dans les cas où la migration utilise plusieurs manifestes). |
| UserGroupMap.XML | Schéma DeploymentUserGroupMap | Fournit la validation du fichier UserGroup.xml exporté dans le pack de migration de contenu. UserGroup.xml gère une liste d’utilisateurs et de groupes de sécurité utilisateur qui concerne la sécurité d’accès et les autorisations. |
| ViewformsList.xml | Schéma DeploymentViewFormsList | Fournit la validation du fichier ViewFormsList.xml exporté dans le pack de migration de contenu. ViewFormsList.xml gère une liste de composants WebPart et effectue le suivi si chacun d’eux a un affichage ou un formulaire. |
Structure du contenu
Le contenu de fichier qui est référencé dans le manifeste de la structure de pack doit être stocké dans une structure plate ou hiérarchique au sein du conteneur Store d’objets Blob Azure définie par le paramètre CreateMigrationJob azureContainerSourceUri. Par exemple, les packs importation générés par un export de version légale ne seront pas hiérarchiques, et les fichiers seront stockés au niveau racine avec un motif comme ########.dat, où les symboles # sont des caractères hexadécimaux commençant à 0 et sans nom de fichier répété dans un pack. Également, un package généré à partir d’un partage de fichiers peut avoir une hiérarchie de dossiers source et noms de dossier conservés dans la même hiérarchie.
La condition requise pour la structure est que les références FileValue dans le Manifest.XML fichier doivent faire référence au nom exact et la hiérarchie physique stockées dans le contenu au sein de l’emplacement d’objets Blob Azure Store pour l’importation. Les noms de fichier de destination et hiérarchie des dossiers à partir de l’opération d’importation ne sont pas directement liés à la dénomination physique et hiérarchie et sont définis à la place via le fichier Manifest.XML.
ExportSettings.xml
Le fichier ExportSettings.XML est supposé être à la racine du conteneur Store d’objets Blob Azure défini par le paramètre CreateMigrationJob azureContainerManifestUri. Ce fichier obligatoire est validé à l’aide de la contrainte DeploymentExportSettings.XSD, qui comporte des modifications limitées du schéma complet du pack 2013actuellement publié.
La configuration requise principale qui est la valeur ExportSettings SiteUrl doit être renseignée avec une URL cohérente avec l’URL source utilisée pour le reste du pack importation. Dans le cas de fichiers partagés en tant que source, l’URL serait déjà spécifiée pour être l’URL source dans le reste du pack, tandis qu’un pack généré via une opération d’exportation à un site source serait son URL de collection de site source d’origine.
LookupListMap.XML
Le fichier ExportSettings.XML est supposé être à la racine du conteneur Store d’objets Blob Azure défini par le paramètre CreateMigrationJob’s azureContainerManifestUri. Ce fichier obligatoire est validé à l’aide de la contrainte DeploymentLookupListMap.XSD, qui comporte des modifications limitées du schéma complet du pack 2013actuellement publié.
Étant donné qu’un pack d’importation pour la pipeline n’inclut pas la définition des champs ou des vues dans une liste ou bibliothèque de documents, le fichier LookupListMap.XML n’inclura normalement aucune nœuds enfants sous la racine et en tant que tel peut également être exclu du pack si non nécessaire, même si un avertissement peut être enregistré dans ce cas.
Manifest.XML
Le fichier Manifest.XML est supposé être à la racine du conteneur Store d’objets Blob Azure défini par le paramètre CreateMigrationJob azureContainerManifestUri. Ce fichier obligatoire est validé à l’aide de la contrainte DeploymentManifest.XSD, qui comporte des modifications majeures et réduction significative du schéma complet du pack 2013 actuellement publié.
Le Manifest.XML est le descripteur principal pour les métadonnées au sein du pack et fournit la hiérarchie/dossier/élément de liste, ainsi que des métadonnées pour les éléments, y compris les références de retour aux utilisateurs et groupes définies dans le fichier UserGroupMap.XML. Il peut y avoir plusieurs fichiers Manifest.XML (qui peuvent être identifiés à l’aide de noms de fichier différents pour les identifier de façon unique), et tous peuvent être trouvés par la pipeline d’importation via références au sein des entrées SystemData.XML ManifestFile du fichier.
La configuration requise principale pour que Manifest.XML puisse être correctement importé dans la pipeline est que l’ID Web et ID de liste/ID de Document bibliothèque doit être cohérent avec l’emplacement cible. Si un ID Web utilisé ne correspond pas à l’emplacement cible, des erreurs se produisent, car le site web parent pour l’opération d’importation est introuvable.
De même, un ID de liste/ID bibliothèque document incorrect va empêcher l’importation dans la liste ou bibliothèque de documents cible. Les ID ne doivent jamais être réutilisés au sein de la même collection de sites, pour que les packs similaires ne soient pas importés dans la même collection cible quel que soit le site web de destination.
Pour les fichiers et dossiers individuels dans la liste ou bibliothèque de documents, leurs identificateurs doivent être cohérents entre événements d’importation dans le même emplacement. Plus précisément, l’exécution d’une importation d’un formulaire de pack généré d’un partage de fichiers requiert initialement de générer de nouveaux GUID pour chaque fichier et dossier, ainsi que de faire correspondre les GUID pour les éléments de liste qui les représentent. Par conséquent, exécuter une deuxième importation par rapport à la même cible en utilisant le même pack conserverait les mêmes ID, mais effectuer une deuxième importation par rapport à la même cible à l’aide d’un nouveau pack pour le même contenu entraînerait des conflits d’ID et importerait des erreurs pour tous les éléments en conflit.
Le package généré initialement à partir d’un partage de fichiers équivaut effectivement à un formulaire d’enregistrement pour les ID générés d’origine et peut potentiellement être utilisé comme référence pour le suivi de nouvelle génération de pack pour empêcher les conflits ID lorsque involontaires, et autoriser les ID pour assurer un remplacement suppression ou déplacement d’activités correct.
Requirements.xml
Le fichier Requirements.XML est supposé être à la racine du conteneur Store d’objets Blob Azure défini par le paramètre CreateMigrationJob’s azureContainerManifestUri. Ce fichier obligatoire est validé à l’aide de la contrainte DeploymentLookupListMap.XSD, qui ne comporte pas de modifications du schéma complet du pack 2013actuellement publié.
Pour les fichiers partagés, cela ne devrait normalement inclure aucune nœuds enfants sous la racine, en donc peuvent également être exclus à partir du pack si non obligatoires, même si un avertissement est enregistré dans ce cas.
RootObjectMap.XML
Le fichier RootObjectMap.XML est supposé être à la racine du conteneur Store d’objets Blob Azure défini par le paramètre CreateMigrationJob azureContainerManifestUri. Ce fichier obligatoire est validé à l’aide de la contrainte DeploymentRootObjectMap.XSD, qui comporte des modifications limitées du schéma complet du pack 2013 actuellement publié. Les plus courantes RootObject qui seront incluses seront un objet unique de type liste. L’Id pour cet élément doit être l’Id de liste pour la liste cible et le ParentWebID doit correspondre à l’Id du web cible parent contenant cette liste dans l’ordre pour la migration pour réussir. Les valeurs Id, WebUrl et l’Url de cet objet doivent également correspondre à la structure connexe disposée le Manifest.XML fichier.
SystemData.xml
Le fichier SystemData.XML est supposé être à la racine du conteneur Store d’objets Blob Azure défini par le paramètre CreateMigrationJob azureContainerManifestUri. Ce fichier obligatoire est validé à l’aide de la contrainte DeploymentSystemData.XSD, qui ne comporte pas de modifications du schéma complet du pack 2013actuellement publié.
L’ SchemaVersion information est prévue pour référencer la Build actuelle et la DatabaseVersion de la batterie cible, une Version de « 15.0.0.0 » et la SiteVersion valeur est censée toujours correspondre à la collection de sites cibles UIVersion (c'est-à-dire, communément cela sera « 15 »). Chaque fichier Manifest.XML pour le pack est supposé être répertorié dans ce fichier dans les ManifestFile entrées.
Les SystemObjects qui définissent les objets dépendants qui doivent être conservés comme non modifiables par le code de migration doivent également être répertoriés ici pour garantir le comportement correct de l’opération d’importation. Voici un exemple d’objets courants dans le fichier SystemObjects.XML à partir de l’importation d’un partage de fichiers, en notant que les ID sont susceptibles d’être différentes pour chaque pack, et les URL peuvent être différentes.
Tableau 1 : Fichier d’exemple SystemData.XML
<?xml version="1.0" encoding="utf-8"?>
<SystemData xmlns="urn:deployment-systemdata-schema">
<SchemaVersion Version="15.0.0.0" Build="16.0.3111.1200" DatabaseVersion="11552" SiteVersion="15" />
<ManifestFiles>
<ManifestFile Name="Manifest.xml" />
</ManifestFiles>
<SystemObjects>
<SystemObject Id="34321c39-3254-4bd1-b749-c99e16d1f4ab" Type="Folder" Url="/personal/username" />
<SystemObject Id="9efb9686-baab-432d-a192-858ac34c073f" Type="Web" Url="/personal/username" />
<SystemObject Id="e8ec714f-91a0-4c6f-9926-08328c8b3e05" Type="List" Url="/personal/username/Documents/deleteme2" />
<SystemObject Id="a05e1f95-5712-4cc2-958c-31cf0a2cfb62" Type="List" Url="/personal/username/_catalog/users" />
</SystemObjects>
<RootWebOnlyLists />
</SystemData>
UserGroupMap.XML
Le fichier UserGroupMap.XML est supposé être à la racine du conteneur Store d’objets Blob Azure défini par le paramètre CreateMigrationJob azureContainerManifestUri. Ce fichier obligatoire est validé à l’aide de la contrainte DeploymentSystemData.XSD, qui ne comporte pas de modifications du schéma complet du pack 2013 actuellement publié.
Le UserGroupMap.XML fichier ne peut pas contenir d’entrées utilisateur ou groupe, mais cette opération permet d’empêcher l’auteur ou des informations de sécurité d’être renseignés pendant l’importation et les avertissements seront enregistrés dans ce cas. Les valeurs de connexion et d’identificateur de sécurité pour les utilisateurs doivent être ajustées pour correspondre aux valeurs dans SharePoint Online, ou si le compte n’existe plus, elles peuvent apparaître sous la forme IsDeleted = “true” pour empêcher les échecs de recherche et ralentissement supplémentaires pendant l’opération d’importation.
ViewformsList.xml
Le fichier ViewForms.XML est supposé être à la racine du conteneur Store d’objets Blob Azure défini par le paramètre CreateMigrationJob azureContainerManifestUri. Ce fichier obligatoire est validé à l’aide de la contrainte DeploymentViewFormsList.XSD, qui ne comporte pas de modifications du schéma complet du pack 2013 actuellement publié.
Étant donné qu’un pack d’importation pour la pipeline n’inclut pas la définition des champs ou des vues dans une liste ou bibliothèque de documents, le fichier ViewFormsList.XML n’inclura normalement aucune nœuds enfants sous la racine et en tant que tel peut également être exclu du pack si non nécessaire, même si un avertissement peut être enregistré dans ce cas.
Logging
Les journaux créés par la pipeline d’importation doivent être analysés facilement par ordinateur avec comme objectif la possibilité de repérer quand et où les échecs se produisent, y compris les erreurs et avertissements, et indique au consommateur ou l’éditeur de logiciels indépendant où et pourquoi l’échec s’est produit.
Cela fait, les journaux créés seront copiés dans l’azureContainerManifestUri emplacement, tandis que le jeton SAS spécifié dans l’URI autorise l’accès d’écriture. Les mêmes journaux de sortie sont également placés à l’emplacement « Journaux _catalogs/Maintenance » de la collection de sites cibles comme un fichier texte. Les journaux seront copiés dans les emplacements de destination seulement une fois que la tâche a terminé et a été supprimée de la file d’attente.
Plusieurs types de journal pouvant être inclus tels que le journal d’importation complète, ainsi que les fichiers d’avertissement et d’erreur qui contiennent uniquement le sous-ensemble des avertissements ou des erreurs d’import. Les fichiers journaux ont des tampons uniques datetime et job id pour autoriser chaque événement d’importation à avoir un journal unique à de meilleures fins de débogage.
Modifications pour les utilisateurs de l’option « Expédition de disque »
Pour utiliser l’API de Migration, vous devez disposer d’un conteneur de stockage temporaire dans Azure. Lors du chargement des fichiers dans l’espace de stockage temporaire, une somme de contrôle est requise en tant que propriété sur chaque fichier. Pour les fichiers d’une taille supérieure à 15 Go, cette opération est effectuée en utilisant QuickXorHash (voir l’exemple ci-dessous). Pour les fichiers de taille inférieure ou égale à 2 Go, MD5 est requis en tant que propriété sur chaque fichier.
Toutefois, lorsque les données sont expédiées sur des disques durs, cette propriété n'est pas attribuée automatiquement. Pour contourner ce problème, nous avons adapté l'API de migration pour permettre de transmettre la somme de contrôle pour chaque fichier dans le cadre du manifeste. Cela s'applique également aux valeurs IV lors du cryptage des données.
Étant donné que la propriété MD5 est générée à la source plutôt qu’au moment du chargement dans Azure, Microsoft peut confirmer l’intégrité du fichier directement sur la MD5 source.
Quels éléments sont stockés dans ces conteneurs d’objets blob Azure ?
L'API de migration requiert le conteneur Azure pour la transmission de contenu ainsi que pour la création de rapports sur les journaux et les files d'attente. Il peut être divisé en résumé comme suit :
| Contenu | Manifeste |
|---|---|
| Fichiers et dossiers | Fichiers XML |
Il y a deux nouveaux paramètres facultatifs dans manifest.xml :
- QuickXorHash
- MD5Hash
Préparation du pack
La méthode permettant d’appeler la tâche de migration ne change pas ; la seule chose à changer est la génération du pack.
Dans le conteneur de manifeste, un fichier s’appelle Manifest.xml. 2 attributs facultatifs sont ajoutés au nœud de fichier : QuickXorHash et MD5Hash.
Exemples de fichiers de plus de 15 Go :
<?xml version="1.0" encoding="utf-8"?>
<SPObjects xmlns="urn:deployment-manifest-schema">
<SPObject Id="75be48d8-59a5-4558-8dd8-5eb2c4e94bc5" ObjectType="SPFolder" ParentId="d43a7f16-e50b-4591-861f-684e78e89e12" ParentWebId="2f887e64-876b-4fa7-bb03-0a9ca1cf3d33" ParentWebUrl="/" Url="/Shared Documents">
<Folder Id="75be48d8-59a5-4558-8dd8-5eb2c4e94bc5" Url="Shared Documents" Name="Shared Documents" ParentFolderId="d43a7f16-e50b-4591-861f-684e78e89e12" ParentWebId="2f887e64-876b-4fa7-bb03-0a9ca1cf3d33" ParentWebUrl="/" ContainingDocumentLibrary="a69654d6-eb09-4638-aa6b-a7e8ff86f555" TimeCreated="2021-01-06T18:50:15" TimeLastModified="2021-01-06T18:50:15" SortBehavior="1" />
</SPObject>
<SPObject Id="a69654d6-eb09-4638-aa6b-a7e8ff86f555" ObjectType="SPDocumentLibrary" ParentId="2f887e64-876b-4fa7-bb03-0a9ca1cf3d33" ParentWebId="2f887e64-876b-4fa7-bb03-0a9ca1cf3d33" ParentWebUrl="/" Url="/Shared Documents">
<DocumentLibrary Id="a69654d6-eb09-4638-aa6b-a7e8ff86f555" BaseTemplate="DocumentLibrary" RootFolderId="75be48d8-59a5-4558-8dd8-5eb2c4e94bc5" RootFolderUrl="/Shared Documents" ParentWebId="2f887e64-876b-4fa7-bb03-0a9ca1cf3d33" ParentWebUrl="/" Title="Documents" HasUniqueRoleAssignments="true">
<ContentTypes />
</DocumentLibrary>
</SPObject>
<SPObject Id="aef2bb11-7ee8-4343-87cd-5938d260e647" ObjectType="SPFile" ParentId="75be48d8-59a5-4558-8dd8-5eb2c4e94bc5" ParentWebId="2f887e64-876b-4fa7-bb03-0a9ca1cf3d33" ParentWebUrl="/" Url="/Shared Documents/MyFile.txt">
<File Url="Shared Documents/MyFile.txt" Id="aef2bb11-7ee8-4343-87cd-5938d260e647" ParentWebId="2f887e64-876b-4fa7-bb03-0a9ca1cf3d33" ParentWebUrl="/" Name="MyFile.txt" ListItemIntId="1" ListId="a69654d6-eb09-4638-aa6b-a7e8ff86f555" ParentId="75be48d8-59a5-4558-8dd8-5eb2c4e94bc5" TimeCreated="2021-01-06T18:43:38" TimeLastModified="2018-06-07T17:54:28" Version="1.0" FileValue="MyFile.txt" FileSize="17662712" Author="1" ModifiedBy="1" MD5Hash="qVBFIb8MJLzT5INrE4XcDQ==" Checksum="3k59aOUae2xygD5B/jtxY4x0Xko=" />
</SPObject>
<SPObject Id="52e75f2f-e8d7-4c6d-bf06-3b98d8429e0f" ObjectType="SPListItem" ParentId="a69654d6-eb09-4638-aa6b-a7e8ff86f555" ParentWebId="2f887e64-876b-4fa7-bb03-0a9ca1cf3d33" ParentWebUrl="/" Url="/Shared Documents/MyFile.txt">
<ListItem FileUrl="Shared Documents/MyFile.txt" DocType="File" ParentFolderId="75be48d8-59a5-4558-8dd8-5eb2c4e94bc5" Order="100" Id="52e75f2f-e8d7-4c6d-bf06-3b98d8429e0f" ParentWebId="2f887e64-876b-4fa7-bb03-0a9ca1cf3d33" ParentListId="a69654d6-eb09-4638-aa6b-a7e8ff86f555" Name="MyFile.txt" DirName="/Shared Documents" IntId="1" DocId="aef2bb11-7ee8-4343-87cd-5938d260e647" Version="1.0" Author="1" ModifiedBy="1" TimeLastModified="2018-06-07T17:54:28" TimeCreated="2021-01-06T18:43:38" ModerationStatus="Approved">
<Fields />
</ListItem>
</SPObject>
</SPObjects>
Exemples de fichiers de moins de 2 Go :
<File … MD5Hash="CXPP/MWYxY87NjjnLZrFg==" InitializationVector="4WlC5zQK0r9s39LoB2w==" />
Meilleures pratiques et mentions spéciales
Taille du pack
Même si l’API prend en charge les fichiers de 15 Go, nous vous recommandons des tailles de pack de jusqu'à 250 Mo ou 250 éléments (en fonction de celui que vous arrive en premier). Si vous avez un fichier plus volumineux que la taille recommandée, vous devez alors l’envoyer dans son propre pack. Le même s’applique aux versions ; chaque version est comptabilisée dans la limite de taille et nombre d’éléments. En outre toutes les versions d’un fichier doivent se trouver dans le même pack.
Taille des fichiers
Notes
L'API de migration prend en charge les fichiers individuels de plus de 15 Go. La taille maximale est actuelle à celle fixée par SharePoint Online.
Seulement les packs non compressés sont pris en charge
Le pipeline d’importation ne prend pas en charge les packs compressés. Le contenu du fichier doit être stocké dans un conteneur de stockage Azure différent du manifeste et des fichiers XML descriptifs liés. Cette décision a été créée pour empêcher la surcharge liée à un temps de traitement aux deux extrémités de la migration (pour compresser et décompresser) et pour faciliter la création d’un pack et sa modification. La compression de fichiers individuels comme vers des archives zip est prise en charge dans la mesure où elles sont référencées dans le pack d’importation en tant qu’archive proprement dite, et pas en contenu.
API prend en charge l’importation de plusieurs versions de fichier
Les packs importation peuvent avoir des références à plusieurs versions d’un fichier principal et secondaire, jusqu'aux limites imposées au sein de SharePoint. Il est important que chaque version de ce fichier soit incluse dans le pack même si certaines des versions existent déjà dans SPO.
API prend en charge la conservation des identificateurs
Les identificateurs utilisés au sein du pack importation servent explicitement à identifier le contenu pendant l’importation. Cela permet la conservation des identificateurs existants pour le contenu d’un document bibliothèque dans un environnement source. Toutefois, il impose également une complexité lors de la création du pack importation ou sa transformation, qui rend obligatoire que le pack référence explicitement les identificateurs web et de liste cibles. Les identificateurs de type de contenu, élément de fichier/dossier GUID et identificateurs entiers de liste élément sont tous conservés pendant l’importation. Si les identificateurs incorrects sont spécifiées dans le pack, l’importation échouera.
Par ailleurs, en raison de la conservation identificateur, les événements importation peuvent potentiellement être effectués dans les itérations successives à l’aide de packs différents, permettant aux éléments un déplacement potentiel dans l’ emplacement si leurs identificateurs n’ont pas changé.
Il s’agit d’un API remplacé
Le pipeline d’importation prend en charge l’importation de données de contrôle de version sur des fichiers et des métadonnées d’élément de liste, mais depuis maintenant si vous envoyez un fichier, puis renvoyez le même fichier avec des modifications, le processus d’importation va supprimer et remplacer le fichier d’origine et toutes les versions, dont celles incluses dans la version actuelle du pack importé.
Nous ne prenons pas en charge de scénario Active Active
Cela signifie que nous prévoyons que le site cible reste non actif pour les utilisateurs jusqu’à la fin de la migration. La source peut être conservée dans un état de lecture écriture jusqu'à l’événement final de migration, comme méthode de réduction d’arrêt de service pour les utilisateurs finaux, mais une fois la migration terminée, il devrait y avoir un commutateur pour les utilisateurs pour commencer à utiliser leurs nouvelles destinations SPO et arrêter d’utiliser les registres précédents.
Autorisations dans Azure
Pour vous assurer immuabilité d’objets BLOB source, le pipeline importation accepte une clé SAS avec uniquement des indicateurs d’accès Lecture et Liste pour le conteneur de fichier. De même, le pipeline importation nécessite une clé SAS avec accès Lecture, Liste et Écriture pour le conteneur de manifeste pour écrire les fichiers journaux à la fin de l’opération d’importation. Si ces critères ne sont pas remplis, le pipeline le rejettera pendant la création du travail.
Tous les fichiers dans Azure doivent avoir des instantanés créés pour importer correctement
Pour empêcher la modification involontaire d’un fichier d’objets BLOB de la source, le pipeline d’importation importera uniquement les fichiers s’ils disposent d’un instantané créé pour eux dans Azure. S’ils ne le font pas, le pipeline importation ignorera les fichiers dans cet état et déclarera des erreurs. Le pipeline d’importation utilise le dernier instantané du fichier disponible au moment de l’importation.
Sécurité et chiffrement
Le pipeline importation utilise le modèle de sécurité de stockage Blob Azure en l’état. Cela signifie que nous ne ferons pas de traitement spécial pour ces conteneurs azure qui seraient différents de n’importe quel autre conteneur azure. Par ailleurs, le pipeline importation n’accepte actuellement pas les clés de chiffrement pour le contenu à partir du client. Tout contenu chiffré sera traité comme des fichiers opaques que SharePoint peut lister, mais non indexables, comme si les fichiers chiffrés ont été chargés à l’environnement via l’interface utilisateur.
Événements et gestionnaires d’événements
Le pipeline d’importation permet aux gestionnaires d’événements d’être référencés sur les éléments de liste, mais n’autorise pas la définition des gestionnaires d’événements au niveau de la liste pour l’instant. Le pipeline d’importation ne déclenche pas d’événements lorsque des éléments sont importés, afin que les gestionnaires d’événement existants ne soient pas déclenchés pas en raison de l’événement importation.
Résolution des utilisateurs
Si l’API de migration n’a pas pu apporter une résolution à l’utilisateur à l’aide de l’identifiant de connexion fourni dans le fichier UserGroup.xml et qu’aucun ID système n’est fourni, procédez comme suit :
- Cet utilisateur est remplacé par le « Compte système » dans les métadonnées associées dans le package (auteur, éditeur, etc.).
- Un avertissement est signalé dans ImportLogs – « Échec d’assurance utilisateur 'user@contoso.com' »
Si l’API de migration n’a pas pu apporter une résolution à l’utilisateur à l’aide de l’identifiant de connexion fourni dans le fichier UserGroup.xml et qu’un ID système est fourni (soit le SID pour l’utilisateur dans Active Directory sur site), procédez comme suit :
- Un nouvel utilisateur supprimé avec la connexion et SystemId fourni est créé et il est utilisé dans les métadonnées associées dans le package.
- Un avertissement est signalé dans le ImportLogs-« a échoué pour récupérer les attributs utilisateur 'user@contoso.com' auprès du SiteUsers ; échec passé dans valeurs »
Annexes
Acronymes définis
| Acronyme | Définition |
|---|---|
| Bot | Travaux du minuteur Serveur SharePoint |
| CDB | Base de données contenu avec du contenu et des collections de sites |
| CFE | Serveur de contenu de serveurs frontaux |
| SPO | SharePoint Online |
| ABS | Stockage Blob Azure |
Ressources utiles
- SharePoint Online Client composants SDK
- Windows Azure SDK Azure pour .NET - 2.4
- Création de sites en bloc OneDrive Entreprise
- Restrictions et limitations lors de la synchronisation des bibliothèques SharePoint avec votre ordinateur via OneDrive Entreprise
- Types de fichiers qui ne peuvent pas être ajoutés à une liste ou une bibliothèque
Utilisation des structures de sécurité pack importation
Cette section vous présente brièvement ce qui est inclus dans un pack d’exportation incluant une sécurité en ce qui concerne les autorisations. Cela peut autoriser le système afin de déterminer les abonnements groupes et utilisateurs ainsi que les rôles et affectations spécifiques (autorisations uniques définies au niveau de l’objet et de ses enfants, sauf si remplacés à un objet enfant approfondi).
Comment interpréter les identificateurs de sécurité dans les fichiers de pack
Le fichier UserGroup.xml définit tous les utilisateurs et groupes dans les sites Web exportés. Les éléments au sein de ce fichier procèdent comme suit :
- Les objets utilisateur incluent les informations concernant des utilisateurs spécifiques, y compris l’identification d’un principe de sécurité spécifique comme un groupe de domaine ou non, connexion et base 64 codées SystemId (IDS) du principe de sécurité.
- Les objets groupe incluent des informations sur les groupes spécifiques et la liste des membres directe de ce groupe.
- Les valeurs propriétaires d’objets de groupe et les valeurs UserId d’objets membre dans les objets de groupe mappent à d’autres valeurs Id d’autres utilisateurs ou groupes.
Tableau 2 : Utilisateurs et groupes annotés dans UserGroupMap
<UserGroupMap xmlns="urn:deployment-usergroupmap-schema">
<Users>
<User Id="1" Name="John Doe" Login="DOMAIN\JDoe" Email="DJoe@contoso.com"
IsDomainGroup="false" IsSiteAdmin="true" SystemId="AQUAAAAAAAUVAAAAXSj1f9U62DVDVOAqToYSAA==" IsDeleted="false" Flags="0" />
<User Id="2" Name="Jane Smith" Login="DOMAIN\JSmith" Email="jsmith@contoso.com"
IsDomainGroup="false" IsSiteAdmin="true" SystemId="AQUAAAAAAAUVAAAAXSj1f9U62DVDVOAqdUwNAA==" IsDeleted="false" Flags="0" />
…
</Users>
<Groups>
<Group Id="3" Name="Temp Group" Description="A Temp Group" Owner="2" OwnerIsUser="true" OnlyAllowMembersViewMembership="true">
<Member UserId="2" />
</Group>
<Group Id="4" Name="Temp Group 2" Description="Another Temp Group" Owner="2" OwnerIsUser="false" RequestToJoinLeaveEmailSetting="JSmith@contoso.com" OnlyAllowMembersViewMembership="true">
<Member UserId="1" />
<Member UserId="2" />
</Group>
…
</Groups>
</UserGroupMap>
Manifest.XML contient des métadonnées relatives à tout le contenu dans les sites Web exportés. Les éléments au sein de ce fichier procèdent comme suit :
- Les objets rôles incluent la liste des rôles définis sur le web.
- Les objets de rôle définissent le rôle individuel, y compris les ID, indicateurs masqués d’autorisations internes et affichent les informations.
- Les valeurs RoleId définissent les identificateurs des objets de rôle.
- Valeurs PermMask contiennent les indicateurs masque de droits.
- Les objets RoleAssignments incluent la liste des autorisations uniques (RoleAssignment objets).
- Les objets RoleAssignment incluent la liste des objets d’affectation distinctes (le cas échéant).
- Les objets individuels RoleAssignment contiennent l’appartenance réelle d’un utilisateur distinct ou groupe et leur rôle réel.
- Les valeurs RoleId mappent aux valeurs RoleId des objets de rôle.
- Les valeurs PrincipalId mappent aux valeurs d’Id des objets d’utilisateur ou groupe respectivement dans UserGroups.xml.
Tableau 3 : Rôles et RoleAssignments annotés dans le manifeste
<SPObjects xmlns="urn:deployment-manifest-schema">
…
<SPObject Id="0b3c1b13-b260-453c-ac8d-8053a537d610" ObjectType="DeploymentRoles" ParentId="203e30e2-1139-4adf-b545-e74235f105c2" ParentWebId="203e30a2-1139-4acf-b535-e74235f105c2" ParentWebUrl="/teams/temp">
<Roles>
<Role RoleId="1073751825" Title="Test Role" Description="This is a test role" PermMask="206292717568" Hidden="true" RoleOrder="160" Type="1" />
<Role RoleId="1073751826" Title="Test Role 2" Description="This is another test role" PermMask="756052856929" Hidden="false" RoleOrder="128" Type="2" />
…
</Roles>
</SPObject>
<SPObject Id="373ea0ba-107a-4a78-9563-bc642f9ab14d" ObjectType="DeploymentRoleAssignments" ParentId="203e30e2-1139-4adf-b545-e74235f105c2" ParentWebId="203e30a2-1139-4acf-b535-e74235f105c2" ParentWebUrl="/teams/temp">
<RoleAssignments>
<RoleAssignment ScopeId="ffcab9b9-94ef-4701-e6d9-19a370760e1e" RoleDefWebId="203e11c2-1139-4abe-b534-e74235f106c2" RoleDefWebUrl="teams/temp" ObjectId="9f743aaf-65f9-473e-0c37-37f147960560" ObjectType="1" ObjectUrl="teams/temp/IWConvertedForms" AnonymousPermMask="0" />
<RoleAssignment ScopeId="c3f564f3-62cd-4b25-8da4-2da7722402ab" RoleDefWebId="203e30a2-1139-4acf-b535-e74255e105c2" RoleDefWebUrl="teams/temp" ObjectId="2b9b0a32-51fb-4af8-a218-c90f63fd1de4" ObjectType="1" ObjectUrl="teams/temp/Relationships List" AnonymousPermMask="0">
<Assignment RoleId="1073751825" PrincipalId="5" />
<Assignment RoleId="1073751825" PrincipalId="6" />
<Assignment RoleId="1073751826" PrincipalId="4" />
<Assignment RoleId="1073751828" PrincipalId="1" />
</RoleAssignment>
…
</RoleAssignments>
</SPObject>
…
</SPObjects>
Structures XSD contraintes
Inclus ci-dessous sont les fichiers XSD utilisés pour la validation du pack dans le pipeline importation lorsqu’elle diffère de celle du schéma complet 2013 qui est accessible sur documentation officielle SharePoint.
DeploymentExportSettings.XSD
Tableau 4 : Contrainte DeploymentExportSettings.XSD
<?xml version="1.0" encoding="utf-8" ?>
<xs:schema targetNamespace="urn:deployment-exportsettings-schema" elementFormDefault="qualified"
xmlns="urn:deployment-exportsettings-schema"
xmlns:mstns="urn:deployment-exportsettings-schema"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<!-- Guid SimpleType definition -->
<xs:simpleType name="Guid">
<xs:restriction base="xs:string"></xs:restriction>
</xs:simpleType>
<!-- Used for SPExportObjects -->
<xs:simpleType name="SPDeploymentObjectType">
<xs:restriction base="xs:string">
<xs:enumeration value="Folder" />
<xs:enumeration value="List" />
<xs:enumeration value="ListItem" />
<xs:enumeration value="File" />
</xs:restriction>
</xs:simpleType>
<!-- Used for SPExportObjects -->
<xs:simpleType name="SPIncludeDescendants">
<xs:restriction base="xs:string">
<xs:enumeration value="None" />
<xs:enumeration value="Content" />
<xs:enumeration value="All" />
</xs:restriction>
</xs:simpleType>
<!-- From SPDeploymentSettings -->
<xs:simpleType name="SPIncludeSecurity">
<xs:restriction base="xs:string">
<xs:enumeration value="None" />
<xs:enumeration value="WssOnly" />
<xs:enumeration value="All" />
</xs:restriction>
</xs:simpleType>
<!-- From SPExportSettings -->
<xs:simpleType name="SPIncludeVersions">
<xs:restriction base="xs:string">
<xs:enumeration value="LastMajor" />
<xs:enumeration value="CurrentVersion" />
<xs:enumeration value="LastMajorAndMinor" />
<xs:enumeration value="All" />
</xs:restriction>
</xs:simpleType>
<!-- From SPExportSettings -->
<xs:simpleType name="SPExportMethodType">
<xs:restriction base="xs:string">
<xs:enumeration value="ExportAll" />
<xs:enumeration value="ExportChanges" />
</xs:restriction>
</xs:simpleType>
<!-- This defines that the XML can contain 0-N instances of the -->
<!-- SPExportObjects element -->
<xs:complexType name="SPExportSettings">
<xs:sequence>
<xs:element name="ExportObjects" type="SPExportObjectCollection" minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
<!-- SPDeploymentSettings -->
<xs:attribute name="SiteUrl" type="xs:string" use="required" />
<xs:attribute name="FileLocation" type="xs:string" />
<xs:attribute name="BaseFileName" type="xs:string" />
<xs:attribute name="IncludeSecurity" type="SPIncludeSecurity" />
<!-- SPExportSettings -->
<xs:attribute name="IncludeVersions" type="SPIncludeVersions" />
<xs:attribute name="ExportMethod" type="SPExportMethodType" />
<xs:attribute name="ExportChangeToken" type="xs:string" />
<xs:attribute name="ExportPublicSchema" type="xs:boolean" default="true" />
<xs:attribute name="ExportFrontEndFileStreams" type="xs:boolean" default="true" />
<xs:attribute name="ExcludeDependencies" type="xs:boolean" />
<xs:anyAttribute namespace="##any" processContents="skip" />
</xs:complexType>
<xs:complexType name="SPExportObjectCollection">
<xs:sequence>
<xs:element name="DeploymentObject" type="SPExportObject" minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="SPExportObject">
<!-- SPDeploymentObject -->
<xs:attribute name="Id" type="Guid" />
<xs:attribute name="Type" type="SPDeploymentObjectType" />
<xs:attribute name="ParentId" type="Guid" />
<!-- SPExportObject -->
<xs:attribute name="Url" type="xs:string" />
<xs:attribute name="ExcludeChildren" type="xs:boolean" />
<xs:attribute name="IncludeDescendants" type="SPIncludeDescendants" />
<xs:attribute name="ExportChangeToken" type="xs:string" />
</xs:complexType>
<!--This defines that the XML can contain 0-N instances of the ExportSettings element-->
<xs:element name="ExportSettings" type="SPExportSettings" />
</xs:schema>
<!Including CommentFlags settings
<Comments>
<Comment Id="1" Text="SGVsbG8gd29ybGQgdmlkZW8gY29tbWVudCE=" ParentId="0" UserId="12" Created="2021-05-14T22:35:30.353Z" UIVersion="512" />
<Comment Id="2" Text="SGVsbG8gd29ybGQgdmlkZW8gcmVwbHku" ParentId="1" UserId="12" Created=2021-05-14T22:36:14.08Z" UIVersion="512" />
</Comments>
DeploymentLookupListMap.XSD
Il n’existe aucune modification du schéma pack complet 2013 actuel.
DeploymentManifest.XSD
Tableau 5 : Contrainte DeploymentManifest.XSD
<?xml version="1.0" encoding="utf-8" ?>
<xs:schema targetNamespace="urn:deployment-manifest-schema" elementFormDefault="qualified"
xmlns="urn:deployment-manifest-schema"
xmlns:mstns="urn:deployment-manifest-schema"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<!-- From CoreDefinitions.xsd -->
<xs:simpleType name="TRUEFALSE">
<xs:restriction base="xs:string">
<xs:enumeration value="TRUE" />
<xs:enumeration value="FALSE" />
<xs:enumeration value="true" />
<xs:enumeration value="false" />
</xs:restriction>
</xs:simpleType>
<!-- Guid SimpleType definition -->
<xs:simpleType name="Guid">
<xs:restriction base="xs:string"></xs:restriction>
</xs:simpleType>
<!-- SPGenericObjectCollection definition -->
<xs:complexType name="SPGenericObjectCollection">
<xs:sequence>
<xs:element name="SPObject" type="SPGenericObject" minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
<!-- Generic complex Type definition that wraps a SharePoint top-level element -->
<xs:complexType name="SPGenericObject">
<xs:sequence>
<xs:choice minOccurs="0" maxOccurs="1">
<xs:element name="List" type="SPList" />
<xs:element name="DocumentLibrary" type="SPDocumentLibrary" />
<xs:element name="ListItem" type="SPListItem" />
<xs:element name="Folder" type="SPFolder" />
<xs:element name="File" type="SPFile" />
<xs:element name="ContentType" type="SPContentType" />
<xs:element name="UserX" type="DeploymentUserX" />
<xs:element name="GroupX" type="DeploymentGroupX" />
<xs:element name="Roles" type="DeploymentRoles" />
<xs:element name="RoleX" type="DeploymentRoleX" />
<xs:element name="RoleAssignments" type="DeploymentRoleAssignments" />
<xs:element name="RoleAssignmentX" type="DeploymentRoleAssignmentX" />
</xs:choice>
</xs:sequence>
<xs:attribute name="ObjectType" type="SPObjectType" />
<xs:attribute name="Id" type="Guid" />
<xs:attribute name="ParentId" type="Guid" />
<xs:attribute name="Name" type="xs:string" />
<xs:attribute name="IsDeleted" type="xs:boolean" />
<xs:attribute name="IsSiteRename" type="xs:boolean" />
<xs:attribute name="ParentWebId" type="Guid" />
<xs:attribute name="ParentWebUrl" type="xs:string" use="optional" />
<xs:attribute name="ContentTypeId" type="xs:string" use ="optional" />
<xs:attribute name="Url" type="xs:string" />
</xs:complexType>
<xs:simpleType name="SPDictionaryEntryValueType">
<xs:restriction base="xs:string">
<xs:enumeration value="String" />
<xs:enumeration value="Integer" />
<xs:enumeration value="Time" />
<xs:enumeration value="StringVector" />
<xs:enumeration value="Boolean" />
<xs:enumeration value="FileSystemTime" />
<xs:enumeration value="IntVector" />
<xs:enumeration value="Double" />
<xs:enumeration value="LongText" />
<xs:enumeration value="Empty" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="SPDictionaryEntryAccess">
<xs:restriction base="xs:string">
<xs:enumeration value="ReadOnly" />
<xs:enumeration value="ReadWrite" />
</xs:restriction>
</xs:simpleType>
<!-- Enumeration of all the top-level serialized SharePoint Types -->
<xs:simpleType name="SPObjectType">
<xs:restriction base="xs:string">
<xs:enumeration value="SPList" />
<xs:enumeration value="SPDocumentLibrary" />
<xs:enumeration value="SPListItem" />
<xs:enumeration value="SPFolder" />
<xs:enumeration value="SPFile" />
<xs:enumeration value="SPContentType" />
<xs:enumeration value="SPDocumentTemplate" />
<xs:enumeration value="DeploymentUserX" />
<xs:enumeration value="DeploymentGroupX" />
<xs:enumeration value="DeploymentRoles" />
<xs:enumeration value="DeploymentRoleX" />
<xs:enumeration value="DeploymentRoleAssignments" />
<xs:enumeration value="DeploymentRoleAssignmentX" />
</xs:restriction>
</xs:simpleType>
<!-- Enumeration of all the non-top level serialized SharePoint Types -->
<xs:simpleType name="OtherObjectType">
<xs:restriction base="xs:string">
<xs:enumeration value="SPFileVersion" />
<xs:enumeration value="SPListEvent" />
<xs:enumeration value="SPListItemVersion" />
<xs:enumeration value="SPModerationInfo" />
</xs:restriction>
</xs:simpleType>
<!-- DeploymentRole definition -->
<xs:complexType name="DeploymentRole">
<xs:attribute name="RoleId" type="xs:string" use="required" />
<xs:attribute name="Title" type="xs:string" use="required" />
<xs:attribute name="Description" type="xs:string" use="optional" />
<xs:attribute name="PermMask" type="xs:string" use="required" />
<xs:attribute name="Hidden" type="xs:boolean" use="required" />
<xs:attribute name="RoleOrder" type="xs:string" use="optional" />
<xs:attribute name="Type" type="xs:string" use="optional" />
</xs:complexType>
<!-- DeploymentRoles definition -->
<xs:complexType name="DeploymentRoles">
<xs:sequence>
<xs:element name="Role" type="DeploymentRole" minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
<!-- DeploymentAssignment definition -->
<xs:complexType name="DeploymentAssignment">
<xs:attribute name="RoleId" type="xs:string" use="required" />
<xs:attribute name="PrincipalId" type="xs:string" use="required" />
</xs:complexType>
<!-- DeploymentRoleAssignment Definition -->
<xs:complexType name="DeploymentRoleAssignment">
<xs:sequence>
<xs:element name="Assignment" type="DeploymentAssignment" minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
<xs:attribute name="ScopeId" type="xs:string" use="required" />
<xs:attribute name="RoleDefWebId" type="xs:string" use="required" />
<xs:attribute name="RoleDefWebUrl" type="xs:string" use="required" />
<xs:attribute name="ObjectId" type="xs:string" use="required" />
<xs:attribute name="ObjectType" type="xs:string" use="required" />
<xs:attribute name="ObjectUrl" type="xs:string" use="required" />
<xs:attribute name="AnonymousPermMask" type="xs:string" />
</xs:complexType>
<xs:complexType name="DeploymentRoleAssignments">
<xs:sequence>
<xs:element name="RoleAssignment" type="DeploymentRoleAssignment" minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
<!-- SPProperty definition -->
<xs:complexType name="DictionaryEntry">
<xs:attribute name="Name" type="xs:string" use="required" />
<xs:attribute name="Value" type="xs:string" use="optional" />
<xs:attribute name="Value2" type="xs:string" use="optional" />
<xs:attribute name="Id" type="Guid" use="optional" />
<xs:attribute name="Type" type="SPDictionaryEntryValueType" default="String" use="optional" />
<xs:attribute name="Access" type="SPDictionaryEntryAccess" default="ReadWrite" use="optional" />
</xs:complexType>
<!-- Dictionary definition -->
<xs:complexType name="Dictionary">
<xs:sequence>
<xs:element name="Property" type="DictionaryEntry" minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
<!-- SPAttachment definition -->
<xs:complexType name="SPAttachment">
<xs:sequence>
<xs:element name="Properties" type="Dictionary" minOccurs="0" />
</xs:sequence>
<xs:attribute name="Name" type="xs:string" />
<xs:attribute name="DirName" type="xs:string" />
<xs:attribute name="Url" type="xs:string" />
<xs:attribute name="Id" type="Guid" />
<xs:attribute name="ParentWebId" type="Guid" />
<!-- Map to file on disk -->
<xs:attribute name="FileValue" type="xs:string" />
<xs:attribute name="MetaInfo" type="xs:string" use="optional" />
<xs:attribute name="Author" type="xs:string" use="optional" />
<xs:attribute name="ModifiedBy" type="xs:string" use="optional" />
<xs:attribute name="TimeCreated" type="xs:dateTime" use="optional" />
<xs:attribute name="TimeLastModified" type="xs:dateTime" use="optional" />
<!-- Case where it fails at export time but too late to ignore -->
<xs:attribute name="FailureMessage" type="xs:string" use="optional" />
</xs:complexType>
<!-- SPAttachmentCollection definition -->
<xs:complexType name="SPAttachmentCollection">
<xs:sequence>
<xs:element name="Attachment" type="SPAttachment" minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
<!-- SPLink definition -->
<xs:complexType name="SPLink">
<xs:sequence></xs:sequence>
<xs:attribute name="TargetId" type="Guid" use="required" />
<xs:attribute name="TargetUrl" type="xs:string" use="required" />
<xs:attribute name="IsDirty" type="xs:boolean" use="required" />
<xs:attribute name="WebPartId" type="Guid" use="optional" />
<xs:attribute name="LinkNumber" type="xs:int" use="optional" />
<xs:attribute name="Type" type="xs:unsignedByte" use="optional" />
<xs:attribute name="Security" type="xs:unsignedByte" use="optional" />
<xs:attribute name="Dynamic" type="xs:unsignedByte" use="optional" />
<xs:attribute name="ServerRel" type="xs:boolean" use="optional" />
<xs:attribute name="Level" type="xs:unsignedByte" use="optional" />
<xs:attribute name="Search" type="xs:string" use="optional" />
</xs:complexType>
<!-- SPLinkCollection definition -->
<xs:complexType name="SPLinkCollection">
<xs:sequence>
<xs:element name="Link" type="SPLink" minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
<!-- AnonymousState definition -->
<xs:simpleType name="AnonymousState">
<xs:restriction base="xs:string">
<xs:enumeration value="Disabled" />
<xs:enumeration value="Enabled" />
<xs:enumeration value="On" />
</xs:restriction>
</xs:simpleType>
<!-- SPModerationStatusType definition -->
<xs:simpleType name="SPModerationStatusType">
<xs:restriction base="xs:string">
<xs:enumeration value="Approved" />
<xs:enumeration value="Denied" />
<xs:enumeration value="Pending" />
<xs:enumeration value="Draft" />
<xs:enumeration value="Scheduled" />
</xs:restriction>
</xs:simpleType>
<!-- SPModerationInformation definition -->
<xs:complexType name="SPModerationInformation">
<xs:attribute name="Comment" type="xs:string" />
<xs:attribute name="ModerationStatus" type="SPModerationStatusType" />
</xs:complexType>
<!-- SPBaseType definition -->
<xs:simpleType name="SPBaseType">
<xs:restriction base="xs:string">
<xs:enumeration value="UnspecifiedBaseType" />
<xs:enumeration value="GenericList" />
<xs:enumeration value="DocumentLibrary" />
<xs:enumeration value="Unused" />
<xs:enumeration value="DiscussionBoard" />
<xs:enumeration value="Survey" />
<xs:enumeration value="Issue" />
</xs:restriction>
</xs:simpleType>
<!-- SPListTemplateType definition -->
<xs:simpleType name="SPListTemplateType">
<xs:restriction base="xs:string"></xs:restriction>
</xs:simpleType>
<!-- DraftVisibilityType definition -->
<xs:simpleType name="DraftVisibilityType">
<xs:restriction base="xs:string">
<xs:enumeration value="Reader" />
<xs:enumeration value="Author" />
<xs:enumeration value="Approver" />
</xs:restriction>
</xs:simpleType>
<!-- SPEventHostType definition -->
<xs:simpleType name="SPEventHostType">
<xs:restriction base="xs:string">
<xs:enumeration value="Site" />
<xs:enumeration value="Web" />
<xs:enumeration value="List" />
<xs:enumeration value="ListItem" />
<xs:enumeration value="ContentType" />
<xs:enumeration value="Feature" />
</xs:restriction>
</xs:simpleType>
<!-- SPEventReceiverSynchronization definition -->
<xs:simpleType name="SPEventReceiverSynchronization">
<xs:restriction base="xs:string">
<xs:enumeration value="Default" />
<xs:enumeration value="Synchronous" />
<xs:enumeration value="Asynchronous" />
</xs:restriction>
</xs:simpleType>
<!-- SPEventReceiverType definition -->
<xs:simpleType name="SPEventReceiverType">
<xs:restriction base="xs:string">
<xs:enumeration value="ItemAdding" />
<xs:enumeration value="ItemUpdating" />
<xs:enumeration value="ItemDeleting" />
<xs:enumeration value="ItemCheckingIn" />
<xs:enumeration value="ItemCheckingOut" />
<xs:enumeration value="ItemUncheckingOut" />
<xs:enumeration value="ItemAttachmentAdding" />
<xs:enumeration value="ItemAttachmentDeleting" />
<xs:enumeration value="ItemFileMoving" />
<xs:enumeration value="ItemVersionDeleting" />
<xs:enumeration value="FieldAdding" />
<xs:enumeration value="FieldUpdating" />
<xs:enumeration value="FieldDeleting" />
<xs:enumeration value="ListAdding" />
<xs:enumeration value="ListDeleting" />
<xs:enumeration value="SiteDeleting" />
<xs:enumeration value="WebDeleting" />
<xs:enumeration value="WebMoving" />
<xs:enumeration value="WebAdding" />
<xs:enumeration value="GroupAdding" />
<xs:enumeration value="GroupUpdating" />
<xs:enumeration value="GroupDeleting" />
<xs:enumeration value="GroupUserAdding" />
<xs:enumeration value="GroupUserDeleting" />
<xs:enumeration value="RoleDefinitionAdding" />
<xs:enumeration value="RoleDefinitionUpdating" />
<xs:enumeration value="RoleDefinitionDeleting" />
<xs:enumeration value="RoleAssignmentAdding" />
<xs:enumeration value="RoleAssignmentDeleting" />
<xs:enumeration value="InheritanceBreaking" />
<xs:enumeration value="InheritanceResetting" />
<xs:enumeration value="ItemAdded" />
<xs:enumeration value="ItemUpdated" />
<xs:enumeration value="ItemDeleted" />
<xs:enumeration value="ItemCheckedIn" />
<xs:enumeration value="ItemCheckedOut" />
<xs:enumeration value="ItemUncheckedOut" />
<xs:enumeration value="ItemAttachmentAdded" />
<xs:enumeration value="ItemAttachmentDeleted" />
<xs:enumeration value="ItemFileMoved" />
<xs:enumeration value="ItemFileConverted" />
<xs:enumeration value="ItemFileTransformed" />
<xs:enumeration value="ItemVersionDeleted" />
<xs:enumeration value="FieldAdded" />
<xs:enumeration value="FieldUpdated" />
<xs:enumeration value="FieldDeleted" />
<xs:enumeration value="ListAdded" />
<xs:enumeration value="ListDeleted" />
<xs:enumeration value="SiteDeleted" />
<xs:enumeration value="WebDeleted" />
<xs:enumeration value="WebMoved" />
<xs:enumeration value="WebProvisioned" />
<xs:enumeration value="WebRestored" />
<xs:enumeration value="GroupAdded" />
<xs:enumeration value="GroupUpdated" />
<xs:enumeration value="GroupDeleted" />
<xs:enumeration value="GroupUserAdded" />
<xs:enumeration value="GroupUserDeleted" />
<xs:enumeration value="RoleDefinitionAdded" />
<xs:enumeration value="RoleDefinitionUpdated" />
<xs:enumeration value="RoleDefinitionDeleted" />
<xs:enumeration value="RoleAssignmentAdded" />
<xs:enumeration value="RoleAssignmentDeleted" />
<xs:enumeration value="InheritanceBroken" />
<xs:enumeration value="InheritanceReset" />
<xs:enumeration value="EmailReceived" />
<xs:enumeration value="ContextEvent" />
<xs:enumeration value="InvalidReceiver" />
<xs:enumeration value="WorkflowCompleted" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="DefaultItemOpen">
<xs:restriction base="xs:string">
<xs:enumeration value="Browser" />
<xs:enumeration value="PreferClient" />
</xs:restriction>
</xs:simpleType>
<!-- SPList definition -->
<xs:complexType name="SPList">
<xs:sequence >
<xs:choice minOccurs="0" maxOccurs="11">
<xs:element name="ContentTypes" type="SPContentTypeCollection" minOccurs="0" maxOccurs="1" />
<xs:element name="DeletedContentTypes" type="ListDeletedContentTypes" minOccurs="0" maxOccurs="1" />
</xs:choice>
</xs:sequence>
<xs:attribute name="Id" type="Guid" use="required" />
<xs:attribute name="Title" type="xs:string" use="required" />
<xs:attribute name="RootFolderId" type="Guid" />
<xs:attribute name="RootFolderUrl" type="xs:string" use="required" />
<xs:attribute name="ParentWebId" type="Guid" use="required" />
<xs:attribute name="ParentWebUrl" type="xs:string" use="optional" />
<xs:attribute name="BaseType" type="SPBaseType" />
<xs:attribute name="BaseTemplate" type="SPListTemplateType" use="required" />
</xs:complexType>
<xs:complexType name="SPFieldCollection" mixed="true">
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element name="FieldRef" type="SPFieldLink" minOccurs="0" maxOccurs="unbounded" />
<xs:element name="Field" type="SPField" minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="SPField">
<xs:sequence>
<xs:any minOccurs="0" maxOccurs="unbounded" namespace="##any" processContents="skip" />
</xs:sequence>
<xs:attribute name="ID" type="Guid" />
<xs:attribute name="FieldId" type="Guid" use="optional" />
<xs:attribute name="Name" type="xs:string" />
<xs:attribute name="Value" type="xs:string" />
<xs:attribute name="DisplayName" type="xs:string" />
<xs:attribute name="RowOrdinal" type="xs:int" />
<xs:attribute name="RowOrdinal2" type="xs:int" use="optional" />
<xs:attribute name="Type" type="xs:string" />
<xs:attribute name="ColName" type="xs:string" />
<xs:attribute name="ColName2" type="xs:string" use="optional" />
<xs:attribute name="Title" type="xs:string" use="optional" />
<xs:attribute name="Description" type="xs:string" use="optional" />
<xs:attribute name="DefaultValue" type="xs:string" use="optional" />
<xs:attribute name="DefaultFormula" type="xs:string" use="optional" />
<xs:attribute name="FromBaseType" type="xs:string" use="optional" />
<xs:attribute name="Sealed" type="xs:string" />
<xs:attribute name="CanToggleHidden" type="xs:string" use="optional" />
<xs:attribute name="DisplaySize" type="xs:string" use="optional" />
<xs:attribute name="Required" type="xs:string" use="optional" />
<xs:attribute name="ReadOnly" type="xs:string" use="optional" />
<xs:attribute name="Hidden" type="xs:string" use="optional" />
<xs:attribute name="Direction" type="xs:string" use="optional" />
<xs:attribute name="IMEMode" type="xs:string" use="optional" />
<xs:attribute name="SortableBySchema" type="xs:string" use="optional" />
<xs:attribute name="Sortable" type="xs:string" use="optional" />
<xs:attribute name="FilterableBySchema" type="xs:string" use="optional" />
<xs:attribute name="Filterable" type="xs:string" use="optional" />
<xs:attribute name="FilterableNoRecurrenceBySchema" type="xs:string" use="optional" />
<xs:attribute name="FilterableNoRecurrence" type="xs:string" use="optional" />
<xs:attribute name="Reorderable" type="xs:string" use="optional" />
<xs:attribute name="Format" type="xs:string" use="optional" />
<xs:attribute name="FillInChoice" type="xs:string" use="optional" />
<xs:attribute name="SchemaXml" type="xs:string" use="optional" />
<xs:attribute name="JSLink" type="xs:string" use="optional" />
<xs:attribute name="CAMLRendering" type="xs:string" use="optional" />
<xs:attribute name="ServerRender" type="xs:string" use="optional" />
<xs:attribute name="ListItemMenu" type="xs:string" use="optional" />
<xs:attribute name="ListItemMenuAllowed" type="xs:string" use="optional" />
<xs:attribute name="LinkToItem" type="xs:string" use="optional" />
<xs:attribute name="LinkToItemAllowed" type="xs:string" use="optional" />
<xs:attribute name="CalloutMenu" type="xs:string" use="optional" />
<xs:attribute name="CalloutMenuAllowed" type="xs:string" use="optional" />
<!-- Label definition -->
<xs:attribute name="ListDefaultCompliancetagWrittenTime" type="xs:dateTime" use="optional" />
<xs:attribute name="ListDefaultComplianceTagUserId" type="xs:int" use="optional" />
<!-- ListDefaultComplianceFlags is a Flags dependes on the Label, if the Label has Keep or KeepAndDelete ( that will have the 0x01 bit set). If the Label is a record label, that will have 0x01 and 0x04 set -->
<xs:attribute name="ListDefaultComplianceFlags" type="xs:int" use="optional" />
<xs:attribute name="ListDefaultComplianceTag" type="xs:string" use="optional" />
<!-- end of Label definition -->
<xs:anyAttribute namespace="##any" processContents="skip" />
</xs:complexType>
<!-- FieldDataCollection definition -->
<xs:complexType name="FieldDataCollection">
<xs:sequence>
<xs:element name="Field" type="DictionaryEntry" minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
<!-- SPEventReceiverDefinitionCollection definition -->
<xs:complexType name="SPEventReceiverDefinitionCollection">
<xs:sequence>
<xs:element name="EventReceiver" type="SPEventReceiverDefinition" minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
<!-- SPEventReceiverDefinition definition -->
<xs:complexType name="SPEventReceiverDefinition">
<xs:attribute name="Id" type="Guid" use="required" />
<xs:attribute name="Name" type="xs:string" use="required" />
<xs:attribute name="WebId" type="Guid" use="required" />
<xs:attribute name="HostId" type="Guid" use="required" />
<xs:attribute name="HostType" type="SPEventHostType" use="required" />
<xs:attribute name="Synchronization" type="SPEventReceiverSynchronization" use="optional" />
<xs:attribute name="Type" type="SPEventReceiverType" use="required" />
<xs:attribute name="SequenceNumber" type="xs:int" use="required" />
<xs:attribute name="Url" type="xs:string" use="optional" />
<xs:attribute name="Assembly" type="xs:string" use="optional" />
<xs:attribute name="Class" type="xs:string" use="optional" />
<xs:attribute name="SolutionId" type="Guid" use="optional" />
<xs:attribute name="Data" type="xs:string" use="optional" />
<xs:attribute name="Filter" type="xs:string" use="optional" />
<xs:attribute name="Credential" type="xs:int" use="optional" />
<xs:attribute name="ItemId" type="xs:int" use="optional" />
</xs:complexType>
<!-- ListDeletedContentTypes definition -->
<xs:complexType name="ListDeletedContentTypes">
<xs:sequence>
<xs:element name="DeletedContentType" type="DeletedContentType" minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
<!-- DeletedContentType definition -->
<xs:complexType name="DeletedContentType">
<xs:attribute name="ContentTypeId" type="xs:string" use="required" />
</xs:complexType>
<!-- SPDocumentLibrary definition -->
<xs:complexType name="SPDocumentLibrary">
<xs:complexContent>
<xs:extension base="SPList">
<xs:attribute name="DocumentTemplateUrl" type="xs:string" />
<xs:attribute name="IsCatalog" type="xs:boolean" />
<xs:attribute name="ThumbnailSize" type="xs:int" />
<xs:attribute name="WebImageHeight" type="xs:int" />
<xs:attribute name="WebImageWidth" type="xs:int" />
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!-- SPFolder definition -->
<xs:complexType name="SPFolder">
<xs:sequence>
<xs:element name="Properties" type="Dictionary" minOccurs="0" />
</xs:sequence>
<xs:attribute name="Id" type="Guid" />
<xs:attribute name="Name" type="xs:string" />
<xs:attribute name="Url" type="xs:string" />
<xs:attribute name="ParentFolderId" type="Guid" />
<xs:attribute name="ParentWebId" type="Guid" />
<xs:attribute name="ParentWebUrl" type="xs:string" use="optional" />
<xs:attribute name="ContainingDocumentLibrary" type="Guid" />
<xs:attribute name="WelcomePageUrl" type="xs:string" use="optional" />
<xs:attribute name="WelcomePageParameters" type="xs:string" use="optional" />
<xs:attribute name="ListItemIntId" type="xs:int" use="optional" />
<xs:attribute name="Author" type="xs:string" use="optional" />
<xs:attribute name="ModifiedBy" type="xs:string" use="optional" />
<xs:attribute name="TimeCreated" type="xs:dateTime" use="optional" />
<xs:attribute name="TimeLastModified" type="xs:dateTime" use="optional" />
<xs:attribute name="ProgId" type="xs:string" use="optional" />
<xs:attribute name="SortBehavior" type="xs:string" use="optional" />
</xs:complexType>
<!-- SPFileVersion Collection definition -->
<xs:complexType name="SPFileVersionCollection">
<xs:sequence>
<xs:element name="File" type="SPFile" minOccurs="1" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
<!-- SPListItemVersion Collection definition -->
<xs:complexType name="SPListItemVersionCollection">
<xs:sequence>
<xs:element name="ListItem" type="SPListItem" minOccurs="1" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
<!-- SPFileVersionEvent Collection definition -->
<xs:complexType name="SPFileVersionEventCollection">
<xs:sequence>
<xs:element name="VersionEvent" type="SPFileVersionEvent" minOccurs="1" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="SPFileVersionEvent">
<xs:attribute name="Id" type="xs:int" />
<xs:attribute name="UIVersion" type="xs:int" />
<xs:attribute name="Type" type="xs:int" />
<xs:attribute name="Time" type="xs:dateTime" />
<xs:attribute name="UserId" type="xs:int" />
</xs:complexType>
<!-- SPFile definition -->
<xs:complexType name="SPFile">
<xs:sequence>
<xs:element name="Properties" type="Dictionary" minOccurs="0" />
<xs:element name="Versions" type="SPFileVersionCollection" minOccurs="0" maxOccurs="1" />
<xs:element name="Links" type="SPLinkCollection" minOccurs="0" maxOccurs="1" />
<xs:element name="EventReceivers" type="SPEventReceiverDefinitionCollection" minOccurs="0" maxOccurs="1" />
<xs:element name="VersionEvents" type="SPFileVersionEventCollection" minOccurs="0" maxOccurs="1" />
</xs:sequence>
<xs:attribute name="Name" type="xs:string" />
<xs:attribute name="Id" type="Guid" />
<xs:attribute name="Url" type="xs:string" />
<xs:attribute name="ListItemIntId" type="xs:int" />
<xs:attribute name="InDocumentLibrary" type="xs:boolean" />
<xs:attribute name="ParentWebId" type="Guid" />
<xs:attribute name="ParentWebUrl" type="xs:string" />
<xs:attribute name="ParentId" type="Guid" />
<xs:attribute name="ListId" type="Guid" use="optional" />
<!-- Map to file on disk -->
<xs:attribute name="FileValue" type="xs:string" use="optional" />
<xs:attribute name="CheckinComment" type="xs:string" use="optional" />
<xs:attribute name="Version" type="xs:string" use="optional" default="1.0" />
<xs:attribute name="Author" type="xs:string" use="optional" />
<xs:attribute name="ModifiedBy" type="xs:string" use="optional" />
<xs:attribute name="TimeCreated" type="xs:dateTime" use="optional" />
<xs:attribute name="TimeLastModified" type="xs:dateTime" use="optional" />
<!-- Case where it fails at export time but too late to ignore -->
<xs:attribute name="FailureMessage" type="xs:string" use="optional" />
<!-- Setup Path Information -->
<xs:attribute name="IsGhosted" type="xs:boolean" use="optional" />
<xs:attribute name="SetupPath" type="xs:string" use="optional" />
<xs:attribute name="SetupPathUser" type="xs:string" use="optional" />
<!-- Use: 2, 3, 4 OR 15 -->
<xs:attribute name="SetupPathVersion" type="xs:byte" default="15" />
<xs:anyAttribute namespace="##any" processContents="skip" />
</xs:complexType>
<!-- Doc Type of List Item -->
<xs:simpleType name="ListItemDocType">
<xs:restriction base="xs:string">
<xs:enumeration value="File" />
<xs:enumeration value="Folder" />
<xs:enumeration value="Unknown" />
</xs:restriction>
</xs:simpleType>
<!-- SPListItem definition -->
<xs:complexType name="SPListItem">
<xs:sequence>
<xs:choice minOccurs="0" maxOccurs="5">
<xs:element name="Fields" type="SPFieldCollection" minOccurs="0" maxOccurs="1" />
<xs:element name="Versions" type="SPListItemVersionCollection" minOccurs="0" maxOccurs="1" />
<xs:element name="Attachments" type="SPAttachmentCollection" minOccurs="0" maxOccurs="1" />
<xs:element name="Links" type="SPLinkCollection" minOccurs="0" maxOccurs="1" />
<xs:element name="EventReceivers" type="SPEventReceiverDefinitionCollection" minOccurs="0" maxOccurs="1" />
</xs:choice>
</xs:sequence>
<xs:attribute name="Name" type="xs:string" />
<xs:attribute name="DirName" type="xs:string" />
<xs:attribute name="FileUrl" type="xs:string" use="optional" />
<xs:attribute name="Version" type="xs:string" use="optional" default="1.0" />
<xs:attribute name="Id" type="Guid" />
<xs:attribute name="IntId" type="xs:int" />
<xs:attribute name="DocId" type="Guid" use="optional" />
<xs:attribute name="Author" type="xs:string" use="optional" />
<xs:attribute name="ModifiedBy" type="xs:string" use="optional" />
<xs:attribute name="TimeCreated" type="xs:dateTime" use="optional" />
<xs:attribute name="TimeLastModified" type="xs:dateTime" use="optional" />
<xs:attribute name="ParentWebId" type="Guid" />
<xs:attribute name="ParentListId" type="Guid" />
<xs:attribute name="ParentFolderId" type="Guid" use="optional" />
<xs:attribute name="ModerationStatus" type="SPModerationStatusType" use="optional" />
<xs:attribute name="ModerationComment" type="xs:string" use="optional" />
<xs:attribute name="ContentTypeId" type="xs:string" />
<xs:attribute name="ProgId" type="xs:string" use="optional" />
<xs:attribute name="Order" type="xs:float" use="optional" />
<xs:attribute name="ThreadIndex" type="xs:string" use="optional" />
<xs:attribute name="UserSolutionActivated" type="xs:boolean" use="optional" />
<xs:attribute name="DocType" type="ListItemDocType" default="File" />
<!-- UserInfo -->
<xs:attribute name="UserLoginName" type="xs:string" use="optional" />
<xs:attribute name="GroupName" type="xs:string" use="optional" />
<!-- Case where it fails at export time but too late to ignore -->
<xs:attribute name="FailureMessage" type="xs:string" use="optional" />
<xs:anyAttribute namespace="##any" processContents="skip" />
</xs:complexType>
<xs:complexType name="SPFieldLink">
<xs:attribute name="Name" type="xs:string" />
<xs:attribute name="ID" type="Guid" use="optional" />
<xs:attribute name="Customization" type="xs:string" use="optional" />
<xs:attribute name="Default" type="xs:string" use="optional" />
<xs:attribute name="ColName" type="xs:string" use="optional" />
<xs:attribute name="ColName2" type="xs:string" use="optional" />
<xs:attribute name="RowOrdinal" type="xs:int" use="optional" />
<xs:attribute name="RowOrdinal2" type="xs:int" use="optional" />
<xs:attribute name="Hidden" type="TRUEFALSE" use="optional" />
<xs:attribute name="Required" type="TRUEFALSE" use="optional" />
<xs:attribute name="Explicit" type="xs:string" use="optional" />
<xs:attribute name="ShowInNewForm" type="xs:string" use="optional" />
<xs:attribute name="ShowInEditForm" type="xs:string" use="optional" />
<xs:attribute name="DisplayName" type="xs:string" use="optional" />
<xs:attribute name="Node" type="xs:string" use="optional" />
<xs:anyAttribute namespace="##any" processContents="skip" />
</xs:complexType>
<xs:complexType name="SPXmlDocumentCollection">
<xs:sequence >
<xs:any minOccurs="0" maxOccurs="unbounded" namespace="##any" processContents="skip" />
</xs:sequence>
<xs:anyAttribute namespace="##any" processContents="skip" />
</xs:complexType>
<xs:complexType name="SPContentType">
<xs:sequence>
<xs:any minOccurs="0" maxOccurs="unbounded" namespace="##any" processContents="skip" />
</xs:sequence>
<xs:attribute name="ID" type="Guid" />
<xs:attribute name="Name" type="xs:string" />
<xs:attribute name="Scope" type="xs:string" />
<xs:attribute name="NextChildByte" type="xs:short" />
<xs:attribute name="ParentWebId" type="Guid" />
<xs:attribute name="ListId" type="Guid" use="optional" />
<xs:attribute name="Description" type="xs:string" use="optional" />
<xs:attribute name="Hidden" type="TRUEFALSE" use="optional" />
<xs:attribute name="ReadOnly" type="TRUEFALSE" use="optional" />
<xs:attribute name="Group" type="xs:string" use="optional" />
<xs:attribute name="PushDownChanges" type="xs:boolean" use="optional" />
<xs:attribute name="RequireClientRenderingOnNew" type="xs:string" use="optional" />
<xs:anyAttribute namespace="##any" processContents="skip" />
</xs:complexType>
<xs:complexType name="SPContentTypeRef">
<xs:sequence>
<xs:any minOccurs="0" maxOccurs="unbounded" namespace="##any" processContents="skip" />
</xs:sequence>
<xs:attribute name="ID" type="Guid" />
<xs:anyAttribute namespace="##any" processContents="skip" />
</xs:complexType>
<xs:complexType name="SPContentTypeFolder">
<xs:attribute name="TargetName" type="xs:string" />
<xs:anyAttribute namespace="##any" processContents="skip" />
</xs:complexType>
<xs:complexType name="SPContentTypeCollection">
<xs:sequence>
<xs:any minOccurs="0" maxOccurs="unbounded" namespace="##any" processContents="skip" />
</xs:sequence>
</xs:complexType>
<!--This defines that the XML can contain 0-N instances of the SPGenericObject element-->
<xs:element name="SPObjects" type="SPGenericObjectCollection"></xs:element>
</xs:schema>
<Comments>
<Comment Id="1" Text="SGVsbG8gd29ybGQgdmlkZW8gY29tbWVudCE=" ParentId="0" UserId="12" Created="2021-05-14T22:35:30.353Z" UIVersion="512" />
<Comment Id="2" Text="SGVsbG8gd29ybGQgdmlkZW8gcmVwbHku" ParentId="1" UserId="12" Created=2021-05-14T22:36:14.08Z" UIVersion="512" />
</Comments>
DeploymentRequirements.XSD
Il n’existe aucune modification du schéma pack complet 2013 actuel.
DeploymentRootObjectMap.XSD
Tableau 6 : Contrainte DeploymentRootObjectMap.XSD
<?xml version="1.0" encoding="utf-8" ?>
<xs:schema targetNamespace="urn:deployment-rootobjectmap-schema" elementFormDefault="qualified"
xmlns="urn:deployment-rootobjectmap-schema"
xmlns:mstns="urn:deployment-rootobjectmap-schema"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<!-- Guid SimpleType definition -->
<xs:simpleType name="Guid">
<xs:restriction base="xs:string"></xs:restriction>
</xs:simpleType>
<xs:simpleType name="SPDeploymentObjectType">
<xs:restriction base="xs:string">
<xs:enumeration value="Folder" />
<xs:enumeration value="List" />
<xs:enumeration value="ListItem" />
<xs:enumeration value="File" />
</xs:restriction>
</xs:simpleType>
<xs:complexType name="SPRootObject">
<xs:attribute name="Id" type="Guid" />
<xs:attribute name="Type" type="SPDeploymentObjectType" />
<xs:attribute name="ParentId" type="Guid" />
<xs:attribute name="WebUrl" type="xs:string" />
<xs:attribute name="Url" type="xs:string" />
<xs:attribute name="IsDependency" type="xs:boolean" />
</xs:complexType>
<xs:complexType name="SPRootObjects">
<xs:sequence>
<xs:element name="RootObject" type="SPRootObject" minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
<xs:element name="RootObjects" type="SPRootObjects" />
</xs:schema>
DeploymentSystemData.XSD
Il n’existe aucune modification du schéma pack complet 2013 actuel.
DeploymentUserGroupMap.XSD
Il n’existe aucune modification du schéma pack complet 2013 actuel.
DeploymentViewFormsList.XSD
Il n’existe aucune modification du schéma pack complet 2013 actuel.
Exemple : utilisation de la fonction REST pour appeler l’API
https://{site_url}/_api/site/CreateMigrationJobEncrypted
{
"options": {
"AES256CBCKey": "000000000000000000000000000000000000000000000000000000="
},
"gWebId": "00000000-0000-0000-0000-000000000000",
"azureContainerSourceUri": "https://<spam><spam>tenant.blob.core.windows.net:443/00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000<spam><spam>=rw",
"azureContainerManifestUri": "https://<spam><spam>tenant.blob.core.windows.net:443/00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000<spam><spam>=rw"
}
En ce qui concerne le conteneur :
https://{site_url}/_api/site/ProvisionMigrationContainers
Notes
L’API Migration n’est actuellement pas disponible pour les utilisateurs d’Office 365 géré par 21Vianet en Chine. Il n’est pas disponible pour les utilisateurs d’Office 365 utilisant le cloud allemand proposé par le tiers de confiance pour les données Deutsche Telekom. Toutefois, il est pris en charge pour les utilisateurs situés en Allemagne dont les données ne sont pas stockées dans le centre de données allemand.