Skip to content

Commit 5996a6d

Browse files
committed
Adding new migration API articles
1 parent a8c6a28 commit 5996a6d

File tree

3 files changed

+32
-39
lines changed

3 files changed

+32
-39
lines changed

docs/apis/migration-api-handling-trottling.md

Lines changed: 13 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -4,55 +4,48 @@ ms.author: jhendr
44
author: JoanneHendrickson
55
manager: pamgreen
66
ms.date: 6/10/2018
7-
ms.audience: ITPro
87
ms.topic: article
9-
ms.prod: sharepoint-server-itpro
10-
localization_priority: Priority
11-
ms.collection:
12-
- IT_Sharepoint_Server_Top
13-
ms.custom:
14-
ms.assetid:
158
description: "Migration is critical for SPO and is prioritized alongside service availability."
16-
---
17-
# Running Migrations into OneDrive and SharePoint Online: Throttling
9+
---
10+
11+
# Running Migrations into OneDrive and SharePoint Online: Throttling
12+
13+
This document is intended for ISVs migrating content into OneDrive and SharePoint only.
1814

19-
This document is intended for ISVs migrating content into OneDrive and SharePoint only.
15+
## Context and Expectations Setting
2016

21-
## Context and Expectations Setting
2217
Migration is critical for SPO and is prioritized alongside service availability. When we detect that service availability may be threatened, 429 response codes are sent back to protect the experience of end users.
2318

2419
429 is a normal part of any well-functioning cloud system; the expectation is that background tasks will get 429s and all background task callers (both ISVs and Microsoft apps) should ride through them without direct customer impact to their own end users.
2520

2621
The number of 429s sent back is a function of the current load on the farm, as well as other tenant/farm level variables. Therefore, it is important to focus on migration throughput rather than the number of 429s themselves.
2722

28-
Set expectations with customers:
23+
Set expectations with customers:
2924

3025
- Expect to create and manage migration efforts at any time
3126
- Expect content migration throughput to be higher during off-peak times and lower during peak times.
3227

33-
Overall throughput over the duration of a day still aligns with our public documentation here.
28+
Overall throughput over the duration of a day still aligns with our public documentation here.
3429

3530
## Best Practices
36-
31+
3732
Below are the key best practices we recommend migration vendors follow.
3833

39-
**Interactive flag:**<br>Include an *interactive flag* in your user agent string for interactive calls such as user login, launch jobs, etc. For example: *ISV|VendorName|AppName/Version|Interactive* <br>
34+
**Interactive flag:**<br>Include an *interactive flag* in your user agent string for interactive calls such as user login, launch jobs, etc. For example: `ISV|VendorName|AppName/Version|Interactive` <br>
4035

41-
We allow 300 calls every 5 minutes for handling small migrations and site management that customers expect to complete interactively.
36+
We allow 300 calls every 5 minutes for handling small migrations and site management that customers expect to complete interactively.
4237

4338
> [!NOTE]
4439
> Once you have implemented Interactive flag for the system to pick that cue, it may not be instantaneous; allow a few days for it to take effect.
4540
46-
47-
4841
**Retry value**:<br>Use the retry value in the http header of the 429 message and do not exponential back-off.
4942

5043
**429:**<br>Do not handle 429 as an error condition displayed to the user. When 429 does occur, handle it as a background task retry and do not prompt users to contact support.
5144

5245
- If users cannot login or if jobs are not progressing, please escalate.
53-
5446
- If you are seeing over 30% of requests getting 429 over 30 minutes, please escalate.
5547

5648
**Throughput:**<br>Expect throughput to be lower during peak hours as opposed to off-peak hours. Generally, nights and weekends in the customer’s time zone (the time zone of the region where their SPO tenant is setup) are off-peak. Customers should be encouraged to move migration to off-peak hours if possible.
57-
- If throughput during peak hours is an order of magnitude worse than off-peak hours, that should be escalated
49+
50+
- If throughput during peak hours is an order of magnitude worse than off-peak hours, that should be escalated.
5851

docs/apis/migration-api-shared.md

Lines changed: 15 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,48 +1,44 @@
11
---
2-
title: "SPO Migration API: Sharing"
2+
title: "SPO Migration API: Sharing"
33
ms.author: jhendr
44
author: JoanneHendrickson
55
manager: pamgreen
66
ms.date: 6/10/2018
7-
ms.audience: ITPro
87
ms.topic: article
9-
ms.prod: sharepoint-server-itpro
10-
localization_priority: Priority
11-
ms.collection:
12-
- IT_Sharepoint_Server_Top
13-
ms.custom:
14-
ms.assetid:
158
description: "The per user sharing model in SharePoint relies on both permissions and Shared With data references for an object to be considered shared with an individual."
169
---
1710

18-
# SPO Migration API: Sharing
11+
# SPO Migration API: Sharing
1912

2013
## Details on sharing and permissions
2114

22-
The per user sharing model in SharePoint relies on both permissions and “Shared With” data references for an object to be considered shared with an individual. If a user has access to content, but no “Shared With” references, they will not see the content show up in their *Shared With Me* view within their OneDrive For Business site.
15+
The per user sharing model in SharePoint relies on both permissions and “Shared With” data references for an object to be considered shared with an individual. If a user has access to content, but no *“Shared With”* references, they will not see the content show up in their **Shared With Me** view within their OneDrive For Business site.
2316

24-
However, if they are indicated in “Shared With” references but do not have any access to the content, they will either never see the content show up in their *Shared With Me* view within their OneDrive For Business site or when they try to use a link from there it will be denied access. To preserve sharing information, both the permissions and “Shared With” references will need to be correctly set. The permissions can be set at different levels of the content hierarchy using scopes (unique ACLs), that apply to that object and any of its children unless they themselves have unique permissions.
17+
However, if they are indicated in *“Shared With”* references but do not have any access to the content, they will either never see the content show up in their **Shared With Me** view within their OneDrive For Business site or when they try to use a link from there it will be denied access. To preserve sharing information, both the permissions and “Shared With” references will need to be correctly set. The permissions can be set at different levels of the content hierarchy using scopes (unique ACLs), that apply to that object and any of its children unless they themselves have unique permissions.
2518

2619
Using PRIME, content can be migrated in using SPFile/SPFolder objects with a document library followed by SPListItem objects that reference the imported File/Folder objects. During the ListItem import, the “Shared With” references data can be imported, and then the security can be applied afterward within the same migration package, by setting up scopes (ACLs) and role assignments (ACEs) for the content hierarchy as needed. Permissions migration is performed using the DeploymentRoleAssignments object with RoleAssignment entries representing specific scopes and Assignment entries representing assignments of specific roles to specific principals. Since this code ends up breaking inheritance for content and applying the specified role assignments, it has the same limitations as using other object model approaches to setting permissions in SharePoint.
2720

2821
> [!NOTE]
29-
> As you enumerate the security information on the source, you need to assess if you are at risk of hitting the SharePoint limits for ACL sizing (5000 max ACEs with recommendation of below 500 ACEs) and the maximum number of scopes -- unique ACLs.(There is a hard limit of 50,000 unique ACLs with a recommendation of below 5000 unique ACLs per document library). If you are close to reaching these limits, we recommend that the permission model be simplified on the source before migration.
22+
> As you enumerate the security information on the source, you need to assess if you are at risk of hitting the SharePoint limits for ACL sizing (5000 max ACEs with recommendation of below 500 ACEs) and the maximum number of scopes - unique ACLs (There is a hard limit of 50,000 unique ACLs with a recommendation of below 5000 unique ACLs per document library). If you are close to reaching these limits, we recommend that the permission model be simplified on the source before migration.
3023

3124
### SharedWithUser column:
3225

33-
SharedWithUsers column (not SharedWithMe) is not created during list creation. It is created during a share event which causes the specific columns to be ensured. If you share an item on a team site or ODB, you should see it get created. It is technically possible that the column could be explicitly created by code in advance of the migration (or in the migration package if we are allowing list column additions, which we may not be currently supporting), but we recommend against that in the case the SharedWithUsers column is not created correctly. For reference purposes, the SharedWithUsers column has a universal hard coded ID and is exported as the following information (note the SourceID value is the web’s ID):
26+
`SharedWithUsers` column (not *SharedWithMe*) is not created during list creation. It is created during a share event which causes the specific columns to be ensured. If you share an item on a team site or ODB, you should see it get created. It is technically possible that the column could be explicitly created by code in advance of the migration (or in the migration package if we are allowing list column additions, which we may not be currently supporting), but we recommend against that in the case the SharedWithUsers column is not created correctly.
3427

35-
```
28+
For reference purposes, the SharedWithUsers column has a universal hard coded ID and is exported as the following information (note the SourceID value is the web’s ID):
29+
30+
```xml
3631
<Field ID="{ef991a83-108d-4407-8ee5-ccc0c3d836b9}" Type="UserMulti" DisplayName="$Resources:core,SharedWithFieldDisplayName;" Mult="TRUE" Name="SharedWithUsers" StaticName="SharedWithUsers" Group="_Hidden" Sealed="TRUE" AllowDeletion="FALSE" ReadOnly="TRUE" ShowInDisplayForm="FALSE" ShowInEditForm="FALSE" ShowInListSettings="FALSE" Viewable="FALSE" SourceID="{a785ad58-1d57-4f8a-aa71-77170459bd0d}" Version="1" ColName="int1" RowOrdinal="0"/>
3732
```
33+
3834
It may be simpler to try sharing a single test item to someone from the target list before importing the rest of the migration package. This way the column is set up before you attempt to import the rest of the data. It is likely that you will need to verify some data on the target site first, so this could just be an additional preparation step.
3935

4036
**Example:**
4137

42-
Shared to single person<br>
38+
Shared to single person:<br>
4339
In the case of a file shared to a single person, the following data structure highlighted in yellow would be seen. Note that the bolded values have different values depending on the field/property in question, and although their additional formatting is different between then, that you must ensure the data is consistent between the three fields/properties:
4440

45-
```
41+
```xml
4642
<SPObject …>
4743
<File …>
4844
<Properties>
@@ -60,10 +56,10 @@ In the case of a file shared to a single person, the following data structure hi
6056
</SPObject>
6157
```
6258

63-
Shared to multiple people<br>
64-
59+
Shared to multiple people:<br>
6560
In the case of sharing with multiple people, note that for the main SharedWithUsers property and field the separator value (“;#”) is used not only between the user identifier and user’s title but also between the individual users, whereas for the display url field, only a semicolon is used to separate the display names.
66-
```
61+
62+
```xml
6763
<SPObject …>
6864
<File …>
6965
<Properties>

docs/toc.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -307,6 +307,10 @@
307307
href: apis/migration-api-azure-container-and-queue.md
308308
- name: Encryption
309309
href: apis/migration-api-encryption.md
310+
- name: Throttling
311+
href: apis/migration-api-handling-trottling.md
312+
- name: Sharing
313+
href: apis/migration-api-shared.md
310314
- name: Site design
311315
href: declarative-customization/site-design-overview.md
312316
items:

0 commit comments

Comments
 (0)