Skip to content

Commit 8bd0a90

Browse files
authored
Merge branch 'SharePoint:main' into 530update
2 parents e53e079 + 9f6159d commit 8bd0a90

24 files changed

+675
-135
lines changed

.openpublishing.redirection.json

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -144,11 +144,6 @@
144144
"source_path": "docs/embedded/terms-of-service.md",
145145
"redirect_url": "/sharepoint/dev/embedded/overview",
146146
"redirect_document_id": false
147-
},
148-
{
149-
"source_path": "docs/embedded/tutorials/metadata.md",
150-
"redirect_url": "/sharepoint/dev/embedded/overview",
151-
"redirect_document_id": false
152147
}
153148
]
154149
}

assets/ace/URL.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
me/events?$select=subject,body,bodyPreview,organizer,attendees,start,end,___location

docs/apis/migration-api-overview.md

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
title: "SharePoint Import Migration API"
33
description: "This article provides overview information on how to use the SharePoint Migration API."
4-
ms.date: 04/28/2024
4+
ms.date: 07/03/2024
55
ms.author: ranren
66
author: underreview
77
manager: dapodean
@@ -21,6 +21,10 @@ Use Migration API to migrate content from file shares, SharePoint Server, and ot
2121

2222
## What's new
2323

24+
### July 2024
25+
26+
We started enforcing HTTPS connection to SharePoint provided Azure Blob Storage Containers by adding a `spr=https` field in SAS tokens. This enforcement is fully effective on July 21, 2024. Check [Use Azure Blob Storage Containers and Azure Queues with SharePoint Migration API](migration-azure.md) for details.
27+
2428
### April 2024
2529

2630
We added new fields in ``JobEnd`` events to indicate the count and bytes imported for files. Check [Migration events in Azure Queue](migration-events.md#jobend-import) for details.
@@ -61,7 +65,7 @@ Migration API generates logs in the manifest container. Check the log entries fo
6165

6266
### Use app-based authentication
6367

64-
Migration generates workload to the SPO backend differently from end user-generated traffic. To properly allocate resources with our elastic capability, only use app-based authentication in your migration solution.
68+
Migration generates workload to the SharePoint backend differently from end user-generated traffic. To properly allocate resources with our elastic capability, only use app-based authentication in your migration solution.
6569

6670
Don't use user mode in your migration solution. Running migration in user mode triggers increased throttling, resulting in poor performance.
6771

@@ -82,28 +86,28 @@ For service-based migration tools that run without a signed-in user present, suc
8286

8387
You can choose to share a single App ID to cover multiple migration solutions created or create individual App ID for each of the products. Make sure to register App IDs. Sharing App IDs doesn't affect performance or throttling.
8488

85-
### Keep destination SPO site unactivated
89+
### Keep destination SharePoint Site unactivated
8690

87-
To avoid migration issues, deactivate the target site for users until the migration completion. The source could remain active, allowing read and write to keep productivity. Switch users to the new SPO destination sites after migration completion.
91+
To avoid migration issues, deactivate the target site for users until the migration completion. The source could remain active, allowing read and write to keep productivity. Switch users to the new SharePoint destination sites after migration completion.
8892

8993
## Performance
9094

91-
Migration API processes jobs through a queue mechanism with pre-configured workload management settings. Migration API processes the jobs on a best-effort basis, without Service Level Agreement (SLA) or guaranteed performance.
95+
Migration API processes jobs through a queue mechanism with preconfigured workload management settings. Migration API processes the jobs on a best-effort basis, without Service Level Agreement (SLA) or guaranteed performance.
9296

9397
### Optimize migration performance
9498

9599
In order to ensure optimal performance for your migration projects, it's important to plan carefully, especially when dealing with large-scale migrations. For more information on how to estimate timespans and optimize performance, see our [performance guide](/sharepointmigration/sharepoint-online-and-onedrive-migration-speed).
96100

97101
### I'm seeing throttling messages
98102

99-
To ensure good user experiences for all Microsoft 365 customers, SharePoint uses throttling to protect the SharePoint Online infrastructure. Avoid getting throttled by following [throttling guidance](https://aka.ms/spo429).
103+
To ensure good user experiences for all Microsoft 365 customers, SharePoint uses throttling to protect the SharePoint infrastructure. Avoid getting throttled by following [throttling guidance](https://aka.ms/spo429).
100104

101-
## Special topics
105+
## Special articles
102106

103107
### Migrating sharing events of files and folders
104108

105109
Check [Sharing events](/sharepoint/dev/apis/migration-api-shared) article for instructions when migrating shared events metadata with files and folders.
106110

107111
### Web Parts
108112

109-
Use SPMT's Web Part serializer DLL to migrate Web Parts into SharePoint. Check [Migrate Web Parts](/sharepoint/dev/apis/migrate-webparts-with-migrationapi) for instructions.
113+
Use SharePoint Migration Tool (SPMT)'s Web Part serializer DLL to migrate Web Parts into SharePoint. Check [Migrate Web Parts](/sharepoint/dev/apis/migrate-webparts-with-migrationapi) for instructions.

docs/apis/migration-azure.md

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
title: "Use Azure Blob Storage Containers and Azure Queues with SharePoint Migration API"
33
description: "This article provides in-depth information on how to use the SharePoint Migration API with Azure Containers and Queues."
4-
ms.date: 05/08/2024
4+
ms.date: 07/03/2024
55
ms.author: ranren
66
author: underreview
77
manager: dapodean
@@ -32,9 +32,9 @@ Migration API provisions the containers in the same datacenter of the SharePoint
3232

3333
Migration API destroys Used containers 30-90 days after completing migration jobs.
3434

35-
#### Decorate the traffic to avoid throttling
35+
#### Avoid throttling by decorating the traffic
3636

37-
[Decorate your HTTP traffic](/sharepoint/dev/general-development/how-to-avoid-getting-throttled-or-blocked-in-sharepoint-online#how-to-decorate-your-http-traffic) to avoid throttling.
37+
Avoid throttling by [decorating your HTTP traffic](/sharepoint/dev/general-development/how-to-avoid-getting-throttled-or-blocked-in-sharepoint-online#how-to-decorate-your-http-traffic).
3838

3939
#### Encryption
4040

@@ -76,6 +76,8 @@ Pass this value to `CreateMigrationJob` method as `azureContainerSourceUri` para
7676

7777
The SAS access token contains `Read` and `Write` permissions only. It doesn't contain `List`.
7878

79+
SharePoint enforces HTTPS connections to containers by setting `spr=https` field in SAS tokens.
80+
7981
###### MetadataContainer value
8082

8183
A **Uri** value containing the URI of the newly created container for storing **manifest** files, along with the SAS access token.
@@ -84,6 +86,8 @@ Pass this value to `CreateMigrationJob` method as `azureContainerManifestUri` pa
8486

8587
The SAS access token contains `Read` and `Write` permissions only. It doesn't contain `List`.
8688

89+
SharePoint enforces HTTPS connections to containers by setting `spr=https` field in SAS tokens.
90+
8791
###### EncryptionKey
8892

8993
A **Byte Array** value containing the AES256CBC encryption key for both containers provisioned.
@@ -102,9 +106,9 @@ Alternatively, use user-provided Azure Queues if desired. Check the requirement
102106

103107
### Azure Queue Encryption
104108

105-
When using `CreateMigrationJobEncrypted` method, Migration API encrypts the messages written to the Azure Queue.
109+
`CreateMigrationJobEncrypted` method encrypts the messages written to the Azure Queue.
106110

107-
Make sure you preserve `JobId` and the `IV` values returned by `CreateMigrationJobEncrypted` method, to decrypt the message.
111+
To decrypt the messages, make sure you preserve `JobId` and the `IV` values returned by `CreateMigrationJobEncrypted` method.
108112

109113
#### Encrypted message sample
110114

docs/apis/webhooks/webhooks-reference-implementation.md

Lines changed: 11 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
title: SharePoint webhooks sample reference implementation
33
description: This SharePoint Patterns and Practices (PnP) reference implementation shows how you can use SharePoint webhooks in your application.
4-
ms.date: 09/23/2022
4+
ms.date: 06/05/2024
55
ms.localizationpriority: high
66
---
77
# SharePoint webhooks sample reference implementation
@@ -10,19 +10,16 @@ The SharePoint Patterns and Practices (PnP) reference implementation shows how y
1010

1111
The reference implementation only works with [SharePoint list webhooks](./lists/overview-sharepoint-list-webhooks.md).
1212

13-
You can also follow these steps by watching the video on the Microsoft 365 Platform Communtiy (PnP) YouTube Channel:
14-
15-
<br/>
13+
You can also follow these steps by watching the video on the Microsoft 365 Platform Community (PnP) YouTube Channel:
1614

1715
> [!Video https://www.youtube.com/embed/P4a1_EWokwM]
1816
19-
<br/>
20-
2117
**Applies to** Office 365 Multi Tenant (MT).
2218

2319
Microsoft Azure is used to host the various components needed to implement SharePoint webhooks.
2420

2521
Source code and other materials for the reference implementation are available in two flavors:
22+
2623
- A SharePoint provider-hosted application version
2724
- An Office 365 Azure AD application, which can be found in the [SharePoint developer samples GitHub repository](https://aka.ms/sp-webhooks-sample-reference).
2825

@@ -35,9 +32,7 @@ The application shows you how to manage webhooks, specifically for a SharePoint
3532
### Deployment guides
3633

3734
- The [SharePoint webhooks reference implementation deployment guide](https://github.com/SharePoint/sp-dev-samples/blob/master/Samples/WebHooks.List/Deployment%20guide.md) lists the deployment steps used to deploy the SharePoint provider-hosted reference implementation.
38-
3935
- To deploy the Office 365 Azure AD application, use the steps described at [SharePoint webhooks Azure AD reference implementation deployment guide](https://github.com/SharePoint/sp-dev-samples/blob/master/Samples/WebHooks.List.AzureAD/Deployment%20guide.md), which shows you how to use a Web API function as webhook service.
40-
4136
- If you're more interested in using Azure Functions, see the [Azure Functions guide](https://github.com/SharePoint/sp-dev-samples/blob/master/Samples/WebHooks.List.AzureAD/azure%20functions%20guide.md) for more details on how to use Azure Functions in this reference implementation.
4237

4338
### Introduction to webhooks
@@ -48,9 +43,9 @@ Webhooks notify your application about changes in SharePoint that the applicatio
4843

4944
The reference implementation works with a SharePoint list. To add a webhook to a SharePoint list, your application first creates a webhook subscription by sending a [`POST /_api/web/lists('list-id')/subscriptions`](./lists/create-subscription.md) request. The request includes the following items:
5045

51-
* A payload that identifies the list that you're adding the webhook for.
52-
* The ___location of your webhook service URL to send the notifications.
53-
* The expiration date of the webhook.
46+
- A payload that identifies the list that you're adding the webhook for.
47+
- The ___location of your webhook service URL to send the notifications.
48+
- The expiration date of the webhook.
5449

5550
After you've requested SharePoint to add your webhook, SharePoint validates that your webhook service endpoint exists. It sends a validation string to your service endpoint. SharePoint expects that your service endpoint returns the validation string within 5 seconds. If this process fails, the webhook creation is canceled. If you've deployed your service, this works and SharePoint returns an HTTP 201 message on the POST request that the application initially sent. The payload in the response contains the ID of the new webhook subscription.
5651

@@ -74,8 +69,6 @@ public async Task<SubscriptionModel> AddListWebHookAsync(string siteUrl, string
7469
}
7570
```
7671

77-
<br/>
78-
7972
When making a call to SharePoint, you need to provide authentication information, and in this case you're using a **Bearer** authentication header with an **access token**. To obtain the access token, intercept the token via an **ExecutingWebRequest** event handler:
8073

8174
```csharp
@@ -89,7 +82,7 @@ cc.ExecutingWebRequest += Cc_ExecutingWebRequest;
8982
// Capture the OAuth access token since we want to reuse that one in our REST requests
9083
private void Cc_ExecutingWebRequest(object sender, WebRequestEventArgs e)
9184
{
92-
this.accessToken = e.WebRequestExecutor.RequestHeaders.Get("Authorization").Replace("Bearer ", "");
85+
this.accessToken = e.WebRequestExecutor.RequestHeaders.Get("Authorization").Replace("Bearer ", "");
9386
}
9487
```
9588

@@ -123,7 +116,6 @@ To avoid getting the same change repeatedly, it's important that you inform Shar
123116
The following are some key things to note about changes:
124117

125118
- SharePoint does not call your service in real-time: when a change happens on a list that has a webhook, SharePoint queues a webhook callout. Once each minute, this queue is read and the appropriate service endpoints are called. This batching of requests is important. For example, if a bulk upload of 1000 records occurred at once, batching prevents SharePoint from calling your endpoint 1000 times. So your endpoint is only called once, but when you call the `GetChanges()` method, you get 1000 change events that you need to process.
126-
127119
- To guarantee an immediate response, regardless of the number of changes there, it's important that the workload of your service endpoint runs asynchronously. In the reference implementation, we leveraged the power of Azure: the service serializes the incoming payload and stores it in an Azure Storage queue while there's an Azure web job that runs continuously and checks for messages in the queue. When there are messages in the queue, the web job processes them and also executes your logic asynchronously.
128120

129121
## Complete end-to-end flow
@@ -157,7 +149,7 @@ Create a web job that on a weekly basis reads all the subscription IDs from the
157149
> [!NOTE]
158150
> This web job is not part of this reference implementation.
159151
160-
The actual renewal of a SharePoint list webhook can be done by using a `[PATCH /_api/web/lists('list-id')/subscriptions(‘subscriptionID’)](./lists/update-subscription.md)` REST call.
152+
The actual renewal of a SharePoint list webhook can be done by using a [`PATCH /_api/web/lists('list-id')/subscriptions(‘subscriptionID’)`](./lists/update-subscription.md) REST call.
161153

162154
In the reference implementation, updating of webhooks is implemented in the [WebHookManager](https://github.com/SharePoint/sp-dev-samples/blob/master/Samples/WebHooks.List/SharePoint.WebHooks.Common/WebHookManager.cs) class of the **SharePoint.WebHooks.Common** project.
163155

@@ -176,18 +168,16 @@ Updating a webhook is done by using the **UpdateListWebHookAsync** method:
176168
/// <returns>true if successful, exception in case something went wrong</returns>
177169
public async Task<bool> UpdateListWebHookAsync(string siteUrl, string listId, string subscriptionId, string webHookEndPoint, DateTime expirationDateTime, string accessToken)
178170
{
179-
// webhook update code...
171+
// webhook update code...
180172
}
181173
```
182174

183175
## Debugging webhooks
184176

185177
Because SharePoint is calling out to your webhook service endpoint, your endpoint needs to be reachable by SharePoint. This makes development and debugging slightly more complex. The following are some strategies that you can use to make your life easier:
186178

187-
* During initial development, you provide your own serialized payload to your service processing logic. This makes it possible to completely test your processing logic without deploying the service endpoint (and even without configuring a webhook).
188-
189-
* If you have access to Azure resources, you can deploy your endpoint to Azure by using a debug build and configuring the Azure App Service for debugging. This allows you to set a remote breakpoint and do remote debugging using Visual Studio.
190-
179+
- During initial development, you provide your own serialized payload to your service processing logic. This makes it possible to completely test your processing logic without deploying the service endpoint (and even without configuring a webhook).
180+
- If you have access to Azure resources, you can deploy your endpoint to Azure by using a debug build and configuring the Azure App Service for debugging. This allows you to set a remote breakpoint and do remote debugging using Visual Studio.
191181
- If you do not want to deploy your service during development time, you need to use a secure tunnel for your service. The idea is that you tell SharePoint that the notification service is located on a shared public endpoint. In the client, you install a component that connects to that shared public service, and whenever a call is made to the public endpoint, the client component is notified and it pushes the payload to your service running on localhost. [ngrok](https://ngrok.com/) is an implementation of such a secure tunnel tool that you can use to debug your webhook service locally.
192182

193183
## See also

docs/declarative-customization/site-design-o365cli.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
title: SharePoint site design - CLI for Microsoft 365 commands
33
description: Use the CLI for Microsoft 365 to create, retrieve, and remove site designs and site scripts.
4-
ms.date: 06/28/2022
4+
ms.date: 06/27/2024
55
ms.localizationpriority: high
66
---
77

@@ -17,7 +17,7 @@ To run the CLI for Microsoft 365 commands, you'll need to do the following:
1717

1818
1. Download and install [NodeJS LTS version](https://nodejs.org/en/)
1919
1. Follow the instructions at [Installing the CLI](https://pnp.github.io/cli-microsoft365/user-guide/installing-cli/) to install the CLI for Microsoft 365 on your machine
20-
1. Follow the instructions at [Logging in to Office 365](https://pnp.github.io/cli-microsoft365/user-guide/connecting-office-365/) to connect to your SharePoint tenant.
20+
1. Follow the instructions at [Logging in to Office 365](https://pnp.github.io/cli-microsoft365/user-guide/connecting-microsoft-365) to connect to your SharePoint tenant.
2121

2222
To verify your setup and connection, try using the [sitedesign list](https://pnp.github.io/cli-microsoft365/cmd/spo/sitedesign/sitedesign-list) command to read the current list of site designs. If the cmdlet runs and returns with no errors, you're ready to proceed.
2323

docs/declarative-customization/site-design-trigger-flow-tutorial.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
title: Using site designs and Power Automate to track site creation requests
33
description: Invoke a Power Automate flow using the site script triggerFlow action to capture the site creation event and build a site directory. This tutorial is intended to illustrate a simple example of using site designs and Power Automate.
4-
ms.date: 06/28/2022
4+
ms.date: 06/05/2024
55
ms.localizationpriority: high
66
---
77

@@ -68,7 +68,7 @@ In order to capture the site creation event and create the corresponding list it
6868
"type": "string"
6969
},
7070
"creatorEmail": {
71-
"type": "string"
71+
"type": ["string", "null"]
7272
},
7373
"createdTimeUTC": {
7474
"type": "string"

docs/embedded/concepts/admin-exp/adminrole.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ ms.localizationpriority: high
99

1010
The SharePoint Embedded administrator is a dedicated role to manage SharePoint Embedded containers through [SharePoint PowerShell](/powershell/module/sharepoint-online/connect-sposervice) and SharePoint admin center. This role is required for [developer admins](./developer-admin/dev-admin.md) to create new container types through PowerShell cmdlets and also for consuming tenant admins to manage containers created in their tenants.
1111

12-
The global administrator role already has all the permissions of the SharePoint Embedded administrator role. A SharePoint administrator can assign themselves the SharePoint Embedded administrator role to act as a consuming tenant admin or a developer administrator for SharePoint Embedded.
12+
The global administrator role already has all the permissions of the SharePoint Embedded administrator role. A global administrator can assign a user the SharePoint Embedded administrator role to act as a consuming tenant admin or a developer administrator for SharePoint Embedded.
1313

1414
The SharePoint Embedded administrator role is available in Microsoft Entra and Microsoft 365 Admin Center. This role doesn't have access to site management. This means that a SharePoint Embedded administrator can't see 'Active sites' and 'Deleted sites' pages on the SharePoint Admin Center and also can't run site specific PowerShell cmdlets.
1515

0 commit comments

Comments
 (0)