You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/apis/alm-api-for-spfx-add-ins.md
+9-9Lines changed: 9 additions & 9 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -223,17 +223,17 @@ Get-PnPApp -Scope Tenant
223
223
224
224
## Office 365 CLI commands to add, deploy, and manage SharePoint apps cross-platform
225
225
226
-
Using the [Office 365 CLI](https://sharepoint.github.io/office365-cli?utm_source=msft_docs&utm_medium=page&utm_campaign=Application+Lifecycle+Management+ALM+APIs), you can automate deploying, publishing, installing, upgrading, and retracting your apps. The Office 365 CLI is a cross-platform command-line interface that can be used on any platform, including Windows, MacOS, and Linux. To learn more about these commands, see the following sections.
226
+
Using the [Office 365 CLI](https://pnp.github.io/office365-cli?utm_source=msft_docs&utm_medium=page&utm_campaign=Application+Lifecycle+Management+ALM+APIs), you can automate deploying, publishing, installing, upgrading, and retracting your apps. The Office 365 CLI is a cross-platform command-line interface that can be used on any platform, including Windows, MacOS, and Linux. To learn more about these commands, see the following sections.
227
227
228
228
### Add and publish your app to the app catalog
229
229
230
-
Adding your app (.sppkg file, .app file) to the tenant app catalog is a prerequisite to making your app available for use on your SharePoint sites. Use the [add](https://sharepoint.github.io/office365-cli/cmd/spo/app/app-add/?utm_source=msft_docs&utm_medium=page&utm_campaign=Application+Lifecycle+Management+ALM+APIs) command to do this:
230
+
Adding your app (.sppkg file, .app file) to the tenant app catalog is a prerequisite to making your app available for use on your SharePoint sites. Use the [add](https://pnp.github.io/office365-cli/cmd/spo/app/app-add/?utm_source=msft_docs&utm_medium=page&utm_campaign=Application+Lifecycle+Management+ALM+APIs) command to do this:
231
231
232
232
```shell
233
233
spo app add --filePath ./spfx.sppkg
234
234
```
235
235
236
-
Once added, you need to continue with publishing your app, effectively making the app available to be used by the users of your tenant. Use the [deploy](https://sharepoint.github.io/office365-cli/cmd/spo/app/app-deploy/?utm_source=msft_docs&utm_medium=page&utm_campaign=Application+Lifecycle+Management+ALM+APIs) command to do this:
236
+
Once added, you need to continue with publishing your app, effectively making the app available to be used by the users of your tenant. Use the [deploy](https://pnp.github.io/office365-cli/cmd/spo/app/app-deploy/?utm_source=msft_docs&utm_medium=page&utm_campaign=Application+Lifecycle+Management+ALM+APIs) command to do this:
You may want to remove an app that you added earlier, and you can do this by using the [remove](https://sharepoint.github.io/office365-cli/cmd/spo/app/app-remove/?utm_source=msft_docs&utm_medium=page&utm_campaign=Application+Lifecycle+Management+ALM+APIs) command:
250
+
You may want to remove an app that you added earlier, and you can do this by using the [remove](https://pnp.github.io/office365-cli/cmd/spo/app/app-remove/?utm_source=msft_docs&utm_medium=page&utm_campaign=Application+Lifecycle+Management+ALM+APIs) command:
After the app is added to the app catalog and published, you can install the app to your site by using the [install](https://sharepoint.github.io/office365-cli/cmd/spo/app/app-install/?utm_source=msft_docs&utm_medium=page&utm_campaign=Application+Lifecycle+Management+ALM+APIs) command:
259
+
After the app is added to the app catalog and published, you can install the app to your site by using the [install](https://pnp.github.io/office365-cli/cmd/spo/app/app-install/?utm_source=msft_docs&utm_medium=page&utm_campaign=Application+Lifecycle+Management+ALM+APIs) command:
260
260
261
261
```shell
262
262
spo app install --id <app id> --siteUrl <url>
263
263
```
264
264
265
265
266
-
To upgrade the app, use the [upgrade](https://sharepoint.github.io/office365-cli/cmd/spo/app/app-upgrade/?utm_source=msft_docs&utm_medium=page&utm_campaign=Application+Lifecycle+Management+ALM+APIs) command:
266
+
To upgrade the app, use the [upgrade](https://pnp.github.io/office365-cli/cmd/spo/app/app-upgrade/?utm_source=msft_docs&utm_medium=page&utm_campaign=Application+Lifecycle+Management+ALM+APIs) command:
267
267
268
268
```shell
269
269
spo app upgrade --id <app id> --siteUrl <url>
270
270
```
271
271
272
272
273
-
To uninstall the app from your site, use the [uninstall](https://sharepoint.github.io/office365-cli/cmd/spo/app/app-uninstall/?utm_source=msft_docs&utm_medium=page&utm_campaign=Application+Lifecycle+Management+ALM+APIs) command:
273
+
To uninstall the app from your site, use the [uninstall](https://pnp.github.io/office365-cli/cmd/spo/app/app-uninstall/?utm_source=msft_docs&utm_medium=page&utm_campaign=Application+Lifecycle+Management+ALM+APIs) command:
You can see what apps have been added to the app catalog by using the [list](https://sharepoint.github.io/office365-cli/cmd/spo/app/app-list/?utm_source=msft_docs&utm_medium=page&utm_campaign=Application+Lifecycle+Management+ALM+APIs) command:
285
+
You can see what apps have been added to the app catalog by using the [list](https://pnp.github.io/office365-cli/cmd/spo/app/app-list/?utm_source=msft_docs&utm_medium=page&utm_campaign=Application+Lifecycle+Management+ALM+APIs) command:
286
286
287
287
```shell
288
288
spo app list
289
289
```
290
290
291
291
292
-
You can get a single app's details by using the [get](https://sharepoint.github.io/office365-cli/cmd/spo/app/app-get/?utm_source=msft_docs&utm_medium=page&utm_campaign=Application+Lifecycle+Management+ALM+APIs) command:
292
+
You can get a single app's details by using the [get](https://pnp.github.io/office365-cli/cmd/spo/app/app-get/?utm_source=msft_docs&utm_medium=page&utm_campaign=Application+Lifecycle+Management+ALM+APIs) command:
title: SPO provided Migration Azure container and queue
3
+
ms.author: jhendr
4
+
author: JoanneHendrickson
5
+
manager: pamgreen
6
+
ms.date: 6/20/2018
7
+
description: "One of the Main requirement for using our Migration API is the usage of an Azure container as a temporary storage. We now provide a default container that can be used for using the migration API."
8
+
---
9
+
10
+
# SPO provided Migration Azure container and queue
11
+
12
+
Microsoft’s Migration API requires the use of an Azure container for temporary storage. To simplify the process, you are now provided with a default container while using the migration API. If you choose, you can still provide your own Azure container.
13
+
14
+
## Encryption is required
15
+
16
+
For the Migration API to accept a Migration Job coming from a SPO provided Azure container, the data needs to be encrypted at rest. The customer is still allowed to provide their own Azure account if they prefer to not use encryption.
17
+
18
+
## Advantages
19
+
20
+
|Advantage|Description|
21
+
|:-----|:-----|
22
+
|Cost of Azure container goes to SPO|Since we are providing the containers, those containers are now part of the basic SharePoint online Offering. Every tenant who signs up for SharePoint Online will get this for free).|
23
+
|Containers and queues are unique per request and not reused|Once a container is given to a customer this container will not be reused or shared.|
24
+
|Containers and queue are automatically deleted|As per the standard SharePoint Online Compliance, we will destroy the container within 30 to 90 days automatically.|
25
+
|Containers and queues are in the customer’s datacenter ___location|We make sure to provision containers that are in the same physical ___location than their SharePoint online tenant.|
26
+
|They are obtainable programmatically|There is no need to interact with Azure unless the user chooses.
The call will return an object that contains two strings containing two SAS tokens for accessing the two required containers and a byte array for the AES256CBC encryption.
37
+
38
+
This key will need to be used when encrypting the data. We forget the key once we give it out, therefore you must keep it to pass it again for the Submit Migration Job call.
This method will return a string containing the SAS token for accessing the Azure queue.
55
+
56
+
The queue can be reused across multiple migration jobs so this call should not be that frequently as the `SPProvisionedMigrationContainersInfo()` call.
57
+
58
+
```csharp
59
+
UriJobQueueUri
60
+
```
61
+
62
+
### After getting the Container and the Queue:
63
+
64
+
Once those calls have been made, the rest of the flow remains the same for using the Migration API.
title: OneDrive for Business and SharePoint Online Migration API – Encryption
3
+
ms.author: jhendr
4
+
author: JoanneHendrickson
5
+
manager: pamgreen
6
+
ms.date: 6/20/2018
7
+
description: "How to pass encrypted content at rest to the API securely."
8
+
---
9
+
10
+
# OneDrive for Business and SharePoint Online Migration API encryption
11
+
12
+
Using the Migration API requires a temporary storage container in Azure. This Azure container is already only openable by someone having a SAS key access to the container. The gGoal of this feature is to allow to pass eEncrypted content at rest to the API meaning that even if a malicious user has access to the Container he won’t be able to use its content.
13
+
14
+
## What is stored in the Azure blob container
15
+
16
+
The Migration API requires the Azure Container for content passing and also for log and queue reporting back. It can be split down as a summary into those buckets:
17
+
18
+
Content
19
+
20
+
- Files
21
+
- Manifest
22
+
- Metadata
23
+
- Permissions
24
+
- List items
25
+
- Taxonomy
26
+
- Logs (created by SharePoint Online to report back on the migration results)
27
+
- Queue
28
+
- Real time reportig on the progress
29
+
30
+
## What is the encryption feature?
31
+
32
+
When using the encryption parameter, everything listed above will be encrypted at rest and the key will need to be preserved in order to read the logs and the real time progress.
33
+
The main benefits is making the content useless for a malicious user who would manage to breach into the Azure container.
34
+
35
+
This comes with a small cost of performance. This feature is optional when using the API and it is recommended to only use it for the most confidential information since it does reduce the speed of the migration by a small portion. Microsoft destroys the key once the migration job is finished and there is no way to recover the key if lost, not even from support.
36
+
37
+
## As a 3rd party developer how do I take advantage of the Encryption feature?
38
+
39
+
### Calling the API
40
+
41
+
The method for calling the Migration Job has a different name and an additional parameter at the end. The new name is: `CreateMigrationJobEncrypted`
42
+
43
+
The new parameter is: `EncryptionOption`
44
+
45
+
For now, it only supports receiving an AES256CBC Encryption Key.
46
+
47
+
Example:
48
+
49
+
```csharp
50
+
publicGuidCreateMigrationJobEncrypted(
51
+
GuidgWebId,
52
+
stringazureContainerSourceUri,
53
+
stringazureContainerManifestUri,
54
+
stringazureQueueReportUri,
55
+
EncryptionOptionAES256CBCKey)
56
+
```
57
+
58
+
## Extra requirement
59
+
60
+
For the encryption, each file must be encrypted and have an IV assigned to it. The encryption method should follow the AES CBC 256 Standard. The IV should be different for every file including the manifests in the package and should be stored as a property on each files.
61
+
62
+
- Name = [IV]
63
+
- Value = [Base64encoded byte array of the IV]
64
+
65
+
## Reading the queue when encrypted
66
+
67
+
When using the encryption option, the messages in the queue will also get encrypted.
68
+
69
+
It is important to remember the Job ID. Without the specific key used for the job, you won’t be able to read the message back.
70
+
71
+
Here is the JSON content in the queue message
72
+
73
+
```json
74
+
{"Label", "Encrypted"},
75
+
{"JobId", "[JobId value]"},
76
+
{"IV", "[IV value in base64format]"},
77
+
{"Content", "[encrypted message in base64string]"}
78
+
```
79
+
80
+
Once the messages are decrypted, they will be the same as the API without encryption.
title: "Running Migrations into OneDrive and SharePoint Online: Handling Throttling "
3
+
ms.author: jhendr
4
+
author: JoanneHendrickson
5
+
manager: pamgreen
6
+
ms.date: 6/10/2018
7
+
ms.topic: article
8
+
description: "Migration is critical for SPO and is prioritized alongside service availability."
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.
14
+
15
+
## Context and Expectations Setting
16
+
17
+
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.
18
+
19
+
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.
20
+
21
+
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.
22
+
23
+
Set expectations with customers:
24
+
25
+
- Expect to create and manage migration efforts at any time
26
+
- Expect content migration throughput to be higher during off-peak times and lower during peak times.
27
+
28
+
Overall throughput over the duration of a day still aligns with our public documentation here.
29
+
30
+
## Best Practices
31
+
32
+
Below are the key best practices we recommend migration vendors follow.
33
+
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>
35
+
36
+
We allow 300 calls every 5 minutes for handling small migrations and site management that customers expect to complete interactively.
37
+
38
+
> [!NOTE]
39
+
> 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.
40
+
41
+
**Retry value**:<br>Use the retry value in the http header of the 429 message and do not exponential back-off.
42
+
43
+
**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.
44
+
45
+
- If users cannot login or if jobs are not progressing, please escalate.
46
+
- If you are seeing over 30% of requests getting 429 over 30 minutes, please escalate.
47
+
48
+
**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.
49
+
50
+
- If throughput during peak hours is an order of magnitude worse than off-peak hours, that should be escalated.
0 commit comments