From bdd09a3b5da304d1ebf5ac8dece85adbd95a11f7 Mon Sep 17 00:00:00 2001 From: Meghan Stewart <33289333+mestew@users.noreply.github.com> Date: Fri, 20 Jan 2023 12:31:25 -0800 Subject: [PATCH 01/92] wufbds reorg --- windows/deployment/TOC.yml | 17 ++++++++++++----- .../deployment-service-expedited-updates.md | 17 +++++++++++++++++ .../deployment-service-feature-updates.md | 17 +++++++++++++++++ .../update/deployment-service-prerequisites.md | 18 ++++++++++++++++++ 4 files changed, 64 insertions(+), 5 deletions(-) create mode 100644 windows/deployment/update/deployment-service-expedited-updates.md create mode 100644 windows/deployment/update/deployment-service-feature-updates.md create mode 100644 windows/deployment/update/deployment-service-prerequisites.md diff --git a/windows/deployment/TOC.yml b/windows/deployment/TOC.yml index 4ac1a97b0f..4e2b24d2be 100644 --- a/windows/deployment/TOC.yml +++ b/windows/deployment/TOC.yml @@ -164,11 +164,6 @@ href: update/waas-configure-wufb.md - name: Use Windows Update for Business and WSUS href: update/wufb-wsus.md - - name: Windows Update for Business deployment service - href: update/deployment-service-overview.md - items: - - name: Troubleshoot the Windows Update for Business deployment service - href: update/deployment-service-troubleshoot.md - name: Enforcing compliance deadlines for updates href: update/wufb-compliancedeadlines.md - name: Integrate Windows Update for Business with management solutions @@ -177,6 +172,18 @@ href: update/waas-wufb-group-policy.md - name: 'Walkthrough: use Intune to configure Windows Update for Business' href: update/deploy-updates-intune.md + - name: Windows Update for Business deployment service + items: + - name: Windows Update for Business deployment service overview + href: update/deployment-service-overview.md + - name: Prerequisites for Windows Update for Business deployment service + href: update/deployment-service-prerequisites.md + - name: Deploy feature updates + href: update/deployment-service-feature-updates.md + - name: Deploy expedited updates + href: update/deployment-service-expedited-updates.md + - name: Troubleshoot Windows Update for Business deployment service + href: update/deployment-service-troubleshoot.md - name: Monitor items: - name: Windows Update for Business reports diff --git a/windows/deployment/update/deployment-service-expedited-updates.md b/windows/deployment/update/deployment-service-expedited-updates.md new file mode 100644 index 0000000000..862ba6b171 --- /dev/null +++ b/windows/deployment/update/deployment-service-expedited-updates.md @@ -0,0 +1,17 @@ +--- +title: Deploy expediated updates with Windows Update for Business deployment service +description: Use Windows Update for Business deployment service to deploy expedited updates. +ms.prod: windows-client +author: mestew +ms.localizationpriority: medium +ms.author: mstewart +manager: aaroncz +ms.topic: article +ms.technology: itpro-updates +ms.date: 02/14/2023 +--- + +# Deploy expedited updates with Windows Update for Business deployment service + +***(Applies to: Windows 11 & Windows 10)*** + diff --git a/windows/deployment/update/deployment-service-feature-updates.md b/windows/deployment/update/deployment-service-feature-updates.md new file mode 100644 index 0000000000..ca15200ed1 --- /dev/null +++ b/windows/deployment/update/deployment-service-feature-updates.md @@ -0,0 +1,17 @@ +--- +title: Deploy feature updates with Windows Update for Business deployment service +description: Use Windows Update for Business deployment service to deploy feature updates. +ms.prod: windows-client +author: mestew +ms.localizationpriority: medium +ms.author: mstewart +manager: aaroncz +ms.topic: article +ms.technology: itpro-updates +ms.date: 02/14/2023 +--- + +# Deploy feature updates with Windows Update for Business deployment service + +***(Applies to: Windows 11 & Windows 10)*** + diff --git a/windows/deployment/update/deployment-service-prerequisites.md b/windows/deployment/update/deployment-service-prerequisites.md new file mode 100644 index 0000000000..31148a17fe --- /dev/null +++ b/windows/deployment/update/deployment-service-prerequisites.md @@ -0,0 +1,18 @@ +--- +title: Prerequisites for the Windows Update for Business deployment service +description: Prerequisites for using the Windows Update for Business deployment service. +ms.prod: windows-client +author: mestew +ms.localizationpriority: medium +ms.author: mstewart +manager: aaroncz +ms.topic: article +ms.technology: itpro-updates +ms.date: 02/14/2023 +--- + +# Windows Update for Business deployment service prerequisites + +***(Applies to: Windows 11 & Windows 10)*** + +## Prerequisites From 8cc157be07ec12074c008c52eafe78529e09e098 Mon Sep 17 00:00:00 2001 From: Meghan Stewart <33289333+mestew@users.noreply.github.com> Date: Fri, 20 Jan 2023 12:40:10 -0800 Subject: [PATCH 02/92] wufbds reorg --- windows/deployment/TOC.yml | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/windows/deployment/TOC.yml b/windows/deployment/TOC.yml index 4e2b24d2be..983b5bd989 100644 --- a/windows/deployment/TOC.yml +++ b/windows/deployment/TOC.yml @@ -178,10 +178,12 @@ href: update/deployment-service-overview.md - name: Prerequisites for Windows Update for Business deployment service href: update/deployment-service-prerequisites.md - - name: Deploy feature updates - href: update/deployment-service-feature-updates.md - - name: Deploy expedited updates - href: update/deployment-service-expedited-updates.md + - name: Deploy updates using Windows Update for Business deployment service + items: + - name: 'Tutorial: Deploy feature updates' + href: update/deployment-service-feature-updates.md + - name: 'Tutorial: Deploy expedited updates' + href: update/deployment-service-expedited-updates.md - name: Troubleshoot Windows Update for Business deployment service href: update/deployment-service-troubleshoot.md - name: Monitor From f1f7fce4fcc6afb2e1e0d57bc9b5ee3ecf723e1b Mon Sep 17 00:00:00 2001 From: Meghan Stewart <33289333+mestew@users.noreply.github.com> Date: Fri, 20 Jan 2023 16:33:57 -0800 Subject: [PATCH 03/92] add include file for graph exp --- windows/deployment/TOC.yml | 4 ++- .../update/deployment-service-drivers.md | 29 ++++++++++++++++++ .../deployment-service-expedited-updates.md | 20 ++++++++++-- .../deployment-service-feature-updates.md | 14 +++++++-- .../update/deployment-service-overview.md | 2 +- .../wufb-deployment-graph-explorer.md | 25 +++++++++++++++ .../media/wufbds-graph-modify-permission.png | Bin 0 -> 165885 bytes 7 files changed, 87 insertions(+), 7 deletions(-) create mode 100644 windows/deployment/update/deployment-service-drivers.md create mode 100644 windows/deployment/update/includes/wufb-deployment-graph-explorer.md create mode 100644 windows/deployment/update/media/wufbds-graph-modify-permission.png diff --git a/windows/deployment/TOC.yml b/windows/deployment/TOC.yml index 983b5bd989..f14ccb8dbe 100644 --- a/windows/deployment/TOC.yml +++ b/windows/deployment/TOC.yml @@ -178,12 +178,14 @@ href: update/deployment-service-overview.md - name: Prerequisites for Windows Update for Business deployment service href: update/deployment-service-prerequisites.md - - name: Deploy updates using Windows Update for Business deployment service + - name: Deploy updates with Windows Update for Business deployment service items: - name: 'Tutorial: Deploy feature updates' href: update/deployment-service-feature-updates.md - name: 'Tutorial: Deploy expedited updates' href: update/deployment-service-expedited-updates.md + - name: 'Tutorial: Deploy driver and firmware updates' + href: update/deployment-service-drivers.md - name: Troubleshoot Windows Update for Business deployment service href: update/deployment-service-troubleshoot.md - name: Monitor diff --git a/windows/deployment/update/deployment-service-drivers.md b/windows/deployment/update/deployment-service-drivers.md new file mode 100644 index 0000000000..9306660954 --- /dev/null +++ b/windows/deployment/update/deployment-service-drivers.md @@ -0,0 +1,29 @@ +--- +title: 'Tutorial: Deploy drivers and firmware updates with Windows Update for Business deployment service.' +description: Use Windows Update for Business deployment service to deploy driver and firmware updates. +ms.prod: windows-client +author: mestew +ms.localizationpriority: medium +ms.author: mstewart +manager: aaroncz +ms.topic: tutorial +ms.technology: itpro-updates +ms.date: 02/14/2023 +--- + +# Deploy drivers and firmware updates with Windows Update for Business deployment service + +***(Applies to: Windows 11 & Windows 10)*** + + +In this tutorial, you will: +> [!div class="checklist"] +> * Do X +> * Do Y +> * Do Z + + +## Open Graph Explorer + + +[!INCLUDE [Graph Explorer sign in](./includes/wufb-deployment-graph-explorer.md)] \ No newline at end of file diff --git a/windows/deployment/update/deployment-service-expedited-updates.md b/windows/deployment/update/deployment-service-expedited-updates.md index 862ba6b171..a8ba04d28f 100644 --- a/windows/deployment/update/deployment-service-expedited-updates.md +++ b/windows/deployment/update/deployment-service-expedited-updates.md @@ -1,17 +1,31 @@ --- -title: Deploy expediated updates with Windows Update for Business deployment service +title: 'Tutorial: Deploy expedited updates with Windows Update for Business deployment service' description: Use Windows Update for Business deployment service to deploy expedited updates. ms.prod: windows-client author: mestew ms.localizationpriority: medium ms.author: mstewart manager: aaroncz -ms.topic: article +ms.topic: tutorial ms.technology: itpro-updates ms.date: 02/14/2023 --- -# Deploy expedited updates with Windows Update for Business deployment service +# Tutorial: Deploy expedited updates with Windows Update for Business deployment service ***(Applies to: Windows 11 & Windows 10)*** +In this tutorial, you will: +> [!div class="checklist"] +> * Do X +> * Do Y +> * Do Z + + +## Prerequisites + + +## Open Graph Explorer + + +[!INCLUDE [Graph Explorer sign in](./includes/wufb-deployment-graph-explorer.md)] diff --git a/windows/deployment/update/deployment-service-feature-updates.md b/windows/deployment/update/deployment-service-feature-updates.md index ca15200ed1..e1f9d5e2d9 100644 --- a/windows/deployment/update/deployment-service-feature-updates.md +++ b/windows/deployment/update/deployment-service-feature-updates.md @@ -1,12 +1,12 @@ --- -title: Deploy feature updates with Windows Update for Business deployment service +title: 'Tutorial: Deploy feature updates with Windows Update for Business deployment service.' description: Use Windows Update for Business deployment service to deploy feature updates. ms.prod: windows-client author: mestew ms.localizationpriority: medium ms.author: mstewart manager: aaroncz -ms.topic: article +ms.topic: tutorial ms.technology: itpro-updates ms.date: 02/14/2023 --- @@ -15,3 +15,13 @@ ms.date: 02/14/2023 ***(Applies to: Windows 11 & Windows 10)*** +In this tutorial, you will: +> [!div class="checklist"] +> * Do X +> * Do Y +> * Do Z + +## Open Graph Explorer + + +[!INCLUDE [Graph Explorer sign in](./includes/wufb-deployment-graph-explorer.md)] \ No newline at end of file diff --git a/windows/deployment/update/deployment-service-overview.md b/windows/deployment/update/deployment-service-overview.md index 3d655149d9..7ef4804c87 100644 --- a/windows/deployment/update/deployment-service-overview.md +++ b/windows/deployment/update/deployment-service-overview.md @@ -34,7 +34,7 @@ The service is privacy focused and backed by leading industry compliance certifi ## How it works -The deployment service complements existing Windows Update for Business capabilities, including existing device policies and [Windows Update for Businesss reports](wufb-reports-overview.md). +The deployment service complements existing Windows Update for Business capabilities, including existing device policies and [Windows Update for Business reports](wufb-reports-overview.md). :::image type="content" source="media/wufbds-product-large.png" alt-text="Elements in following text."::: diff --git a/windows/deployment/update/includes/wufb-deployment-graph-explorer.md b/windows/deployment/update/includes/wufb-deployment-graph-explorer.md new file mode 100644 index 0000000000..fd82db4ad9 --- /dev/null +++ b/windows/deployment/update/includes/wufb-deployment-graph-explorer.md @@ -0,0 +1,25 @@ +--- +author: mestew +ms.author: mstewart +manager: aaroncz +ms.prod: w10 +ms.collection: M365-modern-desktop +ms.topic: include +ms.date: 08/18/2022 +ms.localizationpriority: medium +--- + + +For this tutorial, you'll use Graph Explorer to make requests to the [Microsoft Graph APIs](https://learn.microsoft.com/graph/api/resources/windowsupdates-updates?view=graph-rest-beta&preserve-view=true) to retrieve, add, delete, and update data. For more information about using Graph Explorer, see [Get started with Graph Explorer](https://docs.microsoft.com/graph/graph-explorer/overview). + +> [!WARNING] +> Using a test tenant for tutorials is recommended. If you use a production tenant, ensure you verify which client devices you're targeting with deployments. + +1. From a browser, go to [Graph Explorer](https://developer.microsoft.com/graph/graph-explorer) and sign in using an Azure Active Directory (Azure AD) user account. +1. You may need to enable the [`WindowsUpdates.ReadWrite.All` permission](/graph/permissions-reference#windows-updates-permissions) to use the queries in this tutorial. To enable the permission: + 1. Select the **Modify permissions** tab in Graph Explorer. + 1. In the permissions dialog box, select the **WindowsUpdates.ReadWrite.All** permission then select **Consent**. You may need to sign in again to grant consent. + + :::image type="content" source="../media/wufbds-graph-modify-permission.png" alt-text="Screenshot of the modify permissions tab in Graph Explorer"::: + + diff --git a/windows/deployment/update/media/wufbds-graph-modify-permission.png b/windows/deployment/update/media/wufbds-graph-modify-permission.png new file mode 100644 index 0000000000000000000000000000000000000000..cfa73d51755c52557e298b079a254d33fb775fef GIT binary patch literal 165885 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νQsDocnMU?9Kr@=ntJxujQRTzMjk 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 Date: Fri, 20 Jan 2023 16:39:05 -0800 Subject: [PATCH 04/92] wufbds reorg --- .../update/includes/wufb-deployment-graph-explorer.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/windows/deployment/update/includes/wufb-deployment-graph-explorer.md b/windows/deployment/update/includes/wufb-deployment-graph-explorer.md index fd82db4ad9..8cfc4924b1 100644 --- a/windows/deployment/update/includes/wufb-deployment-graph-explorer.md +++ b/windows/deployment/update/includes/wufb-deployment-graph-explorer.md @@ -10,7 +10,7 @@ ms.localizationpriority: medium --- -For this tutorial, you'll use Graph Explorer to make requests to the [Microsoft Graph APIs](https://learn.microsoft.com/graph/api/resources/windowsupdates-updates?view=graph-rest-beta&preserve-view=true) to retrieve, add, delete, and update data. For more information about using Graph Explorer, see [Get started with Graph Explorer](https://docs.microsoft.com/graph/graph-explorer/overview). +For this tutorial, you'll use Graph Explorer to make requests to the [Microsoft Graph APIs](/graph/api/resources/windowsupdates-updates?view=graph-rest-beta&preserve-view=true) to retrieve, add, delete, and update data. For more information about using Graph Explorer, see [Get started with Graph Explorer](/graph/graph-explorer/overview). > [!WARNING] > Using a test tenant for tutorials is recommended. If you use a production tenant, ensure you verify which client devices you're targeting with deployments. From b046e3939c9504d8b51cc3e963953185b12b36d3 Mon Sep 17 00:00:00 2001 From: Meghan Stewart <33289333+mestew@users.noreply.github.com> Date: Mon, 23 Jan 2023 15:27:45 -0800 Subject: [PATCH 05/92] add queries for devices --- .../update/deployment-service-drivers.md | 8 +++- .../deployment-service-expedited-updates.md | 5 +++ .../deployment-service-feature-updates.md | 7 +++- .../wufb-deployment-find-device-name.md | 36 ++++++++++++++++++ .../wufb-deployment-graph-explorer.md | 4 +- ...deployment-service-graph-modify-header.png | Bin 0 -> 79340 bytes ...512398-wufbds-graph-modify-permission.png} | Bin 7 files changed, 56 insertions(+), 4 deletions(-) create mode 100644 windows/deployment/update/includes/wufb-deployment-find-device-name.md create mode 100644 windows/deployment/update/media/7512398-deployment-service-graph-modify-header.png rename windows/deployment/update/media/{wufbds-graph-modify-permission.png => 7512398-wufbds-graph-modify-permission.png} (100%) diff --git a/windows/deployment/update/deployment-service-drivers.md b/windows/deployment/update/deployment-service-drivers.md index 9306660954..76fa41480a 100644 --- a/windows/deployment/update/deployment-service-drivers.md +++ b/windows/deployment/update/deployment-service-drivers.md @@ -26,4 +26,10 @@ In this tutorial, you will: ## Open Graph Explorer -[!INCLUDE [Graph Explorer sign in](./includes/wufb-deployment-graph-explorer.md)] \ No newline at end of file +[!INCLUDE [Graph Explorer sign in](./includes/wufb-deployment-graph-explorer.md)] + +## Run queries to identify test devices + + +[!INCLUDE [Graph Explorer device queries](./includes/wufb-deployment-find-device-name.md)] + diff --git a/windows/deployment/update/deployment-service-expedited-updates.md b/windows/deployment/update/deployment-service-expedited-updates.md index a8ba04d28f..a886d3b539 100644 --- a/windows/deployment/update/deployment-service-expedited-updates.md +++ b/windows/deployment/update/deployment-service-expedited-updates.md @@ -29,3 +29,8 @@ In this tutorial, you will: [!INCLUDE [Graph Explorer sign in](./includes/wufb-deployment-graph-explorer.md)] + +## Run queries to identify test devices + + +[!INCLUDE [Graph Explorer device queries](./includes/wufb-deployment-find-device-name.md)] \ No newline at end of file diff --git a/windows/deployment/update/deployment-service-feature-updates.md b/windows/deployment/update/deployment-service-feature-updates.md index e1f9d5e2d9..3f888d0fb9 100644 --- a/windows/deployment/update/deployment-service-feature-updates.md +++ b/windows/deployment/update/deployment-service-feature-updates.md @@ -24,4 +24,9 @@ In this tutorial, you will: ## Open Graph Explorer -[!INCLUDE [Graph Explorer sign in](./includes/wufb-deployment-graph-explorer.md)] \ No newline at end of file +[!INCLUDE [Graph Explorer sign in](./includes/wufb-deployment-graph-explorer.md)] + +## Run queries to identify test devices + + +[!INCLUDE [Graph Explorer device queries](./includes/wufb-deployment-find-device-name.md)] \ No newline at end of file diff --git a/windows/deployment/update/includes/wufb-deployment-find-device-name.md b/windows/deployment/update/includes/wufb-deployment-find-device-name.md new file mode 100644 index 0000000000..461af6da9d --- /dev/null +++ b/windows/deployment/update/includes/wufb-deployment-find-device-name.md @@ -0,0 +1,36 @@ +--- +author: mestew +ms.author: mstewart +manager: aaroncz +ms.prod: w10 +ms.collection: M365-modern-desktop +ms.topic: include +ms.date: 08/18/2022 +ms.localizationpriority: medium +--- + + +You will need at least [Device.Read.All](/graph/permissions-reference#device-permissions) permission to display [device](/graph/api/resources/device) information. + +Displays the AzureAD ID and name of all devices:
+ `GET https://graph.microsoft.com/v1.0/devices?$select=deviceid,displayName` + +Displays the AzureAD ID for a device name that starts with `Test`:
+ `GET https://graph.microsoft.com/v1.0/devices?$filter=startswith(displayName, 'Test')&$select=deviceid,displayName` + +### Add a request header + +For the next requests, set the **ConsistencyLevel** header to `eventual`. For more information about advanced query parameters, see [Advanced query capabilities on Azure AD directory objects](/graph/aad-advanced-queries). + +1. In Graph Explorer, select the **Request headers** tab. +1. For **Key** type in `ConsistencyLevel` then type `eventual` for **Value**. +1. Select the **Add** button. When you're finished, remove the request header by selecting the trash can icon. + + :::image type="content" source="../media/7512398-deployment-service-graph-modify-header.png" alt-text="Screenshot of the request headers tab in Graph Explorer"::: + +Displays the name and operating system version for the device that has the AzureAD ID of `44bb2fa1-5bfe-44c7-9221-9c8ed64e1076`:
+ `GET https://graph.microsoft.com/v1.0/devices?$search="deviceid:44bb2fa1-5bfe-44c7-9221-9c8ed64e1076"?$select=displayName,operatingSystemVersion` + +Find devices that don't have virtual machine listed as the model and that have a manufacturer listed:
+`GET https://graph.microsoft.com/v1.0/devices?$filter=model ne 'virtual machine' and NOT(manufacturer eq null)&$count=true&$select=deviceid,displayName,operatingSystemVersion` + diff --git a/windows/deployment/update/includes/wufb-deployment-graph-explorer.md b/windows/deployment/update/includes/wufb-deployment-graph-explorer.md index 8cfc4924b1..bca691a415 100644 --- a/windows/deployment/update/includes/wufb-deployment-graph-explorer.md +++ b/windows/deployment/update/includes/wufb-deployment-graph-explorer.md @@ -8,7 +8,7 @@ ms.topic: include ms.date: 08/18/2022 ms.localizationpriority: medium --- - + For this tutorial, you'll use Graph Explorer to make requests to the [Microsoft Graph APIs](/graph/api/resources/windowsupdates-updates?view=graph-rest-beta&preserve-view=true) to retrieve, add, delete, and update data. For more information about using Graph Explorer, see [Get started with Graph Explorer](/graph/graph-explorer/overview). @@ -20,6 +20,6 @@ For this tutorial, you'll use Graph Explorer to make requests to the [Microsoft 1. Select the **Modify permissions** tab in Graph Explorer. 1. In the permissions dialog box, select the **WindowsUpdates.ReadWrite.All** permission then select **Consent**. You may need to sign in again to grant consent. - :::image type="content" source="../media/wufbds-graph-modify-permission.png" alt-text="Screenshot of the modify permissions tab in Graph Explorer"::: + :::image type="content" source="../media/7512398-wufbds-graph-modify-permission.png" alt-text="Screenshot of the modify permissions tab in Graph Explorer"::: diff --git a/windows/deployment/update/media/7512398-deployment-service-graph-modify-header.png b/windows/deployment/update/media/7512398-deployment-service-graph-modify-header.png new file mode 100644 index 0000000000000000000000000000000000000000..44fb8ee6ab00d8f9254163a927cfe82f52f7b235 GIT binary patch literal 79340 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 literal 0 HcmV?d00001 diff --git a/windows/deployment/update/media/wufbds-graph-modify-permission.png b/windows/deployment/update/media/7512398-wufbds-graph-modify-permission.png similarity index 100% rename from windows/deployment/update/media/wufbds-graph-modify-permission.png rename to windows/deployment/update/media/7512398-wufbds-graph-modify-permission.png From 4848b3052abd81add45ac74f3833b21fa6dec710 Mon Sep 17 00:00:00 2001 From: Meghan Stewart <33289333+mestew@users.noreply.github.com> Date: Mon, 23 Jan 2023 15:30:41 -0800 Subject: [PATCH 06/92] add queries for devices --- .../deployment/update/deployment-service-expedited-updates.md | 1 + 1 file changed, 1 insertion(+) diff --git a/windows/deployment/update/deployment-service-expedited-updates.md b/windows/deployment/update/deployment-service-expedited-updates.md index a886d3b539..00ab2aa130 100644 --- a/windows/deployment/update/deployment-service-expedited-updates.md +++ b/windows/deployment/update/deployment-service-expedited-updates.md @@ -24,6 +24,7 @@ In this tutorial, you will: ## Prerequisites +? This requires an extra license at the moment correct? Of does the client have to be listed as intune managed ate the moment? ## Open Graph Explorer From 93dbb1ad9bac62d1cef0baf91c96d03643c681cd Mon Sep 17 00:00:00 2001 From: Meghan Stewart <33289333+mestew@users.noreply.github.com> Date: Mon, 23 Jan 2023 15:57:41 -0800 Subject: [PATCH 07/92] eod add --- .../update/includes/wufb-deployment-graph-explorer.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/windows/deployment/update/includes/wufb-deployment-graph-explorer.md b/windows/deployment/update/includes/wufb-deployment-graph-explorer.md index bca691a415..9cfa2531d7 100644 --- a/windows/deployment/update/includes/wufb-deployment-graph-explorer.md +++ b/windows/deployment/update/includes/wufb-deployment-graph-explorer.md @@ -22,4 +22,8 @@ For this tutorial, you'll use Graph Explorer to make requests to the [Microsoft :::image type="content" source="../media/7512398-wufbds-graph-modify-permission.png" alt-text="Screenshot of the modify permissions tab in Graph Explorer"::: - +1. To make requests: + 1. Select either GET, POST, PUT, PATCH, or DELETE from the drop-down list for the HTTP verb. + 1. + 1. If you need to modify the request body, you can do so in the **Request body** tab. + 1. Select the **Run query** button. The results will appear in the **Response** window. From 8af7b32e0e5e97acf039f7b7910037d9b47fc76d Mon Sep 17 00:00:00 2001 From: Meghan Stewart <33289333+mestew@users.noreply.github.com> Date: Tue, 24 Jan 2023 10:40:17 -0800 Subject: [PATCH 08/92] edits --- .../update/deployment-service-expedited-updates.md | 2 +- .../update/includes/wufb-deployment-find-device-name.md | 8 +++++--- .../update/includes/wufb-deployment-graph-explorer.md | 4 ++-- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/windows/deployment/update/deployment-service-expedited-updates.md b/windows/deployment/update/deployment-service-expedited-updates.md index 00ab2aa130..bce65e4707 100644 --- a/windows/deployment/update/deployment-service-expedited-updates.md +++ b/windows/deployment/update/deployment-service-expedited-updates.md @@ -24,7 +24,7 @@ In this tutorial, you will: ## Prerequisites -? This requires an extra license at the moment correct? Of does the client have to be listed as intune managed ate the moment? +? This requires an extra license at the moment correct? Of does the client have to be listed as intune managed at the moment? ## Open Graph Explorer diff --git a/windows/deployment/update/includes/wufb-deployment-find-device-name.md b/windows/deployment/update/includes/wufb-deployment-find-device-name.md index 461af6da9d..3dcb2f89cd 100644 --- a/windows/deployment/update/includes/wufb-deployment-find-device-name.md +++ b/windows/deployment/update/includes/wufb-deployment-find-device-name.md @@ -18,18 +18,20 @@ Displays the AzureAD ID and name of all devices:
Displays the AzureAD ID for a device name that starts with `Test`:
`GET https://graph.microsoft.com/v1.0/devices?$filter=startswith(displayName, 'Test')&$select=deviceid,displayName` + + ### Add a request header For the next requests, set the **ConsistencyLevel** header to `eventual`. For more information about advanced query parameters, see [Advanced query capabilities on Azure AD directory objects](/graph/aad-advanced-queries). 1. In Graph Explorer, select the **Request headers** tab. -1. For **Key** type in `ConsistencyLevel` then type `eventual` for **Value**. +1. For **Key** type in `ConsistencyLevel` and for **Value**, type `eventual`. 1. Select the **Add** button. When you're finished, remove the request header by selecting the trash can icon. :::image type="content" source="../media/7512398-deployment-service-graph-modify-header.png" alt-text="Screenshot of the request headers tab in Graph Explorer"::: -Displays the name and operating system version for the device that has the AzureAD ID of `44bb2fa1-5bfe-44c7-9221-9c8ed64e1076`:
- `GET https://graph.microsoft.com/v1.0/devices?$search="deviceid:44bb2fa1-5bfe-44c7-9221-9c8ed64e1076"?$select=displayName,operatingSystemVersion` +Displays the name and operating system version for the device that has the AzureAD ID of `01234567-89ab-cdef-0123-456789abcdef`:
+ `GET https://graph.microsoft.com/v1.0/devices?$search="deviceid:01234567-89ab-cdef-0123-456789abcdef"?$select=displayName,operatingSystemVersion` Find devices that don't have virtual machine listed as the model and that have a manufacturer listed:
`GET https://graph.microsoft.com/v1.0/devices?$filter=model ne 'virtual machine' and NOT(manufacturer eq null)&$count=true&$select=deviceid,displayName,operatingSystemVersion` diff --git a/windows/deployment/update/includes/wufb-deployment-graph-explorer.md b/windows/deployment/update/includes/wufb-deployment-graph-explorer.md index 9cfa2531d7..cef28edb38 100644 --- a/windows/deployment/update/includes/wufb-deployment-graph-explorer.md +++ b/windows/deployment/update/includes/wufb-deployment-graph-explorer.md @@ -24,6 +24,6 @@ For this tutorial, you'll use Graph Explorer to make requests to the [Microsoft 1. To make requests: 1. Select either GET, POST, PUT, PATCH, or DELETE from the drop-down list for the HTTP verb. - 1. - 1. If you need to modify the request body, you can do so in the **Request body** tab. + 1. Enter the request into the URL field. + 1. If you need to modify the request body, edit the **Request body** tab. 1. Select the **Run query** button. The results will appear in the **Response** window. From a081b9da824df7fb2d994164c88403844a34770d Mon Sep 17 00:00:00 2001 From: Meghan Stewart <33289333+mestew@users.noreply.github.com> Date: Tue, 24 Jan 2023 16:00:48 -0800 Subject: [PATCH 09/92] edits --- .../update/deployment-service-drivers.md | 8 ++-- .../deployment-service-expedited-updates.md | 17 ++++++-- .../deployment-service-feature-updates.md | 4 +- .../includes/wufb-deployment-enroll-device.md | 40 +++++++++++++++++++ .../wufb-deployment-find-device-name.md | 31 +++++++++----- .../wufb-deployment-graph-explorer.md | 6 +-- 6 files changed, 83 insertions(+), 23 deletions(-) create mode 100644 windows/deployment/update/includes/wufb-deployment-enroll-device.md diff --git a/windows/deployment/update/deployment-service-drivers.md b/windows/deployment/update/deployment-service-drivers.md index 76fa41480a..ca38f4ce00 100644 --- a/windows/deployment/update/deployment-service-drivers.md +++ b/windows/deployment/update/deployment-service-drivers.md @@ -15,13 +15,13 @@ ms.date: 02/14/2023 ***(Applies to: Windows 11 & Windows 10)*** - In this tutorial, you will: > [!div class="checklist"] -> * Do X -> * Do Y +> * [Open Graph Explorer](#open-graph-explorer) +> * [Run queries to identify test devices](#run-queries-to-identify-test-devices) +> * [Enroll devices](#enroll-devices) +> * Do Z > * Do Z - ## Open Graph Explorer diff --git a/windows/deployment/update/deployment-service-expedited-updates.md b/windows/deployment/update/deployment-service-expedited-updates.md index bce65e4707..c48849a5d0 100644 --- a/windows/deployment/update/deployment-service-expedited-updates.md +++ b/windows/deployment/update/deployment-service-expedited-updates.md @@ -17,8 +17,8 @@ ms.date: 02/14/2023 In this tutorial, you will: > [!div class="checklist"] -> * Do X -> * Do Y +> * [Open Graph Explorer](#open-graph-explorer) +> * [Run queries to identify test devices](#run-queries-to-identify-test-devices) > * Do Z @@ -34,4 +34,15 @@ In this tutorial, you will: ## Run queries to identify test devices -[!INCLUDE [Graph Explorer device queries](./includes/wufb-deployment-find-device-name.md)] \ No newline at end of file +[!INCLUDE [Graph Explorer device queries](./includes/wufb-deployment-find-device-name.md)] + +## Enroll devices + + +## List updates in the catalog that can be expedited + +1. Query the catalog to find updates that can be expedited, For example, query for all security updates that can be deployed as expedited updates by the deployment service. Using `$top=3` and ordering by `ReleaseDateTimeshows` displays the three most current updates. + +``` +GET https://graph.microsoft.com/beta/admin/windows/updates/catalog/entries?$filter=isof('microsoft.graph.windowsUpdates.qualityUpdateCatalogEntry') and microsoft.graph.windowsUpdates.qualityUpdateCatalogEntry/isExpeditable eq true&$orderby=releaseDateTime desc&$top=3 +``` \ No newline at end of file diff --git a/windows/deployment/update/deployment-service-feature-updates.md b/windows/deployment/update/deployment-service-feature-updates.md index 3f888d0fb9..690f7857af 100644 --- a/windows/deployment/update/deployment-service-feature-updates.md +++ b/windows/deployment/update/deployment-service-feature-updates.md @@ -17,8 +17,8 @@ ms.date: 02/14/2023 In this tutorial, you will: > [!div class="checklist"] -> * Do X -> * Do Y +> * [Open Graph Explorer](#open-graph-explorer) +> * [Run queries to identify test devices](#run-queries-to-identify-test-devices) > * Do Z ## Open Graph Explorer diff --git a/windows/deployment/update/includes/wufb-deployment-enroll-device.md b/windows/deployment/update/includes/wufb-deployment-enroll-device.md new file mode 100644 index 0000000000..e06d2d6f1f --- /dev/null +++ b/windows/deployment/update/includes/wufb-deployment-enroll-device.md @@ -0,0 +1,40 @@ +--- +author: mestew +ms.author: mstewart +manager: aaroncz +ms.technology: itpro-updates +ms.prod: windows-client +ms.topic: include +ms.date: 02/14/2023 +ms.localizationpriority: medium +--- + + +You enroll devices based on the types of updates you want them to recieve.Currently, you can enroll devices to receive feature updates (`feature`) or drivers (`drivers`). You can enroll devices to receive updates from multiple update classifications. + +- As long as a device remains enrolled in feature update management, the device doesn't receive any other feature updates from Windows Update unless explicitly deployed using the deployment service. +- When you enroll devices into driver management, the deployment service becomes the authority for driver updates coming from Windows Update. Devices don't receive drivers from Windows Update until a deployment is manually created or they're added to a driver update policy with approvals. + + +```rest + +POST https://graph.microsoft.com/beta/admin/windows/updates/updatableAssets/enrollAssets +Content-Type: application/json +{ + "updateCategory": "driver", + "assets": [ + { + "@odata.type": "#microsoft.graph.windowsUpdates.azureADDevice", + "id": "01234567-89ab-cdef-0123-456789abcdef" + }, + { + "@odata.type": "#microsoft.graph.windowsUpdates.azureADDevice", + "id": "01234567-89ab-cdef-0123-456789abcde0" + }, + { + "@odata.type": "#microsoft.graph.windowsUpdates.azureADDevice", + "id": "01234567-89ab-cdef-0123-456789abcde1" + } + ] +} +``` diff --git a/windows/deployment/update/includes/wufb-deployment-find-device-name.md b/windows/deployment/update/includes/wufb-deployment-find-device-name.md index 3dcb2f89cd..6dc2e06236 100644 --- a/windows/deployment/update/includes/wufb-deployment-find-device-name.md +++ b/windows/deployment/update/includes/wufb-deployment-find-device-name.md @@ -2,23 +2,27 @@ author: mestew ms.author: mstewart manager: aaroncz -ms.prod: w10 -ms.collection: M365-modern-desktop +ms.technology: itpro-updates +ms.prod: windows-client ms.topic: include -ms.date: 08/18/2022 +ms.date: 02/14/2023 ms.localizationpriority: medium --- You will need at least [Device.Read.All](/graph/permissions-reference#device-permissions) permission to display [device](/graph/api/resources/device) information. -Displays the AzureAD ID and name of all devices:
- `GET https://graph.microsoft.com/v1.0/devices?$select=deviceid,displayName` +Displays the AzureAD ID and name of all devices: -Displays the AzureAD ID for a device name that starts with `Test`:
- `GET https://graph.microsoft.com/v1.0/devices?$filter=startswith(displayName, 'Test')&$select=deviceid,displayName` +```rest +GET https://graph.microsoft.com/v1.0/devices?$select=deviceid,displayName +``` +Displays the AzureAD ID for a device name that starts with `Test`: +```rest +GET https://graph.microsoft.com/v1.0/devices?$filter=startswith(displayName,'Test')&$select=deviceid,displayName +``` ### Add a request header @@ -30,9 +34,14 @@ For the next requests, set the **ConsistencyLevel** header to `eventual`. For mo :::image type="content" source="../media/7512398-deployment-service-graph-modify-header.png" alt-text="Screenshot of the request headers tab in Graph Explorer"::: -Displays the name and operating system version for the device that has the AzureAD ID of `01234567-89ab-cdef-0123-456789abcdef`:
- `GET https://graph.microsoft.com/v1.0/devices?$search="deviceid:01234567-89ab-cdef-0123-456789abcdef"?$select=displayName,operatingSystemVersion` +Displays the name and operating system version for the device that has the AzureAD ID of `01234567-89ab-cdef-0123-456789abcdef`: -Find devices that don't have virtual machine listed as the model and that have a manufacturer listed:
-`GET https://graph.microsoft.com/v1.0/devices?$filter=model ne 'virtual machine' and NOT(manufacturer eq null)&$count=true&$select=deviceid,displayName,operatingSystemVersion` +```rest +GET https://graph.microsoft.com/v1.0/devices?$search="deviceid:01234567-89ab-cdef-0123-456789abcdef"?$select=displayName,operatingSystemVersion +``` +Find devices that don't have virtual machine listed as the model and that have a manufacturer listed: + +```rest +GET https://graph.microsoft.com/v1.0/devices?$filter=model ne 'virtual machine' and NOT(manufacturer eq null)&$count=true&$select=deviceid,displayName,operatingSystemVersion +``` diff --git a/windows/deployment/update/includes/wufb-deployment-graph-explorer.md b/windows/deployment/update/includes/wufb-deployment-graph-explorer.md index cef28edb38..468bd45373 100644 --- a/windows/deployment/update/includes/wufb-deployment-graph-explorer.md +++ b/windows/deployment/update/includes/wufb-deployment-graph-explorer.md @@ -2,10 +2,10 @@ author: mestew ms.author: mstewart manager: aaroncz -ms.prod: w10 -ms.collection: M365-modern-desktop +ms.technology: itpro-updates +ms.prod: windows-client ms.topic: include -ms.date: 08/18/2022 +ms.date: 02/14/2023 ms.localizationpriority: medium --- From d30ca671eebb9ffd944624e1250e17be32aa0d22 Mon Sep 17 00:00:00 2001 From: Meghan Stewart <33289333+mestew@users.noreply.github.com> Date: Wed, 25 Jan 2023 08:57:19 -0800 Subject: [PATCH 10/92] edits --- windows/deployment/update/deployment-service-drivers.md | 8 +++++++- .../update/deployment-service-expedited-updates.md | 2 +- .../update/deployment-service-feature-updates.md | 9 ++++++++- ...d => wufb-deployment-enroll-device-graph-explorer.md} | 7 ++----- ...> wufb-deployment-find-device-name-graph-explorer.md} | 7 ++++--- 5 files changed, 22 insertions(+), 11 deletions(-) rename windows/deployment/update/includes/{wufb-deployment-enroll-device.md => wufb-deployment-enroll-device-graph-explorer.md} (64%) rename windows/deployment/update/includes/{wufb-deployment-find-device-name.md => wufb-deployment-find-device-name-graph-explorer.md} (90%) diff --git a/windows/deployment/update/deployment-service-drivers.md b/windows/deployment/update/deployment-service-drivers.md index ca38f4ce00..5bfce6c8ad 100644 --- a/windows/deployment/update/deployment-service-drivers.md +++ b/windows/deployment/update/deployment-service-drivers.md @@ -31,5 +31,11 @@ In this tutorial, you will: ## Run queries to identify test devices -[!INCLUDE [Graph Explorer device queries](./includes/wufb-deployment-find-device-name.md)] +[!INCLUDE [Graph Explorer device queries](./includes/wufb-deployment-find-device-name-graph-explorer.md)] +## Enroll devices + +When you enroll devices into driver management, the deployment service becomes the authority for driver updates coming from Windows Update. Devices don't receive drivers from Windows Update until a deployment is manually created or they're added to a driver update policy with approvals. + + +[!INCLUDE [Graph Explorer enroll devices](./includes/wufb-deployment-enroll-device-graph-explorer.md)] \ No newline at end of file diff --git a/windows/deployment/update/deployment-service-expedited-updates.md b/windows/deployment/update/deployment-service-expedited-updates.md index c48849a5d0..c394e42638 100644 --- a/windows/deployment/update/deployment-service-expedited-updates.md +++ b/windows/deployment/update/deployment-service-expedited-updates.md @@ -34,7 +34,7 @@ In this tutorial, you will: ## Run queries to identify test devices -[!INCLUDE [Graph Explorer device queries](./includes/wufb-deployment-find-device-name.md)] +[!INCLUDE [Graph Explorer device queries](./includes/wufb-deployment-find-device-name-graph-explorer.md)] ## Enroll devices diff --git a/windows/deployment/update/deployment-service-feature-updates.md b/windows/deployment/update/deployment-service-feature-updates.md index 690f7857af..7ba0d5c1bd 100644 --- a/windows/deployment/update/deployment-service-feature-updates.md +++ b/windows/deployment/update/deployment-service-feature-updates.md @@ -29,4 +29,11 @@ In this tutorial, you will: ## Run queries to identify test devices -[!INCLUDE [Graph Explorer device queries](./includes/wufb-deployment-find-device-name.md)] \ No newline at end of file +[!INCLUDE [Graph Explorer device queries](./includes/wufb-deployment-find-device-name-graph-explorer.md)] + +## Enroll devices + +As long as a device remains enrolled in feature update management, the device doesn't receive any other feature updates from Windows Update unless explicitly deployed using the deployment service. + + +[!INCLUDE [Graph Explorer enroll devices](./includes/wufb-deployment-enroll-device-graph-explorer.md)] \ No newline at end of file diff --git a/windows/deployment/update/includes/wufb-deployment-enroll-device.md b/windows/deployment/update/includes/wufb-deployment-enroll-device-graph-explorer.md similarity index 64% rename from windows/deployment/update/includes/wufb-deployment-enroll-device.md rename to windows/deployment/update/includes/wufb-deployment-enroll-device-graph-explorer.md index e06d2d6f1f..d1a4b72c67 100644 --- a/windows/deployment/update/includes/wufb-deployment-enroll-device.md +++ b/windows/deployment/update/includes/wufb-deployment-enroll-device-graph-explorer.md @@ -10,12 +10,9 @@ ms.localizationpriority: medium --- -You enroll devices based on the types of updates you want them to recieve.Currently, you can enroll devices to receive feature updates (`feature`) or drivers (`drivers`). You can enroll devices to receive updates from multiple update classifications. - -- As long as a device remains enrolled in feature update management, the device doesn't receive any other feature updates from Windows Update unless explicitly deployed using the deployment service. -- When you enroll devices into driver management, the deployment service becomes the authority for driver updates coming from Windows Update. Devices don't receive drivers from Windows Update until a deployment is manually created or they're added to a driver update policy with approvals. - +You enroll devices based on the types of updates you want them to recieve.Currently, you can enroll devices to receive feature updates (`feature`) or drivers (`driver`). You can enroll devices to receive updates from multiple update classifications. +1. ```rest POST https://graph.microsoft.com/beta/admin/windows/updates/updatableAssets/enrollAssets diff --git a/windows/deployment/update/includes/wufb-deployment-find-device-name.md b/windows/deployment/update/includes/wufb-deployment-find-device-name-graph-explorer.md similarity index 90% rename from windows/deployment/update/includes/wufb-deployment-find-device-name.md rename to windows/deployment/update/includes/wufb-deployment-find-device-name-graph-explorer.md index 6dc2e06236..e985f88f6a 100644 --- a/windows/deployment/update/includes/wufb-deployment-find-device-name.md +++ b/windows/deployment/update/includes/wufb-deployment-find-device-name-graph-explorer.md @@ -12,13 +12,13 @@ ms.localizationpriority: medium You will need at least [Device.Read.All](/graph/permissions-reference#device-permissions) permission to display [device](/graph/api/resources/device) information. -Displays the AzureAD ID and name of all devices: +Displays the AzureAD device ID and name of all devices: ```rest GET https://graph.microsoft.com/v1.0/devices?$select=deviceid,displayName ``` -Displays the AzureAD ID for a device name that starts with `Test`: +Displays the AzureAD device ID for a device name that starts with `Test`: ```rest GET https://graph.microsoft.com/v1.0/devices?$filter=startswith(displayName,'Test')&$select=deviceid,displayName @@ -34,7 +34,7 @@ For the next requests, set the **ConsistencyLevel** header to `eventual`. For mo :::image type="content" source="../media/7512398-deployment-service-graph-modify-header.png" alt-text="Screenshot of the request headers tab in Graph Explorer"::: -Displays the name and operating system version for the device that has the AzureAD ID of `01234567-89ab-cdef-0123-456789abcdef`: +Displays the name and operating system version for the device that has the AzureAD device ID of `01234567-89ab-cdef-0123-456789abcdef`: ```rest GET https://graph.microsoft.com/v1.0/devices?$search="deviceid:01234567-89ab-cdef-0123-456789abcdef"?$select=displayName,operatingSystemVersion @@ -45,3 +45,4 @@ Find devices that don't have virtual machine listed as the model and that have a ```rest GET https://graph.microsoft.com/v1.0/devices?$filter=model ne 'virtual machine' and NOT(manufacturer eq null)&$count=true&$select=deviceid,displayName,operatingSystemVersion ``` + From a3659897e05973cc4d6691964485cd1a042a7453 Mon Sep 17 00:00:00 2001 From: Meghan Stewart <33289333+mestew@users.noreply.github.com> Date: Wed, 25 Jan 2023 11:24:24 -0800 Subject: [PATCH 11/92] edits --- ...deployment-enroll-device-graph-explorer.md | 40 +++++++++++++++++- ...loyment-find-device-name-graph-explorer.md | 16 ++++--- .../wufb-deployment-graph-explorer.md | 2 +- .../7512398-deployment-enroll-asset-graph.png | Bin 0 -> 162140 bytes 4 files changed, 51 insertions(+), 7 deletions(-) create mode 100644 windows/deployment/update/media/7512398-deployment-enroll-asset-graph.png diff --git a/windows/deployment/update/includes/wufb-deployment-enroll-device-graph-explorer.md b/windows/deployment/update/includes/wufb-deployment-enroll-device-graph-explorer.md index d1a4b72c67..70eaace55a 100644 --- a/windows/deployment/update/includes/wufb-deployment-enroll-device-graph-explorer.md +++ b/windows/deployment/update/includes/wufb-deployment-enroll-device-graph-explorer.md @@ -12,7 +12,45 @@ ms.localizationpriority: medium You enroll devices based on the types of updates you want them to recieve.Currently, you can enroll devices to receive feature updates (`feature`) or drivers (`driver`). You can enroll devices to receive updates from multiple update classifications. -1. +1. To enroll devices, you'll POST to [updatableAssets](/graph/api/resources/windowsupdates-updatableasset) using [enrollAssets](/graph/api/windowsupdates-updatableasset-enrollassets). The following example enrolls three devices to receive driver updates: + 1. In Graph Explorer, select **POST** from the drop-down list for the HTTP verb. + 1. Enter the following request into the URL field:
+ `https://graph.microsoft.com/beta/admin/windows/updates/updatableAssets/enrollAssets` + 1. In the **Request body** tab, enter the following JSON, supplying the following information: + - **Azure AD Device ID** as `id` + - Either `feature` or `driver` for the updateCategory + + ```json + { + "updateCategory": "driver", + "assets": [ + { + "@odata.type": "#microsoft.graph.windowsUpdates.azureADDevice", + "id": "01234567-89ab-cdef-0123-456789abcdef" + }, + { + "@odata.type": "#microsoft.graph.windowsUpdates.azureADDevice", + "id": "01234567-89ab-cdef-0123-456789abcde0" + }, + { + "@odata.type": "#microsoft.graph.windowsUpdates.azureADDevice", + "id": "01234567-89ab-cdef-0123-456789abcde1" + } + ] + } + ``` + + 1. Select the **Run query** button. The results will appear in the **Response** window. In this case, the status code of [202 Accepted](/troubleshoot/developer/webapps/iis/www-administration-management/http-status-code#2xx---success). + + :::image type="content" source="../media/7512398-deployment-enroll-asset-graph.png" alt-text="Screenshot of successfully enrolling assets through Graph Explorer." lightbox="../media/7512398-deployment-enroll-asset-graph.png" ::: + + + + + + + + ```rest POST https://graph.microsoft.com/beta/admin/windows/updates/updatableAssets/enrollAssets diff --git a/windows/deployment/update/includes/wufb-deployment-find-device-name-graph-explorer.md b/windows/deployment/update/includes/wufb-deployment-find-device-name-graph-explorer.md index e985f88f6a..2775e0199b 100644 --- a/windows/deployment/update/includes/wufb-deployment-find-device-name-graph-explorer.md +++ b/windows/deployment/update/includes/wufb-deployment-find-device-name-graph-explorer.md @@ -12,13 +12,19 @@ ms.localizationpriority: medium You will need at least [Device.Read.All](/graph/permissions-reference#device-permissions) permission to display [device](/graph/api/resources/device) information. -Displays the AzureAD device ID and name of all devices: +> [!Tip] +> Requests using the [device](/graph/api/resources/device) resource type typically have both an `id` and a `deviceid`: +> - The `deviceid` is the **Azure AD Device ID** and will be used in this tutorial. +> - Later in this tutorial, this `deviceid` will be used as an `id` when you make certain requests such as adding a device to a deployment audience. +> - The `id` from the [device](/graph/api/resources/device) resource type is usually the Azure AD Object ID and it won't be used in this tutorial. + +Displays the **AzureAD Device ID** and **Name** of all devices: ```rest GET https://graph.microsoft.com/v1.0/devices?$select=deviceid,displayName ``` -Displays the AzureAD device ID for a device name that starts with `Test`: +Displays the **AzureAD Device ID** and **Name** for device names that starts with `Test`: ```rest GET https://graph.microsoft.com/v1.0/devices?$filter=startswith(displayName,'Test')&$select=deviceid,displayName @@ -32,15 +38,15 @@ For the next requests, set the **ConsistencyLevel** header to `eventual`. For mo 1. For **Key** type in `ConsistencyLevel` and for **Value**, type `eventual`. 1. Select the **Add** button. When you're finished, remove the request header by selecting the trash can icon. - :::image type="content" source="../media/7512398-deployment-service-graph-modify-header.png" alt-text="Screenshot of the request headers tab in Graph Explorer"::: + :::image type="content" source="../media/7512398-deployment-service-graph-modify-header.png" alt-text="Screenshot of the request headers tab in Graph Explorer" lightbox="../media/7512398-deployment-service-graph-modify-header.png"::: -Displays the name and operating system version for the device that has the AzureAD device ID of `01234567-89ab-cdef-0123-456789abcdef`: +Displays the **Name** and **Operating system version** for the device that has the **AzureAD Device ID** of `01234567-89ab-cdef-0123-456789abcdef`: ```rest GET https://graph.microsoft.com/v1.0/devices?$search="deviceid:01234567-89ab-cdef-0123-456789abcdef"?$select=displayName,operatingSystemVersion ``` -Find devices that don't have virtual machine listed as the model and that have a manufacturer listed: +Find devices that don't have virtual machine listed as the model and that have a manufacturer listed. Display the **AzureAD Device ID**, **Name**, and **Operating system version** for each device: ```rest GET https://graph.microsoft.com/v1.0/devices?$filter=model ne 'virtual machine' and NOT(manufacturer eq null)&$count=true&$select=deviceid,displayName,operatingSystemVersion diff --git a/windows/deployment/update/includes/wufb-deployment-graph-explorer.md b/windows/deployment/update/includes/wufb-deployment-graph-explorer.md index 468bd45373..511d4f5402 100644 --- a/windows/deployment/update/includes/wufb-deployment-graph-explorer.md +++ b/windows/deployment/update/includes/wufb-deployment-graph-explorer.md @@ -20,7 +20,7 @@ For this tutorial, you'll use Graph Explorer to make requests to the [Microsoft 1. Select the **Modify permissions** tab in Graph Explorer. 1. In the permissions dialog box, select the **WindowsUpdates.ReadWrite.All** permission then select **Consent**. You may need to sign in again to grant consent. - :::image type="content" source="../media/7512398-wufbds-graph-modify-permission.png" alt-text="Screenshot of the modify permissions tab in Graph Explorer"::: + :::image type="content" source="../media/7512398-wufbds-graph-modify-permission.png" alt-text="Screenshot of the modify permissions tab in Graph Explorer" lightbox="../media/7512398-wufbds-graph-modify-permission.png" ::: 1. To make requests: 1. Select either GET, POST, PUT, PATCH, or DELETE from the drop-down list for the HTTP verb. diff --git a/windows/deployment/update/media/7512398-deployment-enroll-asset-graph.png b/windows/deployment/update/media/7512398-deployment-enroll-asset-graph.png new file mode 100644 index 0000000000000000000000000000000000000000..9d0310652a23c24028a47961db4a1a39ff65866e GIT binary patch literal 162140 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 U^o_)gzXGqXWAd=({`2?$177O(%m4rY literal 0 HcmV?d00001 From 202f51c672bd5df148f9228c770e4c5359b95fbd Mon Sep 17 00:00:00 2001 From: Meghan Stewart <33289333+mestew@users.noreply.github.com> Date: Wed, 25 Jan 2023 13:33:32 -0800 Subject: [PATCH 12/92] edits --- ...wufb-deployment-find-device-name-graph-explorer.md | 11 +++++------ .../update/includes/wufb-deployment-graph-explorer.md | 6 ++++-- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/windows/deployment/update/includes/wufb-deployment-find-device-name-graph-explorer.md b/windows/deployment/update/includes/wufb-deployment-find-device-name-graph-explorer.md index 2775e0199b..02e1f20cc0 100644 --- a/windows/deployment/update/includes/wufb-deployment-find-device-name-graph-explorer.md +++ b/windows/deployment/update/includes/wufb-deployment-find-device-name-graph-explorer.md @@ -12,12 +12,6 @@ ms.localizationpriority: medium You will need at least [Device.Read.All](/graph/permissions-reference#device-permissions) permission to display [device](/graph/api/resources/device) information. -> [!Tip] -> Requests using the [device](/graph/api/resources/device) resource type typically have both an `id` and a `deviceid`: -> - The `deviceid` is the **Azure AD Device ID** and will be used in this tutorial. -> - Later in this tutorial, this `deviceid` will be used as an `id` when you make certain requests such as adding a device to a deployment audience. -> - The `id` from the [device](/graph/api/resources/device) resource type is usually the Azure AD Object ID and it won't be used in this tutorial. - Displays the **AzureAD Device ID** and **Name** of all devices: ```rest @@ -52,3 +46,8 @@ Find devices that don't have virtual machine listed as the model and that have a GET https://graph.microsoft.com/v1.0/devices?$filter=model ne 'virtual machine' and NOT(manufacturer eq null)&$count=true&$select=deviceid,displayName,operatingSystemVersion ``` +> [!Tip] +> Requests using the [device](/graph/api/resources/device) resource type typically have both an `id` and a `deviceid`: +> - The `deviceid` is the **Azure AD Device ID** and will be used in this tutorial. +> - Later in this tutorial, this `deviceid` will be used as an `id` when you make certain requests such as adding a device to a deployment audience. +> - The `id` from the [device](/graph/api/resources/device) resource type is usually the Azure AD Object ID and it won't be used in this tutorial. diff --git a/windows/deployment/update/includes/wufb-deployment-graph-explorer.md b/windows/deployment/update/includes/wufb-deployment-graph-explorer.md index 511d4f5402..0c4d86b149 100644 --- a/windows/deployment/update/includes/wufb-deployment-graph-explorer.md +++ b/windows/deployment/update/includes/wufb-deployment-graph-explorer.md @@ -23,7 +23,9 @@ For this tutorial, you'll use Graph Explorer to make requests to the [Microsoft :::image type="content" source="../media/7512398-wufbds-graph-modify-permission.png" alt-text="Screenshot of the modify permissions tab in Graph Explorer" lightbox="../media/7512398-wufbds-graph-modify-permission.png" ::: 1. To make requests: - 1. Select either GET, POST, PUT, PATCH, or DELETE from the drop-down list for the HTTP verb. - 1. Enter the request into the URL field. + 1. Select either GET, POST, PUT, PATCH, or DELETE from the drop-down list for the HTTP method. + 1. Enter the request into the URL field. The version will populate automatically based on the URL 1. If you need to modify the request body, edit the **Request body** tab. 1. Select the **Run query** button. The results will appear in the **Response** window. + + > [!TIP] When reviewing [Microsoft Graph documentation](/graph/), you may notice example requests usually list `Content-type: application/json`. Specifying `content-type` typically isn't required for Graph Explorer, but you can add it to the request by selecting the **Headers** tab and adding the `content-type` to the **Request headers** field as the **Key** and `application/json` as the **Value**. From b80aafa463f8a3c7be5ab7ea7b176cca365694c1 Mon Sep 17 00:00:00 2001 From: Meghan Stewart <33289333+mestew@users.noreply.github.com> Date: Wed, 25 Jan 2023 14:09:06 -0800 Subject: [PATCH 13/92] edits --- .../update/deployment-service-drivers.md | 7 +++++++ .../deployment-service-expedited-updates.md | 5 +++++ .../update/deployment-service-feature-updates.md | 7 +++++++ ...deployment-find-device-name-graph-explorer.md | 4 ++-- .../includes/wufb-deployment-graph-explorer.md | 5 +++-- .../wufb-deployment-tutorial-permissions.md | 16 ++++++++++++++++ 6 files changed, 40 insertions(+), 4 deletions(-) create mode 100644 windows/deployment/update/includes/wufb-deployment-tutorial-permissions.md diff --git a/windows/deployment/update/deployment-service-drivers.md b/windows/deployment/update/deployment-service-drivers.md index 5bfce6c8ad..c8a29a1586 100644 --- a/windows/deployment/update/deployment-service-drivers.md +++ b/windows/deployment/update/deployment-service-drivers.md @@ -23,6 +23,13 @@ In this tutorial, you will: > * Do Z > * Do Z +## Prerequisites + +### Permissions + + +[!INCLUDE [Windows Update for Business deployment service tutorial permissions](./includes/wufb-deployment-tutorial-permissions.md.md)] + ## Open Graph Explorer diff --git a/windows/deployment/update/deployment-service-expedited-updates.md b/windows/deployment/update/deployment-service-expedited-updates.md index c394e42638..7a21b4a50f 100644 --- a/windows/deployment/update/deployment-service-expedited-updates.md +++ b/windows/deployment/update/deployment-service-expedited-updates.md @@ -26,6 +26,11 @@ In this tutorial, you will: ? This requires an extra license at the moment correct? Of does the client have to be listed as intune managed at the moment? +### Permissions + + +[!INCLUDE [Windows Update for Business deployment service tutorial permissions](./includes/wufb-deployment-tutorial-permissions.md.md)] + ## Open Graph Explorer diff --git a/windows/deployment/update/deployment-service-feature-updates.md b/windows/deployment/update/deployment-service-feature-updates.md index 7ba0d5c1bd..18c90eb594 100644 --- a/windows/deployment/update/deployment-service-feature-updates.md +++ b/windows/deployment/update/deployment-service-feature-updates.md @@ -21,6 +21,13 @@ In this tutorial, you will: > * [Run queries to identify test devices](#run-queries-to-identify-test-devices) > * Do Z +## Prerequisites + +### Permissions + + +[!INCLUDE [Windows Update for Business deployment service tutorial permissions](./includes/wufb-deployment-tutorial-permissions.md.md)] + ## Open Graph Explorer diff --git a/windows/deployment/update/includes/wufb-deployment-find-device-name-graph-explorer.md b/windows/deployment/update/includes/wufb-deployment-find-device-name-graph-explorer.md index 02e1f20cc0..8be06bc49a 100644 --- a/windows/deployment/update/includes/wufb-deployment-find-device-name-graph-explorer.md +++ b/windows/deployment/update/includes/wufb-deployment-find-device-name-graph-explorer.md @@ -10,7 +10,7 @@ ms.localizationpriority: medium --- -You will need at least [Device.Read.All](/graph/permissions-reference#device-permissions) permission to display [device](/graph/api/resources/device) information. + Displays the **AzureAD Device ID** and **Name** of all devices: @@ -50,4 +50,4 @@ GET https://graph.microsoft.com/v1.0/devices?$filter=model ne 'virtual machine' > Requests using the [device](/graph/api/resources/device) resource type typically have both an `id` and a `deviceid`: > - The `deviceid` is the **Azure AD Device ID** and will be used in this tutorial. > - Later in this tutorial, this `deviceid` will be used as an `id` when you make certain requests such as adding a device to a deployment audience. -> - The `id` from the [device](/graph/api/resources/device) resource type is usually the Azure AD Object ID and it won't be used in this tutorial. +> - The `id` from the [device](/graph/api/resources/device) resource type is usually the Azure AD Object ID, which won't be used in this tutorial. diff --git a/windows/deployment/update/includes/wufb-deployment-graph-explorer.md b/windows/deployment/update/includes/wufb-deployment-graph-explorer.md index 0c4d86b149..2a51ba52d4 100644 --- a/windows/deployment/update/includes/wufb-deployment-graph-explorer.md +++ b/windows/deployment/update/includes/wufb-deployment-graph-explorer.md @@ -24,8 +24,9 @@ For this tutorial, you'll use Graph Explorer to make requests to the [Microsoft 1. To make requests: 1. Select either GET, POST, PUT, PATCH, or DELETE from the drop-down list for the HTTP method. - 1. Enter the request into the URL field. The version will populate automatically based on the URL + 1. Enter the request into the URL field. The version will populate automatically based on the URL. 1. If you need to modify the request body, edit the **Request body** tab. 1. Select the **Run query** button. The results will appear in the **Response** window. - > [!TIP] When reviewing [Microsoft Graph documentation](/graph/), you may notice example requests usually list `Content-type: application/json`. Specifying `content-type` typically isn't required for Graph Explorer, but you can add it to the request by selecting the **Headers** tab and adding the `content-type` to the **Request headers** field as the **Key** and `application/json` as the **Value**. + > [!TIP] + > When reviewing [Microsoft Graph documentation](/graph/), you may notice example requests usually list `Content-type: application/json`. Specifying `content-type` typically isn't required for Graph Explorer, but you can add it to the request by selecting the **Headers** tab and adding the `content-type` to the **Request headers** field as the **Key** and `application/json` as the **Value**. diff --git a/windows/deployment/update/includes/wufb-deployment-tutorial-permissions.md b/windows/deployment/update/includes/wufb-deployment-tutorial-permissions.md new file mode 100644 index 0000000000..b1f494a758 --- /dev/null +++ b/windows/deployment/update/includes/wufb-deployment-tutorial-permissions.md @@ -0,0 +1,16 @@ +--- +author: mestew +ms.author: mstewart +manager: aaroncz +ms.technology: itpro-updates +ms.prod: windows-client +ms.topic: include +ms.date: 02/14/2023 +ms.localizationpriority: medium +--- + + +The following permissions are needed for the tutorial: + +- [WindowsUpdates.ReadWrite.All](/graph/permissions-reference#windows-updates-permissions) for [Windows Update for Business deployment service](/graph/api/resources/windowsupdates) operations. +- At least [Device.Read.All](/graph/permissions-reference#device-permissions) permission to display [device](/graph/api/resources/device) information. \ No newline at end of file From 7a6f02a66eed7d5df0160816425eb9ebcb968752 Mon Sep 17 00:00:00 2001 From: Meghan Stewart <33289333+mestew@users.noreply.github.com> Date: Wed, 25 Jan 2023 15:03:58 -0800 Subject: [PATCH 14/92] edits --- .../update/deployment-service-drivers.md | 2 +- .../deployment-service-expedited-updates.md | 2 +- .../deployment-service-feature-updates.md | 2 +- .../update/deployment-service-overview.md | 13 ++++---- .../update/deployment-service-troubleshoot.md | 5 +-- ...deployment-enroll-device-graph-explorer.md | 32 +------------------ ...loyment-find-device-name-graph-explorer.md | 4 +-- .../wufb-deployment-tutorial-permissions.md | 6 ++-- 8 files changed, 18 insertions(+), 48 deletions(-) diff --git a/windows/deployment/update/deployment-service-drivers.md b/windows/deployment/update/deployment-service-drivers.md index c8a29a1586..97384994e0 100644 --- a/windows/deployment/update/deployment-service-drivers.md +++ b/windows/deployment/update/deployment-service-drivers.md @@ -28,7 +28,7 @@ In this tutorial, you will: ### Permissions -[!INCLUDE [Windows Update for Business deployment service tutorial permissions](./includes/wufb-deployment-tutorial-permissions.md.md)] +[!INCLUDE [Windows Update for Business deployment service tutorial permissions](./includes/wufb-deployment-tutorial-permissions.md)] ## Open Graph Explorer diff --git a/windows/deployment/update/deployment-service-expedited-updates.md b/windows/deployment/update/deployment-service-expedited-updates.md index 7a21b4a50f..b91cc15f39 100644 --- a/windows/deployment/update/deployment-service-expedited-updates.md +++ b/windows/deployment/update/deployment-service-expedited-updates.md @@ -29,7 +29,7 @@ In this tutorial, you will: ### Permissions -[!INCLUDE [Windows Update for Business deployment service tutorial permissions](./includes/wufb-deployment-tutorial-permissions.md.md)] +[!INCLUDE [Windows Update for Business deployment service tutorial permissions](./includes/wufb-deployment-tutorial-permissions.md)] ## Open Graph Explorer diff --git a/windows/deployment/update/deployment-service-feature-updates.md b/windows/deployment/update/deployment-service-feature-updates.md index 18c90eb594..d69fee53cf 100644 --- a/windows/deployment/update/deployment-service-feature-updates.md +++ b/windows/deployment/update/deployment-service-feature-updates.md @@ -26,7 +26,7 @@ In this tutorial, you will: ### Permissions -[!INCLUDE [Windows Update for Business deployment service tutorial permissions](./includes/wufb-deployment-tutorial-permissions.md.md)] +[!INCLUDE [Windows Update for Business deployment service tutorial permissions](./includes/wufb-deployment-tutorial-permissions.md)] ## Open Graph Explorer diff --git a/windows/deployment/update/deployment-service-overview.md b/windows/deployment/update/deployment-service-overview.md index 7ef4804c87..f74ac54e66 100644 --- a/windows/deployment/update/deployment-service-overview.md +++ b/windows/deployment/update/deployment-service-overview.md @@ -15,10 +15,7 @@ ms.date: 12/31/2017 # Windows Update for Business deployment service -**Applies to** - -- Windows 10 -- Windows 11 +***(Applies to: Windows 11 & Windows 10)*** The Windows Update for Business deployment service is a cloud service within the Windows Update for Business product family. It provides control over the approval, scheduling, and safeguarding of updates delivered from Windows Update. It's designed to work in harmony with your existing Windows Update for Business policies. @@ -58,8 +55,11 @@ The deployment service exposes these capabilities through Microsoft [Graph REST To work with the deployment service, devices must meet all these requirements: -- Be running Windows 10, version 1709 or later (or Windows 11) -- Be joined to Azure Active Directory (AD) or Hybrid AD +- Devices must be [Azure AD joined](/azure/active-directory/devices/concept-azure-ad-join) or [hybrid Azure AD joined](/azure/active-directory/devices/concept-azure-ad-join-hybrid) +- Run one of the following operating systems: + - Windows 11 + - Windows 10, version 1709 or later + - Have one of the following Windows 10 or Windows 11 editions installed: - Pro - Enterprise @@ -68,6 +68,7 @@ To work with the deployment service, devices must meet all these requirements: - Pro for Workstations Additionally, your organization must have one of the following subscriptions: + - Windows 10/11 Enterprise E3 or E5 (included in Microsoft 365 F3, E3, or E5) - Windows 10/11 Education A3 or A5 (included in Microsoft 365 A3 or A5) - Windows Virtual Desktop Access E3 or E5 diff --git a/windows/deployment/update/deployment-service-troubleshoot.md b/windows/deployment/update/deployment-service-troubleshoot.md index f584bbae71..e97748686c 100644 --- a/windows/deployment/update/deployment-service-troubleshoot.md +++ b/windows/deployment/update/deployment-service-troubleshoot.md @@ -15,10 +15,7 @@ ms.date: 12/31/2017 # Troubleshoot the Windows Update for Business deployment service -**Applies to** - -- Windows 10 -- Windows 11 +***(Applies to: Windows 11 & Windows 10)*** This troubleshooting guide addresses the most common issues that IT administrators face when using the Windows Update for Business [deployment service](deployment-service-overview.md). For a general troubleshooting guide for Windows Update, see [Windows Update troubleshooting](/troubleshoot/windows-client/deployment/windows-update-issues-troubleshooting?toc=/windows/deployment/toc.json&bc=/windows/deployment/breadcrumb/toc.json). diff --git a/windows/deployment/update/includes/wufb-deployment-enroll-device-graph-explorer.md b/windows/deployment/update/includes/wufb-deployment-enroll-device-graph-explorer.md index 70eaace55a..24f11868a3 100644 --- a/windows/deployment/update/includes/wufb-deployment-enroll-device-graph-explorer.md +++ b/windows/deployment/update/includes/wufb-deployment-enroll-device-graph-explorer.md @@ -12,7 +12,7 @@ ms.localizationpriority: medium You enroll devices based on the types of updates you want them to recieve.Currently, you can enroll devices to receive feature updates (`feature`) or drivers (`driver`). You can enroll devices to receive updates from multiple update classifications. -1. To enroll devices, you'll POST to [updatableAssets](/graph/api/resources/windowsupdates-updatableasset) using [enrollAssets](/graph/api/windowsupdates-updatableasset-enrollassets). The following example enrolls three devices to receive driver updates: +1. To enroll devices, POST to [updatableAssets](/graph/api/resources/windowsupdates-updatableasset) using [enrollAssets](/graph/api/windowsupdates-updatableasset-enrollassets). The following example enrolls three devices to receive driver updates: 1. In Graph Explorer, select **POST** from the drop-down list for the HTTP verb. 1. Enter the following request into the URL field:
`https://graph.microsoft.com/beta/admin/windows/updates/updatableAssets/enrollAssets` @@ -43,33 +43,3 @@ You enroll devices based on the types of updates you want them to recieve.Curren 1. Select the **Run query** button. The results will appear in the **Response** window. In this case, the status code of [202 Accepted](/troubleshoot/developer/webapps/iis/www-administration-management/http-status-code#2xx---success). :::image type="content" source="../media/7512398-deployment-enroll-asset-graph.png" alt-text="Screenshot of successfully enrolling assets through Graph Explorer." lightbox="../media/7512398-deployment-enroll-asset-graph.png" ::: - - - - - - - - -```rest - -POST https://graph.microsoft.com/beta/admin/windows/updates/updatableAssets/enrollAssets -Content-Type: application/json -{ - "updateCategory": "driver", - "assets": [ - { - "@odata.type": "#microsoft.graph.windowsUpdates.azureADDevice", - "id": "01234567-89ab-cdef-0123-456789abcdef" - }, - { - "@odata.type": "#microsoft.graph.windowsUpdates.azureADDevice", - "id": "01234567-89ab-cdef-0123-456789abcde0" - }, - { - "@odata.type": "#microsoft.graph.windowsUpdates.azureADDevice", - "id": "01234567-89ab-cdef-0123-456789abcde1" - } - ] -} -``` diff --git a/windows/deployment/update/includes/wufb-deployment-find-device-name-graph-explorer.md b/windows/deployment/update/includes/wufb-deployment-find-device-name-graph-explorer.md index 8be06bc49a..3e64a0ecf5 100644 --- a/windows/deployment/update/includes/wufb-deployment-find-device-name-graph-explorer.md +++ b/windows/deployment/update/includes/wufb-deployment-find-device-name-graph-explorer.md @@ -10,7 +10,7 @@ ms.localizationpriority: medium --- - +Use the [device](/graph/api/resources/device) resource type to find clients to enroll into the deployment service. Change the query parameters to fit your specific needs. For more information, see [Use query parameters](/graph/query-parameters). Displays the **AzureAD Device ID** and **Name** of all devices: @@ -40,7 +40,7 @@ Displays the **Name** and **Operating system version** for the device that has t GET https://graph.microsoft.com/v1.0/devices?$search="deviceid:01234567-89ab-cdef-0123-456789abcdef"?$select=displayName,operatingSystemVersion ``` -Find devices that don't have virtual machine listed as the model and that have a manufacturer listed. Display the **AzureAD Device ID**, **Name**, and **Operating system version** for each device: +To find devices that likely aren't virtual machines, filter for devices that don't have virtual machine listed as the model but do have a manufacturer listed. Display the **AzureAD Device ID**, **Name**, and **Operating system version** for each device: ```rest GET https://graph.microsoft.com/v1.0/devices?$filter=model ne 'virtual machine' and NOT(manufacturer eq null)&$count=true&$select=deviceid,displayName,operatingSystemVersion diff --git a/windows/deployment/update/includes/wufb-deployment-tutorial-permissions.md b/windows/deployment/update/includes/wufb-deployment-tutorial-permissions.md index b1f494a758..f2da67046b 100644 --- a/windows/deployment/update/includes/wufb-deployment-tutorial-permissions.md +++ b/windows/deployment/update/includes/wufb-deployment-tutorial-permissions.md @@ -10,7 +10,9 @@ ms.localizationpriority: medium --- -The following permissions are needed for the tutorial: +The following permissions are needed for the tutorial: - [WindowsUpdates.ReadWrite.All](/graph/permissions-reference#windows-updates-permissions) for [Windows Update for Business deployment service](/graph/api/resources/windowsupdates) operations. -- At least [Device.Read.All](/graph/permissions-reference#device-permissions) permission to display [device](/graph/api/resources/device) information. \ No newline at end of file +- At least [Device.Read.All](/graph/permissions-reference#device-permissions) permission to display [device](/graph/api/resources/device) information. + +Some roles, such as the [Windows Update deployment administrator](/azure/active-directory/roles/permissions-reference#windows-update-deployment-administrator), already have these permissions. From 294e11e72ad0ca7d2ee8455ce77401594fdb86f8 Mon Sep 17 00:00:00 2001 From: Meghan Stewart <33289333+mestew@users.noreply.github.com> Date: Wed, 25 Jan 2023 15:07:29 -0800 Subject: [PATCH 15/92] edits --- windows/deployment/update/deployment-service-drivers.md | 8 +++++--- .../update/deployment-service-expedited-updates.md | 2 ++ .../update/deployment-service-feature-updates.md | 1 + 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/windows/deployment/update/deployment-service-drivers.md b/windows/deployment/update/deployment-service-drivers.md index 97384994e0..a511c7cde8 100644 --- a/windows/deployment/update/deployment-service-drivers.md +++ b/windows/deployment/update/deployment-service-drivers.md @@ -17,14 +17,15 @@ ms.date: 02/14/2023 In this tutorial, you will: > [!div class="checklist"] -> * [Open Graph Explorer](#open-graph-explorer) +> * [Open Graph Explorer](#open-graph-explorer) > * [Run queries to identify test devices](#run-queries-to-identify-test-devices) -> * [Enroll devices](#enroll-devices) +> * [Enroll devices](#enroll-devices) > * Do Z > * Do Z ## Prerequisites +All of the [prerequisites for the Windows Update for Business deployment service](deployment-service-overview.md#prerequisites) must be met. ### Permissions @@ -45,4 +46,5 @@ In this tutorial, you will: When you enroll devices into driver management, the deployment service becomes the authority for driver updates coming from Windows Update. Devices don't receive drivers from Windows Update until a deployment is manually created or they're added to a driver update policy with approvals. -[!INCLUDE [Graph Explorer enroll devices](./includes/wufb-deployment-enroll-device-graph-explorer.md)] \ No newline at end of file +[!INCLUDE [Graph Explorer enroll devices](./includes/wufb-deployment-enroll-device-graph-explorer.md)] + diff --git a/windows/deployment/update/deployment-service-expedited-updates.md b/windows/deployment/update/deployment-service-expedited-updates.md index b91cc15f39..8650f264e9 100644 --- a/windows/deployment/update/deployment-service-expedited-updates.md +++ b/windows/deployment/update/deployment-service-expedited-updates.md @@ -26,6 +26,8 @@ In this tutorial, you will: ? This requires an extra license at the moment correct? Of does the client have to be listed as intune managed at the moment? +All of the [prerequisites for the Windows Update for Business deployment service](deployment-service-overview.md#prerequisites) must be met. + ### Permissions diff --git a/windows/deployment/update/deployment-service-feature-updates.md b/windows/deployment/update/deployment-service-feature-updates.md index d69fee53cf..1a703e5660 100644 --- a/windows/deployment/update/deployment-service-feature-updates.md +++ b/windows/deployment/update/deployment-service-feature-updates.md @@ -23,6 +23,7 @@ In this tutorial, you will: ## Prerequisites +All of the [prerequisites for the Windows Update for Business deployment service](deployment-service-overview.md#prerequisites) must be met. ### Permissions From 07ab0afe41fbb785c276545f2574fd3755fc30d3 Mon Sep 17 00:00:00 2001 From: Meghan Stewart <33289333+mestew@users.noreply.github.com> Date: Wed, 25 Jan 2023 15:44:56 -0800 Subject: [PATCH 16/92] edits, add new incluyde --- .../update/deployment-service-drivers.md | 6 +++ .../deployment-service-feature-updates.md | 8 +++- ...deployment-enroll-device-graph-explorer.md | 2 +- .../wufb-deployment-graph-unenroll.md | 41 +++++++++++++++++++ 4 files changed, 55 insertions(+), 2 deletions(-) create mode 100644 windows/deployment/update/includes/wufb-deployment-graph-unenroll.md diff --git a/windows/deployment/update/deployment-service-drivers.md b/windows/deployment/update/deployment-service-drivers.md index a511c7cde8..97477fbb0e 100644 --- a/windows/deployment/update/deployment-service-drivers.md +++ b/windows/deployment/update/deployment-service-drivers.md @@ -48,3 +48,9 @@ When you enroll devices into driver management, the deployment service becomes t [!INCLUDE [Graph Explorer enroll devices](./includes/wufb-deployment-enroll-device-graph-explorer.md)] + + +## Remove device enrollment + + +[!INCLUDE [Graph Explorer enroll devices](./includes/wufb-deployment-graph-unenroll.md)] diff --git a/windows/deployment/update/deployment-service-feature-updates.md b/windows/deployment/update/deployment-service-feature-updates.md index 1a703e5660..b9b6c71b1b 100644 --- a/windows/deployment/update/deployment-service-feature-updates.md +++ b/windows/deployment/update/deployment-service-feature-updates.md @@ -44,4 +44,10 @@ All of the [prerequisites for the Windows Update for Business deployment service As long as a device remains enrolled in feature update management, the device doesn't receive any other feature updates from Windows Update unless explicitly deployed using the deployment service. -[!INCLUDE [Graph Explorer enroll devices](./includes/wufb-deployment-enroll-device-graph-explorer.md)] \ No newline at end of file +[!INCLUDE [Graph Explorer enroll devices](./includes/wufb-deployment-enroll-device-graph-explorer.md)] + + +## Remove device enrollment + + +[!INCLUDE [Graph Explorer enroll devices](./includes/wufb-deployment-graph-unenroll.md)] \ No newline at end of file diff --git a/windows/deployment/update/includes/wufb-deployment-enroll-device-graph-explorer.md b/windows/deployment/update/includes/wufb-deployment-enroll-device-graph-explorer.md index 24f11868a3..5ea333f440 100644 --- a/windows/deployment/update/includes/wufb-deployment-enroll-device-graph-explorer.md +++ b/windows/deployment/update/includes/wufb-deployment-enroll-device-graph-explorer.md @@ -8,7 +8,7 @@ ms.topic: include ms.date: 02/14/2023 ms.localizationpriority: medium --- - + You enroll devices based on the types of updates you want them to recieve.Currently, you can enroll devices to receive feature updates (`feature`) or drivers (`driver`). You can enroll devices to receive updates from multiple update classifications. diff --git a/windows/deployment/update/includes/wufb-deployment-graph-unenroll.md b/windows/deployment/update/includes/wufb-deployment-graph-unenroll.md new file mode 100644 index 0000000000..6fd26c4782 --- /dev/null +++ b/windows/deployment/update/includes/wufb-deployment-graph-unenroll.md @@ -0,0 +1,41 @@ +--- +author: mestew +ms.author: mstewart +manager: aaroncz +ms.technology: itpro-updates +ms.prod: windows-client +ms.topic: include +ms.date: 02/14/2023 +ms.localizationpriority: medium +--- + + +When a device no longer needs to be managed by the deployment service, remove the enrollment it. Just like [enrolling a device](#enroll-devices), specify either `driver` or `feature` as the value for the `updateCategory`. The device will no longer receive updates from the deployment service for the specfied update category, even if it's still assigned to an active deployment. Depending on the device's configuration, it may start to receive updates from Windows Update. For instance, if a device is still enrolled for feature updates, but the enrollment for drivers is removed: +- Existing driver deployments from the service won't be installed +- The device will continue to receive feature updates from the deployment service +- Drivers may start being installed from Windows Update depending on the device's configuration + +To remove device enrollment,POST to [updatableAssets](/graph/api/resources/windowsupdates-updatableasset) using [unenrollAssets](/graph/api/windowsupdates-updatableasset-unenrollassets). In the request body, specify: +- **Azure AD Device ID** as `id` for the device +- Either `feature` or `driver` for the updateCategory + +The following example removes `driver` enrollment for two devices, `01234567-89ab-cdef-0123-456789abcdef` and `01234567-89ab-cdef-0123-456789abcde0`: + +```rest +POST https://graph.microsoft.com/beta/admin/windows/updates/updatableAssets/unenrollAssets +Content-Type: application/json + +{ + "updateCategory": "driver", + "assets": [ + { + "@odata.type": "#microsoft.graph.windowsUpdates.azureADDevice", + "id": "01234567-89ab-cdef-0123-456789abcdef" + }, + { + "@odata.type": "#microsoft.graph.windowsUpdates.azureADDevice", + "id": "01234567-89ab-cdef-0123-456789abcde0" + } + ] +} +``` From 4386d5f09700175f484aafc60ed314b92592cdd2 Mon Sep 17 00:00:00 2001 From: Meghan Stewart <33289333+mestew@users.noreply.github.com> Date: Wed, 25 Jan 2023 16:41:22 -0800 Subject: [PATCH 17/92] edits, add new incluyde --- .../update/deployment-service-drivers.md | 17 +++++++++++++++++ .../deployment-service-feature-updates.md | 3 +++ ...eployment-find-device-name-graph-explorer.md | 2 +- .../includes/wufb-deployment-graph-unenroll.md | 2 +- 4 files changed, 22 insertions(+), 2 deletions(-) diff --git a/windows/deployment/update/deployment-service-drivers.md b/windows/deployment/update/deployment-service-drivers.md index 97477fbb0e..dd3b3a7828 100644 --- a/windows/deployment/update/deployment-service-drivers.md +++ b/windows/deployment/update/deployment-service-drivers.md @@ -22,6 +22,7 @@ In this tutorial, you will: > * [Enroll devices](#enroll-devices) > * Do Z > * Do Z +> * [Remove device enrollment](#remove-device-enrollment) ## Prerequisites @@ -48,8 +49,24 @@ When you enroll devices into driver management, the deployment service becomes t [!INCLUDE [Graph Explorer enroll devices](./includes/wufb-deployment-enroll-device-graph-explorer.md)] +## Create an audience +```rest +POST https://graph.microsoft.com/beta/admin/windows/updates/deploymentAudiences +content-type: application/json +{} +``` + +Returns a [201 Created] response with the following body: +```json +{ + "@odata.context": "https://graph.microsoft.com/beta/$metadata#admin/windows/updates/deploymentAudiences/$entity", + "id": "f0ec689b-fa10-4e45-965c-ce753f7d4363", + "reportingDeviceCount": 0, + "applicableContent": [] +} +``` ## Remove device enrollment diff --git a/windows/deployment/update/deployment-service-feature-updates.md b/windows/deployment/update/deployment-service-feature-updates.md index b9b6c71b1b..5c6a7a72c0 100644 --- a/windows/deployment/update/deployment-service-feature-updates.md +++ b/windows/deployment/update/deployment-service-feature-updates.md @@ -19,7 +19,10 @@ In this tutorial, you will: > [!div class="checklist"] > * [Open Graph Explorer](#open-graph-explorer) > * [Run queries to identify test devices](#run-queries-to-identify-test-devices) +> * [Enroll devices](#enroll-devices) > * Do Z +> * Do Z +> * [Remove device enrollment](#remove-device-enrollment) ## Prerequisites diff --git a/windows/deployment/update/includes/wufb-deployment-find-device-name-graph-explorer.md b/windows/deployment/update/includes/wufb-deployment-find-device-name-graph-explorer.md index 3e64a0ecf5..457be3217f 100644 --- a/windows/deployment/update/includes/wufb-deployment-find-device-name-graph-explorer.md +++ b/windows/deployment/update/includes/wufb-deployment-find-device-name-graph-explorer.md @@ -29,7 +29,7 @@ GET https://graph.microsoft.com/v1.0/devices?$filter=startswith(displayName,'Tes For the next requests, set the **ConsistencyLevel** header to `eventual`. For more information about advanced query parameters, see [Advanced query capabilities on Azure AD directory objects](/graph/aad-advanced-queries). 1. In Graph Explorer, select the **Request headers** tab. -1. For **Key** type in `ConsistencyLevel` and for **Value**, type `eventual`. +1. For **Key** type in `ConsistencyLevel` and for **Value**, type `eventual`. 1. Select the **Add** button. When you're finished, remove the request header by selecting the trash can icon. :::image type="content" source="../media/7512398-deployment-service-graph-modify-header.png" alt-text="Screenshot of the request headers tab in Graph Explorer" lightbox="../media/7512398-deployment-service-graph-modify-header.png"::: diff --git a/windows/deployment/update/includes/wufb-deployment-graph-unenroll.md b/windows/deployment/update/includes/wufb-deployment-graph-unenroll.md index 6fd26c4782..9b026473fa 100644 --- a/windows/deployment/update/includes/wufb-deployment-graph-unenroll.md +++ b/windows/deployment/update/includes/wufb-deployment-graph-unenroll.md @@ -15,7 +15,7 @@ When a device no longer needs to be managed by the deployment service, remove th - The device will continue to receive feature updates from the deployment service - Drivers may start being installed from Windows Update depending on the device's configuration -To remove device enrollment,POST to [updatableAssets](/graph/api/resources/windowsupdates-updatableasset) using [unenrollAssets](/graph/api/windowsupdates-updatableasset-unenrollassets). In the request body, specify: +To remove device enrollment, POST to [updatableAssets](/graph/api/resources/windowsupdates-updatableasset) using [unenrollAssets](/graph/api/windowsupdates-updatableasset-unenrollassets). In the request body, specify: - **Azure AD Device ID** as `id` for the device - Either `feature` or `driver` for the updateCategory From ee47c2ad3d69ef1630e285a6402501ef02223dc3 Mon Sep 17 00:00:00 2001 From: Meghan Stewart <33289333+mestew@users.noreply.github.com> Date: Wed, 25 Jan 2023 20:27:17 -0800 Subject: [PATCH 18/92] edits --- .../update/deployment-service-drivers.md | 63 ++++++++++++++----- .../deployment-service-feature-updates.md | 2 +- ...deployment-enroll-device-graph-explorer.md | 40 ++++++------ 3 files changed, 68 insertions(+), 37 deletions(-) diff --git a/windows/deployment/update/deployment-service-drivers.md b/windows/deployment/update/deployment-service-drivers.md index dd3b3a7828..c336974ab1 100644 --- a/windows/deployment/update/deployment-service-drivers.md +++ b/windows/deployment/update/deployment-service-drivers.md @@ -11,7 +11,7 @@ ms.technology: itpro-updates ms.date: 02/14/2023 --- -# Deploy drivers and firmware updates with Windows Update for Business deployment service +# Tutorial: Deploy drivers and firmware updates with Windows Update for Business deployment service ***(Applies to: Windows 11 & Windows 10)*** @@ -20,6 +20,8 @@ In this tutorial, you will: > * [Open Graph Explorer](#open-graph-explorer) > * [Run queries to identify test devices](#run-queries-to-identify-test-devices) > * [Enroll devices](#enroll-devices) +> * [Create a deployment audience and add audience members](#create-a-deployment-audience-and-add-audience-members) +> * Do Z > * Do Z > * Do Z > * [Remove device enrollment](#remove-device-enrollment) @@ -49,24 +51,53 @@ When you enroll devices into driver management, the deployment service becomes t [!INCLUDE [Graph Explorer enroll devices](./includes/wufb-deployment-enroll-device-graph-explorer.md)] -## Create an audience +## Create a deployment audience and add audience members -```rest -POST https://graph.microsoft.com/beta/admin/windows/updates/deploymentAudiences -content-type: application/json +1. Create an audience for the driver deployment. The deployment audience is a collection of member devices that will receive the driver deployment. POST to the [deployment audience](/graph/api/resources/windowsupdates-deploymentaudience) resource with a request body of `{}` to create a new audience. + + ```rest + POST https://graph.microsoft.com/beta/admin/windows/updates/deploymentAudiences + content-type: application/json + + {} + ``` + + The POST returns a [201 Created](/troubleshoot/developer/webapps/iis/www-administration-management/http-status-code#2xx---success) response with the following body, where `id` is the **Audience ID**: + + ```json + { + "@odata.context": "https://graph.microsoft.com/beta/$metadata#admin/windows/updates/deploymentAudiences/$entity", + "id": "d39ad1ce-01234-5678-9abc-def012345678", + "reportingDeviceCount": 0, + "applicableContent": [] + } + ``` + +1. Add devices, using their **Azure AD ID**, to the deployment audience so they become audience members. Specify the deployment **Audience ID** in the URL field and the devices to add in the request body. The `id` property specifies the **Azure AD ID** of the device. + + ```rest + POST https://graph.microsoft.com/beta/admin/windows/updates/deploymentAudiences/d39ad1ce-01234-5678-9abc-def012345678/updateAudience + Content-type: application/json + + { + "addMembers": [ + { + "@odata.type": "#microsoft.graph.windowsUpdates.azureADDevice", + "id": "01234567-89ab-cdef-0123-456789abcdef" + }, + { + "@odata.type": "#microsoft.graph.windowsUpdates.azureADDevice", + "id": "01234567-89ab-cdef-0123-456789abcde0" + }, + { + "@odata.type": "#microsoft.graph.windowsUpdates.azureADDevice", + "id": "01234567-89ab-cdef-0123-456789abcde1" + } + ] + } + ``` -{} -``` -Returns a [201 Created] response with the following body: -```json -{ - "@odata.context": "https://graph.microsoft.com/beta/$metadata#admin/windows/updates/deploymentAudiences/$entity", - "id": "f0ec689b-fa10-4e45-965c-ce753f7d4363", - "reportingDeviceCount": 0, - "applicableContent": [] -} -``` ## Remove device enrollment diff --git a/windows/deployment/update/deployment-service-feature-updates.md b/windows/deployment/update/deployment-service-feature-updates.md index 5c6a7a72c0..9670fee85f 100644 --- a/windows/deployment/update/deployment-service-feature-updates.md +++ b/windows/deployment/update/deployment-service-feature-updates.md @@ -11,7 +11,7 @@ ms.technology: itpro-updates ms.date: 02/14/2023 --- -# Deploy feature updates with Windows Update for Business deployment service +# Tutorial: Deploy feature updates with Windows Update for Business deployment service ***(Applies to: Windows 11 & Windows 10)*** diff --git a/windows/deployment/update/includes/wufb-deployment-enroll-device-graph-explorer.md b/windows/deployment/update/includes/wufb-deployment-enroll-device-graph-explorer.md index 5ea333f440..b95b1cc330 100644 --- a/windows/deployment/update/includes/wufb-deployment-enroll-device-graph-explorer.md +++ b/windows/deployment/update/includes/wufb-deployment-enroll-device-graph-explorer.md @@ -19,26 +19,26 @@ You enroll devices based on the types of updates you want them to recieve.Curren 1. In the **Request body** tab, enter the following JSON, supplying the following information: - **Azure AD Device ID** as `id` - Either `feature` or `driver` for the updateCategory - - ```json - { - "updateCategory": "driver", - "assets": [ - { - "@odata.type": "#microsoft.graph.windowsUpdates.azureADDevice", - "id": "01234567-89ab-cdef-0123-456789abcdef" - }, - { - "@odata.type": "#microsoft.graph.windowsUpdates.azureADDevice", - "id": "01234567-89ab-cdef-0123-456789abcde0" - }, - { - "@odata.type": "#microsoft.graph.windowsUpdates.azureADDevice", - "id": "01234567-89ab-cdef-0123-456789abcde1" - } - ] - } - ``` + + ```json + { + "updateCategory": "driver", + "assets": [ + { + "@odata.type": "#microsoft.graph.windowsUpdates.azureADDevice", + "id": "01234567-89ab-cdef-0123-456789abcdef" + }, + { + "@odata.type": "#microsoft.graph.windowsUpdates.azureADDevice", + "id": "01234567-89ab-cdef-0123-456789abcde0" + }, + { + "@odata.type": "#microsoft.graph.windowsUpdates.azureADDevice", + "id": "01234567-89ab-cdef-0123-456789abcde1" + } + ] + } + ``` 1. Select the **Run query** button. The results will appear in the **Response** window. In this case, the status code of [202 Accepted](/troubleshoot/developer/webapps/iis/www-administration-management/http-status-code#2xx---success). From 3cf165407b102798e13215d86f546ccf6d06b3f3 Mon Sep 17 00:00:00 2001 From: Meghan Stewart <33289333+mestew@users.noreply.github.com> Date: Wed, 25 Jan 2023 22:49:05 -0800 Subject: [PATCH 19/92] edits --- .../update/deployment-service-drivers.md | 98 ++++++++++++++++++- .../wufb-deployment-graph-unenroll.md | 1 + 2 files changed, 96 insertions(+), 3 deletions(-) diff --git a/windows/deployment/update/deployment-service-drivers.md b/windows/deployment/update/deployment-service-drivers.md index c336974ab1..b4d5a56903 100644 --- a/windows/deployment/update/deployment-service-drivers.md +++ b/windows/deployment/update/deployment-service-drivers.md @@ -21,7 +21,7 @@ In this tutorial, you will: > * [Run queries to identify test devices](#run-queries-to-identify-test-devices) > * [Enroll devices](#enroll-devices) > * [Create a deployment audience and add audience members](#create-a-deployment-audience-and-add-audience-members) -> * Do Z +> * [Create an update policy](#create-an-update-policy) > * Do Z > * Do Z > * [Remove device enrollment](#remove-device-enrollment) @@ -67,7 +67,7 @@ When you enroll devices into driver management, the deployment service becomes t ```json { "@odata.context": "https://graph.microsoft.com/beta/$metadata#admin/windows/updates/deploymentAudiences/$entity", - "id": "d39ad1ce-01234-5678-9abc-def012345678", + "id": "d39ad1ce-0123-4567-89ab-cdef01234567", "reportingDeviceCount": 0, "applicableContent": [] } @@ -76,7 +76,7 @@ When you enroll devices into driver management, the deployment service becomes t 1. Add devices, using their **Azure AD ID**, to the deployment audience so they become audience members. Specify the deployment **Audience ID** in the URL field and the devices to add in the request body. The `id` property specifies the **Azure AD ID** of the device. ```rest - POST https://graph.microsoft.com/beta/admin/windows/updates/deploymentAudiences/d39ad1ce-01234-5678-9abc-def012345678/updateAudience + POST https://graph.microsoft.com/beta/admin/windows/updates/deploymentAudiences/d39ad1ce-0123-4567-89ab-cdef01234567/updateAudience Content-type: application/json { @@ -97,6 +97,98 @@ When you enroll devices into driver management, the deployment service becomes t } ``` + + +## Create an update policy + +Update policies define how content is deployed to a deployment audience. An [update policy](/graph/api/resources/windowsupdates-updatepolicy) + +After devices are added to a deployment audience, you can create an [update policy](/graph/api/resources/windowsupdates-updatepolicy) that governs the deployment of content to the associated deployment audiences. The update policy is a high-level template so content can be deployed in a similar way for a given audience without having to create, manage, and relate individual deployments. Content is deployed to the devices in the associated audiences when a content approval is added to the policy. + +Create an update policy and assign an existing deployment audience to it. You can specify additional settings when you create the policy, or you can create a policy and define the settings later. + +To create a policy without any deployment settings, in the request body specify the **Audience ID** as `id`. In the following example, the **Audience ID** is `d39ad1ce-0123-4567-89ab-cdef01234567`: + + +```rest +POST https://graph.microsoft.com/beta/admin/windows/updates/updatePolicies +Content-type: application/json +{ + "audience": { + "@odata.id": "d39ad1ce-0123-4567-89ab-cdef01234567" + } +} +``` + +Response, returning the **Policy ID** of `9011c330-1234-5678-9abc-def012345678` +```json +HTTP/1.1 202 Accepted +Content-type: application/json +{ + "@odata.context": "https://graph.microsoft.com/beta/$metadata#admin/windows/updates/updatePolicies/$entity", + "id": "9011c330-1234-5678-9abc-def012345678", + "createdDateTime": "2023-01-25T05:32:21.9721459Z", + "autoEnrollmentUpdateCategories": [], + "complianceChangeRules": [], + "deploymentSettings": { + "schedule": null, + "monitoring": null, + "contentApplicability": null, + "userExperience": null, + "expedite": null + } +} +``` + +Policy with settings example: + +```rest +POST https://graph.microsoft.com/beta/admin/windows/updates/updatePolicies +Content-Type: application/json +Content-length: 835 + +{ + "@odata.type": "#microsoft.graph.windowsUpdates.updatePolicy", + "audience": { + "@odata.id": "d39ad1ce-0123-4567-89ab-cdef01234567" + }, + "complianceChanges": [ + { + "@odata.type": "#microsoft.graph.windowsUpdates.contentApproval" + } + ], + "complianceChangeRules": [ + { + "@odata.type": "#microsoft.graph.windowsUpdates.contentApprovalRule", + "contentFilter": { + "@odata.type": "#microsoft.graph.windowsUpdates.driverUpdateFilter" + }, + "durationBeforeDeploymentStart": "P7D" + } + ], + "deploymentSettings": { + "@odata.type": "microsoft.graph.windowsUpdates.deploymentSettings", + "schedule": { + "gradualRollout": { + "@odata.type": "#microsoft.graph.windowsUpdates.rateDrivenRolloutSettings", + "durationBetweenOffers": "P1D", + "devicePerOffer": 1000 + } + } + } +} +``` + +**note to add info or change the above example to include the following, if possible.** + "deploymentSettings": { + "contentApplicability": { + "offerWhileRecommendedBy": ["Microsoft"], + + + + + + ## Remove device enrollment diff --git a/windows/deployment/update/includes/wufb-deployment-graph-unenroll.md b/windows/deployment/update/includes/wufb-deployment-graph-unenroll.md index 9b026473fa..3a04370fd4 100644 --- a/windows/deployment/update/includes/wufb-deployment-graph-unenroll.md +++ b/windows/deployment/update/includes/wufb-deployment-graph-unenroll.md @@ -39,3 +39,4 @@ Content-Type: application/json ] } ``` + From 2f49c2b1c3692486e615696ecb34a8bcff3c7922 Mon Sep 17 00:00:00 2001 From: Meghan Stewart <33289333+mestew@users.noreply.github.com> Date: Thu, 26 Jan 2023 08:40:04 -0800 Subject: [PATCH 20/92] edits --- .../update/deployment-service-drivers.md | 140 +++++++++--------- 1 file changed, 72 insertions(+), 68 deletions(-) diff --git a/windows/deployment/update/deployment-service-drivers.md b/windows/deployment/update/deployment-service-drivers.md index b4d5a56903..6551768ccf 100644 --- a/windows/deployment/update/deployment-service-drivers.md +++ b/windows/deployment/update/deployment-service-drivers.md @@ -17,14 +17,14 @@ ms.date: 02/14/2023 In this tutorial, you will: > [!div class="checklist"] -> * [Open Graph Explorer](#open-graph-explorer) -> * [Run queries to identify test devices](#run-queries-to-identify-test-devices) -> * [Enroll devices](#enroll-devices) -> * [Create a deployment audience and add audience members](#create-a-deployment-audience-and-add-audience-members) -> * [Create an update policy](#create-an-update-policy) -> * Do Z -> * Do Z -> * [Remove device enrollment](#remove-device-enrollment) +> - [Open Graph Explorer](#open-graph-explorer) +> - [Run queries to identify test devices](#run-queries-to-identify-test-devices) +> - [Enroll devices](#enroll-devices) +> - [Create a deployment audience and add audience members](#create-a-deployment-audience-and-add-audience-members) +> - [Create an update policy](#create-an-update-policy) +> - Do Z +> - Do Z +> - [Remove device enrollment](#remove-device-enrollment) ## Prerequisites @@ -101,26 +101,77 @@ When you enroll devices into driver management, the deployment service becomes t ## Create an update policy -Update policies define how content is deployed to a deployment audience. An [update policy](/graph/api/resources/windowsupdates-updatepolicy) +Update policies define how content is deployed to a deployment audience. An [update policy](/graph/api/resources/windowsupdates-updatepolicy) ensures deployments to deployment audiences behave in a consistent manner without having to create and manage multiple individual deployments. When a content approval is added to the policy, it's deployed to the devices in the associated audiences. When creating an update policy, you can either: -After devices are added to a deployment audience, you can create an [update policy](/graph/api/resources/windowsupdates-updatepolicy) that governs the deployment of content to the associated deployment audiences. The update policy is a high-level template so content can be deployed in a similar way for a given audience without having to create, manage, and relate individual deployments. Content is deployed to the devices in the associated audiences when a content approval is added to the policy. +- Create a policy and define the settings later -Create an update policy and assign an existing deployment audience to it. You can specify additional settings when you create the policy, or you can create a policy and define the settings later. + To create a policy without any deployment settings, in the request body specify the **Audience ID** as `id`. In the following example, the **Audience ID** is `d39ad1ce-0123-4567-89ab-cdef01234567`: -To create a policy without any deployment settings, in the request body specify the **Audience ID** as `id`. In the following example, the **Audience ID** is `d39ad1ce-0123-4567-89ab-cdef01234567`: + ```rest + POST https://graph.microsoft.com/beta/admin/windows/updates/updatePolicies + Content-type: application/json + { + "audience": { + "@odata.id": "d39ad1ce-0123-4567-89ab-cdef01234567" + } + } + ``` +- Specify settings during policy creation -```rest -POST https://graph.microsoft.com/beta/admin/windows/updates/updatePolicies -Content-type: application/json -{ - "audience": { - "@odata.id": "d39ad1ce-0123-4567-89ab-cdef01234567" - } -} + To create a policy with additional settings, in the request body: + - Specify the **Audience ID** as `id` + - Define any additional deployment or compliance [settings](beta/api/adminwindowsupdates-post-updatepolicies). /graph/api/resources/windowsupdates-updatepolicy + + In the following example, the **Audience ID** is `d39ad1ce-0123-4567-89ab-cdef01234567`: + + ```rest + POST https://graph.microsoft.com/beta/admin/windows/updates/updatePolicies + Content-Type: application/json + Content-length: 835 + { + "@odata.type": "#microsoft.graph.windowsUpdates.updatePolicy", + "audience": { + "@odata.id": "d39ad1ce-0123-4567-89ab-cdef01234567" + }, + "complianceChanges": [ + { + "@odata.type": "#microsoft.graph.windowsUpdates.contentApproval" + } + ], + "complianceChangeRules": [ + { + "@odata.type": "#microsoft.graph.windowsUpdates.contentApprovalRule", + "contentFilter": { + "@odata.type": "#microsoft.graph.windowsUpdates.driverUpdateFilter" + }, + "durationBeforeDeploymentStart": "P7D" + } + ], + "deploymentSettings": { + "@odata.type": "microsoft.graph.windowsUpdates.deploymentSettings", + "schedule": { + "gradualRollout": { + "@odata.type": "#microsoft.graph.windowsUpdates.rateDrivenRolloutSettings", + "durationBetweenOffers": "P1D", + "devicePerOffer": 1000 + } + } + } + } + ``` + +**note to add info about behavior defined by settings in example and maybe include info about autoapprove while recommended** +```dotnetcli + + "deploymentSettings": { + "contentApplicability": { + "offerWhileRecommendedBy": ["Microsoft"], ``` -Response, returning the **Policy ID** of `9011c330-1234-5678-9abc-def012345678` + +Response, returning the **Policy ID** of `9011c330-1234-5678-9abc-def0123456`: + ```json HTTP/1.1 202 Accepted Content-type: application/json @@ -140,53 +191,6 @@ Content-type: application/json } ``` -Policy with settings example: - -```rest -POST https://graph.microsoft.com/beta/admin/windows/updates/updatePolicies -Content-Type: application/json -Content-length: 835 - -{ - "@odata.type": "#microsoft.graph.windowsUpdates.updatePolicy", - "audience": { - "@odata.id": "d39ad1ce-0123-4567-89ab-cdef01234567" - }, - "complianceChanges": [ - { - "@odata.type": "#microsoft.graph.windowsUpdates.contentApproval" - } - ], - "complianceChangeRules": [ - { - "@odata.type": "#microsoft.graph.windowsUpdates.contentApprovalRule", - "contentFilter": { - "@odata.type": "#microsoft.graph.windowsUpdates.driverUpdateFilter" - }, - "durationBeforeDeploymentStart": "P7D" - } - ], - "deploymentSettings": { - "@odata.type": "microsoft.graph.windowsUpdates.deploymentSettings", - "schedule": { - "gradualRollout": { - "@odata.type": "#microsoft.graph.windowsUpdates.rateDrivenRolloutSettings", - "durationBetweenOffers": "P1D", - "devicePerOffer": 1000 - } - } - } -} -``` - -**note to add info or change the above example to include the following, if possible.** - "deploymentSettings": { - "contentApplicability": { - "offerWhileRecommendedBy": ["Microsoft"], - - - - From 32575ac1424b77a4e8260d85979266c85460b55c Mon Sep 17 00:00:00 2001 From: Meghan Stewart <33289333+mestew@users.noreply.github.com> Date: Thu, 26 Jan 2023 14:39:41 -0800 Subject: [PATCH 21/92] edits --- .../update/deployment-service-drivers.md | 21 +++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/windows/deployment/update/deployment-service-drivers.md b/windows/deployment/update/deployment-service-drivers.md index 6551768ccf..598da4c5e6 100644 --- a/windows/deployment/update/deployment-service-drivers.md +++ b/windows/deployment/update/deployment-service-drivers.md @@ -97,7 +97,11 @@ When you enroll devices into driver management, the deployment service becomes t } ``` - +1. To verify the devices were added to the audience, run the following query using the **Audience ID**: + + ```rest + GET https://graph.microsoft.com/beta/admin/windows/updates/deploymentAudiences/d39ad1ce-0123-4567-89ab-cdef01234567/members + ``` ## Create an update policy @@ -122,13 +126,14 @@ Update policies define how content is deployed to a deployment audience. An [upd To create a policy with additional settings, in the request body: - Specify the **Audience ID** as `id` - Define any additional deployment or compliance [settings](beta/api/adminwindowsupdates-post-updatepolicies). /graph/api/resources/windowsupdates-updatepolicy + - You may need to add the `content-length` header to the request. *?The value should be the length of the request body in bytes?*. In the following example, the **Audience ID** is `d39ad1ce-0123-4567-89ab-cdef01234567`: ```rest POST https://graph.microsoft.com/beta/admin/windows/updates/updatePolicies Content-Type: application/json - Content-length: 835 + Content-length: 967 { "@odata.type": "#microsoft.graph.windowsUpdates.updatePolicy", "audience": { @@ -170,7 +175,7 @@ Update policies define how content is deployed to a deployment audience. An [upd ``` -Response, returning the **Policy ID** of `9011c330-1234-5678-9abc-def0123456`: +Response returning the policy, without any additional settings specified, that has a **Policy ID** of `9011c330-1234-5678-9abc-def0123456`: ```json HTTP/1.1 202 Accepted @@ -190,8 +195,16 @@ Content-type: application/json } } ``` - +## Review applicable driver content and approve content + + +**Audience ID** is `d39ad1ce-0123-4567-89ab-cdef01234567` + +```rest +GET https://graph.microsoft.com/beta/admin/windows/updates/deploymentAudiences/f660d844-30b7-46e4-a6cf-47e36164d3cb/applicableContent +``` + ## Remove device enrollment From 8793f050c788d545a902de85da4fab71d41e3e08 Mon Sep 17 00:00:00 2001 From: Meghan Stewart <33289333+mestew@users.noreply.github.com> Date: Thu, 26 Jan 2023 15:55:38 -0800 Subject: [PATCH 22/92] edits --- .../deployment/update/deployment-service-drivers.md | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/windows/deployment/update/deployment-service-drivers.md b/windows/deployment/update/deployment-service-drivers.md index 598da4c5e6..13236a1ece 100644 --- a/windows/deployment/update/deployment-service-drivers.md +++ b/windows/deployment/update/deployment-service-drivers.md @@ -22,6 +22,7 @@ In this tutorial, you will: > - [Enroll devices](#enroll-devices) > - [Create a deployment audience and add audience members](#create-a-deployment-audience-and-add-audience-members) > - [Create an update policy](#create-an-update-policy) +> - [Review applicable driver content and approve it](#review-applicable-driver-content-and-approve-it) > - Do Z > - Do Z > - [Remove device enrollment](#remove-device-enrollment) @@ -103,9 +104,11 @@ When you enroll devices into driver management, the deployment service becomes t GET https://graph.microsoft.com/beta/admin/windows/updates/deploymentAudiences/d39ad1ce-0123-4567-89ab-cdef01234567/members ``` +Once a device has been enrolled and added to a deployment audience, the Windows Update for Business deployment service will start collecting scan results from Windows Update to build a catalog of applicable drivers to be browsed, approved, and scheduled for deployment. + ## Create an update policy -Update policies define how content is deployed to a deployment audience. An [update policy](/graph/api/resources/windowsupdates-updatepolicy) ensures deployments to deployment audiences behave in a consistent manner without having to create and manage multiple individual deployments. When a content approval is added to the policy, it's deployed to the devices in the associated audiences. When creating an update policy, you can either: +Update policies define how content is deployed to a deployment audience. An [update policy](/graph/api/resources/windowsupdates-updatepolicy) ensures deployments to a deployment audience behaves in a consistent manner without having to create and manage multiple individual deployments. When a content approval is added to the policy, it's deployed to the devices in the associated audiences. When creating an update policy, you can either: - Create a policy and define the settings later @@ -167,6 +170,7 @@ Update policies define how content is deployed to a deployment audience. An [upd ``` **note to add info about behavior defined by settings in example and maybe include info about autoapprove while recommended** + ```dotnetcli "deploymentSettings": { @@ -196,13 +200,15 @@ Content-type: application/json } ``` -## Review applicable driver content and approve content +## Review applicable driver content and approve it + +Review **Audience ID** is `d39ad1ce-0123-4567-89ab-cdef01234567` ```rest -GET https://graph.microsoft.com/beta/admin/windows/updates/deploymentAudiences/f660d844-30b7-46e4-a6cf-47e36164d3cb/applicableContent +GET https://graph.microsoft.com/beta/admin/windows/updates/deploymentAudiences/d39ad1ce-0123-4567-89ab-cdef01234567/applicableContent ``` From 7d52e709f9c23a322661dd9640a913d3dc43ef76 Mon Sep 17 00:00:00 2001 From: Meghan Stewart <33289333+mestew@users.noreply.github.com> Date: Fri, 27 Jan 2023 16:26:30 -0800 Subject: [PATCH 23/92] edits --- .../update/deployment-service-drivers.md | 69 ++++++++++++++++--- 1 file changed, 59 insertions(+), 10 deletions(-) diff --git a/windows/deployment/update/deployment-service-drivers.md b/windows/deployment/update/deployment-service-drivers.md index 13236a1ece..539e4fe498 100644 --- a/windows/deployment/update/deployment-service-drivers.md +++ b/windows/deployment/update/deployment-service-drivers.md @@ -47,7 +47,7 @@ All of the [prerequisites for the Windows Update for Business deployment service ## Enroll devices -When you enroll devices into driver management, the deployment service becomes the authority for driver updates coming from Windows Update. Devices don't receive drivers from Windows Update until a deployment is manually created or they're added to a driver update policy with approvals. +When you enroll devices into driver management, the deployment service becomes the authority for driver updates coming from Windows Update. Devices don't receive drivers or firmware from Windows Update until a deployment is manually created or they're added to a driver update policy with approvals. [!INCLUDE [Graph Explorer enroll devices](./includes/wufb-deployment-enroll-device-graph-explorer.md)] @@ -112,7 +112,7 @@ Update policies define how content is deployed to a deployment audience. An [upd - Create a policy and define the settings later - To create a policy without any deployment settings, in the request body specify the **Audience ID** as `id`. In the following example, the **Audience ID** is `d39ad1ce-0123-4567-89ab-cdef01234567`: + To create a policy without any deployment settings, in the request body specify the **Audience ID** as `id`. In the following example, the **Audience ID** is `d39ad1ce-0123-4567-89ab-cdef01234567`, and the `id` given in the response is the **Policy ID**: ```rest POST https://graph.microsoft.com/beta/admin/windows/updates/updatePolicies @@ -128,7 +128,7 @@ Update policies define how content is deployed to a deployment audience. An [upd To create a policy with additional settings, in the request body: - Specify the **Audience ID** as `id` - - Define any additional deployment or compliance [settings](beta/api/adminwindowsupdates-post-updatepolicies). /graph/api/resources/windowsupdates-updatepolicy + - Define any additional [deployment settings](beta/api/resources/windowsupdates-deploymentsettings). - You may need to add the `content-length` header to the request. *?The value should be the length of the request body in bytes?*. In the following example, the **Audience ID** is `d39ad1ce-0123-4567-89ab-cdef01234567`: @@ -171,15 +171,14 @@ Update policies define how content is deployed to a deployment audience. An [upd **note to add info about behavior defined by settings in example and maybe include info about autoapprove while recommended** -```dotnetcli +``` "deploymentSettings": { "contentApplicability": { "offerWhileRecommendedBy": ["Microsoft"], ``` - - -Response returning the policy, without any additional settings specified, that has a **Policy ID** of `9011c330-1234-5678-9abc-def0123456`: + +Response returning the policy, without any additional settings specified, that has a **Policy ID** of `9011c330-1234-5678-9abc-def012345678`: ```json HTTP/1.1 202 Accepted @@ -202,16 +201,66 @@ Content-type: application/json ## Review applicable driver content and approve it -Review +Once Windows Update for Business deployment service has scan results from devices, the applicability for driver and firmware updates can be displayed for a deployment audience. - -**Audience ID** is `d39ad1ce-0123-4567-89ab-cdef01234567` +To display [applicable content](/graph/api/resources/windowsupdates-applicablecontent), run a query using the **Audience ID**, for example `d39ad1ce-0123-4567-89ab-cdef01234567`: ```rest GET https://graph.microsoft.com/beta/admin/windows/updates/deploymentAudiences/d39ad1ce-0123-4567-89ab-cdef01234567/applicableContent ``` +Each applicable update returns the following information: +- An `id` for its [catalog entry](/graph/api/resources/windowsupdates-catalogentry) +- The **Azure AD ID** of the devices it's applicable to +- Information describing the update such as the name and version. + +The following truncated response displays: +- An **Azure AD ID** of `01234567-89ab-cdef-0123-456789abcdef` +- The **Catalog ID** of `1d082682ff38a3a885cefd68ec6ab3782be3dc31d156c9e5c6fd3dc55cbd839d` + +```json +"matchedDevices": [ + { + "recommendedBy": [ + "Microsoft" + ], + "deviceId": "01ea3c90-12f5-4093-a4c9-c1434657c976" + } +], +"catalogEntry": { + "@odata.type": "#microsoft.graph.windowsUpdates.driverUpdateCatalogEntry", + "id": "1d082682ff38a3a885cefd68ec6ab3782be3dc31d156c9e5c6fd3dc55cbd839d", +``` + +Each driver update is associated with a unique [catalog entry](/graph/api/resources/windowsupdates-catalogentry). Approve content for drivers and firmware by adding a [content approval](/graph/api/resources/windowsupdates-contentapproval) for the catalog entry to an existing policy. This approval is a [compliance change](/graph/api/resources/windowsupdates-compliance) for the policy and it + + +Deployments for driver updates are created and enforced on a policy through [compliance changes](/graph/api/resources/windowsupdates-compliance). [Content approvals](/graph/api/esources/windowsupdates-contentapproval) for driver updates are added to a policy by specifying the [catalog entry](/graph/api/resources/windowsupdates-catalogentry) associated to a specific driver update. Content will only be delivered to devices in the deployment audiences associated with the update policy once approved. + +Add a content approval to an existing policy, **Policy ID** `9011c330-1234-5678-9abc-def012345678` for the driver update with the **Catalog ID** `1d082682ff38a3a885cefd68ec6ab3782be3dc31d156c9e5c6fd3dc55cbd839d`. Schedule the start date for January, 20 2023 at 1 AM UTC: + +```rest +POST https://graph.microsoft.com/beta/admin/windows/updates/updatePolicies/9011c330-1234-5678-9abc-def012345678/complianceChanges +Content-type: application/json + +{ + "@odata.type": "#microsoft.graph.windowsUpdates.contentApproval", + "content": { + "@odata.type": "#microsoft.graph.windowsUpdates.catalogContent", + "catalogEntry": { + "@odata.type": "#microsoft.graph.windowsUpdates.driverUpdateCatalogEntry", + "id": "1d082682ff38a3a885cefd68ec6ab3782be3dc31d156c9e5c6fd3dc55cbd839d" + } + }, + "deploymentSettings": { + "@odata.type": "microsoft.graph.windowsUpdates.deploymentSettings", + "schedule": { + "startDateTime": "2023-01-20T01:00:00Z" + } + } +} +``` ## Remove device enrollment From 0285b3deb7ff2d13be5fc23153ace8492b413657 Mon Sep 17 00:00:00 2001 From: Meghan Stewart <33289333+mestew@users.noreply.github.com> Date: Mon, 30 Jan 2023 08:06:12 -0800 Subject: [PATCH 24/92] add approval info --- .../update/deployment-service-drivers.md | 20 +++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/windows/deployment/update/deployment-service-drivers.md b/windows/deployment/update/deployment-service-drivers.md index 539e4fe498..c666bb8bac 100644 --- a/windows/deployment/update/deployment-service-drivers.md +++ b/windows/deployment/update/deployment-service-drivers.md @@ -23,8 +23,7 @@ In this tutorial, you will: > - [Create a deployment audience and add audience members](#create-a-deployment-audience-and-add-audience-members) > - [Create an update policy](#create-an-update-policy) > - [Review applicable driver content and approve it](#review-applicable-driver-content-and-approve-it) -> - Do Z -> - Do Z +> - [Revoke content approval](#revoke-content-approval) > - [Remove device enrollment](#remove-device-enrollment) ## Prerequisites @@ -233,12 +232,10 @@ The following truncated response displays: "id": "1d082682ff38a3a885cefd68ec6ab3782be3dc31d156c9e5c6fd3dc55cbd839d", ``` -Each driver update is associated with a unique [catalog entry](/graph/api/resources/windowsupdates-catalogentry). Approve content for drivers and firmware by adding a [content approval](/graph/api/resources/windowsupdates-contentapproval) for the catalog entry to an existing policy. This approval is a [compliance change](/graph/api/resources/windowsupdates-compliance) for the policy and it +Each driver update is associated with a unique [catalog entry](/graph/api/resources/windowsupdates-catalogentry). Approve content for drivers and firmware by adding a [content approval](/graph/api/resources/windowsupdates-contentapproval) for the catalog entry to an existing policy. Content approval is a [compliance change](/graph/api/resources/windowsupdates-compliance) for the policy. -Deployments for driver updates are created and enforced on a policy through [compliance changes](/graph/api/resources/windowsupdates-compliance). [Content approvals](/graph/api/esources/windowsupdates-contentapproval) for driver updates are added to a policy by specifying the [catalog entry](/graph/api/resources/windowsupdates-catalogentry) associated to a specific driver update. Content will only be delivered to devices in the deployment audiences associated with the update policy once approved. - -Add a content approval to an existing policy, **Policy ID** `9011c330-1234-5678-9abc-def012345678` for the driver update with the **Catalog ID** `1d082682ff38a3a885cefd68ec6ab3782be3dc31d156c9e5c6fd3dc55cbd839d`. Schedule the start date for January, 20 2023 at 1 AM UTC: +Add a content approval to an existing policy, **Policy ID** `9011c330-1234-5678-9abc-def012345678` for the driver update with the **Catalog ID** `1d082682ff38a3a885cefd68ec6ab3782be3dc31d156c9e5c6fd3dc55cbd839d`. Schedule the start date for January, 20 2023 at 1 AM UTC: ```rest POST https://graph.microsoft.com/beta/admin/windows/updates/updatePolicies/9011c330-1234-5678-9abc-def012345678/complianceChanges @@ -262,6 +259,17 @@ Content-type: application/json } ``` +Review the compliance changes to a policy with the most recent changes listed in the response first. The following example returns the compliance changes for a policy with the **Policy ID** `9011c330-1234-5678-9abc-def012345678`: + +```rest +GET https://graph.microsoft.com/beta/admin/windows/updates/updatePolicies/9011c330-1234-5678-9abc-def012345678/complianceChanges?orderby=createdDateTime desc + +``` + +## Revoke content approval + + + ## Remove device enrollment From 6f04f609e196bf697647cd1616cca45344167cd2 Mon Sep 17 00:00:00 2001 From: Meghan Stewart <33289333+mestew@users.noreply.github.com> Date: Mon, 30 Jan 2023 09:55:27 -0800 Subject: [PATCH 25/92] add approval info --- windows/deployment/TOC.yml | 6 +++--- .../update/deployment-service-drivers.md | 14 ++++++++------ .../update/deployment-service-expedited-updates.md | 12 ++++++------ .../update/deployment-service-feature-updates.md | 13 +++++++------ ...b-deployment-find-device-name-graph-explorer.md | 6 +++--- ... wufb-deployment-graph-explorer-permissions.md} | 2 +- .../includes/wufb-deployment-graph-explorer.md | 6 +++--- 7 files changed, 31 insertions(+), 28 deletions(-) rename windows/deployment/update/includes/{wufb-deployment-tutorial-permissions.md => wufb-deployment-graph-explorer-permissions.md} (92%) diff --git a/windows/deployment/TOC.yml b/windows/deployment/TOC.yml index f14ccb8dbe..bdaffc1953 100644 --- a/windows/deployment/TOC.yml +++ b/windows/deployment/TOC.yml @@ -180,11 +180,11 @@ href: update/deployment-service-prerequisites.md - name: Deploy updates with Windows Update for Business deployment service items: - - name: 'Tutorial: Deploy feature updates' + - name: Deploy feature updates href: update/deployment-service-feature-updates.md - - name: 'Tutorial: Deploy expedited updates' + - name: Deploy expedited updates href: update/deployment-service-expedited-updates.md - - name: 'Tutorial: Deploy driver and firmware updates' + - name: Deploy driver and firmware updates href: update/deployment-service-drivers.md - name: Troubleshoot Windows Update for Business deployment service href: update/deployment-service-troubleshoot.md diff --git a/windows/deployment/update/deployment-service-drivers.md b/windows/deployment/update/deployment-service-drivers.md index c666bb8bac..3eb3efdc74 100644 --- a/windows/deployment/update/deployment-service-drivers.md +++ b/windows/deployment/update/deployment-service-drivers.md @@ -1,21 +1,21 @@ --- -title: 'Tutorial: Deploy drivers and firmware updates with Windows Update for Business deployment service.' +title: Deploy drivers and firmware updates with Windows Update for Business deployment service. description: Use Windows Update for Business deployment service to deploy driver and firmware updates. ms.prod: windows-client author: mestew ms.localizationpriority: medium ms.author: mstewart manager: aaroncz -ms.topic: tutorial +ms.topic: article ms.technology: itpro-updates ms.date: 02/14/2023 --- -# Tutorial: Deploy drivers and firmware updates with Windows Update for Business deployment service +# Deploy drivers and firmware updates with Windows Update for Business deployment service ***(Applies to: Windows 11 & Windows 10)*** -In this tutorial, you will: +In this article, you will: > [!div class="checklist"] > - [Open Graph Explorer](#open-graph-explorer) > - [Run queries to identify test devices](#run-queries-to-identify-test-devices) @@ -31,8 +31,8 @@ In this tutorial, you will: All of the [prerequisites for the Windows Update for Business deployment service](deployment-service-overview.md#prerequisites) must be met. ### Permissions - -[!INCLUDE [Windows Update for Business deployment service tutorial permissions](./includes/wufb-deployment-tutorial-permissions.md)] + +[!INCLUDE [Windows Update for Business deployment service permissions using Graph Explorer](./includes/wufb-deployment-graph-explorer-permissions)] ## Open Graph Explorer @@ -269,6 +269,8 @@ GET https://graph.microsoft.com/beta/admin/windows/updates/updatePolicies/9011c3 ## Revoke content approval +``` + ## Remove device enrollment diff --git a/windows/deployment/update/deployment-service-expedited-updates.md b/windows/deployment/update/deployment-service-expedited-updates.md index 8650f264e9..f10c256b94 100644 --- a/windows/deployment/update/deployment-service-expedited-updates.md +++ b/windows/deployment/update/deployment-service-expedited-updates.md @@ -1,21 +1,21 @@ --- -title: 'Tutorial: Deploy expedited updates with Windows Update for Business deployment service' +title: Deploy expedited updates with Windows Update for Business deployment service description: Use Windows Update for Business deployment service to deploy expedited updates. ms.prod: windows-client author: mestew ms.localizationpriority: medium ms.author: mstewart manager: aaroncz -ms.topic: tutorial +ms.topic: article ms.technology: itpro-updates ms.date: 02/14/2023 --- -# Tutorial: Deploy expedited updates with Windows Update for Business deployment service +# Deploy expedited updates with Windows Update for Business deployment service ***(Applies to: Windows 11 & Windows 10)*** -In this tutorial, you will: +In this article, you will: > [!div class="checklist"] > * [Open Graph Explorer](#open-graph-explorer) > * [Run queries to identify test devices](#run-queries-to-identify-test-devices) @@ -30,8 +30,8 @@ All of the [prerequisites for the Windows Update for Business deployment service ### Permissions - -[!INCLUDE [Windows Update for Business deployment service tutorial permissions](./includes/wufb-deployment-tutorial-permissions.md)] + +[!INCLUDE [Windows Update for Business deployment service permissions using Graph Explorer](./includes/wufb-deployment-graph-explorer-permissions)] ## Open Graph Explorer diff --git a/windows/deployment/update/deployment-service-feature-updates.md b/windows/deployment/update/deployment-service-feature-updates.md index 9670fee85f..c3266087bc 100644 --- a/windows/deployment/update/deployment-service-feature-updates.md +++ b/windows/deployment/update/deployment-service-feature-updates.md @@ -1,21 +1,21 @@ --- -title: 'Tutorial: Deploy feature updates with Windows Update for Business deployment service.' +title: Deploy feature updates with Windows Update for Business deployment service. description: Use Windows Update for Business deployment service to deploy feature updates. ms.prod: windows-client author: mestew ms.localizationpriority: medium ms.author: mstewart manager: aaroncz -ms.topic: tutorial +ms.topic: article ms.technology: itpro-updates ms.date: 02/14/2023 --- -# Tutorial: Deploy feature updates with Windows Update for Business deployment service +# Deploy feature updates with Windows Update for Business deployment service ***(Applies to: Windows 11 & Windows 10)*** -In this tutorial, you will: +In this article, you will: > [!div class="checklist"] > * [Open Graph Explorer](#open-graph-explorer) > * [Run queries to identify test devices](#run-queries-to-identify-test-devices) @@ -27,10 +27,11 @@ In this tutorial, you will: ## Prerequisites All of the [prerequisites for the Windows Update for Business deployment service](deployment-service-overview.md#prerequisites) must be met. + ### Permissions - -[!INCLUDE [Windows Update for Business deployment service tutorial permissions](./includes/wufb-deployment-tutorial-permissions.md)] + +[!INCLUDE [Windows Update for Business deployment service permissions using Graph Explorer](./includes/wufb-deployment-graph-explorer-permissions)] ## Open Graph Explorer diff --git a/windows/deployment/update/includes/wufb-deployment-find-device-name-graph-explorer.md b/windows/deployment/update/includes/wufb-deployment-find-device-name-graph-explorer.md index 457be3217f..611cc9c8f0 100644 --- a/windows/deployment/update/includes/wufb-deployment-find-device-name-graph-explorer.md +++ b/windows/deployment/update/includes/wufb-deployment-find-device-name-graph-explorer.md @@ -48,6 +48,6 @@ GET https://graph.microsoft.com/v1.0/devices?$filter=model ne 'virtual machine' > [!Tip] > Requests using the [device](/graph/api/resources/device) resource type typically have both an `id` and a `deviceid`: -> - The `deviceid` is the **Azure AD Device ID** and will be used in this tutorial. -> - Later in this tutorial, this `deviceid` will be used as an `id` when you make certain requests such as adding a device to a deployment audience. -> - The `id` from the [device](/graph/api/resources/device) resource type is usually the Azure AD Object ID, which won't be used in this tutorial. +> - The `deviceid` is the **Azure AD Device ID** and will be used in this article. +> - Later in this article, this `deviceid` will be used as an `id` when you make certain requests such as adding a device to a deployment audience. +> - The `id` from the [device](/graph/api/resources/device) resource type is usually the Azure AD Object ID, which won't be used in this article. diff --git a/windows/deployment/update/includes/wufb-deployment-tutorial-permissions.md b/windows/deployment/update/includes/wufb-deployment-graph-explorer-permissions.md similarity index 92% rename from windows/deployment/update/includes/wufb-deployment-tutorial-permissions.md rename to windows/deployment/update/includes/wufb-deployment-graph-explorer-permissions.md index f2da67046b..563163371b 100644 --- a/windows/deployment/update/includes/wufb-deployment-tutorial-permissions.md +++ b/windows/deployment/update/includes/wufb-deployment-graph-explorer-permissions.md @@ -10,7 +10,7 @@ ms.localizationpriority: medium --- -The following permissions are needed for the tutorial: +The following permissions are needed for the queries listed in this article: - [WindowsUpdates.ReadWrite.All](/graph/permissions-reference#windows-updates-permissions) for [Windows Update for Business deployment service](/graph/api/resources/windowsupdates) operations. - At least [Device.Read.All](/graph/permissions-reference#device-permissions) permission to display [device](/graph/api/resources/device) information. diff --git a/windows/deployment/update/includes/wufb-deployment-graph-explorer.md b/windows/deployment/update/includes/wufb-deployment-graph-explorer.md index 2a51ba52d4..f39e7b6315 100644 --- a/windows/deployment/update/includes/wufb-deployment-graph-explorer.md +++ b/windows/deployment/update/includes/wufb-deployment-graph-explorer.md @@ -10,13 +10,13 @@ ms.localizationpriority: medium --- -For this tutorial, you'll use Graph Explorer to make requests to the [Microsoft Graph APIs](/graph/api/resources/windowsupdates-updates?view=graph-rest-beta&preserve-view=true) to retrieve, add, delete, and update data. For more information about using Graph Explorer, see [Get started with Graph Explorer](/graph/graph-explorer/overview). +For this article, you'll use Graph Explorer to make requests to the [Microsoft Graph APIs](/graph/api/resources/windowsupdates-updates?view=graph-rest-beta&preserve-view=true) to retrieve, add, delete, and update data. For more information about using Graph Explorer, see [Get started with Graph Explorer](/graph/graph-explorer/overview). > [!WARNING] -> Using a test tenant for tutorials is recommended. If you use a production tenant, ensure you verify which client devices you're targeting with deployments. +> Using a test tenant to verify the deployment process first is recommended. If you use a production tenant, ensure you verify which client devices you're targeting with deployments. 1. From a browser, go to [Graph Explorer](https://developer.microsoft.com/graph/graph-explorer) and sign in using an Azure Active Directory (Azure AD) user account. -1. You may need to enable the [`WindowsUpdates.ReadWrite.All` permission](/graph/permissions-reference#windows-updates-permissions) to use the queries in this tutorial. To enable the permission: +1. You may need to enable the [`WindowsUpdates.ReadWrite.All` permission](/graph/permissions-reference#windows-updates-permissions) to use the queries in this article. To enable the permission: 1. Select the **Modify permissions** tab in Graph Explorer. 1. In the permissions dialog box, select the **WindowsUpdates.ReadWrite.All** permission then select **Consent**. You may need to sign in again to grant consent. From 2c0d5072232d467b4f84eebbdf24c395b10e5c19 Mon Sep 17 00:00:00 2001 From: Meghan Stewart <33289333+mestew@users.noreply.github.com> Date: Tue, 31 Jan 2023 15:53:22 -0800 Subject: [PATCH 26/92] add approval info --- .../update/deployment-service-drivers.md | 30 ++++++++++++++----- .../deployment-service-expedited-updates.md | 2 +- .../deployment-service-feature-updates.md | 2 +- 3 files changed, 24 insertions(+), 10 deletions(-) diff --git a/windows/deployment/update/deployment-service-drivers.md b/windows/deployment/update/deployment-service-drivers.md index 3eb3efdc74..521abf1a65 100644 --- a/windows/deployment/update/deployment-service-drivers.md +++ b/windows/deployment/update/deployment-service-drivers.md @@ -32,7 +32,7 @@ All of the [prerequisites for the Windows Update for Business deployment service ### Permissions -[!INCLUDE [Windows Update for Business deployment service permissions using Graph Explorer](./includes/wufb-deployment-graph-explorer-permissions)] +[!INCLUDE [Windows Update for Business deployment service permissions using Graph Explorer](./includes/wufb-deployment-graph-explorer-permissions.md)] ## Open Graph Explorer @@ -127,8 +127,8 @@ Update policies define how content is deployed to a deployment audience. An [upd To create a policy with additional settings, in the request body: - Specify the **Audience ID** as `id` - - Define any additional [deployment settings](beta/api/resources/windowsupdates-deploymentsettings). - - You may need to add the `content-length` header to the request. *?The value should be the length of the request body in bytes?*. + - Define any additional [deployment settings](beta/api/resources/windowsupdates-deploymentsettings). + - You may need to add the `content-length` header to the request. The value should be the length of the request body in bytes. In the following example, the **Audience ID** is `d39ad1ce-0123-4567-89ab-cdef01234567`: @@ -197,7 +197,7 @@ Content-type: application/json } } ``` - + ## Review applicable driver content and approve it Once Windows Update for Business deployment service has scan results from devices, the applicability for driver and firmware updates can be displayed for a deployment audience. @@ -234,8 +234,10 @@ The following truncated response displays: Each driver update is associated with a unique [catalog entry](/graph/api/resources/windowsupdates-catalogentry). Approve content for drivers and firmware by adding a [content approval](/graph/api/resources/windowsupdates-contentapproval) for the catalog entry to an existing policy. Content approval is a [compliance change](/graph/api/resources/windowsupdates-compliance) for the policy. +> [!IMPORTANT] +> Any [deployment settings](beta/api/resources/windowsupdates-deploymentsettings) configured for the content approval will be combined with the existing [update policy's](#create-an-update-policy) deployment settings. If the content approval and update policy specify the same deployment setting, the setting from the content approval is used. -Add a content approval to an existing policy, **Policy ID** `9011c330-1234-5678-9abc-def012345678` for the driver update with the **Catalog ID** `1d082682ff38a3a885cefd68ec6ab3782be3dc31d156c9e5c6fd3dc55cbd839d`. Schedule the start date for January, 20 2023 at 1 AM UTC: +Add a content approval to an existing policy, **Policy ID** `9011c330-1234-5678-9abc-def012345678` for the driver update with the **Catalog ID** `1d082682ff38a3a885cefd68ec6ab3782be3dc31d156c9e5c6fd3dc55cbd839d. Schedule the start date for January, 20 2023 at 1 AM UTC: ```rest POST https://graph.microsoft.com/beta/admin/windows/updates/updatePolicies/9011c330-1234-5678-9abc-def012345678/complianceChanges @@ -259,7 +261,9 @@ Content-type: application/json } ``` -Review the compliance changes to a policy with the most recent changes listed in the response first. The following example returns the compliance changes for a policy with the **Policy ID** `9011c330-1234-5678-9abc-def012345678`: +Review the compliance changes to a policy with the most recent changes listed in the response first. The following example returns the compliance changes for a policy with the **Policy ID** `9011c330-1234-5678-9abc-def012345678` and sorts by `createdDateTime` in descending order: + +```rest ```rest GET https://graph.microsoft.com/beta/admin/windows/updates/updatePolicies/9011c330-1234-5678-9abc-def012345678/complianceChanges?orderby=createdDateTime desc @@ -268,11 +272,21 @@ GET https://graph.microsoft.com/beta/admin/windows/updates/updatePolicies/9011c3 ## Revoke content approval +Approval for content can be revoked by setting the `isRevoked` property of the [compliance change](/graph/api/resources/windowsupdates-compliance) to true. This setting can be changed while a deployment is in progress. However, revoking will only prevent the content from being offered to devices if they haven't already received it. To resume offering the content, a new [approval](#review-applicable-driver-content-and-approve-it) will need to be created. + +### Request + +```http +PATCH https://graph.microsoft.com/beta/admin/windows/updates/updatePolicies/d7a89208-17c5-4daf-a164-ce176b00e4ef/complianceChanges/dbf29574-ffd9-49cf-87f2-f03629e596ba +Content-type: application/json +{ + "@odata.type": "#microsoft.graph.windowsUpdates.contentApproval", + "isRevoked": true +} ``` - ## Remove device enrollment - + [!INCLUDE [Graph Explorer enroll devices](./includes/wufb-deployment-graph-unenroll.md)] diff --git a/windows/deployment/update/deployment-service-expedited-updates.md b/windows/deployment/update/deployment-service-expedited-updates.md index f10c256b94..29e7d68224 100644 --- a/windows/deployment/update/deployment-service-expedited-updates.md +++ b/windows/deployment/update/deployment-service-expedited-updates.md @@ -31,7 +31,7 @@ All of the [prerequisites for the Windows Update for Business deployment service ### Permissions -[!INCLUDE [Windows Update for Business deployment service permissions using Graph Explorer](./includes/wufb-deployment-graph-explorer-permissions)] +[!INCLUDE [Windows Update for Business deployment service permissions using Graph Explorer](./includes/wufb-deployment-graph-explorer-permissions.md)] ## Open Graph Explorer diff --git a/windows/deployment/update/deployment-service-feature-updates.md b/windows/deployment/update/deployment-service-feature-updates.md index c3266087bc..a2e3287953 100644 --- a/windows/deployment/update/deployment-service-feature-updates.md +++ b/windows/deployment/update/deployment-service-feature-updates.md @@ -31,7 +31,7 @@ All of the [prerequisites for the Windows Update for Business deployment service ### Permissions -[!INCLUDE [Windows Update for Business deployment service permissions using Graph Explorer](./includes/wufb-deployment-graph-explorer-permissions)] +[!INCLUDE [Windows Update for Business deployment service permissions using Graph Explorer](./includes/wufb-deployment-graph-explorer-permissions.md)] ## Open Graph Explorer From f29c6a2f8ce3ef1b7038a99a26da211feafce1a8 Mon Sep 17 00:00:00 2001 From: Meghan Stewart <33289333+mestew@users.noreply.github.com> Date: Tue, 31 Jan 2023 16:04:11 -0800 Subject: [PATCH 27/92] add approval info --- windows/deployment/update/deployment-service-drivers.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/windows/deployment/update/deployment-service-drivers.md b/windows/deployment/update/deployment-service-drivers.md index 521abf1a65..8d8ffa874e 100644 --- a/windows/deployment/update/deployment-service-drivers.md +++ b/windows/deployment/update/deployment-service-drivers.md @@ -127,7 +127,7 @@ Update policies define how content is deployed to a deployment audience. An [upd To create a policy with additional settings, in the request body: - Specify the **Audience ID** as `id` - - Define any additional [deployment settings](beta/api/resources/windowsupdates-deploymentsettings). + - Define any additional [deployment settings](/graph/api/resources/windowsupdates-deploymentsettings). - You may need to add the `content-length` header to the request. The value should be the length of the request body in bytes. In the following example, the **Audience ID** is `d39ad1ce-0123-4567-89ab-cdef01234567`: @@ -235,7 +235,7 @@ The following truncated response displays: Each driver update is associated with a unique [catalog entry](/graph/api/resources/windowsupdates-catalogentry). Approve content for drivers and firmware by adding a [content approval](/graph/api/resources/windowsupdates-contentapproval) for the catalog entry to an existing policy. Content approval is a [compliance change](/graph/api/resources/windowsupdates-compliance) for the policy. > [!IMPORTANT] -> Any [deployment settings](beta/api/resources/windowsupdates-deploymentsettings) configured for the content approval will be combined with the existing [update policy's](#create-an-update-policy) deployment settings. If the content approval and update policy specify the same deployment setting, the setting from the content approval is used. +> Any [deployment settings](/graph/api/resources/windowsupdates-deploymentsettings) configured for the content approval will be combined with the existing [update policy's](#create-an-update-policy) deployment settings. If the content approval and update policy specify the same deployment setting, the setting from the content approval is used. Add a content approval to an existing policy, **Policy ID** `9011c330-1234-5678-9abc-def012345678` for the driver update with the **Catalog ID** `1d082682ff38a3a885cefd68ec6ab3782be3dc31d156c9e5c6fd3dc55cbd839d. Schedule the start date for January, 20 2023 at 1 AM UTC: From 890c85d3f54e0ea3351c2f426d6991a791d2efe2 Mon Sep 17 00:00:00 2001 From: Meghan Stewart <33289333+mestew@users.noreply.github.com> Date: Tue, 31 Jan 2023 16:12:13 -0800 Subject: [PATCH 28/92] add approval info --- windows/deployment/update/deployment-service-drivers.md | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/windows/deployment/update/deployment-service-drivers.md b/windows/deployment/update/deployment-service-drivers.md index 8d8ffa874e..d56da92bbf 100644 --- a/windows/deployment/update/deployment-service-drivers.md +++ b/windows/deployment/update/deployment-service-drivers.md @@ -22,7 +22,8 @@ In this article, you will: > - [Enroll devices](#enroll-devices) > - [Create a deployment audience and add audience members](#create-a-deployment-audience-and-add-audience-members) > - [Create an update policy](#create-an-update-policy) -> - [Review applicable driver content and approve it](#review-applicable-driver-content-and-approve-it) +> - [Review applicable driver content](#review-applicable-driver-content) +> - [Approve driver content for deployment](#approve-driver-content-for-deployment) > - [Revoke content approval](#revoke-content-approval) > - [Remove device enrollment](#remove-device-enrollment) @@ -198,7 +199,7 @@ Content-type: application/json } ``` -## Review applicable driver content and approve it +## Review applicable driver content Once Windows Update for Business deployment service has scan results from devices, the applicability for driver and firmware updates can be displayed for a deployment audience. @@ -232,12 +233,14 @@ The following truncated response displays: "id": "1d082682ff38a3a885cefd68ec6ab3782be3dc31d156c9e5c6fd3dc55cbd839d", ``` +## Approve driver content for deployment + Each driver update is associated with a unique [catalog entry](/graph/api/resources/windowsupdates-catalogentry). Approve content for drivers and firmware by adding a [content approval](/graph/api/resources/windowsupdates-contentapproval) for the catalog entry to an existing policy. Content approval is a [compliance change](/graph/api/resources/windowsupdates-compliance) for the policy. > [!IMPORTANT] > Any [deployment settings](/graph/api/resources/windowsupdates-deploymentsettings) configured for the content approval will be combined with the existing [update policy's](#create-an-update-policy) deployment settings. If the content approval and update policy specify the same deployment setting, the setting from the content approval is used. -Add a content approval to an existing policy, **Policy ID** `9011c330-1234-5678-9abc-def012345678` for the driver update with the **Catalog ID** `1d082682ff38a3a885cefd68ec6ab3782be3dc31d156c9e5c6fd3dc55cbd839d. Schedule the start date for January, 20 2023 at 1 AM UTC: +Add a content approval to an existing policy, **Policy ID** `9011c330-1234-5678-9abc-def012345678` for the driver update with the **Catalog ID** `1d082682ff38a3a885cefd68ec6ab3782be3dc31d156c9e5c6fd3dc55cbd839d`. Schedule the start date for January, 20 2023 at 1 AM UTC: ```rest POST https://graph.microsoft.com/beta/admin/windows/updates/updatePolicies/9011c330-1234-5678-9abc-def012345678/complianceChanges From 75c97738d0cec96d08f43eb1a60f9d71c9af1cbf Mon Sep 17 00:00:00 2001 From: Meghan Stewart <33289333+mestew@users.noreply.github.com> Date: Tue, 31 Jan 2023 16:27:31 -0800 Subject: [PATCH 29/92] add approval info --- windows/deployment/update/deployment-service-drivers.md | 1 - 1 file changed, 1 deletion(-) diff --git a/windows/deployment/update/deployment-service-drivers.md b/windows/deployment/update/deployment-service-drivers.md index d56da92bbf..9f69a4dcd7 100644 --- a/windows/deployment/update/deployment-service-drivers.md +++ b/windows/deployment/update/deployment-service-drivers.md @@ -266,7 +266,6 @@ Content-type: application/json Review the compliance changes to a policy with the most recent changes listed in the response first. The following example returns the compliance changes for a policy with the **Policy ID** `9011c330-1234-5678-9abc-def012345678` and sorts by `createdDateTime` in descending order: -```rest ```rest GET https://graph.microsoft.com/beta/admin/windows/updates/updatePolicies/9011c330-1234-5678-9abc-def012345678/complianceChanges?orderby=createdDateTime desc From b8ed061ff8fb7f8aca02e04e7813f5e7b266b189 Mon Sep 17 00:00:00 2001 From: Meghan Stewart <33289333+mestew@users.noreply.github.com> Date: Wed, 1 Feb 2023 07:54:16 -0800 Subject: [PATCH 30/92] add approval info --- windows/deployment/update/deployment-service-drivers.md | 4 ++-- .../deployment/update/deployment-service-expedited-updates.md | 4 ++-- .../deployment/update/deployment-service-feature-updates.md | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/windows/deployment/update/deployment-service-drivers.md b/windows/deployment/update/deployment-service-drivers.md index 9f69a4dcd7..aa24df06bf 100644 --- a/windows/deployment/update/deployment-service-drivers.md +++ b/windows/deployment/update/deployment-service-drivers.md @@ -18,7 +18,7 @@ ms.date: 02/14/2023 In this article, you will: > [!div class="checklist"] > - [Open Graph Explorer](#open-graph-explorer) -> - [Run queries to identify test devices](#run-queries-to-identify-test-devices) +> - [Run queries to identify test devices](#run-queries-to-identify-devices) > - [Enroll devices](#enroll-devices) > - [Create a deployment audience and add audience members](#create-a-deployment-audience-and-add-audience-members) > - [Create an update policy](#create-an-update-policy) @@ -40,7 +40,7 @@ All of the [prerequisites for the Windows Update for Business deployment service [!INCLUDE [Graph Explorer sign in](./includes/wufb-deployment-graph-explorer.md)] -## Run queries to identify test devices +## Run queries to identify devices [!INCLUDE [Graph Explorer device queries](./includes/wufb-deployment-find-device-name-graph-explorer.md)] diff --git a/windows/deployment/update/deployment-service-expedited-updates.md b/windows/deployment/update/deployment-service-expedited-updates.md index 29e7d68224..a76fc6df2e 100644 --- a/windows/deployment/update/deployment-service-expedited-updates.md +++ b/windows/deployment/update/deployment-service-expedited-updates.md @@ -18,7 +18,7 @@ ms.date: 02/14/2023 In this article, you will: > [!div class="checklist"] > * [Open Graph Explorer](#open-graph-explorer) -> * [Run queries to identify test devices](#run-queries-to-identify-test-devices) +> * [Run queries to identify test devices](#run-queries-to-identify-devices) > * Do Z @@ -38,7 +38,7 @@ All of the [prerequisites for the Windows Update for Business deployment service [!INCLUDE [Graph Explorer sign in](./includes/wufb-deployment-graph-explorer.md)] -## Run queries to identify test devices +## Run queries to identify devices [!INCLUDE [Graph Explorer device queries](./includes/wufb-deployment-find-device-name-graph-explorer.md)] diff --git a/windows/deployment/update/deployment-service-feature-updates.md b/windows/deployment/update/deployment-service-feature-updates.md index a2e3287953..cdc2be2f7f 100644 --- a/windows/deployment/update/deployment-service-feature-updates.md +++ b/windows/deployment/update/deployment-service-feature-updates.md @@ -18,7 +18,7 @@ ms.date: 02/14/2023 In this article, you will: > [!div class="checklist"] > * [Open Graph Explorer](#open-graph-explorer) -> * [Run queries to identify test devices](#run-queries-to-identify-test-devices) +> * [Run queries to identify test devices](#run-queries-to-identify-devices) > * [Enroll devices](#enroll-devices) > * Do Z > * Do Z @@ -38,7 +38,7 @@ All of the [prerequisites for the Windows Update for Business deployment service [!INCLUDE [Graph Explorer sign in](./includes/wufb-deployment-graph-explorer.md)] -## Run queries to identify test devices +## Run queries to identify devices [!INCLUDE [Graph Explorer device queries](./includes/wufb-deployment-find-device-name-graph-explorer.md)] From 509b34cd34dae4b031a4db07818b1a612ffa88dd Mon Sep 17 00:00:00 2001 From: Meghan Stewart <33289333+mestew@users.noreply.github.com> Date: Wed, 1 Feb 2023 08:52:51 -0800 Subject: [PATCH 31/92] formatting --- .../update/deployment-service-drivers.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/windows/deployment/update/deployment-service-drivers.md b/windows/deployment/update/deployment-service-drivers.md index aa24df06bf..198daa906b 100644 --- a/windows/deployment/update/deployment-service-drivers.md +++ b/windows/deployment/update/deployment-service-drivers.md @@ -63,16 +63,16 @@ When you enroll devices into driver management, the deployment service becomes t {} ``` - The POST returns a [201 Created](/troubleshoot/developer/webapps/iis/www-administration-management/http-status-code#2xx---success) response with the following body, where `id` is the **Audience ID**: + The POST returns a [201 Created](/troubleshoot/developer/webapps/iis/www-administration-management/http-status-code#2xx---success) response with the following body, where `id` is the **Audience ID**: - ```json - { - "@odata.context": "https://graph.microsoft.com/beta/$metadata#admin/windows/updates/deploymentAudiences/$entity", - "id": "d39ad1ce-0123-4567-89ab-cdef01234567", - "reportingDeviceCount": 0, - "applicableContent": [] - } - ``` + ```json + { + "@odata.context": "https://graph.microsoft.com/beta/$metadata#admin/windows/updates/deploymentAudiences/$entity", + "id": "d39ad1ce-0123-4567-89ab-cdef01234567", + "reportingDeviceCount": 0, + "applicableContent": [] + } + ``` 1. Add devices, using their **Azure AD ID**, to the deployment audience so they become audience members. Specify the deployment **Audience ID** in the URL field and the devices to add in the request body. The `id` property specifies the **Azure AD ID** of the device. From c4537ce578e94733a453f13aa05e4eb5982dd253 Mon Sep 17 00:00:00 2001 From: Meghan Stewart <33289333+mestew@users.noreply.github.com> Date: Wed, 1 Feb 2023 09:09:36 -0800 Subject: [PATCH 32/92] formatting --- .../update/deployment-service-drivers.md | 34 +++++++++---------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/windows/deployment/update/deployment-service-drivers.md b/windows/deployment/update/deployment-service-drivers.md index 198daa906b..6d140e4a8e 100644 --- a/windows/deployment/update/deployment-service-drivers.md +++ b/windows/deployment/update/deployment-service-drivers.md @@ -215,23 +215,23 @@ Each applicable update returns the following information: - The **Azure AD ID** of the devices it's applicable to - Information describing the update such as the name and version. -The following truncated response displays: -- An **Azure AD ID** of `01234567-89ab-cdef-0123-456789abcdef` -- The **Catalog ID** of `1d082682ff38a3a885cefd68ec6ab3782be3dc31d156c9e5c6fd3dc55cbd839d` + The following truncated response displays: + - An **Azure AD ID** of `01234567-89ab-cdef-0123-456789abcdef` + - The **Catalog ID** of `1d082682ff38a3a885cefd68ec6ab3782be3dc31d156c9e5c6fd3dc55cbd839d` -```json -"matchedDevices": [ - { - "recommendedBy": [ - "Microsoft" - ], - "deviceId": "01ea3c90-12f5-4093-a4c9-c1434657c976" - } -], -"catalogEntry": { - "@odata.type": "#microsoft.graph.windowsUpdates.driverUpdateCatalogEntry", - "id": "1d082682ff38a3a885cefd68ec6ab3782be3dc31d156c9e5c6fd3dc55cbd839d", -``` + ```json + "matchedDevices": [ + { + "recommendedBy": [ + "Microsoft" + ], + "deviceId": "01ea3c90-12f5-4093-a4c9-c1434657c976" + } + ], + "catalogEntry": { + "@odata.type": "#microsoft.graph.windowsUpdates.driverUpdateCatalogEntry", + "id": "1d082682ff38a3a885cefd68ec6ab3782be3dc31d156c9e5c6fd3dc55cbd839d", + ``` ## Approve driver content for deployment @@ -274,7 +274,7 @@ GET https://graph.microsoft.com/beta/admin/windows/updates/updatePolicies/9011c3 ## Revoke content approval -Approval for content can be revoked by setting the `isRevoked` property of the [compliance change](/graph/api/resources/windowsupdates-compliance) to true. This setting can be changed while a deployment is in progress. However, revoking will only prevent the content from being offered to devices if they haven't already received it. To resume offering the content, a new [approval](#review-applicable-driver-content-and-approve-it) will need to be created. +Approval for content can be revoked by setting the `isRevoked` property of the [compliance change](/graph/api/resources/windowsupdates-compliance) to true. This setting can be changed while a deployment is in progress. However, revoking will only prevent the content from being offered to devices if they haven't already received it. To resume offering the content, a new [approval](#approve-driver-content-for-deployment) will need to be created. ### Request From a36b5cce2292875dd542c2beaf52a5a6a2d85ebc Mon Sep 17 00:00:00 2001 From: Meghan Stewart <33289333+mestew@users.noreply.github.com> Date: Wed, 1 Feb 2023 11:20:26 -0800 Subject: [PATCH 33/92] formatting --- .../update/deployment-service-drivers.md | 53 +++++++++---------- ...loyment-find-device-name-graph-explorer.md | 30 +++++------ 2 files changed, 38 insertions(+), 45 deletions(-) diff --git a/windows/deployment/update/deployment-service-drivers.md b/windows/deployment/update/deployment-service-drivers.md index 6d140e4a8e..d06a95ab49 100644 --- a/windows/deployment/update/deployment-service-drivers.md +++ b/windows/deployment/update/deployment-service-drivers.md @@ -17,6 +17,7 @@ ms.date: 02/14/2023 In this article, you will: > [!div class="checklist"] +> > - [Open Graph Explorer](#open-graph-explorer) > - [Run queries to identify test devices](#run-queries-to-identify-devices) > - [Enroll devices](#enroll-devices) @@ -30,6 +31,7 @@ In this article, you will: ## Prerequisites All of the [prerequisites for the Windows Update for Business deployment service](deployment-service-overview.md#prerequisites) must be met. + ### Permissions @@ -63,16 +65,17 @@ When you enroll devices into driver management, the deployment service becomes t {} ``` - The POST returns a [201 Created](/troubleshoot/developer/webapps/iis/www-administration-management/http-status-code#2xx---success) response with the following body, where `id` is the **Audience ID**: + The POST returns a [201 Created](/troubleshoot/developer/webapps/iis/www-administration-management/http-status-code#2xx---success) response with the following body, where `id` is the **Audience ID**: + + ```json + { + "@odata.context": "https://graph.microsoft.com/beta/$metadata#admin/windows/updates/deploymentAudiences/$entity", + "id": "d39ad1ce-0123-4567-89ab-cdef01234567", + "reportingDeviceCount": 0, + "applicableContent": [] + } + ``` - ```json - { - "@odata.context": "https://graph.microsoft.com/beta/$metadata#admin/windows/updates/deploymentAudiences/$entity", - "id": "d39ad1ce-0123-4567-89ab-cdef01234567", - "reportingDeviceCount": 0, - "applicableContent": [] - } - ``` 1. Add devices, using their **Azure AD ID**, to the deployment audience so they become audience members. Specify the deployment **Audience ID** in the URL field and the devices to add in the request body. The `id` property specifies the **Azure AD ID** of the device. @@ -127,10 +130,10 @@ Update policies define how content is deployed to a deployment audience. An [upd - Specify settings during policy creation To create a policy with additional settings, in the request body: - - Specify the **Audience ID** as `id` - - Define any additional [deployment settings](/graph/api/resources/windowsupdates-deploymentsettings). - - You may need to add the `content-length` header to the request. The value should be the length of the request body in bytes. - + - Specify the **Audience ID** as `id` + - Define any additional [deployment settings](/graph/api/resources/windowsupdates-deploymentsettings). + - You may need to add the `content-length` header to the request. The value should be the length of the request body in bytes. + In the following example, the **Audience ID** is `d39ad1ce-0123-4567-89ab-cdef01234567`: ```rest @@ -169,7 +172,7 @@ Update policies define how content is deployed to a deployment audience. An [upd } ``` -**note to add info about behavior defined by settings in example and maybe include info about autoapprove while recommended** +**note to add info about behavior defined by settings in example and maybe include info about autoapprove while recommended** ``` @@ -177,7 +180,7 @@ Update policies define how content is deployed to a deployment audience. An [upd "contentApplicability": { "offerWhileRecommendedBy": ["Microsoft"], ``` - + Response returning the policy, without any additional settings specified, that has a **Policy ID** of `9011c330-1234-5678-9abc-def012345678`: ```json @@ -201,7 +204,11 @@ Content-type: application/json ## Review applicable driver content -Once Windows Update for Business deployment service has scan results from devices, the applicability for driver and firmware updates can be displayed for a deployment audience. +Once Windows Update for Business deployment service has scan results from devices, the applicability for driver and firmware updates can be displayed for a deployment audience. Each applicable update returns the following information: + +- An `id` for its [catalog entry](/graph/api/resources/windowsupdates-catalogentry) +- The **Azure AD ID** of the devices it's applicable to +- Information describing the update such as the name and version. To display [applicable content](/graph/api/resources/windowsupdates-applicablecontent), run a query using the **Audience ID**, for example `d39ad1ce-0123-4567-89ab-cdef01234567`: @@ -209,15 +216,9 @@ To display [applicable content](/graph/api/resources/windowsupdates-applicableco GET https://graph.microsoft.com/beta/admin/windows/updates/deploymentAudiences/d39ad1ce-0123-4567-89ab-cdef01234567/applicableContent ``` -Each applicable update returns the following information: - -- An `id` for its [catalog entry](/graph/api/resources/windowsupdates-catalogentry) -- The **Azure AD ID** of the devices it's applicable to -- Information describing the update such as the name and version. - The following truncated response displays: - - An **Azure AD ID** of `01234567-89ab-cdef-0123-456789abcdef` - - The **Catalog ID** of `1d082682ff38a3a885cefd68ec6ab3782be3dc31d156c9e5c6fd3dc55cbd839d` + - An **Azure AD ID** of `01234567-89ab-cdef-0123-456789abcdef` + - The **Catalog ID** of `1d082682ff38a3a885cefd68ec6ab3782be3dc31d156c9e5c6fd3dc55cbd839d` ```json "matchedDevices": [ @@ -266,7 +267,6 @@ Content-type: application/json Review the compliance changes to a policy with the most recent changes listed in the response first. The following example returns the compliance changes for a policy with the **Policy ID** `9011c330-1234-5678-9abc-def012345678` and sorts by `createdDateTime` in descending order: - ```rest GET https://graph.microsoft.com/beta/admin/windows/updates/updatePolicies/9011c330-1234-5678-9abc-def012345678/complianceChanges?orderby=createdDateTime desc @@ -276,7 +276,6 @@ GET https://graph.microsoft.com/beta/admin/windows/updates/updatePolicies/9011c3 Approval for content can be revoked by setting the `isRevoked` property of the [compliance change](/graph/api/resources/windowsupdates-compliance) to true. This setting can be changed while a deployment is in progress. However, revoking will only prevent the content from being offered to devices if they haven't already received it. To resume offering the content, a new [approval](#approve-driver-content-for-deployment) will need to be created. - ### Request ```http @@ -290,5 +289,5 @@ Content-type: application/json ## Remove device enrollment - + [!INCLUDE [Graph Explorer enroll devices](./includes/wufb-deployment-graph-unenroll.md)] diff --git a/windows/deployment/update/includes/wufb-deployment-find-device-name-graph-explorer.md b/windows/deployment/update/includes/wufb-deployment-find-device-name-graph-explorer.md index 611cc9c8f0..82c778446e 100644 --- a/windows/deployment/update/includes/wufb-deployment-find-device-name-graph-explorer.md +++ b/windows/deployment/update/includes/wufb-deployment-find-device-name-graph-explorer.md @@ -10,21 +10,18 @@ ms.localizationpriority: medium --- -Use the [device](/graph/api/resources/device) resource type to find clients to enroll into the deployment service. Change the query parameters to fit your specific needs. For more information, see [Use query parameters](/graph/query-parameters). +Use the [device](/graph/api/resources/device) resource type to find clients to enroll into the deployment service. Change the query parameters to fit your specific needs. For more information, see [Use query parameters](/graph/query-parameters). -Displays the **AzureAD Device ID** and **Name** of all devices: +- Displays the **AzureAD Device ID** and **Name** of all devices: -```rest -GET https://graph.microsoft.com/v1.0/devices?$select=deviceid,displayName -``` + `GET https://graph.microsoft.com/v1.0/devices?$select=deviceid,displayName` -Displays the **AzureAD Device ID** and **Name** for device names that starts with `Test`: +- Displays the **AzureAD Device ID** and **Name** for devices that have a name starting with `Test`: -```rest -GET https://graph.microsoft.com/v1.0/devices?$filter=startswith(displayName,'Test')&$select=deviceid,displayName -``` + `GET https://graph.microsoft.com/v1.0/devices?$filter=startswith (displayName,'Test')&$select=deviceid,displayName` -### Add a request header + +### Add a request header for advanced queries For the next requests, set the **ConsistencyLevel** header to `eventual`. For more information about advanced query parameters, see [Advanced query capabilities on Azure AD directory objects](/graph/aad-advanced-queries). @@ -34,17 +31,14 @@ For the next requests, set the **ConsistencyLevel** header to `eventual`. For mo :::image type="content" source="../media/7512398-deployment-service-graph-modify-header.png" alt-text="Screenshot of the request headers tab in Graph Explorer" lightbox="../media/7512398-deployment-service-graph-modify-header.png"::: -Displays the **Name** and **Operating system version** for the device that has the **AzureAD Device ID** of `01234567-89ab-cdef-0123-456789abcdef`: +- Display the **Name** and **Operating system version** for the device that has `01234567-89ab-cdef-0123-456789abcdef` as the **AzureAD Device ID**: -```rest -GET https://graph.microsoft.com/v1.0/devices?$search="deviceid:01234567-89ab-cdef-0123-456789abcdef"?$select=displayName,operatingSystemVersion -``` + `GET https://graph.microsoft.com/v1.0/devices?$search="deviceid:01234567-89ab-cdef-0123-456789abcdef"?$select=displayName,operatingSystemVersion` -To find devices that likely aren't virtual machines, filter for devices that don't have virtual machine listed as the model but do have a manufacturer listed. Display the **AzureAD Device ID**, **Name**, and **Operating system version** for each device: +- To find devices that likely aren't virtual machines, filter for devices that don't have virtual machine listed as the model but do have a manufacturer listed. Display the **AzureAD Device ID**, **Name**, and **Operating system version** for each device: + + `GET https://graph.microsoft.com/v1.0/devices?$filter=model ne 'virtual machine' and NOT(manufacturer eq null)&$count=true&$select=deviceid,displayName,operatingSystemVersion` -```rest -GET https://graph.microsoft.com/v1.0/devices?$filter=model ne 'virtual machine' and NOT(manufacturer eq null)&$count=true&$select=deviceid,displayName,operatingSystemVersion -``` > [!Tip] > Requests using the [device](/graph/api/resources/device) resource type typically have both an `id` and a `deviceid`: From b4dfd5fe8abe76f89d16bfedbfceb23aa7d78299 Mon Sep 17 00:00:00 2001 From: Meghan Stewart <33289333+mestew@users.noreply.github.com> Date: Wed, 1 Feb 2023 11:29:47 -0800 Subject: [PATCH 34/92] formatting --- .../update/deployment-service-drivers.md | 16 ++++++++-------- .../includes/wufb-deployment-graph-unenroll.md | 2 +- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/windows/deployment/update/deployment-service-drivers.md b/windows/deployment/update/deployment-service-drivers.md index d06a95ab49..04df91a874 100644 --- a/windows/deployment/update/deployment-service-drivers.md +++ b/windows/deployment/update/deployment-service-drivers.md @@ -58,7 +58,7 @@ When you enroll devices into driver management, the deployment service becomes t 1. Create an audience for the driver deployment. The deployment audience is a collection of member devices that will receive the driver deployment. POST to the [deployment audience](/graph/api/resources/windowsupdates-deploymentaudience) resource with a request body of `{}` to create a new audience. - ```rest + ```http POST https://graph.microsoft.com/beta/admin/windows/updates/deploymentAudiences content-type: application/json @@ -79,7 +79,7 @@ When you enroll devices into driver management, the deployment service becomes t 1. Add devices, using their **Azure AD ID**, to the deployment audience so they become audience members. Specify the deployment **Audience ID** in the URL field and the devices to add in the request body. The `id` property specifies the **Azure AD ID** of the device. - ```rest + ```http POST https://graph.microsoft.com/beta/admin/windows/updates/deploymentAudiences/d39ad1ce-0123-4567-89ab-cdef01234567/updateAudience Content-type: application/json @@ -103,7 +103,7 @@ When you enroll devices into driver management, the deployment service becomes t 1. To verify the devices were added to the audience, run the following query using the **Audience ID**: - ```rest + ```http GET https://graph.microsoft.com/beta/admin/windows/updates/deploymentAudiences/d39ad1ce-0123-4567-89ab-cdef01234567/members ``` @@ -117,7 +117,7 @@ Update policies define how content is deployed to a deployment audience. An [upd To create a policy without any deployment settings, in the request body specify the **Audience ID** as `id`. In the following example, the **Audience ID** is `d39ad1ce-0123-4567-89ab-cdef01234567`, and the `id` given in the response is the **Policy ID**: - ```rest + ```http POST https://graph.microsoft.com/beta/admin/windows/updates/updatePolicies Content-type: application/json { @@ -136,7 +136,7 @@ Update policies define how content is deployed to a deployment audience. An [upd In the following example, the **Audience ID** is `d39ad1ce-0123-4567-89ab-cdef01234567`: - ```rest + ```http POST https://graph.microsoft.com/beta/admin/windows/updates/updatePolicies Content-Type: application/json Content-length: 967 @@ -212,7 +212,7 @@ Once Windows Update for Business deployment service has scan results from device To display [applicable content](/graph/api/resources/windowsupdates-applicablecontent), run a query using the **Audience ID**, for example `d39ad1ce-0123-4567-89ab-cdef01234567`: -```rest +```http GET https://graph.microsoft.com/beta/admin/windows/updates/deploymentAudiences/d39ad1ce-0123-4567-89ab-cdef01234567/applicableContent ``` @@ -243,7 +243,7 @@ Each driver update is associated with a unique [catalog entry](/graph/api/resour Add a content approval to an existing policy, **Policy ID** `9011c330-1234-5678-9abc-def012345678` for the driver update with the **Catalog ID** `1d082682ff38a3a885cefd68ec6ab3782be3dc31d156c9e5c6fd3dc55cbd839d`. Schedule the start date for January, 20 2023 at 1 AM UTC: -```rest +```http POST https://graph.microsoft.com/beta/admin/windows/updates/updatePolicies/9011c330-1234-5678-9abc-def012345678/complianceChanges Content-type: application/json @@ -267,7 +267,7 @@ Content-type: application/json Review the compliance changes to a policy with the most recent changes listed in the response first. The following example returns the compliance changes for a policy with the **Policy ID** `9011c330-1234-5678-9abc-def012345678` and sorts by `createdDateTime` in descending order: -```rest +```http GET https://graph.microsoft.com/beta/admin/windows/updates/updatePolicies/9011c330-1234-5678-9abc-def012345678/complianceChanges?orderby=createdDateTime desc ``` diff --git a/windows/deployment/update/includes/wufb-deployment-graph-unenroll.md b/windows/deployment/update/includes/wufb-deployment-graph-unenroll.md index 3a04370fd4..38f85ce10f 100644 --- a/windows/deployment/update/includes/wufb-deployment-graph-unenroll.md +++ b/windows/deployment/update/includes/wufb-deployment-graph-unenroll.md @@ -21,7 +21,7 @@ To remove device enrollment, POST to [updatableAssets](/graph/api/resources/wind The following example removes `driver` enrollment for two devices, `01234567-89ab-cdef-0123-456789abcdef` and `01234567-89ab-cdef-0123-456789abcde0`: -```rest +```http POST https://graph.microsoft.com/beta/admin/windows/updates/updatableAssets/unenrollAssets Content-Type: application/json From 99a5857462af5d65df495dd840e3557761d0c5a6 Mon Sep 17 00:00:00 2001 From: Meghan Stewart <33289333+mestew@users.noreply.github.com> Date: Wed, 1 Feb 2023 12:37:05 -0800 Subject: [PATCH 35/92] formatting --- .../update/deployment-service-drivers.md | 50 ++++++++++++------- 1 file changed, 33 insertions(+), 17 deletions(-) diff --git a/windows/deployment/update/deployment-service-drivers.md b/windows/deployment/update/deployment-service-drivers.md index 04df91a874..043d4973b5 100644 --- a/windows/deployment/update/deployment-service-drivers.md +++ b/windows/deployment/update/deployment-service-drivers.md @@ -56,7 +56,7 @@ When you enroll devices into driver management, the deployment service becomes t ## Create a deployment audience and add audience members -1. Create an audience for the driver deployment. The deployment audience is a collection of member devices that will receive the driver deployment. POST to the [deployment audience](/graph/api/resources/windowsupdates-deploymentaudience) resource with a request body of `{}` to create a new audience. +1. Create an audience for the driver deployment. The deployment audience is a collection of member devices that will receive the driver deployment. **POST** to the [deployment audience](/graph/api/resources/windowsupdates-deploymentaudience) resource with a request body of `{}` to create a new audience. ```http POST https://graph.microsoft.com/beta/admin/windows/updates/deploymentAudiences @@ -103,17 +103,19 @@ When you enroll devices into driver management, the deployment service becomes t 1. To verify the devices were added to the audience, run the following query using the **Audience ID**: - ```http - GET https://graph.microsoft.com/beta/admin/windows/updates/deploymentAudiences/d39ad1ce-0123-4567-89ab-cdef01234567/members - ``` + `GET https://graph.microsoft.com/beta/admin/windows/updates/deploymentAudiences/d39ad1ce-0123-4567-89ab-cdef01234567/members` Once a device has been enrolled and added to a deployment audience, the Windows Update for Business deployment service will start collecting scan results from Windows Update to build a catalog of applicable drivers to be browsed, approved, and scheduled for deployment. ## Create an update policy -Update policies define how content is deployed to a deployment audience. An [update policy](/graph/api/resources/windowsupdates-updatepolicy) ensures deployments to a deployment audience behaves in a consistent manner without having to create and manage multiple individual deployments. When a content approval is added to the policy, it's deployed to the devices in the associated audiences. When creating an update policy, you can either: +Update policies define how content is deployed to a deployment audience. An [update policy](/graph/api/resources/windowsupdates-updatepolicy) ensures deployments to a deployment audience behaves in a consistent manner without having to create and manage multiple individual deployments. When a content approval is added to the policy, it's deployed to the devices in the associated audiences. -- Create a policy and define the settings later +> [!IMPORTANT] +> Any [deployment settings](/graph/api/resources/windowsupdates-deploymentsettings) configured for a [content approval](#approve-driver-content-for-deployment) will be combined with the existing update policy's deployment settings. If the content approval and update policy specify the same deployment setting, the setting from the content approval is used. + + +### Create a policy and define the settings later To create a policy without any deployment settings, in the request body specify the **Audience ID** as `id`. In the following example, the **Audience ID** is `d39ad1ce-0123-4567-89ab-cdef01234567`, and the `id` given in the response is the **Policy ID**: @@ -127,9 +129,9 @@ Update policies define how content is deployed to a deployment audience. An [upd } ``` -- Specify settings during policy creation +### Specify settings during policy creation - To create a policy with additional settings, in the request body: +To create a policy with additional settings, in the request body: - Specify the **Audience ID** as `id` - Define any additional [deployment settings](/graph/api/resources/windowsupdates-deploymentsettings). - You may need to add the `content-length` header to the request. The value should be the length of the request body in bytes. @@ -172,14 +174,6 @@ Update policies define how content is deployed to a deployment audience. An [upd } ``` -**note to add info about behavior defined by settings in example and maybe include info about autoapprove while recommended** - -``` - - "deploymentSettings": { - "contentApplicability": { - "offerWhileRecommendedBy": ["Microsoft"], -``` Response returning the policy, without any additional settings specified, that has a **Policy ID** of `9011c330-1234-5678-9abc-def012345678`: @@ -202,6 +196,26 @@ Content-type: application/json } ``` +### Review and edit policy settings + +To review the policy settings, run the following query using the **Policy ID**, for example `9011c330-1234-5678-9abc-def012345678`: + + `GET https://graph.microsoft.com/beta/admin/windows/updates/updatePolicies/9011c330-1234-5678-9abc-def012345678` + +To edit the policy settings, **PATCH** the policy using the **Policy ID**. Run the following **PATCH** to automatically approve driver content that's recommended by `Microsoft`for deployment for **Policy ID** `9011c330-1234-5678-9abc-def012345678`: + +``` http + PATCH https://graph.microsoft.com/beta/admin/windows/updates/updatePolicies/9011c330-1234-5678-9abc-def012345678 + Content-Type: application/json + + "deploymentSettings": { + "contentApplicability": { + "offerWhileRecommendedBy": ["Microsoft"], +``` + +**note to add info about behavior defined by settings in example and maybe include info about autoapprove while recommended** + + ## Review applicable driver content Once Windows Update for Business deployment service has scan results from devices, the applicability for driver and firmware updates can be displayed for a deployment audience. Each applicable update returns the following information: @@ -216,7 +230,7 @@ To display [applicable content](/graph/api/resources/windowsupdates-applicableco GET https://graph.microsoft.com/beta/admin/windows/updates/deploymentAudiences/d39ad1ce-0123-4567-89ab-cdef01234567/applicableContent ``` - The following truncated response displays: +The following truncated response displays: - An **Azure AD ID** of `01234567-89ab-cdef-0123-456789abcdef` - The **Catalog ID** of `1d082682ff38a3a885cefd68ec6ab3782be3dc31d156c9e5c6fd3dc55cbd839d` @@ -265,6 +279,8 @@ Content-type: application/json } ``` + + Review the compliance changes to a policy with the most recent changes listed in the response first. The following example returns the compliance changes for a policy with the **Policy ID** `9011c330-1234-5678-9abc-def012345678` and sorts by `createdDateTime` in descending order: ```http From 2dc48351896662ed47b111060150bf4062903560 Mon Sep 17 00:00:00 2001 From: Meghan Stewart <33289333+mestew@users.noreply.github.com> Date: Wed, 1 Feb 2023 15:58:14 -0800 Subject: [PATCH 36/92] formattingand additional content --- .../update/deployment-service-drivers.md | 21 +++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/windows/deployment/update/deployment-service-drivers.md b/windows/deployment/update/deployment-service-drivers.md index 043d4973b5..f4f7061880 100644 --- a/windows/deployment/update/deployment-service-drivers.md +++ b/windows/deployment/update/deployment-service-drivers.md @@ -208,12 +208,25 @@ To edit the policy settings, **PATCH** the policy using the **Policy ID**. Run t PATCH https://graph.microsoft.com/beta/admin/windows/updates/updatePolicies/9011c330-1234-5678-9abc-def012345678 Content-Type: application/json - "deploymentSettings": { - "contentApplicability": { - "offerWhileRecommendedBy": ["Microsoft"], +{ + "complianceChangeRules": [ + { + "@odata.type": "#microsoft.graph.windowsUpdates.contentApprovalRule", + "contentFilter": { + "@odata.type": "#microsoft.graph.windowsUpdates.driverUpdateFilter" + } + } + ], + "deploymentSettings": { + "@odata.type": "#microsoft.graph.windowsUpdates.deploymentSettings", + "contentApplicability": { + "@odata.type": "#microsoft.graph.windowsUpdates.contentApplicabilitySettings", + "offerWhileRecommendedBy": ["microsoft"] + } + } +} ``` -**note to add info about behavior defined by settings in example and maybe include info about autoapprove while recommended** ## Review applicable driver content From 3e8bb6cb7f7c271ed4c1bd93033ac799bc66616c Mon Sep 17 00:00:00 2001 From: Meghan Stewart <33289333+mestew@users.noreply.github.com> Date: Wed, 1 Feb 2023 16:29:47 -0800 Subject: [PATCH 37/92] formattingand additional content --- windows/deployment/update/deployment-service-drivers.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/windows/deployment/update/deployment-service-drivers.md b/windows/deployment/update/deployment-service-drivers.md index f4f7061880..87ad1d4382 100644 --- a/windows/deployment/update/deployment-service-drivers.md +++ b/windows/deployment/update/deployment-service-drivers.md @@ -196,7 +196,7 @@ Content-type: application/json } ``` -### Review and edit policy settings +### Review and edit update policy settings To review the policy settings, run the following query using the **Policy ID**, for example `9011c330-1234-5678-9abc-def012345678`: @@ -228,7 +228,6 @@ To edit the policy settings, **PATCH** the policy using the **Policy ID**. Run t ``` - ## Review applicable driver content Once Windows Update for Business deployment service has scan results from devices, the applicability for driver and firmware updates can be displayed for a deployment audience. Each applicable update returns the following information: From 7689458302866179ee692d10f8dff1cb973a5b6a Mon Sep 17 00:00:00 2001 From: Meghan Stewart <33289333+mestew@users.noreply.github.com> Date: Wed, 1 Feb 2023 16:39:52 -0800 Subject: [PATCH 38/92] formattingand additional content --- .../update/deployment-service-drivers.md | 46 +++++++++---------- 1 file changed, 22 insertions(+), 24 deletions(-) diff --git a/windows/deployment/update/deployment-service-drivers.md b/windows/deployment/update/deployment-service-drivers.md index 87ad1d4382..89a928ddaa 100644 --- a/windows/deployment/update/deployment-service-drivers.md +++ b/windows/deployment/update/deployment-service-drivers.md @@ -129,6 +129,27 @@ Update policies define how content is deployed to a deployment audience. An [upd } ``` +Response returning the policy, without any additional settings specified, that has a **Policy ID** of `9011c330-1234-5678-9abc-def012345678`: + +```json +HTTP/1.1 202 Accepted +Content-type: application/json +{ + "@odata.context": "https://graph.microsoft.com/beta/$metadata#admin/windows/updates/updatePolicies/$entity", + "id": "9011c330-1234-5678-9abc-def012345678", + "createdDateTime": "2023-01-25T05:32:21.9721459Z", + "autoEnrollmentUpdateCategories": [], + "complianceChangeRules": [], + "deploymentSettings": { + "schedule": null, + "monitoring": null, + "contentApplicability": null, + "userExperience": null, + "expedite": null + } +} +``` + ### Specify settings during policy creation To create a policy with additional settings, in the request body: @@ -136,7 +157,7 @@ To create a policy with additional settings, in the request body: - Define any additional [deployment settings](/graph/api/resources/windowsupdates-deploymentsettings). - You may need to add the `content-length` header to the request. The value should be the length of the request body in bytes. - In the following example, the **Audience ID** is `d39ad1ce-0123-4567-89ab-cdef01234567`: + In the following driver update policy example, any deployments created by a content approval will start in 7 days after approval and will gradually roll out to 1000 devices per day for **Audience ID** `d39ad1ce-0123-4567-89ab-cdef01234567`: ```http POST https://graph.microsoft.com/beta/admin/windows/updates/updatePolicies @@ -175,27 +196,6 @@ To create a policy with additional settings, in the request body: ``` -Response returning the policy, without any additional settings specified, that has a **Policy ID** of `9011c330-1234-5678-9abc-def012345678`: - -```json -HTTP/1.1 202 Accepted -Content-type: application/json -{ - "@odata.context": "https://graph.microsoft.com/beta/$metadata#admin/windows/updates/updatePolicies/$entity", - "id": "9011c330-1234-5678-9abc-def012345678", - "createdDateTime": "2023-01-25T05:32:21.9721459Z", - "autoEnrollmentUpdateCategories": [], - "complianceChangeRules": [], - "deploymentSettings": { - "schedule": null, - "monitoring": null, - "contentApplicability": null, - "userExperience": null, - "expedite": null - } -} -``` - ### Review and edit update policy settings To review the policy settings, run the following query using the **Policy ID**, for example `9011c330-1234-5678-9abc-def012345678`: @@ -291,8 +291,6 @@ Content-type: application/json } ``` - - Review the compliance changes to a policy with the most recent changes listed in the response first. The following example returns the compliance changes for a policy with the **Policy ID** `9011c330-1234-5678-9abc-def012345678` and sorts by `createdDateTime` in descending order: ```http From 96965d9e1c5fbde51dd1316e0f245876458aa952 Mon Sep 17 00:00:00 2001 From: Meghan Stewart <33289333+mestew@users.noreply.github.com> Date: Wed, 1 Feb 2023 16:43:23 -0800 Subject: [PATCH 39/92] formattingand additional content --- windows/deployment/update/deployment-service-drivers.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/windows/deployment/update/deployment-service-drivers.md b/windows/deployment/update/deployment-service-drivers.md index 89a928ddaa..3e340a66f5 100644 --- a/windows/deployment/update/deployment-service-drivers.md +++ b/windows/deployment/update/deployment-service-drivers.md @@ -109,7 +109,7 @@ Once a device has been enrolled and added to a deployment audience, the Windows ## Create an update policy -Update policies define how content is deployed to a deployment audience. An [update policy](/graph/api/resources/windowsupdates-updatepolicy) ensures deployments to a deployment audience behaves in a consistent manner without having to create and manage multiple individual deployments. When a content approval is added to the policy, it's deployed to the devices in the associated audiences. +Update policies define how content is deployed to a deployment audience. An [update policy](/graph/api/resources/windowsupdates-updatepolicy) ensures deployments to a deployment audience behave in a consistent manner without having to create and manage multiple individual deployments. When a content approval is added to the policy, it's deployed to the devices in the associated audiences. > [!IMPORTANT] > Any [deployment settings](/graph/api/resources/windowsupdates-deploymentsettings) configured for a [content approval](#approve-driver-content-for-deployment) will be combined with the existing update policy's deployment settings. If the content approval and update policy specify the same deployment setting, the setting from the content approval is used. @@ -154,7 +154,7 @@ Content-type: application/json To create a policy with additional settings, in the request body: - Specify the **Audience ID** as `id` - - Define any additional [deployment settings](/graph/api/resources/windowsupdates-deploymentsettings). + - Define any [deployment settings](/graph/api/resources/windowsupdates-deploymentsettings). - You may need to add the `content-length` header to the request. The value should be the length of the request body in bytes. In the following driver update policy example, any deployments created by a content approval will start in 7 days after approval and will gradually roll out to 1000 devices per day for **Audience ID** `d39ad1ce-0123-4567-89ab-cdef01234567`: From f93752de517146ac6f94fa8e0405193f1a250539 Mon Sep 17 00:00:00 2001 From: Meghan Stewart <33289333+mestew@users.noreply.github.com> Date: Thu, 2 Feb 2023 09:19:15 -0800 Subject: [PATCH 40/92] formattingand additional content --- .../update/deployment-service-drivers.md | 40 +++++++++---------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/windows/deployment/update/deployment-service-drivers.md b/windows/deployment/update/deployment-service-drivers.md index 3e340a66f5..ed5a6f6da4 100644 --- a/windows/deployment/update/deployment-service-drivers.md +++ b/windows/deployment/update/deployment-service-drivers.md @@ -117,7 +117,7 @@ Update policies define how content is deployed to a deployment audience. An [upd ### Create a policy and define the settings later - To create a policy without any deployment settings, in the request body specify the **Audience ID** as `id`. In the following example, the **Audience ID** is `d39ad1ce-0123-4567-89ab-cdef01234567`, and the `id` given in the response is the **Policy ID**: +To create a policy without any deployment settings, in the request body specify the **Audience ID** as `id`. In the following example, the **Audience ID** is `d39ad1ce-0123-4567-89ab-cdef01234567`, and the `id` given in the response is the **Policy ID**: ```http POST https://graph.microsoft.com/beta/admin/windows/updates/updatePolicies @@ -131,24 +131,24 @@ Update policies define how content is deployed to a deployment audience. An [upd Response returning the policy, without any additional settings specified, that has a **Policy ID** of `9011c330-1234-5678-9abc-def012345678`: -```json -HTTP/1.1 202 Accepted -Content-type: application/json -{ - "@odata.context": "https://graph.microsoft.com/beta/$metadata#admin/windows/updates/updatePolicies/$entity", - "id": "9011c330-1234-5678-9abc-def012345678", - "createdDateTime": "2023-01-25T05:32:21.9721459Z", - "autoEnrollmentUpdateCategories": [], - "complianceChangeRules": [], - "deploymentSettings": { - "schedule": null, - "monitoring": null, - "contentApplicability": null, - "userExperience": null, - "expedite": null - } -} -``` + ```json + HTTP/1.1 202 Accepted + Content-type: application/json + { + "@odata.context": "https://graph.microsoft.com/beta/$metadata#admin/windows/updates/updatePolicies/$entity", + "id": "9011c330-1234-5678-9abc-def012345678", + "createdDateTime": "2023-01-25T05:32:21.9721459Z", + "autoEnrollmentUpdateCategories": [], + "complianceChangeRules": [], + "deploymentSettings": { + "schedule": null, + "monitoring": null, + "contentApplicability": null, + "userExperience": null, + "expedite": null + } + } + ``` ### Specify settings during policy creation @@ -157,7 +157,7 @@ To create a policy with additional settings, in the request body: - Define any [deployment settings](/graph/api/resources/windowsupdates-deploymentsettings). - You may need to add the `content-length` header to the request. The value should be the length of the request body in bytes. - In the following driver update policy example, any deployments created by a content approval will start in 7 days after approval and will gradually roll out to 1000 devices per day for **Audience ID** `d39ad1ce-0123-4567-89ab-cdef01234567`: + In the following driver update policy example, any deployments created by a content approval will start 7 days after approval and will gradually roll out to 1000 devices per day for **Audience ID** `d39ad1ce-0123-4567-89ab-cdef01234567`: ```http POST https://graph.microsoft.com/beta/admin/windows/updates/updatePolicies From feed2f5f9f3ca7bea6c36a755c626aaad4c961ea Mon Sep 17 00:00:00 2001 From: Meghan Stewart <33289333+mestew@users.noreply.github.com> Date: Thu, 2 Feb 2023 09:20:49 -0800 Subject: [PATCH 41/92] formattingand additional content --- windows/deployment/update/deployment-service-drivers.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/windows/deployment/update/deployment-service-drivers.md b/windows/deployment/update/deployment-service-drivers.md index ed5a6f6da4..809ff18c93 100644 --- a/windows/deployment/update/deployment-service-drivers.md +++ b/windows/deployment/update/deployment-service-drivers.md @@ -129,7 +129,7 @@ To create a policy without any deployment settings, in the request body specify } ``` -Response returning the policy, without any additional settings specified, that has a **Policy ID** of `9011c330-1234-5678-9abc-def012345678`: + Response returning the policy, without any additional settings specified, that has a **Policy ID** of `9011c330-1234-5678-9abc-def012345678`: ```json HTTP/1.1 202 Accepted From f771e8c9326a25a734ebb0bad4bcc04fda60f90e Mon Sep 17 00:00:00 2001 From: Meghan Stewart <33289333+mestew@users.noreply.github.com> Date: Thu, 2 Feb 2023 11:58:46 -0800 Subject: [PATCH 42/92] edits --- .../update/deployment-service-drivers.md | 37 +++++++++++++++++-- 1 file changed, 33 insertions(+), 4 deletions(-) diff --git a/windows/deployment/update/deployment-service-drivers.md b/windows/deployment/update/deployment-service-drivers.md index 809ff18c93..ab1587f08d 100644 --- a/windows/deployment/update/deployment-service-drivers.md +++ b/windows/deployment/update/deployment-service-drivers.md @@ -267,7 +267,7 @@ Each driver update is associated with a unique [catalog entry](/graph/api/resour > [!IMPORTANT] > Any [deployment settings](/graph/api/resources/windowsupdates-deploymentsettings) configured for the content approval will be combined with the existing [update policy's](#create-an-update-policy) deployment settings. If the content approval and update policy specify the same deployment setting, the setting from the content approval is used. -Add a content approval to an existing policy, **Policy ID** `9011c330-1234-5678-9abc-def012345678` for the driver update with the **Catalog ID** `1d082682ff38a3a885cefd68ec6ab3782be3dc31d156c9e5c6fd3dc55cbd839d`. Schedule the start date for January, 20 2023 at 1 AM UTC: +Add a content approval to an existing policy, **Policy ID** `9011c330-1234-5678-9abc-def012345678` for the driver update with the **Catalog ID** `1d082682ff38a3a885cefd68ec6ab3782be3dc31d156c9e5c6fd3dc55cbd839d`. Schedule the start date for February 14, 2023 at 1 AM UTC: ```http POST https://graph.microsoft.com/beta/admin/windows/updates/updatePolicies/9011c330-1234-5678-9abc-def012345678/complianceChanges @@ -285,18 +285,47 @@ Content-type: application/json "deploymentSettings": { "@odata.type": "microsoft.graph.windowsUpdates.deploymentSettings", "schedule": { - "startDateTime": "2023-01-20T01:00:00Z" + "startDateTime": "2023-02-14T01:00:00Z" } } } ``` -Review the compliance changes to a policy with the most recent changes listed in the response first. The following example returns the compliance changes for a policy with the **Policy ID** `9011c330-1234-5678-9abc-def012345678` and sorts by `createdDateTime` in descending order: +The response for a content approval returns content and deployment settings along with an `id`, which is the **Compliance Change ID**. The **Compliance Change ID** is `c03911a7-9876-5432-10ab-cdef98765432` in the following truncated response: ```http -GET https://graph.microsoft.com/beta/admin/windows/updates/updatePolicies/9011c330-1234-5678-9abc-def012345678/complianceChanges?orderby=createdDateTime desc + "@odata.type": "#microsoft.graph.windowsUpdates.contentApproval", + "id": "c03911a7-9876-5432-10ab-cdef98765432", + "createdDateTime": "2023-02-02T17:54:39.173292Z", + "isRevoked": false, + "revokedDateTime": "0001-01-01T00:00:00Z", + "content": { + "@odata.type": "#microsoft.graph.windowsUpdates.catalogContent", + "catalogEntry": { + "@odata.type": "#microsoft.graph.windowsUpdates.driverUpdateCatalogEntry", + "id": "5d6dede684ba5c4a731d62d9c9c2a99db12c5e6015e9f8ad00f3e9387c7f399c" + } + }, + "deploymentSettings": { + "schedule": { + "startDateTime": "2023-02-14T01:00:00Z", +``` + +Review all of the compliance changes to a policy with the most recent changes listed in the response first. The following example returns the compliance changes for a policy with the **Policy ID** `9011c330-1234-5678-9abc-def012345678` and sorts by `createdDateTime` in descending order: + + `GET https://graph.microsoft.com/beta/admin/windows/updates/updatePolicies/9011c330-1234-5678-9abc-def012345678/complianceChanges?orderby=createdDateTime desc` + + > [!TIP] + > There should only be one **Compliance Change ID** per **Catalog ID** for a policy. If there are multiple **Compliance Change IDs** for the same **Catalog ID** then, most likely, there's multiple deployments for the same piece of content targeted to the same audience but with different deployment behaviors. To remove the duplicate, [delete the compliance change](/graph/api/resources/windowsupdates-compliancechange-delete) with the duplicate **Catalog ID**. Deleting the compliance change will mark any deployments created by the approval as `archived`. + ## Revoke content approval From 75da01b8d286a95c1ac24b6409b1495d91adfe1c Mon Sep 17 00:00:00 2001 From: Meghan Stewart <33289333+mestew@users.noreply.github.com> Date: Thu, 2 Feb 2023 12:31:26 -0800 Subject: [PATCH 43/92] edits --- .../update/deployment-service-drivers.md | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/windows/deployment/update/deployment-service-drivers.md b/windows/deployment/update/deployment-service-drivers.md index ab1587f08d..3e4fb8a761 100644 --- a/windows/deployment/update/deployment-service-drivers.md +++ b/windows/deployment/update/deployment-service-drivers.md @@ -317,21 +317,29 @@ Review all of the compliance changes to a policy with the most recent changes li > [!TIP] > There should only be one **Compliance Change ID** per **Catalog ID** for a policy. If there are multiple **Compliance Change IDs** for the same **Catalog ID** then, most likely, there's multiple deployments for the same piece of content targeted to the same audience but with different deployment behaviors. To remove the duplicate, [delete the compliance change](/graph/api/resources/windowsupdates-compliancechange-delete) with the duplicate **Catalog ID**. Deleting the compliance change will mark any deployments created by the approval as `archived`. - ## Revoke content approval Approval for content can be revoked by setting the `isRevoked` property of the [compliance change](/graph/api/resources/windowsupdates-compliance) to true. This setting can be changed while a deployment is in progress. However, revoking will only prevent the content from being offered to devices if they haven't already received it. To resume offering the content, a new [approval](#approve-driver-content-for-deployment) will need to be created. -### Request ```http PATCH https://graph.microsoft.com/beta/admin/windows/updates/updatePolicies/d7a89208-17c5-4daf-a164-ce176b00e4ef/complianceChanges/dbf29574-ffd9-49cf-87f2-f03629e596ba From 7ab32f8dfd3b8e7ccc407a676f1fb8a565fbd002 Mon Sep 17 00:00:00 2001 From: Meghan Stewart <33289333+mestew@users.noreply.github.com> Date: Thu, 2 Feb 2023 14:13:43 -0800 Subject: [PATCH 44/92] edits --- windows/deployment/update/deployment-service-drivers.md | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/windows/deployment/update/deployment-service-drivers.md b/windows/deployment/update/deployment-service-drivers.md index 3e4fb8a761..453e43b080 100644 --- a/windows/deployment/update/deployment-service-drivers.md +++ b/windows/deployment/update/deployment-service-drivers.md @@ -318,7 +318,11 @@ Review all of the compliance changes to a policy with the most recent changes li > [!TIP] > There should only be one **Compliance Change ID** per **Catalog ID** for a policy. If there are multiple **Compliance Change IDs** for the same **Catalog ID** then, most likely, there's multiple deployments for the same piece of content targeted to the same audience but with different deployment behaviors. To remove the duplicate, [delete the compliance change](/graph/api/resources/windowsupdates-compliancechange-delete) with the duplicate **Catalog ID**. Deleting the compliance change will mark any deployments created by the approval as `archived`. -### Edit a content approval +To retrieve the deployment ID, use the [expand parameter](/graph/query-parameters#expand-parameter) to review the deployment information related the content approval. The following example displays the content approval and the deployment information for **Compliance Change ID** `c03911a7-9876-5432-10ab-cdef98765432` in update **Policy ID** `9011c330-1234-5678-9abc-def012345678`: + + `GET https://graph.microsoft.com/beta/admin/windows/updates/updatePolicies/9011c330-1234-5678-9abc-def012345678/complianceChanges/c03911a7-9876-5432-10ab-cdef98765432/$/microsoft.graph.windowsUpdates.contentApproval?$expand=deployments` + +### Edit deployment settings for a content approval Since content approval is a compliance change for the policy, when you [update a content approval](/graph/api/resources/windowsupdates--contentapproval-update), you're editing the compliance change for the policy. The following example changes the `startDateTime` for the **Compliance Change ID** of `c03911a7-9876-5432-10ab-cdef98765432` in the update **Policy ID** `9011c330-1234-5678-9abc-def012345678` to February 28, 2023 at 5 AM UTC: @@ -336,13 +340,14 @@ PATCH https://graph.microsoft.com/beta/admin/windows/updates/updatePolicies/9011 } ``` + ## Revoke content approval Approval for content can be revoked by setting the `isRevoked` property of the [compliance change](/graph/api/resources/windowsupdates-compliance) to true. This setting can be changed while a deployment is in progress. However, revoking will only prevent the content from being offered to devices if they haven't already received it. To resume offering the content, a new [approval](#approve-driver-content-for-deployment) will need to be created. ```http -PATCH https://graph.microsoft.com/beta/admin/windows/updates/updatePolicies/d7a89208-17c5-4daf-a164-ce176b00e4ef/complianceChanges/dbf29574-ffd9-49cf-87f2-f03629e596ba +PATCH https://graph.microsoft.com/beta/admin/windows/updates/updatePolicies/9011c330-1234-5678-9abc-def012345678/complianceChanges/c03911a7-9876-5432-10ab-cdef98765432 Content-type: application/json { "@odata.type": "#microsoft.graph.windowsUpdates.contentApproval", From 6d0d665b10a1f947603eea33d642b429db55a47f Mon Sep 17 00:00:00 2001 From: Meghan Stewart <33289333+mestew@users.noreply.github.com> Date: Thu, 2 Feb 2023 14:28:48 -0800 Subject: [PATCH 45/92] edits --- windows/deployment/update/deployment-service-drivers.md | 4 ++-- .../includes/wufb-deployment-enroll-device-graph-explorer.md | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/windows/deployment/update/deployment-service-drivers.md b/windows/deployment/update/deployment-service-drivers.md index 453e43b080..1425a0ab81 100644 --- a/windows/deployment/update/deployment-service-drivers.md +++ b/windows/deployment/update/deployment-service-drivers.md @@ -65,7 +65,7 @@ When you enroll devices into driver management, the deployment service becomes t {} ``` - The POST returns a [201 Created](/troubleshoot/developer/webapps/iis/www-administration-management/http-status-code#2xx---success) response with the following body, where `id` is the **Audience ID**: + The POST returns an HTTP status code of `201 Created` as a response with the following body, where `id` is the **Audience ID**: ```json { @@ -155,7 +155,7 @@ To create a policy without any deployment settings, in the request body specify To create a policy with additional settings, in the request body: - Specify the **Audience ID** as `id` - Define any [deployment settings](/graph/api/resources/windowsupdates-deploymentsettings). - - You may need to add the `content-length` header to the request. The value should be the length of the request body in bytes. + - Add the `content-length` header to the request if a status code of 411 occurs. The value should be the length of the request body in bytes. For information on error codes, see [Microsoft Graph error responses and resource types](/graph/errors). In the following driver update policy example, any deployments created by a content approval will start 7 days after approval and will gradually roll out to 1000 devices per day for **Audience ID** `d39ad1ce-0123-4567-89ab-cdef01234567`: diff --git a/windows/deployment/update/includes/wufb-deployment-enroll-device-graph-explorer.md b/windows/deployment/update/includes/wufb-deployment-enroll-device-graph-explorer.md index b95b1cc330..34ab1e948b 100644 --- a/windows/deployment/update/includes/wufb-deployment-enroll-device-graph-explorer.md +++ b/windows/deployment/update/includes/wufb-deployment-enroll-device-graph-explorer.md @@ -40,6 +40,6 @@ You enroll devices based on the types of updates you want them to recieve.Curren } ``` - 1. Select the **Run query** button. The results will appear in the **Response** window. In this case, the status code of [202 Accepted](/troubleshoot/developer/webapps/iis/www-administration-management/http-status-code#2xx---success). + 1. Select the **Run query** button. The results will appear in the **Response** window. In this case, the HTTP status code of `202 Accepted`. :::image type="content" source="../media/7512398-deployment-enroll-asset-graph.png" alt-text="Screenshot of successfully enrolling assets through Graph Explorer." lightbox="../media/7512398-deployment-enroll-asset-graph.png" ::: From c49cb4270779e9258a04b5bf033e4d2d8946fd0e Mon Sep 17 00:00:00 2001 From: Meghan Stewart <33289333+mestew@users.noreply.github.com> Date: Thu, 2 Feb 2023 14:59:11 -0800 Subject: [PATCH 46/92] edits --- windows/deployment/update/deployment-service-drivers.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/windows/deployment/update/deployment-service-drivers.md b/windows/deployment/update/deployment-service-drivers.md index 1425a0ab81..b007a91d3b 100644 --- a/windows/deployment/update/deployment-service-drivers.md +++ b/windows/deployment/update/deployment-service-drivers.md @@ -15,7 +15,7 @@ ms.date: 02/14/2023 ***(Applies to: Windows 11 & Windows 10)*** -In this article, you will: +The Windows Update for Business deployment service is used to approve and schedule software updates. The deployment service exposes its capabilities through the [Microsoft Graph API](/graph/use-the-api). You can call the API directly, through a [Graph SDK](/graph/sdks/sdks-overview), or integrate them with a management tool such as [Microsoft Intune](/mem/intune). This article uses Graph Explorer to walk through the entire process of deploying a driver update to clients. In this article, you will: > [!div class="checklist"] > > - [Open Graph Explorer](#open-graph-explorer) From f8255aedd98e4a71e8008c1e83ff3b0ef84d504c Mon Sep 17 00:00:00 2001 From: Meghan Stewart <33289333+mestew@users.noreply.github.com> Date: Thu, 2 Feb 2023 15:01:35 -0800 Subject: [PATCH 47/92] edits --- windows/deployment/update/deployment-service-drivers.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/windows/deployment/update/deployment-service-drivers.md b/windows/deployment/update/deployment-service-drivers.md index b007a91d3b..27679342c0 100644 --- a/windows/deployment/update/deployment-service-drivers.md +++ b/windows/deployment/update/deployment-service-drivers.md @@ -19,7 +19,7 @@ The Windows Update for Business deployment service is used to approve and schedu > [!div class="checklist"] > > - [Open Graph Explorer](#open-graph-explorer) -> - [Run queries to identify test devices](#run-queries-to-identify-devices) +> - [Run queries to identify devices](#run-queries-to-identify-devices) > - [Enroll devices](#enroll-devices) > - [Create a deployment audience and add audience members](#create-a-deployment-audience-and-add-audience-members) > - [Create an update policy](#create-an-update-policy) From 337aa497290bc7682cddef4e4471263b17b48911 Mon Sep 17 00:00:00 2001 From: Meghan Stewart <33289333+mestew@users.noreply.github.com> Date: Fri, 3 Feb 2023 14:47:53 -0800 Subject: [PATCH 48/92] edit --- .../update/deployment-service-drivers.md | 20 ++++++++++++++----- .../deployment-service-feature-updates.md | 2 +- ...deployment-enroll-device-graph-explorer.md | 2 +- .../wufb-deployment-graph-unenroll.md | 7 ++++--- 4 files changed, 21 insertions(+), 10 deletions(-) diff --git a/windows/deployment/update/deployment-service-drivers.md b/windows/deployment/update/deployment-service-drivers.md index 27679342c0..6b51a2532d 100644 --- a/windows/deployment/update/deployment-service-drivers.md +++ b/windows/deployment/update/deployment-service-drivers.md @@ -244,7 +244,7 @@ GET https://graph.microsoft.com/beta/admin/windows/updates/deploymentAudiences/d The following truncated response displays: - An **Azure AD ID** of `01234567-89ab-cdef-0123-456789abcdef` - - The **Catalog ID** of `1d082682ff38a3a885cefd68ec6ab3782be3dc31d156c9e5c6fd3dc55cbd839d` + - The **Catalog ID** of `5d6dede684ba5c4a731d62d9c9c2a99db12c5e6015e9f8ad00f3e9387c7f399c` ```json "matchedDevices": [ @@ -257,7 +257,17 @@ The following truncated response displays: ], "catalogEntry": { "@odata.type": "#microsoft.graph.windowsUpdates.driverUpdateCatalogEntry", - "id": "1d082682ff38a3a885cefd68ec6ab3782be3dc31d156c9e5c6fd3dc55cbd839d", + "id": "5d6dede684ba5c4a731d62d9c9c2a99db12c5e6015e9f8ad00f3e9387c7f399c", + "displayName": "Microsoft - Test - 1.0.0.1", + "deployableUntilDateTime": null, + "releaseDateTime": "0001-01-21T04:18:32Z", + "description": "Microsoft test driver update released in January 2021", + "driverClass": "OtherHardware", + "provider": "Microsoft", + "setupInformationFile": null, + "manufacturer": "Microsoft", + "version": "1.0.0.1", + "versionDateTime": "2021-01-11T02:43:14Z" ``` ## Approve driver content for deployment @@ -267,7 +277,7 @@ Each driver update is associated with a unique [catalog entry](/graph/api/resour > [!IMPORTANT] > Any [deployment settings](/graph/api/resources/windowsupdates-deploymentsettings) configured for the content approval will be combined with the existing [update policy's](#create-an-update-policy) deployment settings. If the content approval and update policy specify the same deployment setting, the setting from the content approval is used. -Add a content approval to an existing policy, **Policy ID** `9011c330-1234-5678-9abc-def012345678` for the driver update with the **Catalog ID** `1d082682ff38a3a885cefd68ec6ab3782be3dc31d156c9e5c6fd3dc55cbd839d`. Schedule the start date for February 14, 2023 at 1 AM UTC: +Add a content approval to an existing policy, **Policy ID** `9011c330-1234-5678-9abc-def012345678` for the driver update with the **Catalog ID** `5d6dede684ba5c4a731d62d9c9c2a99db12c5e6015e9f8ad00f3e9387c7f399c`. Schedule the start date for February 14, 2023 at 1 AM UTC: ```http POST https://graph.microsoft.com/beta/admin/windows/updates/updatePolicies/9011c330-1234-5678-9abc-def012345678/complianceChanges @@ -279,7 +289,7 @@ Content-type: application/json "@odata.type": "#microsoft.graph.windowsUpdates.catalogContent", "catalogEntry": { "@odata.type": "#microsoft.graph.windowsUpdates.driverUpdateCatalogEntry", - "id": "1d082682ff38a3a885cefd68ec6ab3782be3dc31d156c9e5c6fd3dc55cbd839d" + "id": "5d6dede684ba5c4a731d62d9c9c2a99db12c5e6015e9f8ad00f3e9387c7f399c" } }, "deploymentSettings": { @@ -355,7 +365,7 @@ Content-type: application/json } ``` -## Remove device enrollment +## Unenroll device [!INCLUDE [Graph Explorer enroll devices](./includes/wufb-deployment-graph-unenroll.md)] diff --git a/windows/deployment/update/deployment-service-feature-updates.md b/windows/deployment/update/deployment-service-feature-updates.md index cdc2be2f7f..179632fc1e 100644 --- a/windows/deployment/update/deployment-service-feature-updates.md +++ b/windows/deployment/update/deployment-service-feature-updates.md @@ -51,7 +51,7 @@ As long as a device remains enrolled in feature update management, the device do [!INCLUDE [Graph Explorer enroll devices](./includes/wufb-deployment-enroll-device-graph-explorer.md)] -## Remove device enrollment +## Unenroll devices [!INCLUDE [Graph Explorer enroll devices](./includes/wufb-deployment-graph-unenroll.md)] \ No newline at end of file diff --git a/windows/deployment/update/includes/wufb-deployment-enroll-device-graph-explorer.md b/windows/deployment/update/includes/wufb-deployment-enroll-device-graph-explorer.md index 34ab1e948b..0ae067e62f 100644 --- a/windows/deployment/update/includes/wufb-deployment-enroll-device-graph-explorer.md +++ b/windows/deployment/update/includes/wufb-deployment-enroll-device-graph-explorer.md @@ -10,7 +10,7 @@ ms.localizationpriority: medium --- -You enroll devices based on the types of updates you want them to recieve.Currently, you can enroll devices to receive feature updates (`feature`) or drivers (`driver`). You can enroll devices to receive updates from multiple update classifications. +You enroll devices based on the types of updates you want them to receive. Currently, you can enroll devices to receive feature updates (`feature`) or drivers (`driver`). You can enroll devices to receive updates from multiple update classifications. 1. To enroll devices, POST to [updatableAssets](/graph/api/resources/windowsupdates-updatableasset) using [enrollAssets](/graph/api/windowsupdates-updatableasset-enrollassets). The following example enrolls three devices to receive driver updates: 1. In Graph Explorer, select **POST** from the drop-down list for the HTTP verb. diff --git a/windows/deployment/update/includes/wufb-deployment-graph-unenroll.md b/windows/deployment/update/includes/wufb-deployment-graph-unenroll.md index 38f85ce10f..dcb8bae3c6 100644 --- a/windows/deployment/update/includes/wufb-deployment-graph-unenroll.md +++ b/windows/deployment/update/includes/wufb-deployment-graph-unenroll.md @@ -10,12 +10,13 @@ ms.localizationpriority: medium --- -When a device no longer needs to be managed by the deployment service, remove the enrollment it. Just like [enrolling a device](#enroll-devices), specify either `driver` or `feature` as the value for the `updateCategory`. The device will no longer receive updates from the deployment service for the specfied update category, even if it's still assigned to an active deployment. Depending on the device's configuration, it may start to receive updates from Windows Update. For instance, if a device is still enrolled for feature updates, but the enrollment for drivers is removed: -- Existing driver deployments from the service won't be installed +When a device no longer needs to be managed by the deployment service, unenroll it. Just like [enrolling a device](#enroll-devices), specify either `driver` or `feature` as the value for the `updateCategory`. The device will no longer receive updates from the deployment service for the specified update category. Depending on the device's configuration, it may start to receive updates from Windows Update. For instance, if a device is still enrolled for feature updates, but it's unenrolled from drivers: + +- Existing driver deployments from the service won't be offered to the device - The device will continue to receive feature updates from the deployment service - Drivers may start being installed from Windows Update depending on the device's configuration -To remove device enrollment, POST to [updatableAssets](/graph/api/resources/windowsupdates-updatableasset) using [unenrollAssets](/graph/api/windowsupdates-updatableasset-unenrollassets). In the request body, specify: +To unenroll a device, POST to [updatableAssets](/graph/api/resources/windowsupdates-updatableasset) using [unenrollAssets](/graph/api/windowsupdates-updatableasset-unenrollassets). In the request body, specify: - **Azure AD Device ID** as `id` for the device - Either `feature` or `driver` for the updateCategory From 5fbe99fc44ab72da102fbd3311783a2f08f410a7 Mon Sep 17 00:00:00 2001 From: Meghan Stewart <33289333+mestew@users.noreply.github.com> Date: Fri, 3 Feb 2023 16:05:49 -0800 Subject: [PATCH 49/92] edit --- .../update/deployment-service-drivers.md | 32 ++++++++++++------- ...loyment-find-device-name-graph-explorer.md | 17 +++++++--- .../wufb-deployment-graph-unenroll.md | 1 - 3 files changed, 32 insertions(+), 18 deletions(-) diff --git a/windows/deployment/update/deployment-service-drivers.md b/windows/deployment/update/deployment-service-drivers.md index 6b51a2532d..ad0ea346c9 100644 --- a/windows/deployment/update/deployment-service-drivers.md +++ b/windows/deployment/update/deployment-service-drivers.md @@ -103,7 +103,9 @@ When you enroll devices into driver management, the deployment service becomes t 1. To verify the devices were added to the audience, run the following query using the **Audience ID**: - `GET https://graph.microsoft.com/beta/admin/windows/updates/deploymentAudiences/d39ad1ce-0123-4567-89ab-cdef01234567/members` + ```http + GET https://graph.microsoft.com/beta/admin/windows/updates/deploymentAudiences/d39ad1ce-0123-4567-89ab-cdef01234567/members + ``` Once a device has been enrolled and added to a deployment audience, the Windows Update for Business deployment service will start collecting scan results from Windows Update to build a catalog of applicable drivers to be browsed, approved, and scheduled for deployment. @@ -129,12 +131,12 @@ To create a policy without any deployment settings, in the request body specify } ``` - Response returning the policy, without any additional settings specified, that has a **Policy ID** of `9011c330-1234-5678-9abc-def012345678`: +Response returning the policy, without any additional settings specified, that has a **Policy ID** of `9011c330-1234-5678-9abc-def012345678`: - ```json - HTTP/1.1 202 Accepted - Content-type: application/json - { + ```json + HTTP/1.1 202 Accepted + Content-type: application/json + { "@odata.context": "https://graph.microsoft.com/beta/$metadata#admin/windows/updates/updatePolicies/$entity", "id": "9011c330-1234-5678-9abc-def012345678", "createdDateTime": "2023-01-25T05:32:21.9721459Z", @@ -147,8 +149,8 @@ To create a policy without any deployment settings, in the request body specify "userExperience": null, "expedite": null } - } - ``` + } + ``` ### Specify settings during policy creation @@ -200,7 +202,9 @@ To create a policy with additional settings, in the request body: To review the policy settings, run the following query using the **Policy ID**, for example `9011c330-1234-5678-9abc-def012345678`: - `GET https://graph.microsoft.com/beta/admin/windows/updates/updatePolicies/9011c330-1234-5678-9abc-def012345678` + ```http + GET https://graph.microsoft.com/beta/admin/windows/updates/updatePolicies/9011c330-1234-5678-9abc-def012345678 + ``` To edit the policy settings, **PATCH** the policy using the **Policy ID**. Run the following **PATCH** to automatically approve driver content that's recommended by `Microsoft`for deployment for **Policy ID** `9011c330-1234-5678-9abc-def012345678`: @@ -244,7 +248,7 @@ GET https://graph.microsoft.com/beta/admin/windows/updates/deploymentAudiences/d The following truncated response displays: - An **Azure AD ID** of `01234567-89ab-cdef-0123-456789abcdef` - - The **Catalog ID** of `5d6dede684ba5c4a731d62d9c9c2a99db12c5e6015e9f8ad00f3e9387c7f399c` + - The **Catalog ID** of `5d6dede684ba5c4a731d62d9c9c2a99db12c5e6015e9f8ad00f3e9387c7f399c` ```json "matchedDevices": [ @@ -323,14 +327,18 @@ The response for a content approval returns content and deployment settings alon Review all of the compliance changes to a policy with the most recent changes listed in the response first. The following example returns the compliance changes for a policy with the **Policy ID** `9011c330-1234-5678-9abc-def012345678` and sorts by `createdDateTime` in descending order: - `GET https://graph.microsoft.com/beta/admin/windows/updates/updatePolicies/9011c330-1234-5678-9abc-def012345678/complianceChanges?orderby=createdDateTime desc` + ```http + GET https://graph.microsoft.com/beta/admin/windows/updates/updatePolicies/9011c330-1234-5678-9abc-def012345678/complianceChanges?orderby=createdDateTime desc + ``` > [!TIP] > There should only be one **Compliance Change ID** per **Catalog ID** for a policy. If there are multiple **Compliance Change IDs** for the same **Catalog ID** then, most likely, there's multiple deployments for the same piece of content targeted to the same audience but with different deployment behaviors. To remove the duplicate, [delete the compliance change](/graph/api/resources/windowsupdates-compliancechange-delete) with the duplicate **Catalog ID**. Deleting the compliance change will mark any deployments created by the approval as `archived`. To retrieve the deployment ID, use the [expand parameter](/graph/query-parameters#expand-parameter) to review the deployment information related the content approval. The following example displays the content approval and the deployment information for **Compliance Change ID** `c03911a7-9876-5432-10ab-cdef98765432` in update **Policy ID** `9011c330-1234-5678-9abc-def012345678`: - `GET https://graph.microsoft.com/beta/admin/windows/updates/updatePolicies/9011c330-1234-5678-9abc-def012345678/complianceChanges/c03911a7-9876-5432-10ab-cdef98765432/$/microsoft.graph.windowsUpdates.contentApproval?$expand=deployments` + ```http + GET https://graph.microsoft.com/beta/admin/windows/updates/updatePolicies/9011c330-1234-5678-9abc-def012345678/complianceChanges/c03911a7-9876-5432-10ab-cdef98765432/$/microsoft.graph.windowsUpdates.contentApproval?$expand=deployments + ``` ### Edit deployment settings for a content approval diff --git a/windows/deployment/update/includes/wufb-deployment-find-device-name-graph-explorer.md b/windows/deployment/update/includes/wufb-deployment-find-device-name-graph-explorer.md index 82c778446e..26f1f077a7 100644 --- a/windows/deployment/update/includes/wufb-deployment-find-device-name-graph-explorer.md +++ b/windows/deployment/update/includes/wufb-deployment-find-device-name-graph-explorer.md @@ -14,11 +14,15 @@ Use the [device](/graph/api/resources/device) resource type to find clients to e - Displays the **AzureAD Device ID** and **Name** of all devices: - `GET https://graph.microsoft.com/v1.0/devices?$select=deviceid,displayName` + ```http + GET https://graph.microsoft.com/v1.0/devices?$select=deviceid,displayName + ``` - Displays the **AzureAD Device ID** and **Name** for devices that have a name starting with `Test`: - `GET https://graph.microsoft.com/v1.0/devices?$filter=startswith (displayName,'Test')&$select=deviceid,displayName` + ```http + GET https://graph.microsoft.com/v1.0/devices?$filter=startswith (displayName,'Test')&$select=deviceid,displayName + ``` ### Add a request header for advanced queries @@ -33,12 +37,15 @@ For the next requests, set the **ConsistencyLevel** header to `eventual`. For mo - Display the **Name** and **Operating system version** for the device that has `01234567-89ab-cdef-0123-456789abcdef` as the **AzureAD Device ID**: - `GET https://graph.microsoft.com/v1.0/devices?$search="deviceid:01234567-89ab-cdef-0123-456789abcdef"?$select=displayName,operatingSystemVersion` + ```http + GET https://graph.microsoft.com/v1.0/devices?$search="deviceid:01234567-89ab-cdef-0123-456789abcdef"?$select=displayName,operatingSystemVersion` + ``` - To find devices that likely aren't virtual machines, filter for devices that don't have virtual machine listed as the model but do have a manufacturer listed. Display the **AzureAD Device ID**, **Name**, and **Operating system version** for each device: - `GET https://graph.microsoft.com/v1.0/devices?$filter=model ne 'virtual machine' and NOT(manufacturer eq null)&$count=true&$select=deviceid,displayName,operatingSystemVersion` - + ```http + GET https://graph.microsoft.com/v1.0/devices?$filter=model ne 'virtual machine' and NOT(manufacturer eq null)&$count=true&$select=deviceid,displayName,operatingSystemVersion` + ``` > [!Tip] > Requests using the [device](/graph/api/resources/device) resource type typically have both an `id` and a `deviceid`: diff --git a/windows/deployment/update/includes/wufb-deployment-graph-unenroll.md b/windows/deployment/update/includes/wufb-deployment-graph-unenroll.md index dcb8bae3c6..f3a3b6f229 100644 --- a/windows/deployment/update/includes/wufb-deployment-graph-unenroll.md +++ b/windows/deployment/update/includes/wufb-deployment-graph-unenroll.md @@ -40,4 +40,3 @@ Content-Type: application/json ] } ``` - From ef18e0d4a10f01906e0b1367a1a65e3d537b4c59 Mon Sep 17 00:00:00 2001 From: Meghan Stewart <33289333+mestew@users.noreply.github.com> Date: Mon, 6 Feb 2023 08:39:25 -0800 Subject: [PATCH 50/92] use include for audience --- .../update/deployment-service-drivers.md | 52 +--------------- .../deployment-service-feature-updates.md | 9 ++- ...wufb-deployment-audience-graph-explorer.md | 62 +++++++++++++++++++ 3 files changed, 72 insertions(+), 51 deletions(-) create mode 100644 windows/deployment/update/includes/wufb-deployment-audience-graph-explorer.md diff --git a/windows/deployment/update/deployment-service-drivers.md b/windows/deployment/update/deployment-service-drivers.md index ad0ea346c9..3dd0468978 100644 --- a/windows/deployment/update/deployment-service-drivers.md +++ b/windows/deployment/update/deployment-service-drivers.md @@ -56,56 +56,8 @@ When you enroll devices into driver management, the deployment service becomes t ## Create a deployment audience and add audience members -1. Create an audience for the driver deployment. The deployment audience is a collection of member devices that will receive the driver deployment. **POST** to the [deployment audience](/graph/api/resources/windowsupdates-deploymentaudience) resource with a request body of `{}` to create a new audience. - - ```http - POST https://graph.microsoft.com/beta/admin/windows/updates/deploymentAudiences - content-type: application/json - - {} - ``` - - The POST returns an HTTP status code of `201 Created` as a response with the following body, where `id` is the **Audience ID**: - - ```json - { - "@odata.context": "https://graph.microsoft.com/beta/$metadata#admin/windows/updates/deploymentAudiences/$entity", - "id": "d39ad1ce-0123-4567-89ab-cdef01234567", - "reportingDeviceCount": 0, - "applicableContent": [] - } - ``` - - -1. Add devices, using their **Azure AD ID**, to the deployment audience so they become audience members. Specify the deployment **Audience ID** in the URL field and the devices to add in the request body. The `id` property specifies the **Azure AD ID** of the device. - - ```http - POST https://graph.microsoft.com/beta/admin/windows/updates/deploymentAudiences/d39ad1ce-0123-4567-89ab-cdef01234567/updateAudience - Content-type: application/json - - { - "addMembers": [ - { - "@odata.type": "#microsoft.graph.windowsUpdates.azureADDevice", - "id": "01234567-89ab-cdef-0123-456789abcdef" - }, - { - "@odata.type": "#microsoft.graph.windowsUpdates.azureADDevice", - "id": "01234567-89ab-cdef-0123-456789abcde0" - }, - { - "@odata.type": "#microsoft.graph.windowsUpdates.azureADDevice", - "id": "01234567-89ab-cdef-0123-456789abcde1" - } - ] - } - ``` - -1. To verify the devices were added to the audience, run the following query using the **Audience ID**: - - ```http - GET https://graph.microsoft.com/beta/admin/windows/updates/deploymentAudiences/d39ad1ce-0123-4567-89ab-cdef01234567/members - ``` + +[!INCLUDE [Graph Explorer enroll devices](./includes/wufb-deployment-audience-graph-explorer.md)] Once a device has been enrolled and added to a deployment audience, the Windows Update for Business deployment service will start collecting scan results from Windows Update to build a catalog of applicable drivers to be browsed, approved, and scheduled for deployment. diff --git a/windows/deployment/update/deployment-service-feature-updates.md b/windows/deployment/update/deployment-service-feature-updates.md index 179632fc1e..31f1be5125 100644 --- a/windows/deployment/update/deployment-service-feature-updates.md +++ b/windows/deployment/update/deployment-service-feature-updates.md @@ -18,7 +18,7 @@ ms.date: 02/14/2023 In this article, you will: > [!div class="checklist"] > * [Open Graph Explorer](#open-graph-explorer) -> * [Run queries to identify test devices](#run-queries-to-identify-devices) +> * [Run queries to identify devices](#run-queries-to-identify-devices) > * [Enroll devices](#enroll-devices) > * Do Z > * Do Z @@ -50,6 +50,13 @@ As long as a device remains enrolled in feature update management, the device do [!INCLUDE [Graph Explorer enroll devices](./includes/wufb-deployment-enroll-device-graph-explorer.md)] +## Create a deployment audience and add audience members + + +[!INCLUDE [Graph Explorer enroll devices](./includes/wufb-deployment-audience-graph-explorer.md)] + + + ## Unenroll devices diff --git a/windows/deployment/update/includes/wufb-deployment-audience-graph-explorer.md b/windows/deployment/update/includes/wufb-deployment-audience-graph-explorer.md new file mode 100644 index 0000000000..def66f950b --- /dev/null +++ b/windows/deployment/update/includes/wufb-deployment-audience-graph-explorer.md @@ -0,0 +1,62 @@ +--- +author: mestew +ms.author: mstewart +manager: aaroncz +ms.technology: itpro-updates +ms.prod: windows-client +ms.topic: include +ms.date: 02/14/2023 +ms.localizationpriority: medium +--- + + +1. Create an audience for the driver deployment. The deployment audience is a collection of member devices that will receive the driver deployment. **POST** to the [deployment audience](/graph/api/resources/windowsupdates-deploymentaudience) resource with a request body of `{}` to create a new audience. + + ```http + POST https://graph.microsoft.com/beta/admin/windows/updates/deploymentAudiences + content-type: application/json + + {} + ``` + + The POST returns an HTTP status code of `201 Created` as a response with the following body, where `id` is the **Audience ID**: + + ```json + { + "@odata.context": "https://graph.microsoft.com/beta/$metadata#admin/windows/updates/deploymentAudiences/$entity", + "id": "d39ad1ce-0123-4567-89ab-cdef01234567", + "reportingDeviceCount": 0, + "applicableContent": [] + } + ``` + + +1. Add devices, using their **Azure AD ID**, to the deployment audience so they become audience members. Specify the deployment **Audience ID** in the URL field and the devices to add in the request body. The `id` property specifies the **Azure AD ID** of the device. + + ```http + POST https://graph.microsoft.com/beta/admin/windows/updates/deploymentAudiences/d39ad1ce-0123-4567-89ab-cdef01234567/updateAudience + Content-type: application/json + + { + "addMembers": [ + { + "@odata.type": "#microsoft.graph.windowsUpdates.azureADDevice", + "id": "01234567-89ab-cdef-0123-456789abcdef" + }, + { + "@odata.type": "#microsoft.graph.windowsUpdates.azureADDevice", + "id": "01234567-89ab-cdef-0123-456789abcde0" + }, + { + "@odata.type": "#microsoft.graph.windowsUpdates.azureADDevice", + "id": "01234567-89ab-cdef-0123-456789abcde1" + } + ] + } + ``` + +1. To verify the devices were added to the audience, run the following query using the **Audience ID**: + + ```http + GET https://graph.microsoft.com/beta/admin/windows/updates/deploymentAudiences/d39ad1ce-0123-4567-89ab-cdef01234567/members + ``` From 772f602fd57c371439bcf3e5c53350da9b694aa1 Mon Sep 17 00:00:00 2001 From: Meghan Stewart <33289333+mestew@users.noreply.github.com> Date: Mon, 6 Feb 2023 08:48:45 -0800 Subject: [PATCH 51/92] formatting --- .../update/deployment-service-drivers.md | 40 +++++++++---------- .../deployment-service-feature-updates.md | 7 +++- 2 files changed, 25 insertions(+), 22 deletions(-) diff --git a/windows/deployment/update/deployment-service-drivers.md b/windows/deployment/update/deployment-service-drivers.md index 3dd0468978..c546804851 100644 --- a/windows/deployment/update/deployment-service-drivers.md +++ b/windows/deployment/update/deployment-service-drivers.md @@ -26,7 +26,7 @@ The Windows Update for Business deployment service is used to approve and schedu > - [Review applicable driver content](#review-applicable-driver-content) > - [Approve driver content for deployment](#approve-driver-content-for-deployment) > - [Revoke content approval](#revoke-content-approval) -> - [Remove device enrollment](#remove-device-enrollment) +> - [Unenroll devices](#unenroll-devices) ## Prerequisites @@ -85,24 +85,24 @@ To create a policy without any deployment settings, in the request body specify Response returning the policy, without any additional settings specified, that has a **Policy ID** of `9011c330-1234-5678-9abc-def012345678`: - ```json - HTTP/1.1 202 Accepted - Content-type: application/json - { - "@odata.context": "https://graph.microsoft.com/beta/$metadata#admin/windows/updates/updatePolicies/$entity", - "id": "9011c330-1234-5678-9abc-def012345678", - "createdDateTime": "2023-01-25T05:32:21.9721459Z", - "autoEnrollmentUpdateCategories": [], - "complianceChangeRules": [], - "deploymentSettings": { - "schedule": null, - "monitoring": null, - "contentApplicability": null, - "userExperience": null, - "expedite": null - } - } - ``` +```json +HTTP/1.1 202 Accepted +Content-type: application/json +{ + "@odata.context": "https://graph.microsoft.com/beta/$metadata#admin/windows/updates/updatePolicies/$entity", + "id": "9011c330-1234-5678-9abc-def012345678", + "createdDateTime": "2023-01-25T05:32:21.9721459Z", + "autoEnrollmentUpdateCategories": [], + "complianceChangeRules": [], + "deploymentSettings": { + "schedule": null, + "monitoring": null, + "contentApplicability": null, + "userExperience": null, + "expedite": null + } +} +``` ### Specify settings during policy creation @@ -325,7 +325,7 @@ Content-type: application/json } ``` -## Unenroll device +## Unenroll devices [!INCLUDE [Graph Explorer enroll devices](./includes/wufb-deployment-graph-unenroll.md)] diff --git a/windows/deployment/update/deployment-service-feature-updates.md b/windows/deployment/update/deployment-service-feature-updates.md index 31f1be5125..d344c3e572 100644 --- a/windows/deployment/update/deployment-service-feature-updates.md +++ b/windows/deployment/update/deployment-service-feature-updates.md @@ -15,6 +15,8 @@ ms.date: 02/14/2023 ***(Applies to: Windows 11 & Windows 10)*** +The Windows Update for Business deployment service is used to approve and schedule software updates. The deployment service exposes its capabilities through the [Microsoft Graph API](/graph/use-the-api). You can call the API directly, through a [Graph SDK](/graph/sdks/sdks-overview), or integrate them with a management tool such as [Microsoft Intune](/mem/intune). This article uses Graph Explorer to walk through the entire process of deploying a feature update to clients. In this article, you will: + In this article, you will: > [!div class="checklist"] > * [Open Graph Explorer](#open-graph-explorer) @@ -22,7 +24,8 @@ In this article, you will: > * [Enroll devices](#enroll-devices) > * Do Z > * Do Z -> * [Remove device enrollment](#remove-device-enrollment) +> - [Unenroll devices](#unenroll-devices) + ## Prerequisites @@ -61,4 +64,4 @@ As long as a device remains enrolled in feature update management, the device do ## Unenroll devices -[!INCLUDE [Graph Explorer enroll devices](./includes/wufb-deployment-graph-unenroll.md)] \ No newline at end of file +[!INCLUDE [Graph Explorer enroll devices](./includes/wufb-deployment-graph-unenroll.md)] From dcdfa2310bd4a1ae3ced5349121a66f9ae0d2b42 Mon Sep 17 00:00:00 2001 From: Meghan Stewart <33289333+mestew@users.noreply.github.com> Date: Mon, 6 Feb 2023 11:24:16 -0800 Subject: [PATCH 52/92] additions --- .../deployment-service-feature-updates.md | 32 +++++++++++++++++++ ...wufb-deployment-audience-graph-explorer.md | 2 +- 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/windows/deployment/update/deployment-service-feature-updates.md b/windows/deployment/update/deployment-service-feature-updates.md index d344c3e572..ebd015d5cc 100644 --- a/windows/deployment/update/deployment-service-feature-updates.md +++ b/windows/deployment/update/deployment-service-feature-updates.md @@ -55,11 +55,43 @@ As long as a device remains enrolled in feature update management, the device do ## Create a deployment audience and add audience members +> [!TIP] +> Windows Update for Business reports has a [workbook](wufb-reports-workbook.md#feature-updates-tab) that displays the current operating system version for devices. In the workbook, go to the **Feature updates** tab and in the **In Service feature update** tile, select the **View details** link to open the details flyout. The OS version and Azure AD ID of devices can easily be exported into a .csv file or opened in [Azure Monitor Logs](/azure/azure-monitor/logs/log-query-overview) to help when creating a deployment audience. + [!INCLUDE [Graph Explorer enroll devices](./includes/wufb-deployment-audience-graph-explorer.md)] +## List catalog entries for feature updates +```http +GET https://graph.microsoft.com/beta/admin/windows/updates/catalog/entries?$filter=isof('microsoft.graph.windowsUpdates.featureUpdateCatalogEntry') +``` +Truncated response: + +```json +{ + "@odata.context": "https://graph.microsoft.com/beta/$metadata#admin/windows/updates/catalog/entries", + "value": [ + { + "@odata.type": "#microsoft.graph.windowsUpdates.featureUpdateCatalogEntry", + "id": "f341705b-0b15-4ce3-aaf2-6a1681d78606", + "displayName": "Windows 10, version 22H2", + "deployableUntilDateTime": "2024-10-08T00:00:00Z", + "releaseDateTime": "2022-10-18T00:00:00Z", + "version": "Windows 10, version 22H2" + }, + { + "@odata.type": "#microsoft.graph.windowsUpdates.featureUpdateCatalogEntry", + "id": "d9049ddb-0ca8-4bc1-bd3c-41a456ef300f", + "displayName": "Windows 11, version 22H2", + "deployableUntilDateTime": "2025-10-14T00:00:00Z", + "releaseDateTime": "2022-09-20T00:00:00Z", + "version": "Windows 11, version 22H2" + } + ] +} +``` ## Unenroll devices diff --git a/windows/deployment/update/includes/wufb-deployment-audience-graph-explorer.md b/windows/deployment/update/includes/wufb-deployment-audience-graph-explorer.md index def66f950b..7122d2da37 100644 --- a/windows/deployment/update/includes/wufb-deployment-audience-graph-explorer.md +++ b/windows/deployment/update/includes/wufb-deployment-audience-graph-explorer.md @@ -55,7 +55,7 @@ ms.localizationpriority: medium } ``` -1. To verify the devices were added to the audience, run the following query using the **Audience ID**: +1. To verify the devices were added to the audience, run the following query using the **Audience ID** of `d39ad1ce-0123-4567-89ab-cdef01234567`: ```http GET https://graph.microsoft.com/beta/admin/windows/updates/deploymentAudiences/d39ad1ce-0123-4567-89ab-cdef01234567/members From 0f33b308917dc6620675ec467a24221f35a13bd0 Mon Sep 17 00:00:00 2001 From: Meghan Stewart <33289333+mestew@users.noreply.github.com> Date: Mon, 6 Feb 2023 11:24:23 -0800 Subject: [PATCH 53/92] additions --- .../deployment/update/deployment-service-feature-updates.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/windows/deployment/update/deployment-service-feature-updates.md b/windows/deployment/update/deployment-service-feature-updates.md index ebd015d5cc..fa85a7fb81 100644 --- a/windows/deployment/update/deployment-service-feature-updates.md +++ b/windows/deployment/update/deployment-service-feature-updates.md @@ -22,6 +22,8 @@ In this article, you will: > * [Open Graph Explorer](#open-graph-explorer) > * [Run queries to identify devices](#run-queries-to-identify-devices) > * [Enroll devices](#enroll-devices) +> * [Create a deployment audience and add audience members](#create-a-deployment-audience-and-add-audience-members) +> * [List catalog entries for feature updates](#list-catalog-entries-for-feature-updates) > * Do Z > * Do Z > - [Unenroll devices](#unenroll-devices) @@ -63,6 +65,7 @@ As long as a device remains enrolled in feature update management, the device do ## List catalog entries for feature updates + ```http GET https://graph.microsoft.com/beta/admin/windows/updates/catalog/entries?$filter=isof('microsoft.graph.windowsUpdates.featureUpdateCatalogEntry') ``` From 366d7ec9e82a7855e3114ff4277e9c0da7d5009f Mon Sep 17 00:00:00 2001 From: Meghan Stewart <33289333+mestew@users.noreply.github.com> Date: Mon, 6 Feb 2023 12:01:05 -0800 Subject: [PATCH 54/92] additions --- .../update/deployment-service-feature-updates.md | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/windows/deployment/update/deployment-service-feature-updates.md b/windows/deployment/update/deployment-service-feature-updates.md index fa85a7fb81..9cde2707d2 100644 --- a/windows/deployment/update/deployment-service-feature-updates.md +++ b/windows/deployment/update/deployment-service-feature-updates.md @@ -19,7 +19,7 @@ The Windows Update for Business deployment service is used to approve and schedu In this article, you will: > [!div class="checklist"] -> * [Open Graph Explorer](#open-graph-explorer) +> * [Open Graph Explorer](#open-graph-explorer) > * [Run queries to identify devices](#run-queries-to-identify-devices) > * [Enroll devices](#enroll-devices) > * [Create a deployment audience and add audience members](#create-a-deployment-audience-and-add-audience-members) @@ -50,13 +50,15 @@ All of the [prerequisites for the Windows Update for Business deployment service ## Enroll devices -As long as a device remains enrolled in feature update management, the device doesn't receive any other feature updates from Windows Update unless explicitly deployed using the deployment service. +As long as a device remains enrolled in feature update management through the deployment service, the device doesn't receive any other feature updates from Windows Update unless explicitly deployed using the deployment service. A device is offered the specified feature update if it hasn't already received the update. For example, if you deploy Windows 11 feature update version 22H2 to a device that's enrolled into feature update management and is currently on an older version of Windows 11, the device updates to version 22H2. If the device is already at or above version 22H2, it stays on its current version. [!INCLUDE [Graph Explorer enroll devices](./includes/wufb-deployment-enroll-device-graph-explorer.md)] ## Create a deployment audience and add audience members + + > [!TIP] > Windows Update for Business reports has a [workbook](wufb-reports-workbook.md#feature-updates-tab) that displays the current operating system version for devices. In the workbook, go to the **Feature updates** tab and in the **In Service feature update** tile, select the **View details** link to open the details flyout. The OS version and Azure AD ID of devices can easily be exported into a .csv file or opened in [Azure Monitor Logs](/azure/azure-monitor/logs/log-query-overview) to help when creating a deployment audience. @@ -66,6 +68,7 @@ As long as a device remains enrolled in feature update management, the device do ## List catalog entries for feature updates + ```http GET https://graph.microsoft.com/beta/admin/windows/updates/catalog/entries?$filter=isof('microsoft.graph.windowsUpdates.featureUpdateCatalogEntry') ``` @@ -96,6 +99,11 @@ Truncated response: } ``` +## Create a deployment + + + + ## Unenroll devices From 01c74a2a0669846b07879f13ef686d9e37095b6e Mon Sep 17 00:00:00 2001 From: Meghan Stewart <33289333+mestew@users.noreply.github.com> Date: Mon, 6 Feb 2023 14:50:37 -0800 Subject: [PATCH 55/92] edits --- .../update/deployment-service-feature-updates.md | 11 +++++------ .../wufb-deployment-audience-graph-explorer.md | 3 ++- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/windows/deployment/update/deployment-service-feature-updates.md b/windows/deployment/update/deployment-service-feature-updates.md index 9cde2707d2..2729080c53 100644 --- a/windows/deployment/update/deployment-service-feature-updates.md +++ b/windows/deployment/update/deployment-service-feature-updates.md @@ -50,18 +50,17 @@ All of the [prerequisites for the Windows Update for Business deployment service ## Enroll devices -As long as a device remains enrolled in feature update management through the deployment service, the device doesn't receive any other feature updates from Windows Update unless explicitly deployed using the deployment service. A device is offered the specified feature update if it hasn't already received the update. For example, if you deploy Windows 11 feature update version 22H2 to a device that's enrolled into feature update management and is currently on an older version of Windows 11, the device updates to version 22H2. If the device is already at or above version 22H2, it stays on its current version. +When you enroll devices into feature update management, the deployment service becomes the authority for feature updates coming from Windows Update. +As long as a device remains enrolled in feature update management through the deployment service, the device doesn't receive any other feature updates from Windows Update unless explicitly deployed using the deployment service. A device is offered the specified feature update if it hasn't already received the update. For example, if you deploy Windows 11 feature update version 22H2 to a device that's enrolled into feature update management and is currently on an older version of Windows 11, the device updates to version 22H2. If the device is already running version 22H2 or a later version, it stays on its current version. + +> [!TIP] +> Windows Update for Business reports has a [workbook](wufb-reports-workbook.md#feature-updates-tab) that displays the current operating system version for devices. In the workbook, go to the **Feature updates** tab and in the **In Service feature update** tile, select the **View details** link to open the details flyout. The OS version and Azure AD ID of devices can easily be exported into a .csv file or opened in [Azure Monitor Logs](/azure/azure-monitor/logs/log-query-overview) to help when creating a deployment audience. [!INCLUDE [Graph Explorer enroll devices](./includes/wufb-deployment-enroll-device-graph-explorer.md)] ## Create a deployment audience and add audience members - - -> [!TIP] -> Windows Update for Business reports has a [workbook](wufb-reports-workbook.md#feature-updates-tab) that displays the current operating system version for devices. In the workbook, go to the **Feature updates** tab and in the **In Service feature update** tile, select the **View details** link to open the details flyout. The OS version and Azure AD ID of devices can easily be exported into a .csv file or opened in [Azure Monitor Logs](/azure/azure-monitor/logs/log-query-overview) to help when creating a deployment audience. - [!INCLUDE [Graph Explorer enroll devices](./includes/wufb-deployment-audience-graph-explorer.md)] diff --git a/windows/deployment/update/includes/wufb-deployment-audience-graph-explorer.md b/windows/deployment/update/includes/wufb-deployment-audience-graph-explorer.md index 7122d2da37..4bd33058e7 100644 --- a/windows/deployment/update/includes/wufb-deployment-audience-graph-explorer.md +++ b/windows/deployment/update/includes/wufb-deployment-audience-graph-explorer.md @@ -9,8 +9,9 @@ ms.date: 02/14/2023 ms.localizationpriority: medium --- +A deployment audience is a collection of devices that you want to deploy updates to. The audience needs to be created first, then members are added to the audience. Use the following steps to create a deployment audience, add members, and verify it: -1. Create an audience for the driver deployment. The deployment audience is a collection of member devices that will receive the driver deployment. **POST** to the [deployment audience](/graph/api/resources/windowsupdates-deploymentaudience) resource with a request body of `{}` to create a new audience. +1. To create a new audience, **POST** to the [deployment audience](/graph/api/resources/windowsupdates-deploymentaudience) resource with a request body of `{}`. ```http POST https://graph.microsoft.com/beta/admin/windows/updates/deploymentAudiences From 563184145178969e0d0f28fdaeb693ef78cc67fa Mon Sep 17 00:00:00 2001 From: Meghan Stewart <33289333+mestew@users.noreply.github.com> Date: Mon, 6 Feb 2023 16:04:31 -0800 Subject: [PATCH 56/92] edits --- .../deployment/update/deployment-service-feature-updates.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/windows/deployment/update/deployment-service-feature-updates.md b/windows/deployment/update/deployment-service-feature-updates.md index 2729080c53..aaa168e2dc 100644 --- a/windows/deployment/update/deployment-service-feature-updates.md +++ b/windows/deployment/update/deployment-service-feature-updates.md @@ -66,8 +66,7 @@ As long as a device remains enrolled in feature update management through the de ## List catalog entries for feature updates - - +Each feature update is associated with a unique [catalog entry](/graph/api/resources/windowsupdates-catalogentry). The `id` returned is the **Catalog ID** and is used to create a deployment. Feature updates are deployable until they reach their support retirement dates. For more information see, the support lifecycle dates for [Windows 10](/lifecycle/products/windows-10-enterprise-and-education) and [Windows 11](/lifecycle/products/windows-11-enterprise-and-education) Enterprise and Education editions. The following query lists all deployable feature update catalog entries: ```http GET https://graph.microsoft.com/beta/admin/windows/updates/catalog/entries?$filter=isof('microsoft.graph.windowsUpdates.featureUpdateCatalogEntry') ``` From 4f69ec865646f7976089fc9fcf65b78901307612 Mon Sep 17 00:00:00 2001 From: Meghan Stewart <33289333+mestew@users.noreply.github.com> Date: Tue, 7 Feb 2023 10:59:47 -0800 Subject: [PATCH 57/92] edits --- .../deployment-service-feature-updates.md | 53 +++++++++++++++---- 1 file changed, 43 insertions(+), 10 deletions(-) diff --git a/windows/deployment/update/deployment-service-feature-updates.md b/windows/deployment/update/deployment-service-feature-updates.md index aaa168e2dc..9a91f6c3fc 100644 --- a/windows/deployment/update/deployment-service-feature-updates.md +++ b/windows/deployment/update/deployment-service-feature-updates.md @@ -24,6 +24,8 @@ In this article, you will: > * [Enroll devices](#enroll-devices) > * [Create a deployment audience and add audience members](#create-a-deployment-audience-and-add-audience-members) > * [List catalog entries for feature updates](#list-catalog-entries-for-feature-updates) +> * [Create a deployment](#create-a-deployment) +> * Do Z > * Do Z > * Do Z > - [Unenroll devices](#unenroll-devices) @@ -66,25 +68,18 @@ As long as a device remains enrolled in feature update management through the de ## List catalog entries for feature updates -Each feature update is associated with a unique [catalog entry](/graph/api/resources/windowsupdates-catalogentry). The `id` returned is the **Catalog ID** and is used to create a deployment. Feature updates are deployable until they reach their support retirement dates. For more information see, the support lifecycle dates for [Windows 10](/lifecycle/products/windows-10-enterprise-and-education) and [Windows 11](/lifecycle/products/windows-11-enterprise-and-education) Enterprise and Education editions. The following query lists all deployable feature update catalog entries: +Each feature update is associated with a unique [catalog entry](/graph/api/resources/windowsupdates-catalogentry). The `id` returned is the **Catalog ID** and is used to create a deployment. Feature updates are deployable until they reach their support retirement dates. For more information see, the support lifecycle dates for [Windows 10](/lifecycle/products/windows-10-enterprise-and-education) and [Windows 11](/lifecycle/products/windows-11-enterprise-and-education) Enterprise and Education editions. The following query lists all deployable feature update catalog entries: + ```http GET https://graph.microsoft.com/beta/admin/windows/updates/catalog/entries?$filter=isof('microsoft.graph.windowsUpdates.featureUpdateCatalogEntry') ``` -Truncated response: +The following truncated response displays a **Catalog ID** of `d9049ddb-0ca8-4bc1-bd3c-41a456ef300f` for the Windows 11, version 22H2 feature update: ```json { "@odata.context": "https://graph.microsoft.com/beta/$metadata#admin/windows/updates/catalog/entries", "value": [ - { - "@odata.type": "#microsoft.graph.windowsUpdates.featureUpdateCatalogEntry", - "id": "f341705b-0b15-4ce3-aaf2-6a1681d78606", - "displayName": "Windows 10, version 22H2", - "deployableUntilDateTime": "2024-10-08T00:00:00Z", - "releaseDateTime": "2022-10-18T00:00:00Z", - "version": "Windows 10, version 22H2" - }, { "@odata.type": "#microsoft.graph.windowsUpdates.featureUpdateCatalogEntry", "id": "d9049ddb-0ca8-4bc1-bd3c-41a456ef300f", @@ -99,8 +94,46 @@ Truncated response: ## Create a deployment +When creating a deployment for a feature update, there are multiple options available to define how the deployment behaves. The following [deployment settings](/graph/api/resources/windowsupdates-deploymentsettings) are defined in the example request body for deploying the Windows 11, version 22H2 feature update (**Catalog ID** of `d9049ddb-0ca8-4bc1-bd3c-41a456ef300f`): +- Deployment [start date](/graph/api/resources/windowsupdates-schedulesettings) of February 14, 2023 at 5 AM UTC +- [Gradual rollout](/graph/api/resources/windowsupdates-gradualrolloutsettings) at a rate of 100 devices every 3 days +- [Monitoring rule](/graph/api/resources/windowsupdates-monitoringrule) that will pause the deployment if 5 devices rollback the feature update +- Default [safeguard hold](/graph/api/resources/windowsupdates-safeguardprofile) behavior of applying all applicable safeguards to devices in a deployment + - When safeguard holds aren't explicitly defined, the default safeguard hold behavior is applied automatically +```http +{ + "content": { + "@odata.type": "#microsoft.graph.windowsUpdates.catalogContent", + "catalogEntry": { + "@odata.type": "#microsoft.graph.windowsUpdates.featureUpdateCatalogEntry", + "id": "d9049ddb-0ca8-4bc1-bd3c-41a456ef300f" + } + }, + "settings": { + "@odata.type": "microsoft.graph.windowsUpdates.deploymentSettings", + "schedule": { + "startDateTime": "2023-02-14T05:00:00Z", + "gradualRollout": { + "@odata.type": "#microsoft.graph.windowsUpdates.dateDrivenRolloutSettings", + "durationBetweenOffers": "P3D", + "devicesPerOffer": "100" + } + }, + "monitoring": { + "@odata.type": "microsoft.graph.windowsUpdates.monitoringSettings", + "monitoringRules": [ + { + "signal": "rollback", + "threshold": 5, + "action": "pauseDeployment" + } + ] + } + } +} +``` ## Unenroll devices From d3fd9a15cbeea148c23168ba652583ba4cb9bf75 Mon Sep 17 00:00:00 2001 From: Meghan Stewart <33289333+mestew@users.noreply.github.com> Date: Tue, 7 Feb 2023 13:49:36 -0800 Subject: [PATCH 58/92] edits --- .../deployment-service-feature-updates.md | 137 ++++++++++++++++-- 1 file changed, 124 insertions(+), 13 deletions(-) diff --git a/windows/deployment/update/deployment-service-feature-updates.md b/windows/deployment/update/deployment-service-feature-updates.md index 9a91f6c3fc..a9b5b8effa 100644 --- a/windows/deployment/update/deployment-service-feature-updates.md +++ b/windows/deployment/update/deployment-service-feature-updates.md @@ -22,7 +22,6 @@ In this article, you will: > * [Open Graph Explorer](#open-graph-explorer) > * [Run queries to identify devices](#run-queries-to-identify-devices) > * [Enroll devices](#enroll-devices) -> * [Create a deployment audience and add audience members](#create-a-deployment-audience-and-add-audience-members) > * [List catalog entries for feature updates](#list-catalog-entries-for-feature-updates) > * [Create a deployment](#create-a-deployment) > * Do Z @@ -55,20 +54,15 @@ All of the [prerequisites for the Windows Update for Business deployment service When you enroll devices into feature update management, the deployment service becomes the authority for feature updates coming from Windows Update. As long as a device remains enrolled in feature update management through the deployment service, the device doesn't receive any other feature updates from Windows Update unless explicitly deployed using the deployment service. A device is offered the specified feature update if it hasn't already received the update. For example, if you deploy Windows 11 feature update version 22H2 to a device that's enrolled into feature update management and is currently on an older version of Windows 11, the device updates to version 22H2. If the device is already running version 22H2 or a later version, it stays on its current version. -> [!TIP] -> Windows Update for Business reports has a [workbook](wufb-reports-workbook.md#feature-updates-tab) that displays the current operating system version for devices. In the workbook, go to the **Feature updates** tab and in the **In Service feature update** tile, select the **View details** link to open the details flyout. The OS version and Azure AD ID of devices can easily be exported into a .csv file or opened in [Azure Monitor Logs](/azure/azure-monitor/logs/log-query-overview) to help when creating a deployment audience. + > [!TIP] + > Windows Update for Business reports has a [workbook](wufb-reports-workbook.md#feature-updates-tab) that displays the current operating system version for devices. In the workbook, go to the **Feature updates** tab and in the **In Service feature update** tile, select the **View details** link to open the details flyout. The OS version and Azure AD ID of devices can easily be exported into a .csv file or opened in [Azure Monitor Logs](/azure/azure-monitor/logs/log-query-overview) to help when creating a deployment audience. [!INCLUDE [Graph Explorer enroll devices](./includes/wufb-deployment-enroll-device-graph-explorer.md)] -## Create a deployment audience and add audience members - - -[!INCLUDE [Graph Explorer enroll devices](./includes/wufb-deployment-audience-graph-explorer.md)] - ## List catalog entries for feature updates -Each feature update is associated with a unique [catalog entry](/graph/api/resources/windowsupdates-catalogentry). The `id` returned is the **Catalog ID** and is used to create a deployment. Feature updates are deployable until they reach their support retirement dates. For more information see, the support lifecycle dates for [Windows 10](/lifecycle/products/windows-10-enterprise-and-education) and [Windows 11](/lifecycle/products/windows-11-enterprise-and-education) Enterprise and Education editions. The following query lists all deployable feature update catalog entries: +Each feature update is associated with a unique [catalog entry](/graph/api/resources/windowsupdates-catalogentry). The `id` returned is the **Catalog ID** and is used to create a deployment. Feature updates are deployable until they reach their support retirement dates. For more information, see the support lifecycle dates for [Windows 10](/lifecycle/products/windows-10-enterprise-and-education) and [Windows 11](/lifecycle/products/windows-11-enterprise-and-education) Enterprise and Education editions. The following query lists all deployable feature update catalog entries: ```http GET https://graph.microsoft.com/beta/admin/windows/updates/catalog/entries?$filter=isof('microsoft.graph.windowsUpdates.featureUpdateCatalogEntry') @@ -97,12 +91,14 @@ The following truncated response displays a **Catalog ID** of `d9049ddb-0ca8-4b When creating a deployment for a feature update, there are multiple options available to define how the deployment behaves. The following [deployment settings](/graph/api/resources/windowsupdates-deploymentsettings) are defined in the example request body for deploying the Windows 11, version 22H2 feature update (**Catalog ID** of `d9049ddb-0ca8-4bc1-bd3c-41a456ef300f`): - Deployment [start date](/graph/api/resources/windowsupdates-schedulesettings) of February 14, 2023 at 5 AM UTC -- [Gradual rollout](/graph/api/resources/windowsupdates-gradualrolloutsettings) at a rate of 100 devices every 3 days -- [Monitoring rule](/graph/api/resources/windowsupdates-monitoringrule) that will pause the deployment if 5 devices rollback the feature update +- [Gradual rollout](/graph/api/resources/windowsupdates-gradualrolloutsettings) at a rate of 100 devices every three days +- [Monitoring rule](/graph/api/resources/windowsupdates-monitoringrule) that will pause the deployment if five devices rollback the feature update - Default [safeguard hold](/graph/api/resources/windowsupdates-safeguardprofile) behavior of applying all applicable safeguards to devices in a deployment - When safeguard holds aren't explicitly defined, the default safeguard hold behavior is applied automatically ```http +POST https://graph.microsoft.com/beta/admin/windows/updates/deployments +Content-type: application/json { "content": { "@odata.type": "#microsoft.graph.windowsUpdates.catalogContent", @@ -116,13 +112,12 @@ When creating a deployment for a feature update, there are multiple options avai "schedule": { "startDateTime": "2023-02-14T05:00:00Z", "gradualRollout": { - "@odata.type": "#microsoft.graph.windowsUpdates.dateDrivenRolloutSettings", + "@odata.type": "#microsoft.graph.windowsUpdates.rateDrivenRolloutSettings", "durationBetweenOffers": "P3D", "devicesPerOffer": "100" } }, "monitoring": { - "@odata.type": "microsoft.graph.windowsUpdates.monitoringSettings", "monitoringRules": [ { "signal": "rollback", @@ -135,6 +130,122 @@ When creating a deployment for a feature update, there are multiple options avai } ``` +The response body will contain: +- The new **Deployment ID**, `de910e12-3456-7890-abcd-ef1234567890` in the example +- The new **Audience ID**, `d39ad1ce-0123-4567-89ab-cdef01234567` in the example +- Any settings defined in the deployment request body + + ```json + { + "@odata.context": "https://graph.microsoft.com/beta/$metadata#admin/windows/updates/deployments/$entity", + "id": "de910e12-3456-7890-abcd-ef1234567890", + "createdDateTime": "2023-02-07T19:21:15.425905Z", + "lastModifiedDateTime": "2023-02-07T19:21:15Z", + "state": { + "effectiveValue": "scheduled", + "requestedValue": "none", + "reasons": [] + }, + "content": { + "@odata.type": "#microsoft.graph.windowsUpdates.catalogContent", + "catalogEntry@odata.context": "https://graph.microsoft.com/beta/$metadata#admin/windows/updates/deployments('de910e12-3456-7890-abcd-ef1234567890')/content/microsoft.graph.windowsUpdates.catalogContent/catalogEntry/$entity", + "catalogEntry": { + "@odata.type": "#microsoft.graph.windowsUpdates.featureUpdateCatalogEntry", + "id": "d9049ddb-0ca8-4bc1-bd3c-41a456ef300f", + "displayName": "Windows 11, version 22H2", + "deployableUntilDateTime": "2025-10-14T00:00:00Z", + "releaseDateTime": "0001-01-01T00:00:00Z", + "version": "Windows 11, version 22H2" + } + }, + "settings": { + "contentApplicability": null, + "userExperience": null, + "expedite": null, + "schedule": { + "startDateTime": "2023-02-14T05:00:00Z", + "gradualRollout": { + "@odata.type": "#microsoft.graph.windowsUpdates.rateDrivenRolloutSettings", + "durationBetweenOffers": "P3D", + "devicesPerOffer": 100 + } + }, + "monitoring": { + "monitoringRules": [ + { + "signal": "rollback", + "threshold": 5, + "action": "pauseDeployment" + } + ] + } + }, + "audience@odata.context": "https://graph.microsoft.com/beta/$metadata#admin/windows/updates/deployments('de910e12-3456-7890-abcd-ef1234567890')/audience/$entity", + "audience": { + "id": "d39ad1ce-0123-4567-89ab-cdef01234567", + "applicableContent": [] + } + } + ``` + +### Edit a deployment + +To [update deployment](/graph/api/windowsupdates-deployment-update), PATCH the deployment resource by its **Deployment ID** and supply the updated settings in the request body. The following example keeps the existing gradual rollout settings that were defined when creating the deployment but changes the deployment start date to February 28, 2023 at 5 AM UTC: + +```http +PATCH https://graph.microsoft.com/beta/admin/windows/updates/deployments/de910e12-3456-7890-abcd-ef1234567890 +Content-type: application/json + +{ + "settings": { + "@odata.type": "microsoft.graph.windowsUpdates.deploymentSettings", + "schedule": { + "startDateTime": "2023-02-28T05:00:00Z", + "gradualRollout": { + "@odata.type": "#microsoft.graph.windowsUpdates.rateDrivenRolloutSettings", + "durationBetweenOffers": "P3D", + "devicesPerOffer": "100" + } + } + } +} + +``` + +To verify the deployment settings for the **Deployment ID** of `de910e12-3456-7890-abcd-ef1234567890`: + +```http +GET https://graph.microsoft.com/beta/admin/windows/updates/deployments/de910e12-3456-7890-abcd-ef1234567890 +``` + +## Add members to the deployment audience + + + +The **Audience ID**, `d39ad1ce-0123-4567-89ab-cdef01234567`, was created when the deployment was created. The **Audience ID** is used to add members to the deployment audience. The following example adds three devices to the deployment audience using the **Azure AD ID** for each device: + + ```http + POST https://graph.microsoft.com/beta/admin/windows/updates/deploymentAudiences/d39ad1ce-0123-4567-89ab-cdef01234567/updateAudience + Content-type: application/json + + { + "addMembers": [ + { + "@odata.type": "#microsoft.graph.windowsUpdates.azureADDevice", + "id": "01234567-89ab-cdef-0123-456789abcdef" + }, + { + "@odata.type": "#microsoft.graph.windowsUpdates.azureADDevice", + "id": "01234567-89ab-cdef-0123-456789abcde0" + }, + { + "@odata.type": "#microsoft.graph.windowsUpdates.azureADDevice", + "id": "01234567-89ab-cdef-0123-456789abcde1" + } + ] + } + ``` + ## Unenroll devices From 61c406c70ea77cc79cf4262ea572685992eff8bf Mon Sep 17 00:00:00 2001 From: Meghan Stewart <33289333+mestew@users.noreply.github.com> Date: Tue, 7 Feb 2023 13:50:49 -0800 Subject: [PATCH 59/92] edits --- windows/deployment/update/deployment-service-feature-updates.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/windows/deployment/update/deployment-service-feature-updates.md b/windows/deployment/update/deployment-service-feature-updates.md index a9b5b8effa..6879eaae9f 100644 --- a/windows/deployment/update/deployment-service-feature-updates.md +++ b/windows/deployment/update/deployment-service-feature-updates.md @@ -220,8 +220,6 @@ GET https://graph.microsoft.com/beta/admin/windows/updates/deployments/de910e12- ## Add members to the deployment audience - - The **Audience ID**, `d39ad1ce-0123-4567-89ab-cdef01234567`, was created when the deployment was created. The **Audience ID** is used to add members to the deployment audience. The following example adds three devices to the deployment audience using the **Azure AD ID** for each device: ```http From a81d8f48a0b27977b907af0cba5a58d7ab101372 Mon Sep 17 00:00:00 2001 From: Meghan Stewart <33289333+mestew@users.noreply.github.com> Date: Tue, 7 Feb 2023 14:16:54 -0800 Subject: [PATCH 60/92] edits --- windows/deployment/update/deployment-service-feature-updates.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/windows/deployment/update/deployment-service-feature-updates.md b/windows/deployment/update/deployment-service-feature-updates.md index 6879eaae9f..938b880eaa 100644 --- a/windows/deployment/update/deployment-service-feature-updates.md +++ b/windows/deployment/update/deployment-service-feature-updates.md @@ -212,7 +212,7 @@ Content-type: application/json ``` -To verify the deployment settings for the **Deployment ID** of `de910e12-3456-7890-abcd-ef1234567890`: +Verify the deployment settings for the deployment with a **Deployment ID** of `de910e12-3456-7890-abcd-ef1234567890`: ```http GET https://graph.microsoft.com/beta/admin/windows/updates/deployments/de910e12-3456-7890-abcd-ef1234567890 From e1183462b6a7c38b70dc28ccdf6515edcb254332 Mon Sep 17 00:00:00 2001 From: Meghan Stewart <33289333+mestew@users.noreply.github.com> Date: Tue, 7 Feb 2023 15:41:42 -0800 Subject: [PATCH 61/92] edits --- .../deployment-service-feature-updates.md | 27 ++++++++++++++++--- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/windows/deployment/update/deployment-service-feature-updates.md b/windows/deployment/update/deployment-service-feature-updates.md index 938b880eaa..981e6f057d 100644 --- a/windows/deployment/update/deployment-service-feature-updates.md +++ b/windows/deployment/update/deployment-service-feature-updates.md @@ -24,9 +24,8 @@ In this article, you will: > * [Enroll devices](#enroll-devices) > * [List catalog entries for feature updates](#list-catalog-entries-for-feature-updates) > * [Create a deployment](#create-a-deployment) -> * Do Z -> * Do Z -> * Do Z +> * [Add members to the deployment audience](#add-members-to-the-deployment-audience) +> * [Pause a deployment](#pause-a-deployment) > - [Unenroll devices](#unenroll-devices) @@ -220,7 +219,9 @@ GET https://graph.microsoft.com/beta/admin/windows/updates/deployments/de910e12- ## Add members to the deployment audience -The **Audience ID**, `d39ad1ce-0123-4567-89ab-cdef01234567`, was created when the deployment was created. The **Audience ID** is used to add members to the deployment audience. The following example adds three devices to the deployment audience using the **Azure AD ID** for each device: +The **Audience ID**, `d39ad1ce-0123-4567-89ab-cdef01234567`, was created when the deployment was created. The **Audience ID** is used to add members to the deployment audience. After the deployment audience is updated, Windows Update starts offering the update to the devices according to the deployment settings. As long as the deployment exists and the device is in the audience, the update will be offered + +The following example adds three devices to the deployment audience using the **Azure AD ID** for each device: ```http POST https://graph.microsoft.com/beta/admin/windows/updates/deploymentAudiences/d39ad1ce-0123-4567-89ab-cdef01234567/updateAudience @@ -244,6 +245,24 @@ The **Audience ID**, `d39ad1ce-0123-4567-89ab-cdef01234567`, was created when th } ``` +## Pause a deployment + +To pause a deployment, PATCH the deployment to have a `requestedValue` of `paused` for the [deploymentState](/graph/api/resources/windowsupdates-deploymentstate). To resume the deployment, use the value `none` and the state will either update to `offering` or `scheduled` if the deployment hasn't reached the start date yet. The following example pauses the deployment with a **Deployment ID** of `de910e12-3456-7890-abcd-ef1234567890`: + +```http + +PATCH https://graph.microsoft.com/beta/admin/windows/updates/deployments/de910e12-3456-7890-abcd-ef1234567890 +Content-Type: application/json + +{ + "@odata.type": "#microsoft.graph.windowsUpdates.deployment", + "state": { + "@odata.type": "microsoft.graph.windowsUpdates.deploymentState", + "requestedValue": "paused" + } +} +``` + ## Unenroll devices From 7150ece5697258e3388455559fd82f6401b84c20 Mon Sep 17 00:00:00 2001 From: Meghan Stewart <33289333+mestew@users.noreply.github.com> Date: Tue, 7 Feb 2023 15:57:49 -0800 Subject: [PATCH 62/92] edits --- .../deployment/update/deployment-service-drivers.md | 10 +++++++++- .../update/deployment-service-feature-updates.md | 12 ++++++++---- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/windows/deployment/update/deployment-service-drivers.md b/windows/deployment/update/deployment-service-drivers.md index c546804851..3a4f67a79d 100644 --- a/windows/deployment/update/deployment-service-drivers.md +++ b/windows/deployment/update/deployment-service-drivers.md @@ -15,7 +15,9 @@ ms.date: 02/14/2023 ***(Applies to: Windows 11 & Windows 10)*** -The Windows Update for Business deployment service is used to approve and schedule software updates. The deployment service exposes its capabilities through the [Microsoft Graph API](/graph/use-the-api). You can call the API directly, through a [Graph SDK](/graph/sdks/sdks-overview), or integrate them with a management tool such as [Microsoft Intune](/mem/intune). This article uses Graph Explorer to walk through the entire process of deploying a driver update to clients. In this article, you will: +The Windows Update for Business deployment service is used to approve and schedule software updates. The deployment service exposes its capabilities through the [Microsoft Graph API](/graph/use-the-api). You can call the API directly, through a [Graph SDK](/graph/sdks/sdks-overview), or integrate them with a management tool such as [Microsoft Intune](/mem/intune). + +This article uses [Graph Explorer](/graph/graph-explorer/graph-explorer-overview) to walk through the entire process of deploying a driver update to clients. In this article, you will: > [!div class="checklist"] > > - [Open Graph Explorer](#open-graph-explorer) @@ -325,6 +327,12 @@ Content-type: application/json } ``` +To display all deployments with the most recently created returned first, order deployments based on the `createdDateTime`: + +```http +GET https://graph.microsoft.com/beta/admin/windows/updates/deployments?orderby=createdDateTime desc +``` + ## Unenroll devices diff --git a/windows/deployment/update/deployment-service-feature-updates.md b/windows/deployment/update/deployment-service-feature-updates.md index 981e6f057d..41387215a9 100644 --- a/windows/deployment/update/deployment-service-feature-updates.md +++ b/windows/deployment/update/deployment-service-feature-updates.md @@ -15,7 +15,9 @@ ms.date: 02/14/2023 ***(Applies to: Windows 11 & Windows 10)*** -The Windows Update for Business deployment service is used to approve and schedule software updates. The deployment service exposes its capabilities through the [Microsoft Graph API](/graph/use-the-api). You can call the API directly, through a [Graph SDK](/graph/sdks/sdks-overview), or integrate them with a management tool such as [Microsoft Intune](/mem/intune). This article uses Graph Explorer to walk through the entire process of deploying a feature update to clients. In this article, you will: +The Windows Update for Business deployment service is used to approve and schedule software updates. The deployment service exposes its capabilities through the [Microsoft Graph API](/graph/use-the-api). You can call the API directly, through a [Graph SDK](/graph/sdks/sdks-overview), or integrate them with a management tool such as [Microsoft Intune](/mem/intune). + +This article uses [Graph Explorer](/graph/graph-explorer/graph-explorer-overview) to walk through the entire process of deploying a feature update to clients. In this article, you will: In this article, you will: > [!div class="checklist"] @@ -26,7 +28,7 @@ In this article, you will: > * [Create a deployment](#create-a-deployment) > * [Add members to the deployment audience](#add-members-to-the-deployment-audience) > * [Pause a deployment](#pause-a-deployment) -> - [Unenroll devices](#unenroll-devices) +> * [Unenroll devices](#unenroll-devices) ## Prerequisites @@ -219,7 +221,7 @@ GET https://graph.microsoft.com/beta/admin/windows/updates/deployments/de910e12- ## Add members to the deployment audience -The **Audience ID**, `d39ad1ce-0123-4567-89ab-cdef01234567`, was created when the deployment was created. The **Audience ID** is used to add members to the deployment audience. After the deployment audience is updated, Windows Update starts offering the update to the devices according to the deployment settings. As long as the deployment exists and the device is in the audience, the update will be offered +The **Audience ID**, `d39ad1ce-0123-4567-89ab-cdef01234567`, was created when the deployment was created. The **Audience ID** is used to add members to the deployment audience. After the deployment audience is updated, Windows Update starts offering the update to the devices according to the deployment settings. As long as the deployment exists and the device is in the audience, the update will be offered. The following example adds three devices to the deployment audience using the **Azure AD ID** for each device: @@ -247,7 +249,9 @@ The following example adds three devices to the deployment audience using the ** ## Pause a deployment -To pause a deployment, PATCH the deployment to have a `requestedValue` of `paused` for the [deploymentState](/graph/api/resources/windowsupdates-deploymentstate). To resume the deployment, use the value `none` and the state will either update to `offering` or `scheduled` if the deployment hasn't reached the start date yet. The following example pauses the deployment with a **Deployment ID** of `de910e12-3456-7890-abcd-ef1234567890`: +To pause a deployment, PATCH the deployment to have a `requestedValue` of `paused` for the [deploymentState](/graph/api/resources/windowsupdates-deploymentstate). To resume the deployment, use the value `none` and the state will either update to `offering` or `scheduled` if the deployment hasn't reached the start date yet. + +The following example pauses the deployment with a **Deployment ID** of `de910e12-3456-7890-abcd-ef1234567890`: ```http From e0134f4d1869ecb40b80408a2f72543cb056b28a Mon Sep 17 00:00:00 2001 From: Meghan Stewart <33289333+mestew@users.noreply.github.com> Date: Thu, 9 Feb 2023 11:53:49 -0800 Subject: [PATCH 63/92] rework overview --- windows/deployment/TOC.yml | 10 +++-- .../update/deployment-service-overview.md | 35 +++++++++++++----- .../7512398-deployment-service-overview.png | Bin 0 -> 41461 bytes .../update/media/wufbds-product-large.png | Bin 18536 -> 0 bytes 4 files changed, 31 insertions(+), 14 deletions(-) create mode 100644 windows/deployment/update/media/7512398-deployment-service-overview.png delete mode 100644 windows/deployment/update/media/wufbds-product-large.png diff --git a/windows/deployment/TOC.yml b/windows/deployment/TOC.yml index bdaffc1953..b6cff644d0 100644 --- a/windows/deployment/TOC.yml +++ b/windows/deployment/TOC.yml @@ -170,7 +170,7 @@ href: update/waas-integrate-wufb.md - name: 'Walkthrough: use Group Policy to configure Windows Update for Business' href: update/waas-wufb-group-policy.md - - name: 'Walkthrough: use Intune to configure Windows Update for Business' + - name: 'Walkupdatesthrough: use Intune to configure Windows Update for Business' href: update/deploy-updates-intune.md - name: Windows Update for Business deployment service items: @@ -180,12 +180,14 @@ href: update/deployment-service-prerequisites.md - name: Deploy updates with Windows Update for Business deployment service items: - - name: Deploy feature updates + - name: Deploy feature updates using Graph Explorer href: update/deployment-service-feature-updates.md - - name: Deploy expedited updates + - name: Deploy expedited updates using Graph Explorer href: update/deployment-service-expedited-updates.md - - name: Deploy driver and firmware updates + - name: Deploy driver and firmware updates using Graph Explorer href: update/deployment-service-drivers.md + - name: Deploy expedited updates using Intune + href: /mem/intune/protect/windows-10-expedite-updates?toc=/windows/deployment/toc.json&bc=/windows/deployment/breadcrumb/toc.json - name: Troubleshoot Windows Update for Business deployment service href: update/deployment-service-troubleshoot.md - name: Monitor diff --git a/windows/deployment/update/deployment-service-overview.md b/windows/deployment/update/deployment-service-overview.md index f74ac54e66..6e6dac6335 100644 --- a/windows/deployment/update/deployment-service-overview.md +++ b/windows/deployment/update/deployment-service-overview.md @@ -17,23 +17,34 @@ ms.date: 12/31/2017 ***(Applies to: Windows 11 & Windows 10)*** -The Windows Update for Business deployment service is a cloud service within the Windows Update for Business product family. It provides control over the approval, scheduling, and safeguarding of updates delivered from Windows Update. It's designed to work in harmony with your existing Windows Update for Business policies. +The Windows Update for Business deployment service is a cloud service within the Windows Update for Business product family. It's designed to work with your existing [Windows Update for Business](waas-manage-updates-wufb.md) policies and [Windows Update for Business reports](wufb-reports-overview.md). The deployment service provides control over the approval, scheduling, and safeguarding of updates delivered from Windows Update to managed devices. The service is privacy focused and backed by leading industry compliance certifications. -The deployment service is designed for IT Pros who are looking for more control than is provided through deferral policies and deployment rings. It provides the following abilities: +## Capabilities of the Windows Update for Business deployment service -- You can schedule deployment of updates to start on a specific date (for example, deploy 20H2 to specified devices on March 14, 2021). -- You can stage deployments over a period of days or weeks by using rich expressions (for example, deploy 20H2 to 500 devices per day, beginning on March 14, 2021). -- You can bypass pre-configured Windows Update for Business policies to immediately deploy a security update across your organization when emergencies arise. -- You can benefit from deployments with automatic piloting tailored to your unique device population to ensure coverage of hardware and software in your organization. -- You can use safeguards against likely update issues that have been identified by Microsoft machine-learning algorithms and automatically hold the deployment for any affected devices. +The deployment service is designed for IT Pros who are looking for more control than is provided through deferral policies and deployment rings. The service provides the following capabilities: -The service is privacy focused and backed by leading industry compliance certifications. +- **Approval and scheduling**: Approve and schedule deployment of updates to start on a specific date + - *Example*: Deploy the Windows 11 22H2 feature update to specified devices on February 17, 2023. +- **Gradual rollout**: Stage deployments over a period of days or weeks by specifying gradual rollout settings + - *Example*: Deploy the Windows 11 22H2 feature update to 500 devices per day, beginning on February 17, 2023 +- **Expedite**: Bypass the configured Windows Update for Business policies to immediately deploy a security update across the organization +- **Safeguard holds**: Automatically holds the deployment for devices that may be impacted by an update issue identified by Microsoft machine-learning algorithms -## How it works +Certain capabilities are available for specific update classifications: + +|Capabilities | Quality updates | Feature updates | Drivers and firmware| +|---|---|---|---| +|Approval and scheduling | | Yes | Yes | +|Gradual rollout | | Yes | Yes | +|Expedite | Yes | | | +|Safeguard holds| | Yes | | + + +## How the deployment service works The deployment service complements existing Windows Update for Business capabilities, including existing device policies and [Windows Update for Business reports](wufb-reports-overview.md). -:::image type="content" source="media/wufbds-product-large.png" alt-text="Elements in following text."::: +:::image type="content" source="media/7512398-deployment-service-overview.png" alt-text="Elements in following text."::: Windows Update for Business comprises three elements: - Client policy to govern update experiences and timing – available through Group Policy and CSPs @@ -74,6 +85,10 @@ Additionally, your organization must have one of the following subscriptions: - Windows Virtual Desktop Access E3 or E5 - Microsoft 365 Business Premium +## Limitations + +Windows Update for Business deployment service is a Windows service hosted in Azure that uses Windows diagnostic data. You should be aware that Windows Update for Business deployment service doesn't meet [US Government community compliance (GCC)](/office365/servicedescriptions/office-365-platform-service-description/office-365-us-government/gcc#us-government-community-compliance) requirements. For a list of GCC offerings for Microsoft products and services, see the [Microsoft Trust Center](/compliance/regulatory/offering-home). Windows Update for Business deployment service is available in the Azure Commercial cloud, but not available for GCC High or United States Department of Defense customers. + ## Getting started To use the deployment service, you use a management tool built on the platform, script common actions using PowerShell, or build your own application. diff --git a/windows/deployment/update/media/7512398-deployment-service-overview.png b/windows/deployment/update/media/7512398-deployment-service-overview.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2085fb27b31d4c828afba6c382c2aa9332baa0 GIT binary patch literal 41461 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

qhwP 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 Date: Thu, 9 Feb 2023 14:11:07 -0800 Subject: [PATCH 64/92] rework overview --- .../deployment/update/deployment-service-expedited-updates.md | 1 - 1 file changed, 1 deletion(-) diff --git a/windows/deployment/update/deployment-service-expedited-updates.md b/windows/deployment/update/deployment-service-expedited-updates.md index a76fc6df2e..ccf49e2e71 100644 --- a/windows/deployment/update/deployment-service-expedited-updates.md +++ b/windows/deployment/update/deployment-service-expedited-updates.md @@ -43,7 +43,6 @@ All of the [prerequisites for the Windows Update for Business deployment service [!INCLUDE [Graph Explorer device queries](./includes/wufb-deployment-find-device-name-graph-explorer.md)] -## Enroll devices ## List updates in the catalog that can be expedited From 18e5f1168fb723bfed77779bfd5247a6a1d032a5 Mon Sep 17 00:00:00 2001 From: Meghan Stewart <33289333+mestew@users.noreply.github.com> Date: Thu, 9 Feb 2023 14:44:41 -0800 Subject: [PATCH 65/92] rework overview --- .../deployment/update/deployment-service-expedited-updates.md | 3 +-- windows/deployment/update/deployment-service-overview.md | 2 ++ 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/windows/deployment/update/deployment-service-expedited-updates.md b/windows/deployment/update/deployment-service-expedited-updates.md index ccf49e2e71..59bfff54a9 100644 --- a/windows/deployment/update/deployment-service-expedited-updates.md +++ b/windows/deployment/update/deployment-service-expedited-updates.md @@ -44,11 +44,10 @@ All of the [prerequisites for the Windows Update for Business deployment service [!INCLUDE [Graph Explorer device queries](./includes/wufb-deployment-find-device-name-graph-explorer.md)] - ## List updates in the catalog that can be expedited 1. Query the catalog to find updates that can be expedited, For example, query for all security updates that can be deployed as expedited updates by the deployment service. Using `$top=3` and ordering by `ReleaseDateTimeshows` displays the three most current updates. ``` GET https://graph.microsoft.com/beta/admin/windows/updates/catalog/entries?$filter=isof('microsoft.graph.windowsUpdates.qualityUpdateCatalogEntry') and microsoft.graph.windowsUpdates.qualityUpdateCatalogEntry/isExpeditable eq true&$orderby=releaseDateTime desc&$top=3 -``` \ No newline at end of file +``` diff --git a/windows/deployment/update/deployment-service-overview.md b/windows/deployment/update/deployment-service-overview.md index 6e6dac6335..4e20bf1c89 100644 --- a/windows/deployment/update/deployment-service-overview.md +++ b/windows/deployment/update/deployment-service-overview.md @@ -42,6 +42,8 @@ Certain capabilities are available for specific update classifications: ## How the deployment service works +With typical update management solutions, usually update policies are set on the client itself using either registry edits, Group Policy, or an MDM solution that leverages CSPs. This means that the device determines what the end user experience for updates are + The deployment service complements existing Windows Update for Business capabilities, including existing device policies and [Windows Update for Business reports](wufb-reports-overview.md). :::image type="content" source="media/7512398-deployment-service-overview.png" alt-text="Elements in following text."::: From 592222b28a8e4246d0f4dae2bbab0db9ef8bd179 Mon Sep 17 00:00:00 2001 From: Meghan Stewart <33289333+mestew@users.noreply.github.com> Date: Thu, 9 Feb 2023 16:17:34 -0800 Subject: [PATCH 66/92] rework overview --- .../deployment/update/deployment-service-overview.md | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/windows/deployment/update/deployment-service-overview.md b/windows/deployment/update/deployment-service-overview.md index 4e20bf1c89..cee85cf51c 100644 --- a/windows/deployment/update/deployment-service-overview.md +++ b/windows/deployment/update/deployment-service-overview.md @@ -19,6 +19,11 @@ ms.date: 12/31/2017 The Windows Update for Business deployment service is a cloud service within the Windows Update for Business product family. It's designed to work with your existing [Windows Update for Business](waas-manage-updates-wufb.md) policies and [Windows Update for Business reports](wufb-reports-overview.md). The deployment service provides control over the approval, scheduling, and safeguarding of updates delivered from Windows Update to managed devices. The service is privacy focused and backed by leading industry compliance certifications. +Windows Update for Business has three elements: +- Client policy, available through Group Policy settings and CSPs, which defines the timing and experience for updates +- [Windows Update for Business reports](wufb-reports-overview.md) to monitor update deployment +- Deployment service APIs for approving and scheduling specific updates - available through the Microsoft Graph and associated SDKs (including PowerShell) + ## Capabilities of the Windows Update for Business deployment service The deployment service is designed for IT Pros who are looking for more control than is provided through deferral policies and deployment rings. The service provides the following capabilities: @@ -42,15 +47,15 @@ Certain capabilities are available for specific update classifications: ## How the deployment service works -With typical update management solutions, usually update policies are set on the client itself using either registry edits, Group Policy, or an MDM solution that leverages CSPs. This means that the device determines what the end user experience for updates are +With most update management solutions, usually update policies are set on the client itself using either registry edits, Group Policy, or an MDM solution that leverages CSPs. This means that the end user experience and deployment settings for updates are ultimately determined by the individual device settings. However, with Windows Update for Business deployment service, the service is the central point of control for update deployment behavior. Because the deployment service is directly integrated into Windows Update, once the admin defines the update deployment behavior, the service ensures that the update is delivered to the device in the defined manner. The deployment service complements existing Windows Update for Business capabilities, including existing device policies and [Windows Update for Business reports](wufb-reports-overview.md). :::image type="content" source="media/7512398-deployment-service-overview.png" alt-text="Elements in following text."::: Windows Update for Business comprises three elements: -- Client policy to govern update experiences and timing – available through Group Policy and CSPs -- Deployment service APIs to approve and schedule specific updates – available through the Microsoft Graph and associated SDKs (including PowerShell) +- Client policy to govern update experiences and timing - available through Group Policy and CSPs +- Deployment service APIs to approve and schedule specific updates - available through the Microsoft Graph and associated SDKs (including PowerShell) - Windows Update for Business reports to monitor update deployment Unlike existing client policy, the deployment service doesn't interact with devices directly. The service is native to the cloud and all operations take place between various Microsoft services. It creates a direct communication channel between a management tool (including scripting tools such as Windows PowerShell) and the Windows Update service so that the approval and offering of content can be directly controlled by an IT Pro. From f982fc5fca984a05ba3149b537059b2ef188cdf2 Mon Sep 17 00:00:00 2001 From: Vinay Pamnani <37223378+vinaypamnani-msft@users.noreply.github.com> Date: Fri, 10 Feb 2023 11:52:02 -0500 Subject: [PATCH 67/92] Update deployment-service-expedited-updates.md --- .../deployment-service-expedited-updates.md | 158 ++++++++++++++++-- 1 file changed, 148 insertions(+), 10 deletions(-) diff --git a/windows/deployment/update/deployment-service-expedited-updates.md b/windows/deployment/update/deployment-service-expedited-updates.md index 59bfff54a9..f67447f315 100644 --- a/windows/deployment/update/deployment-service-expedited-updates.md +++ b/windows/deployment/update/deployment-service-expedited-updates.md @@ -1,6 +1,6 @@ --- title: Deploy expedited updates with Windows Update for Business deployment service -description: Use Windows Update for Business deployment service to deploy expedited updates. +description: Use Windows Update for Business deployment service to deploy expedited updates. ms.prod: windows-client author: mestew ms.localizationpriority: medium @@ -12,20 +12,22 @@ ms.date: 02/14/2023 --- # Deploy expedited updates with Windows Update for Business deployment service + ***(Applies to: Windows 11 & Windows 10)*** In this article, you will: > [!div class="checklist"] -> * [Open Graph Explorer](#open-graph-explorer) +> +> * [Open Graph Explorer](#open-graph-explorer) > * [Run queries to identify test devices](#run-queries-to-identify-devices) -> * Do Z - +> * [List catalog entries for expedited updates](#list-catalog-entries-for-expedited-updates) +> * [Create a deployment](#create-a-deployment) +> * [Add members to the deployment audience](#add-members-to-the-deployment-audience) +> * [Pause a deployment](#pause-a-deployment) ## Prerequisites -? This requires an extra license at the moment correct? Of does the client have to be listed as intune managed at the moment? - All of the [prerequisites for the Windows Update for Business deployment service](deployment-service-overview.md#prerequisites) must be met. ### Permissions @@ -43,11 +45,147 @@ All of the [prerequisites for the Windows Update for Business deployment service [!INCLUDE [Graph Explorer device queries](./includes/wufb-deployment-find-device-name-graph-explorer.md)] +## List catalog entries for expedited updates -## List updates in the catalog that can be expedited +Each update is associated with a unique [catalog entry](/graph/api/resources/windowsupdates-catalogentry). You can query the catalog to find updates that can be expedited. The `id` returned is the **Catalog ID** and is used to create a deployment. The following query lists all security updates that can be deployed as expedited updates by the deployment service. Using `$top=3` and ordering by `ReleaseDateTimeshows` displays the three most recent updates. -1. Query the catalog to find updates that can be expedited, For example, query for all security updates that can be deployed as expedited updates by the deployment service. Using `$top=3` and ordering by `ReleaseDateTimeshows` displays the three most current updates. - -``` +```msgraph-interactive GET https://graph.microsoft.com/beta/admin/windows/updates/catalog/entries?$filter=isof('microsoft.graph.windowsUpdates.qualityUpdateCatalogEntry') and microsoft.graph.windowsUpdates.qualityUpdateCatalogEntry/isExpeditable eq true&$orderby=releaseDateTime desc&$top=3 ``` + +The following truncated response displays a **Catalog ID** of `693fafea03c24cca819b3a15123a8880f217b96a878b6d6a61be021d476cc432` for the `01/10/2023 - 2023.01 B Security Updates for Windows 10 and later` security update: + +```json +{ + "@odata.context": "https://graph.microsoft.com/beta/$metadata#admin/windows/updates/catalog/entries", + "value": [ + { + "@odata.type": "#microsoft.graph.windowsUpdates.qualityUpdateCatalogEntry", + "id": "693fafea03c24cca819b3a15123a8880f217b96a878b6d6a61be021d476cc432", + "displayName": "01/10/2023 - 2023.01 B Security Updates for Windows 10 and later", + "deployableUntilDateTime": null, + "releaseDateTime": "2023-01-10T00:00:00Z", + "isExpeditable": true, + "qualityUpdateClassification": "security" + }, + ... + ] +} +``` + +## Create a deployment + +When creating a deployment, there are [multiple options](/graph/api/resources/windowsupdates-deploymentsettings) available to define how the deployment behaves. The following example creates a deployment for the `01/10/2023 - 2023.01 B Security Updates for Windows 10 and later` security update with catalog entry ID `693fafea03c24cca819b3a15123a8880f217b96a878b6d6a61be021d476cc432`, and defines the `expedite` and `userExperience` deployment options in the request body. + +```msgraph-interactive +POST https://graph.microsoft.com/beta/admin/windows/updates/deployments + +{ + "@odata.type": "#microsoft.graph.windowsUpdates.deployment", + "content": { + "@odata.type": "#microsoft.graph.windowsUpdates.catalogContent", + "catalogEntry": { + "@odata.type": "#microsoft.graph.windowsUpdates.qualityUpdateCatalogEntry", + "id": "693fafea03c24cca819b3a15123a8880f217b96a878b6d6a61be021d476cc432" + } + }, + "settings": { + "@odata.type": "microsoft.graph.windowsUpdates.deploymentSettings", + "expedite": { + "isExpedited": true + }, + "userExperience": { + "daysUntilForcedReboot": 2 + } + } +} +``` + +The request returns a 201 Created response code and a [deployment](/graph/api/resources/windowsupdates-deployment) object in the response body for the newly created deployment, which includes: + +- The **Deployment ID** `de910e12-3456-7890-abcd-ef1234567890` of the newly created deployment. +- The **Audience ID** `d39ad1ce-0123-4567-89ab-cdef01234567` of the newly created deployment audience. + +```json +{ + "@odata.context": "https://graph.microsoft.com/beta/$metadata#admin/windows/updates/deployments/$entity", + "id": "de910e12-3456-7890-abcd-ef1234567890", + "createdDateTime": "2023-02-09T22:55:04.8547517Z", + "lastModifiedDateTime": "2023-02-09T22:55:04.8547524Z", + "state": { + "effectiveValue": "offering", + "requestedValue": "none", + "reasons": [] + }, + "content": { + "@odata.type": "#microsoft.graph.windowsUpdates.catalogContent", + "catalogEntry@odata.context": "https://graph.microsoft.com/beta/$metadata#admin/windows/updates/deployments('de910e12-3456-7890-abcd-ef1234567890')/content/microsoft.graph.windowsUpdates.catalogContent/catalogEntry/$entity", + "catalogEntry": { + "@odata.type": "#microsoft.graph.windowsUpdates.qualityUpdateCatalogEntry", + "id": "693fafea03c24cca819b3a15123a8880f217b96a878b6d6a61be021d476cc432", + "displayName": null, + "deployableUntilDateTime": null, + "releaseDateTime": "2023-01-10T00:00:00Z", + "isExpeditable": false, + "qualityUpdateClassification": "security" + } + }, + "settings": { + "schedule": null, + "monitoring": null, + "contentApplicability": null, + "userExperience": { + "daysUntilForcedReboot": 2 + }, + "expedite": { + "isExpedited": true + } + }, + "audience@odata.context": "https://graph.microsoft.com/beta/$metadata#admin/windows/updates/deployments('de910e12-3456-7890-abcd-ef1234567890')/audience/$entity", + "audience": { + "id": "d39ad1ce-0123-4567-89ab-cdef01234567", + "applicableContent": [] + } +} +``` + +## Add members to the deployment audience + +The **Audience ID**, `d39ad1ce-0123-4567-89ab-cdef01234567`, was created when the deployment was created. The **Audience ID** is used to add members to the deployment audience. After the deployment audience is updated, Windows Update starts offering the update to the devices according to the deployment settings. As long as the deployment exists and the device is in the audience, the update will be expedited. + +The following example adds two devices to the deployment audience using the **Azure AD ID** for each device: + +```msgraph-interactive +POST https://graph.microsoft.com/beta/admin/windows/updates/deploymentAudiences/d39ad1ce-0123-4567-89ab-cdef01234567/updateAudience + +{ + "addMembers": [ + { + "@odata.type": "#microsoft.graph.windowsUpdates.azureADDevice", + "id": "01234567-89ab-cdef-0123-456789abcdef" + }, + { + "@odata.type": "#microsoft.graph.windowsUpdates.azureADDevice", + "id": "01234567-89ab-cdef-0123-456789abcde0" + } + ] +} +``` + +## Pause a deployment + +To pause a deployment, PATCH the deployment to have a `requestedValue` of `paused` for the [deploymentState](/graph/api/resources/windowsupdates-deploymentstate). To resume the deployment, use the value `none` and the state will either update to `offering` or `scheduled` if the deployment hasn't reached the start date yet. + +The following example pauses the deployment with a **Deployment ID** of `de910e12-3456-7890-abcd-ef1234567890`: + +```msgraph-interactive +PATCH https://graph.microsoft.com/beta/admin/windows/updates/deployments/de910e12-3456-7890-abcd-ef1234567890 + +{ + "@odata.type": "#microsoft.graph.windowsUpdates.deployment", + "state": { + "@odata.type": "microsoft.graph.windowsUpdates.deploymentState", + "requestedValue": "paused" + } +} +``` From d87f12a77ac5d13d331bf5e0780a60f49458b692 Mon Sep 17 00:00:00 2001 From: Meghan Stewart <33289333+mestew@users.noreply.github.com> Date: Fri, 10 Feb 2023 12:09:20 -0800 Subject: [PATCH 68/92] overview and prreq edits --- windows/deployment/TOC.yml | 2 +- .../update/deployment-service-overview.md | 126 +++++------------- .../deployment-service-prerequisites.md | 49 ++++++- .../includes/wufb-deployment-limitations.md | 13 ++ 4 files changed, 93 insertions(+), 97 deletions(-) create mode 100644 windows/deployment/update/includes/wufb-deployment-limitations.md diff --git a/windows/deployment/TOC.yml b/windows/deployment/TOC.yml index b6cff644d0..5cfad130d2 100644 --- a/windows/deployment/TOC.yml +++ b/windows/deployment/TOC.yml @@ -178,7 +178,7 @@ href: update/deployment-service-overview.md - name: Prerequisites for Windows Update for Business deployment service href: update/deployment-service-prerequisites.md - - name: Deploy updates with Windows Update for Business deployment service + - name: Deploy updates with the deployment service items: - name: Deploy feature updates using Graph Explorer href: update/deployment-service-feature-updates.md diff --git a/windows/deployment/update/deployment-service-overview.md b/windows/deployment/update/deployment-service-overview.md index cee85cf51c..63b1f2a464 100644 --- a/windows/deployment/update/deployment-service-overview.md +++ b/windows/deployment/update/deployment-service-overview.md @@ -11,18 +11,43 @@ ms.technology: itpro-updates ms.date: 12/31/2017 --- - - # Windows Update for Business deployment service ***(Applies to: Windows 11 & Windows 10)*** The Windows Update for Business deployment service is a cloud service within the Windows Update for Business product family. It's designed to work with your existing [Windows Update for Business](waas-manage-updates-wufb.md) policies and [Windows Update for Business reports](wufb-reports-overview.md). The deployment service provides control over the approval, scheduling, and safeguarding of updates delivered from Windows Update to managed devices. The service is privacy focused and backed by leading industry compliance certifications. -Windows Update for Business has three elements: -- Client policy, available through Group Policy settings and CSPs, which defines the timing and experience for updates +Windows Update for Business product family has three elements: + +- Client policy to govern update experiences and timing, which are available through Group Policy and CSPs - [Windows Update for Business reports](wufb-reports-overview.md) to monitor update deployment -- Deployment service APIs for approving and scheduling specific updates - available through the Microsoft Graph and associated SDKs (including PowerShell) +- Deployment service APIs to approve and schedule specific updates for deployment, which are available through the Microsoft Graph and associated SDKs (including PowerShell) + +## How the deployment service works + +With most update management solutions, usually update policies are set on the client itself using either registry edits, Group Policy, or an MDM solution that leverages CSPs. This means that the end user experience and deployment settings for updates are ultimately determined by the individual device settings. However, with Windows Update for Business deployment service, the service is the central point of control for update deployment behavior. Because the deployment service is directly integrated into Windows Update, once the admin defines the update deployment behavior, Windows Update is already aware of the how the device should be directed to install when a device scans + +the service ensures that the update is delivered to the device in the defined manner. + +The deployment service complements existing Windows Update for Business capabilities, including existing device policies and [Windows Update for Business reports](wufb-reports-overview.md). + +:::image type="content" source="media/7512398-deployment-service-overview.png" alt-text="Diagram displaying the three elements that are parts of the Windows Update for Business family. "::: + +Windows Update for Business comprises three elements: +- Client policy to govern update experiences and timing which are available through Group Policy and CSPs +- Deployment service APIs to approve and schedule specific updates which are available through the Microsoft Graph and associated SDKs (including PowerShell) +- Windows Update for Business reports to monitor update deployment + +Unlike existing client policy, the deployment service doesn't interact with devices directly. The service is native to the cloud and all operations take place between various Microsoft services. It creates a direct communication channel between a management tool (including scripting tools such as Windows PowerShell) and the Windows Update service so that the approval and offering of content can be directly controlled by an IT Pro. + +:::image type="content" source="media/wufbds-interaction-small.png" alt-text="Process described in following text."::: + +Using the deployment service typically follows a common pattern: +1. IT Pro uses a management tool to select devices and approve content to be deployed. This tool could be PowerShell, a Microsoft Graph app or a more complete management solution such as Microsoft Intune. +2. The chosen tool conveys your approval, scheduling, and device selection information to the deployment service. +3. The deployment service processes the content approval and compares it with previously approved content. Final update applicability is determined and conveyed to Windows Update, which then offers approved content to devices on their next check for updates. + +The deployment service exposes these capabilities through Microsoft [Graph REST APIs](/graph/overview). You can call the APIs directly, through a Graph SDK, or integrate them with a management tool such as Microsoft Intune. ## Capabilities of the Windows Update for Business deployment service @@ -45,56 +70,9 @@ Certain capabilities are available for specific update classifications: |Safeguard holds| | Yes | | -## How the deployment service works -With most update management solutions, usually update policies are set on the client itself using either registry edits, Group Policy, or an MDM solution that leverages CSPs. This means that the end user experience and deployment settings for updates are ultimately determined by the individual device settings. However, with Windows Update for Business deployment service, the service is the central point of control for update deployment behavior. Because the deployment service is directly integrated into Windows Update, once the admin defines the update deployment behavior, the service ensures that the update is delivered to the device in the defined manner. -The deployment service complements existing Windows Update for Business capabilities, including existing device policies and [Windows Update for Business reports](wufb-reports-overview.md). -:::image type="content" source="media/7512398-deployment-service-overview.png" alt-text="Elements in following text."::: - -Windows Update for Business comprises three elements: -- Client policy to govern update experiences and timing - available through Group Policy and CSPs -- Deployment service APIs to approve and schedule specific updates - available through the Microsoft Graph and associated SDKs (including PowerShell) -- Windows Update for Business reports to monitor update deployment - -Unlike existing client policy, the deployment service doesn't interact with devices directly. The service is native to the cloud and all operations take place between various Microsoft services. It creates a direct communication channel between a management tool (including scripting tools such as Windows PowerShell) and the Windows Update service so that the approval and offering of content can be directly controlled by an IT Pro. - -:::image type="content" source="media/wufbds-interaction-small.png" alt-text="Process described in following text."::: - -Using the deployment service typically follows a common pattern: -1. IT Pro uses a management tool to select devices and approve content to be deployed. This tool could be PowerShell, a Microsoft Graph app or a more complete management solution such as Microsoft Intune. -2. The chosen tool conveys your approval, scheduling, and device selection information to the deployment service. -3. The deployment service processes the content approval and compares it with previously approved content. Final update applicability is determined and conveyed to Windows Update, which then offers approved content to devices on their next check for updates. - -The deployment service exposes these capabilities through Microsoft [Graph REST APIs](/graph/overview). You can call the APIs directly, through a Graph SDK, or integrate them with a management tool such as Microsoft Intune. - -## Prerequisites - -To work with the deployment service, devices must meet all these requirements: - -- Devices must be [Azure AD joined](/azure/active-directory/devices/concept-azure-ad-join) or [hybrid Azure AD joined](/azure/active-directory/devices/concept-azure-ad-join-hybrid) -- Run one of the following operating systems: - - Windows 11 - - Windows 10, version 1709 or later - -- Have one of the following Windows 10 or Windows 11 editions installed: - - Pro - - Enterprise - - Education - - Pro Education - - Pro for Workstations - -Additionally, your organization must have one of the following subscriptions: - -- Windows 10/11 Enterprise E3 or E5 (included in Microsoft 365 F3, E3, or E5) -- Windows 10/11 Education A3 or A5 (included in Microsoft 365 A3 or A5) -- Windows Virtual Desktop Access E3 or E5 -- Microsoft 365 Business Premium - -## Limitations - -Windows Update for Business deployment service is a Windows service hosted in Azure that uses Windows diagnostic data. You should be aware that Windows Update for Business deployment service doesn't meet [US Government community compliance (GCC)](/office365/servicedescriptions/office-365-platform-service-description/office-365-us-government/gcc#us-government-community-compliance) requirements. For a list of GCC offerings for Microsoft products and services, see the [Microsoft Trust Center](/compliance/regulatory/offering-home). Windows Update for Business deployment service is available in the Azure Commercial cloud, but not available for GCC High or United States Department of Defense customers. ## Getting started @@ -143,53 +121,11 @@ To verify whether a device is affected by a safeguard hold, see [Am I affected b During deployments of Windows 11 or Windows 10 feature updates, driver combinations can sometimes result in an unexpected update failure that makes the device revert to the previously installed operating system version. The deployment service can monitor devices for such issues and automatically pause deployments when this happens, giving you time to detect and mitigate issues. -### How to enable deployment protections - -Deployment scheduling controls are always available, but to take advantage of the unique deployment protections tailored to your population, devices must share diagnostic data with Microsoft. - -#### Device prerequisites - -- Diagnostic data is set to *Required* or *Optional*. -- The **AllowWUfBCloudProcessing** policy is set to **8**. - -#### Set the **AllowWUfBCloudProcessing** policy - -To enroll devices in Windows Update for Business cloud processing, set the **AllowWUfBCloudProcessing** policy using mobile device management (MDM) policy or Group Policy. - -| Policy| Sets registry key under `HKLM\Software`| -|--|--| -| GPO for Windows 10, version 1809 or later: Computer Configuration > Administrative Templates > Windows Components > Data Collection and Preview Builds > **Allow WUfB Cloud Processing** | `\Policies\Microsoft\Windows\DataCollection\AllowWUfBCloudProcessing` | -| MDM for Windows 10, version 1809 or later: ../Vendor/MSFT/ Policy/Config/System/**AllowWUfBCloudProcessing** | `\Microsoft\PolicyManager\current\device\System\AllowWUfBCloudProcessing` | - -Following is an example of setting the policy using Intune: - -1. Sign in to the [Endpoint Manager admin center](https://go.microsoft.com/fwlink/?linkid=2109431). - -2. Select **Devices** > **Configuration profiles** > **Create profile**. - -3. Select **Windows 10 and later** in **Platform**, select **Templates** in **Profile type**, select **Custom** in **Template name**, and then select **Create**. - -4. In **Basics**, enter a meaningful name and a description for the policy, and then select **Next**. - -5. In **Configuration settings**, select **Add**, enter the following settings, select **Save**, and then select **Next**. - - Name: **AllowWUfBCloudProcessing** - - Description: Enter a description. - - OMA-URI: `./Vendor/MSFT/Policy/Config/System/AllowWUfBCloudProcessing` - - Data type: **Integer** - - Value: **8** - -6. In **Assignments**, select the groups that will receive the profile, and then select **Next**. - -7. In **Review + create**, review your settings, and then select **Create**. - -8. (Optional) To verify that the policy reached the client, check the value of the following registry entry: - - `HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PolicyManager\current\device\System\AllowWUfBCloudProcessing` ## Best practices Follow these suggestions for the best results with the service. -### Device onboarding +### Device onboarding - Wait until devices finish provisioning before managing with the service. If a device is being provisioned by Autopilot, it can only be managed by the deployment service after it finishes provisioning (typically one day). diff --git a/windows/deployment/update/deployment-service-prerequisites.md b/windows/deployment/update/deployment-service-prerequisites.md index 31148a17fe..dd5f8f8234 100644 --- a/windows/deployment/update/deployment-service-prerequisites.md +++ b/windows/deployment/update/deployment-service-prerequisites.md @@ -15,4 +15,51 @@ ms.date: 02/14/2023 ***(Applies to: Windows 11 & Windows 10)*** -## Prerequisites +Before you begin the process of deploying updates with Windows Update for Business deployment service, ensure you meet the prerequisites. + +## Azure and Azure Active Directory + +- An Azure subscription with [Azure Active Directory](/azure/active-directory/) +- Devices must be Azure Active Directory-joined and meet the below OSrequirements. + - Devices can be [Azure AD joined](/azure/active-directory/devices/concept-azure-ad-join) or [hybrid Azure AD joined](/azure/active-directory/devices/concept-azure-ad-join-hybrid). + - Devices that are [Azure AD registered](/azure/active-directory/devices/concept-azure-ad-register) only (Workplace joined) aren't supported with Windows Update for Business + +## Licensing + +Windows Update for Business deployment service requires users of the devices to have one of the following licenses: + +- Windows 10/11 Enterprise E3 or E5 (included in Microsoft 365 F3, E3, or E5) +- Windows 10/11 Education A3 or A5 (included in Microsoft 365 A3 or A5) +- Windows Virtual Desktop Access E3 or E5 +- Microsoft 365 Business Premium + +## Operating systems and editions + +- Windows 11 Professional, Education, Enterprise, Pro Education, or Pro for Workstations editions +- Windows 10 Professional, Education, Enterprise, Pro Education, or Pro for Workstations editions + +## Windows client servicing channels + +Windows Update for Business deployment service supports Windows client devices on the following channels: + +- General Availability Channel + +## Diagnostic data requirements + +Deployment scheduling controls are always available. However, to take advantage of the unique deployment protections tailored to your population and to [deploy driver updates](deployment-service-drivers.md), devices must share diagnostic data with Microsoft. At minimum, the deployment service requires devices to send [diagnostic data](/windows/privacy/configure-windows-diagnostic-data-in-your-organization#diagnostic-data-settings) at the *Required* level (previously called *Basic*) for these features. Some options for the deployment service require devices to send diagnostic data at the following levels: + +- *Optional* level (previously *Full*) for Windows 11 devices +- *Enhanced* level for Windows 10 devices + +## Permissions + +- [Windows Update for Business deployment service](/graph/api/resources/windowsupdates) operations require [WindowsUpdates.ReadWrite.All](/graph/permissions-reference#windows-updates-permissions) + - Some roles, such as the [Windows Update deployment administrator](/azure/active-directory/roles/permissions-reference#windows-update-deployment-administrator), already have the permissions. + +> [!NOTE] +> Leveraging other parts of the Graph API might require additional permissions. For example, to display [device](/graph/api/resources/device) information, a minimum of [Device.Read.All](/graph/permissions-reference#device-permissions) permission is needed. + +## Limitations + + +[!INCLUDE [Windows Update for Business deployment service limitations](./includes/wufb-deployment-limitations.md)] diff --git a/windows/deployment/update/includes/wufb-deployment-limitations.md b/windows/deployment/update/includes/wufb-deployment-limitations.md new file mode 100644 index 0000000000..34e70ba899 --- /dev/null +++ b/windows/deployment/update/includes/wufb-deployment-limitations.md @@ -0,0 +1,13 @@ +--- +author: mestew +ms.author: mstewart +manager: aaroncz +ms.technology: itpro-updates +ms.prod: windows-client +ms.topic: include +ms.date: 02/14/2023 +ms.localizationpriority: medium +--- + + +Windows Update for Business deployment service is a Windows service hosted in Azure that uses Windows diagnostic data. You should be aware that Windows Update for Business deployment service doesn't meet [US Government community compliance (GCC)](/office365/servicedescriptions/office-365-platform-service-description/office-365-us-government/gcc#us-government-community-compliance) requirements. For a list of GCC offerings for Microsoft products and services, see the [Microsoft Trust Center](/compliance/regulatory/offering-home). Windows Update for Business deployment service is available in the Azure Commercial cloud, but not available for GCC High or United States Department of Defense customers. From cc77de00305784058f1ef092a7d06084beefb099 Mon Sep 17 00:00:00 2001 From: Meghan Stewart <33289333+mestew@users.noreply.github.com> Date: Fri, 10 Feb 2023 12:31:44 -0800 Subject: [PATCH 69/92] overview and prreq edits --- .../update/includes/wufb-deployment-graph-explorer.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/windows/deployment/update/includes/wufb-deployment-graph-explorer.md b/windows/deployment/update/includes/wufb-deployment-graph-explorer.md index f39e7b6315..d06da8e611 100644 --- a/windows/deployment/update/includes/wufb-deployment-graph-explorer.md +++ b/windows/deployment/update/includes/wufb-deployment-graph-explorer.md @@ -10,10 +10,12 @@ ms.localizationpriority: medium --- -For this article, you'll use Graph Explorer to make requests to the [Microsoft Graph APIs](/graph/api/resources/windowsupdates-updates?view=graph-rest-beta&preserve-view=true) to retrieve, add, delete, and update data. For more information about using Graph Explorer, see [Get started with Graph Explorer](/graph/graph-explorer/overview). +For this article, you'll use Graph Explorer to make requests to the [Microsoft Graph APIs](/graph/api/resources/windowsupdates-updates?view=graph-rest-beta&preserve-view=true) to retrieve, add, delete, and update data. Graph Explorer is a developer tool that lets you learn about Microsoft Graph APIs. For more information about using Graph Explorer, see [Get started with Graph Explorer](/graph/graph-explorer/overview). > [!WARNING] -> Using a test tenant to verify the deployment process first is recommended. If you use a production tenant, ensure you verify which client devices you're targeting with deployments. +> +> - Requests listed in this article require signing in with a Microsoft 365 account. Join the [Microsoft 365 Developer Program](https://developer.microsoft.com/microsoft-365/dev-program) to get a free sandbox preconfigured with sample data packs for testing. +> - Using a test tenant to verify the deployment process first is highly recommended. If you use a production tenant, ensure you verify which client devices you're targeting with deployments. 1. From a browser, go to [Graph Explorer](https://developer.microsoft.com/graph/graph-explorer) and sign in using an Azure Active Directory (Azure AD) user account. 1. You may need to enable the [`WindowsUpdates.ReadWrite.All` permission](/graph/permissions-reference#windows-updates-permissions) to use the queries in this article. To enable the permission: From cbe564014fbdd22305f63de022fe9f548f48341e Mon Sep 17 00:00:00 2001 From: Vinay Pamnani <37223378+vinaypamnani-msft@users.noreply.github.com> Date: Fri, 10 Feb 2023 15:52:05 -0500 Subject: [PATCH 70/92] Update deployment-service-feature-updates.md --- .../deployment-service-feature-updates.md | 23 ++++++++----------- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/windows/deployment/update/deployment-service-feature-updates.md b/windows/deployment/update/deployment-service-feature-updates.md index 41387215a9..3df265d48a 100644 --- a/windows/deployment/update/deployment-service-feature-updates.md +++ b/windows/deployment/update/deployment-service-feature-updates.md @@ -55,8 +55,8 @@ All of the [prerequisites for the Windows Update for Business deployment service When you enroll devices into feature update management, the deployment service becomes the authority for feature updates coming from Windows Update. As long as a device remains enrolled in feature update management through the deployment service, the device doesn't receive any other feature updates from Windows Update unless explicitly deployed using the deployment service. A device is offered the specified feature update if it hasn't already received the update. For example, if you deploy Windows 11 feature update version 22H2 to a device that's enrolled into feature update management and is currently on an older version of Windows 11, the device updates to version 22H2. If the device is already running version 22H2 or a later version, it stays on its current version. - > [!TIP] - > Windows Update for Business reports has a [workbook](wufb-reports-workbook.md#feature-updates-tab) that displays the current operating system version for devices. In the workbook, go to the **Feature updates** tab and in the **In Service feature update** tile, select the **View details** link to open the details flyout. The OS version and Azure AD ID of devices can easily be exported into a .csv file or opened in [Azure Monitor Logs](/azure/azure-monitor/logs/log-query-overview) to help when creating a deployment audience. +> [!TIP] +> Windows Update for Business reports has a [workbook](wufb-reports-workbook.md#feature-updates-tab) that displays the current operating system version for devices. In the workbook, go to the **Feature updates** tab and in the **In Service feature update** tile, select the **View details** link to open the details flyout. The OS version and Azure AD ID of devices can easily be exported into a .csv file or opened in [Azure Monitor Logs](/azure/azure-monitor/logs/log-query-overview) to help when creating a deployment audience. [!INCLUDE [Graph Explorer enroll devices](./includes/wufb-deployment-enroll-device-graph-explorer.md)] @@ -65,7 +65,7 @@ As long as a device remains enrolled in feature update management through the de Each feature update is associated with a unique [catalog entry](/graph/api/resources/windowsupdates-catalogentry). The `id` returned is the **Catalog ID** and is used to create a deployment. Feature updates are deployable until they reach their support retirement dates. For more information, see the support lifecycle dates for [Windows 10](/lifecycle/products/windows-10-enterprise-and-education) and [Windows 11](/lifecycle/products/windows-11-enterprise-and-education) Enterprise and Education editions. The following query lists all deployable feature update catalog entries: -```http +```msgraph-interactive GET https://graph.microsoft.com/beta/admin/windows/updates/catalog/entries?$filter=isof('microsoft.graph.windowsUpdates.featureUpdateCatalogEntry') ``` @@ -97,9 +97,9 @@ When creating a deployment for a feature update, there are multiple options avai - Default [safeguard hold](/graph/api/resources/windowsupdates-safeguardprofile) behavior of applying all applicable safeguards to devices in a deployment - When safeguard holds aren't explicitly defined, the default safeguard hold behavior is applied automatically -```http +```msgraph-interactive POST https://graph.microsoft.com/beta/admin/windows/updates/deployments -Content-type: application/json + { "content": { "@odata.type": "#microsoft.graph.windowsUpdates.catalogContent", @@ -193,9 +193,8 @@ The response body will contain: To [update deployment](/graph/api/windowsupdates-deployment-update), PATCH the deployment resource by its **Deployment ID** and supply the updated settings in the request body. The following example keeps the existing gradual rollout settings that were defined when creating the deployment but changes the deployment start date to February 28, 2023 at 5 AM UTC: -```http +```msgraph-interactive PATCH https://graph.microsoft.com/beta/admin/windows/updates/deployments/de910e12-3456-7890-abcd-ef1234567890 -Content-type: application/json { "settings": { @@ -215,7 +214,7 @@ Content-type: application/json Verify the deployment settings for the deployment with a **Deployment ID** of `de910e12-3456-7890-abcd-ef1234567890`: -```http +```msgraph-interactive GET https://graph.microsoft.com/beta/admin/windows/updates/deployments/de910e12-3456-7890-abcd-ef1234567890 ``` @@ -225,9 +224,8 @@ The **Audience ID**, `d39ad1ce-0123-4567-89ab-cdef01234567`, was created when th The following example adds three devices to the deployment audience using the **Azure AD ID** for each device: - ```http - POST https://graph.microsoft.com/beta/admin/windows/updates/deploymentAudiences/d39ad1ce-0123-4567-89ab-cdef01234567/updateAudience - Content-type: application/json + ```msgraph-interactive + POST https://graph.microsoft.com/beta/admin/windows/updates/deploymentAudiences/d39ad1ce-0123-4567-89ab-cdef01234567/updateAudience { "addMembers": [ @@ -253,10 +251,9 @@ To pause a deployment, PATCH the deployment to have a `requestedValue` of `pause The following example pauses the deployment with a **Deployment ID** of `de910e12-3456-7890-abcd-ef1234567890`: -```http +```msgraph-interactive PATCH https://graph.microsoft.com/beta/admin/windows/updates/deployments/de910e12-3456-7890-abcd-ef1234567890 -Content-Type: application/json { "@odata.type": "#microsoft.graph.windowsUpdates.deployment", From d800e61c218256cc439de02cc8dc942f65778beb Mon Sep 17 00:00:00 2001 From: Vinay Pamnani <37223378+vinaypamnani-msft@users.noreply.github.com> Date: Fri, 10 Feb 2023 15:55:11 -0500 Subject: [PATCH 71/92] Update deployment-service-drivers.md --- .../update/deployment-service-drivers.md | 36 +++++++++---------- 1 file changed, 17 insertions(+), 19 deletions(-) diff --git a/windows/deployment/update/deployment-service-drivers.md b/windows/deployment/update/deployment-service-drivers.md index 3a4f67a79d..8a800ae311 100644 --- a/windows/deployment/update/deployment-service-drivers.md +++ b/windows/deployment/update/deployment-service-drivers.md @@ -75,9 +75,9 @@ Update policies define how content is deployed to a deployment audience. An [upd To create a policy without any deployment settings, in the request body specify the **Audience ID** as `id`. In the following example, the **Audience ID** is `d39ad1ce-0123-4567-89ab-cdef01234567`, and the `id` given in the response is the **Policy ID**: - ```http + ```msgraph-interactive POST https://graph.microsoft.com/beta/admin/windows/updates/updatePolicies - Content-type: application/json + { "audience": { "@odata.id": "d39ad1ce-0123-4567-89ab-cdef01234567" @@ -115,9 +115,9 @@ To create a policy with additional settings, in the request body: In the following driver update policy example, any deployments created by a content approval will start 7 days after approval and will gradually roll out to 1000 devices per day for **Audience ID** `d39ad1ce-0123-4567-89ab-cdef01234567`: - ```http + ```msgraph-interactive POST https://graph.microsoft.com/beta/admin/windows/updates/updatePolicies - Content-Type: application/json + Content-length: 967 { "@odata.type": "#microsoft.graph.windowsUpdates.updatePolicy", @@ -156,15 +156,14 @@ To create a policy with additional settings, in the request body: To review the policy settings, run the following query using the **Policy ID**, for example `9011c330-1234-5678-9abc-def012345678`: - ```http - GET https://graph.microsoft.com/beta/admin/windows/updates/updatePolicies/9011c330-1234-5678-9abc-def012345678 + ```msgraph-interactive + GET https://graph.microsoft.com/beta/admin/windows/updates/updatePolicies/9011c330-1234-5678-9abc-def012345678 ``` To edit the policy settings, **PATCH** the policy using the **Policy ID**. Run the following **PATCH** to automatically approve driver content that's recommended by `Microsoft`for deployment for **Policy ID** `9011c330-1234-5678-9abc-def012345678`: -``` http - PATCH https://graph.microsoft.com/beta/admin/windows/updates/updatePolicies/9011c330-1234-5678-9abc-def012345678 - Content-Type: application/json +``` msgraph-interactive +PATCH https://graph.microsoft.com/beta/admin/windows/updates/updatePolicies/9011c330-1234-5678-9abc-def012345678 { "complianceChangeRules": [ @@ -196,7 +195,7 @@ Once Windows Update for Business deployment service has scan results from device To display [applicable content](/graph/api/resources/windowsupdates-applicablecontent), run a query using the **Audience ID**, for example `d39ad1ce-0123-4567-89ab-cdef01234567`: -```http +```msgraph-interactive GET https://graph.microsoft.com/beta/admin/windows/updates/deploymentAudiences/d39ad1ce-0123-4567-89ab-cdef01234567/applicableContent ``` @@ -237,9 +236,8 @@ Each driver update is associated with a unique [catalog entry](/graph/api/resour Add a content approval to an existing policy, **Policy ID** `9011c330-1234-5678-9abc-def012345678` for the driver update with the **Catalog ID** `5d6dede684ba5c4a731d62d9c9c2a99db12c5e6015e9f8ad00f3e9387c7f399c`. Schedule the start date for February 14, 2023 at 1 AM UTC: -```http +```msgraph-interactive POST https://graph.microsoft.com/beta/admin/windows/updates/updatePolicies/9011c330-1234-5678-9abc-def012345678/complianceChanges -Content-type: application/json { "@odata.type": "#microsoft.graph.windowsUpdates.contentApproval", @@ -261,7 +259,7 @@ Content-type: application/json The response for a content approval returns content and deployment settings along with an `id`, which is the **Compliance Change ID**. The **Compliance Change ID** is `c03911a7-9876-5432-10ab-cdef98765432` in the following truncated response: -```http +```json "@odata.type": "#microsoft.graph.windowsUpdates.contentApproval", "id": "c03911a7-9876-5432-10ab-cdef98765432", "createdDateTime": "2023-02-02T17:54:39.173292Z", @@ -281,7 +279,7 @@ The response for a content approval returns content and deployment settings alon Review all of the compliance changes to a policy with the most recent changes listed in the response first. The following example returns the compliance changes for a policy with the **Policy ID** `9011c330-1234-5678-9abc-def012345678` and sorts by `createdDateTime` in descending order: - ```http + ```msgraph-interactive GET https://graph.microsoft.com/beta/admin/windows/updates/updatePolicies/9011c330-1234-5678-9abc-def012345678/complianceChanges?orderby=createdDateTime desc ``` @@ -290,7 +288,7 @@ Review all of the compliance changes to a policy with the most recent changes li To retrieve the deployment ID, use the [expand parameter](/graph/query-parameters#expand-parameter) to review the deployment information related the content approval. The following example displays the content approval and the deployment information for **Compliance Change ID** `c03911a7-9876-5432-10ab-cdef98765432` in update **Policy ID** `9011c330-1234-5678-9abc-def012345678`: - ```http + ```msgraph-interactive GET https://graph.microsoft.com/beta/admin/windows/updates/updatePolicies/9011c330-1234-5678-9abc-def012345678/complianceChanges/c03911a7-9876-5432-10ab-cdef98765432/$/microsoft.graph.windowsUpdates.contentApproval?$expand=deployments ``` @@ -298,7 +296,7 @@ To retrieve the deployment ID, use the [expand parameter](/graph/query-parameter Since content approval is a compliance change for the policy, when you [update a content approval](/graph/api/resources/windowsupdates--contentapproval-update), you're editing the compliance change for the policy. The following example changes the `startDateTime` for the **Compliance Change ID** of `c03911a7-9876-5432-10ab-cdef98765432` in the update **Policy ID** `9011c330-1234-5678-9abc-def012345678` to February 28, 2023 at 5 AM UTC: -```http +```msgraph-interactive PATCH https://graph.microsoft.com/beta/admin/windows/updates/updatePolicies/9011c330-1234-5678-9abc-def012345678/complianceChanges/c03911a7-9876-5432-10ab-cdef98765432 { @@ -318,9 +316,9 @@ PATCH https://graph.microsoft.com/beta/admin/windows/updates/updatePolicies/9011 Approval for content can be revoked by setting the `isRevoked` property of the [compliance change](/graph/api/resources/windowsupdates-compliance) to true. This setting can be changed while a deployment is in progress. However, revoking will only prevent the content from being offered to devices if they haven't already received it. To resume offering the content, a new [approval](#approve-driver-content-for-deployment) will need to be created. -```http +```msgraph-interactive PATCH https://graph.microsoft.com/beta/admin/windows/updates/updatePolicies/9011c330-1234-5678-9abc-def012345678/complianceChanges/c03911a7-9876-5432-10ab-cdef98765432 -Content-type: application/json + { "@odata.type": "#microsoft.graph.windowsUpdates.contentApproval", "isRevoked": true @@ -329,7 +327,7 @@ Content-type: application/json To display all deployments with the most recently created returned first, order deployments based on the `createdDateTime`: -```http +```msgraph-interactive GET https://graph.microsoft.com/beta/admin/windows/updates/deployments?orderby=createdDateTime desc ``` From 0d69635400443a7180516bd9186b01d2bade1f6d Mon Sep 17 00:00:00 2001 From: Vinay Pamnani <37223378+vinaypamnani-msft@users.noreply.github.com> Date: Fri, 10 Feb 2023 16:03:26 -0500 Subject: [PATCH 72/92] Update wufb-deployment-audience-graph-explorer.md --- .../wufb-deployment-audience-graph-explorer.md | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/windows/deployment/update/includes/wufb-deployment-audience-graph-explorer.md b/windows/deployment/update/includes/wufb-deployment-audience-graph-explorer.md index 4bd33058e7..9d5e531e42 100644 --- a/windows/deployment/update/includes/wufb-deployment-audience-graph-explorer.md +++ b/windows/deployment/update/includes/wufb-deployment-audience-graph-explorer.md @@ -13,9 +13,8 @@ A deployment audience is a collection of devices that you want to deploy updates 1. To create a new audience, **POST** to the [deployment audience](/graph/api/resources/windowsupdates-deploymentaudience) resource with a request body of `{}`. - ```http - POST https://graph.microsoft.com/beta/admin/windows/updates/deploymentAudiences - content-type: application/json + ```msgraph-interactive + POST https://graph.microsoft.com/beta/admin/windows/updates/deploymentAudiences {} ``` @@ -34,9 +33,8 @@ A deployment audience is a collection of devices that you want to deploy updates 1. Add devices, using their **Azure AD ID**, to the deployment audience so they become audience members. Specify the deployment **Audience ID** in the URL field and the devices to add in the request body. The `id` property specifies the **Azure AD ID** of the device. - ```http - POST https://graph.microsoft.com/beta/admin/windows/updates/deploymentAudiences/d39ad1ce-0123-4567-89ab-cdef01234567/updateAudience - Content-type: application/json + ```msgraph-interactive + POST https://graph.microsoft.com/beta/admin/windows/updates/deploymentAudiences/d39ad1ce-0123-4567-89ab-cdef01234567/updateAudience { "addMembers": [ @@ -58,6 +56,6 @@ A deployment audience is a collection of devices that you want to deploy updates 1. To verify the devices were added to the audience, run the following query using the **Audience ID** of `d39ad1ce-0123-4567-89ab-cdef01234567`: - ```http + ```msgraph-interactive GET https://graph.microsoft.com/beta/admin/windows/updates/deploymentAudiences/d39ad1ce-0123-4567-89ab-cdef01234567/members ``` From dd09387e8a3ca84e4f7e5fc6c48aa40c32104436 Mon Sep 17 00:00:00 2001 From: Vinay Pamnani <37223378+vinaypamnani-msft@users.noreply.github.com> Date: Fri, 10 Feb 2023 16:04:24 -0500 Subject: [PATCH 73/92] Update wufb-deployment-find-device-name-graph-explorer.md --- .../wufb-deployment-find-device-name-graph-explorer.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/windows/deployment/update/includes/wufb-deployment-find-device-name-graph-explorer.md b/windows/deployment/update/includes/wufb-deployment-find-device-name-graph-explorer.md index 26f1f077a7..03e32e5950 100644 --- a/windows/deployment/update/includes/wufb-deployment-find-device-name-graph-explorer.md +++ b/windows/deployment/update/includes/wufb-deployment-find-device-name-graph-explorer.md @@ -14,13 +14,13 @@ Use the [device](/graph/api/resources/device) resource type to find clients to e - Displays the **AzureAD Device ID** and **Name** of all devices: - ```http + ```msgraph-interactive GET https://graph.microsoft.com/v1.0/devices?$select=deviceid,displayName ``` - Displays the **AzureAD Device ID** and **Name** for devices that have a name starting with `Test`: - ```http + ```msgraph-interactive GET https://graph.microsoft.com/v1.0/devices?$filter=startswith (displayName,'Test')&$select=deviceid,displayName ``` @@ -37,13 +37,13 @@ For the next requests, set the **ConsistencyLevel** header to `eventual`. For mo - Display the **Name** and **Operating system version** for the device that has `01234567-89ab-cdef-0123-456789abcdef` as the **AzureAD Device ID**: - ```http + ```msgraph-interactive GET https://graph.microsoft.com/v1.0/devices?$search="deviceid:01234567-89ab-cdef-0123-456789abcdef"?$select=displayName,operatingSystemVersion` ``` - To find devices that likely aren't virtual machines, filter for devices that don't have virtual machine listed as the model but do have a manufacturer listed. Display the **AzureAD Device ID**, **Name**, and **Operating system version** for each device: - ```http + ```msgraph-interactive GET https://graph.microsoft.com/v1.0/devices?$filter=model ne 'virtual machine' and NOT(manufacturer eq null)&$count=true&$select=deviceid,displayName,operatingSystemVersion` ``` From 46fda1ad1bbc90004e025d1ba9c0371637f3c586 Mon Sep 17 00:00:00 2001 From: Vinay Pamnani <37223378+vinaypamnani-msft@users.noreply.github.com> Date: Fri, 10 Feb 2023 16:04:50 -0500 Subject: [PATCH 74/92] Update wufb-deployment-graph-unenroll.md --- .../update/includes/wufb-deployment-graph-unenroll.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/windows/deployment/update/includes/wufb-deployment-graph-unenroll.md b/windows/deployment/update/includes/wufb-deployment-graph-unenroll.md index f3a3b6f229..4020661631 100644 --- a/windows/deployment/update/includes/wufb-deployment-graph-unenroll.md +++ b/windows/deployment/update/includes/wufb-deployment-graph-unenroll.md @@ -22,9 +22,8 @@ To unenroll a device, POST to [updatableAssets](/graph/api/resources/windowsupda The following example removes `driver` enrollment for two devices, `01234567-89ab-cdef-0123-456789abcdef` and `01234567-89ab-cdef-0123-456789abcde0`: -```http +```msgraph-interactive POST https://graph.microsoft.com/beta/admin/windows/updates/updatableAssets/unenrollAssets -Content-Type: application/json { "updateCategory": "driver", From 25357d04061b5382301c5ed9ba58dfdc3dc1e0ac Mon Sep 17 00:00:00 2001 From: Vinay Pamnani <37223378+vinaypamnani-msft@users.noreply.github.com> Date: Fri, 10 Feb 2023 16:12:37 -0500 Subject: [PATCH 75/92] Update wufb-deployment-graph-unenroll.md --- .../deployment/update/includes/wufb-deployment-graph-unenroll.md | 1 + 1 file changed, 1 insertion(+) diff --git a/windows/deployment/update/includes/wufb-deployment-graph-unenroll.md b/windows/deployment/update/includes/wufb-deployment-graph-unenroll.md index 4020661631..f85f158a63 100644 --- a/windows/deployment/update/includes/wufb-deployment-graph-unenroll.md +++ b/windows/deployment/update/includes/wufb-deployment-graph-unenroll.md @@ -24,6 +24,7 @@ The following example removes `driver` enrollment for two devices, `01234567-89a ```msgraph-interactive POST https://graph.microsoft.com/beta/admin/windows/updates/updatableAssets/unenrollAssets +content-type: application/json { "updateCategory": "driver", From 3650f131f9c1feed81c18aa15607f6380094f35f Mon Sep 17 00:00:00 2001 From: Vinay Pamnani <37223378+vinaypamnani-msft@users.noreply.github.com> Date: Fri, 10 Feb 2023 16:13:45 -0500 Subject: [PATCH 76/92] Update deployment-service-drivers.md --- windows/deployment/update/deployment-service-drivers.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/windows/deployment/update/deployment-service-drivers.md b/windows/deployment/update/deployment-service-drivers.md index 8a800ae311..1310226a09 100644 --- a/windows/deployment/update/deployment-service-drivers.md +++ b/windows/deployment/update/deployment-service-drivers.md @@ -77,6 +77,7 @@ To create a policy without any deployment settings, in the request body specify ```msgraph-interactive POST https://graph.microsoft.com/beta/admin/windows/updates/updatePolicies + content-type: application/json { "audience": { @@ -117,6 +118,7 @@ To create a policy with additional settings, in the request body: ```msgraph-interactive POST https://graph.microsoft.com/beta/admin/windows/updates/updatePolicies + content-type: application/json Content-length: 967 { @@ -238,6 +240,7 @@ Add a content approval to an existing policy, **Policy ID** `9011c330-1234-5678- ```msgraph-interactive POST https://graph.microsoft.com/beta/admin/windows/updates/updatePolicies/9011c330-1234-5678-9abc-def012345678/complianceChanges +content-type: application/json { "@odata.type": "#microsoft.graph.windowsUpdates.contentApproval", @@ -298,6 +301,7 @@ Since content approval is a compliance change for the policy, when you [update a ```msgraph-interactive PATCH https://graph.microsoft.com/beta/admin/windows/updates/updatePolicies/9011c330-1234-5678-9abc-def012345678/complianceChanges/c03911a7-9876-5432-10ab-cdef98765432 +content-type: application/json { "@odata.type": "#microsoft.graph.windowsUpdates.contentApproval", @@ -318,6 +322,7 @@ Approval for content can be revoked by setting the `isRevoked` property of the [ ```msgraph-interactive PATCH https://graph.microsoft.com/beta/admin/windows/updates/updatePolicies/9011c330-1234-5678-9abc-def012345678/complianceChanges/c03911a7-9876-5432-10ab-cdef98765432 +content-type: application/json { "@odata.type": "#microsoft.graph.windowsUpdates.contentApproval", From 83d447b7a0416ec4b6315bcbc86fefb86c50d5be Mon Sep 17 00:00:00 2001 From: Vinay Pamnani <37223378+vinaypamnani-msft@users.noreply.github.com> Date: Fri, 10 Feb 2023 16:14:21 -0500 Subject: [PATCH 77/92] Update deployment-service-expedited-updates.md --- .../deployment/update/deployment-service-expedited-updates.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/windows/deployment/update/deployment-service-expedited-updates.md b/windows/deployment/update/deployment-service-expedited-updates.md index f67447f315..68c6abfee9 100644 --- a/windows/deployment/update/deployment-service-expedited-updates.md +++ b/windows/deployment/update/deployment-service-expedited-updates.md @@ -79,6 +79,7 @@ When creating a deployment, there are [multiple options](/graph/api/resources/wi ```msgraph-interactive POST https://graph.microsoft.com/beta/admin/windows/updates/deployments +content-type: application/json { "@odata.type": "#microsoft.graph.windowsUpdates.deployment", @@ -157,6 +158,7 @@ The following example adds two devices to the deployment audience using the **Az ```msgraph-interactive POST https://graph.microsoft.com/beta/admin/windows/updates/deploymentAudiences/d39ad1ce-0123-4567-89ab-cdef01234567/updateAudience +content-type: application/json { "addMembers": [ @@ -180,6 +182,7 @@ The following example pauses the deployment with a **Deployment ID** of `de910e1 ```msgraph-interactive PATCH https://graph.microsoft.com/beta/admin/windows/updates/deployments/de910e12-3456-7890-abcd-ef1234567890 +content-type: application/json { "@odata.type": "#microsoft.graph.windowsUpdates.deployment", From 44c7f67f56045295c351b0afbba129ca7bfdd746 Mon Sep 17 00:00:00 2001 From: Vinay Pamnani <37223378+vinaypamnani-msft@users.noreply.github.com> Date: Fri, 10 Feb 2023 16:15:09 -0500 Subject: [PATCH 78/92] Update deployment-service-feature-updates.md --- .../deployment/update/deployment-service-feature-updates.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/windows/deployment/update/deployment-service-feature-updates.md b/windows/deployment/update/deployment-service-feature-updates.md index 3df265d48a..18903a0866 100644 --- a/windows/deployment/update/deployment-service-feature-updates.md +++ b/windows/deployment/update/deployment-service-feature-updates.md @@ -99,6 +99,7 @@ When creating a deployment for a feature update, there are multiple options avai ```msgraph-interactive POST https://graph.microsoft.com/beta/admin/windows/updates/deployments +content-type: application/json { "content": { @@ -195,6 +196,7 @@ To [update deployment](/graph/api/windowsupdates-deployment-update), PATCH the d ```msgraph-interactive PATCH https://graph.microsoft.com/beta/admin/windows/updates/deployments/de910e12-3456-7890-abcd-ef1234567890 +content-type: application/json { "settings": { @@ -225,7 +227,8 @@ The **Audience ID**, `d39ad1ce-0123-4567-89ab-cdef01234567`, was created when th The following example adds three devices to the deployment audience using the **Azure AD ID** for each device: ```msgraph-interactive - POST https://graph.microsoft.com/beta/admin/windows/updates/deploymentAudiences/d39ad1ce-0123-4567-89ab-cdef01234567/updateAudience + POST https://graph.microsoft.com/beta/admin/windows/updates/deploymentAudiences/d39ad1ce-0123-4567-89ab-cdef01234567/updateAudience + content-type: application/json { "addMembers": [ @@ -254,6 +257,7 @@ The following example pauses the deployment with a **Deployment ID** of `de910e1 ```msgraph-interactive PATCH https://graph.microsoft.com/beta/admin/windows/updates/deployments/de910e12-3456-7890-abcd-ef1234567890 +content-type: application/json { "@odata.type": "#microsoft.graph.windowsUpdates.deployment", From 2d359674b85362270bd1349c28203efab1445b5d Mon Sep 17 00:00:00 2001 From: Meghan Stewart <33289333+mestew@users.noreply.github.com> Date: Fri, 10 Feb 2023 14:09:36 -0800 Subject: [PATCH 79/92] overview and prereq edits --- windows/deployment/TOC.yml | 2 - .../update/deployment-service-overview.md | 80 +++++++------------ .../deployment-service-prerequisites.md | 14 ++++ 3 files changed, 44 insertions(+), 52 deletions(-) diff --git a/windows/deployment/TOC.yml b/windows/deployment/TOC.yml index 5cfad130d2..33cdd09baf 100644 --- a/windows/deployment/TOC.yml +++ b/windows/deployment/TOC.yml @@ -186,8 +186,6 @@ href: update/deployment-service-expedited-updates.md - name: Deploy driver and firmware updates using Graph Explorer href: update/deployment-service-drivers.md - - name: Deploy expedited updates using Intune - href: /mem/intune/protect/windows-10-expedite-updates?toc=/windows/deployment/toc.json&bc=/windows/deployment/breadcrumb/toc.json - name: Troubleshoot Windows Update for Business deployment service href: update/deployment-service-troubleshoot.md - name: Monitor diff --git a/windows/deployment/update/deployment-service-overview.md b/windows/deployment/update/deployment-service-overview.md index 63b1f2a464..3ca8833c0b 100644 --- a/windows/deployment/update/deployment-service-overview.md +++ b/windows/deployment/update/deployment-service-overview.md @@ -23,31 +23,23 @@ Windows Update for Business product family has three elements: - [Windows Update for Business reports](wufb-reports-overview.md) to monitor update deployment - Deployment service APIs to approve and schedule specific updates for deployment, which are available through the Microsoft Graph and associated SDKs (including PowerShell) -## How the deployment service works - -With most update management solutions, usually update policies are set on the client itself using either registry edits, Group Policy, or an MDM solution that leverages CSPs. This means that the end user experience and deployment settings for updates are ultimately determined by the individual device settings. However, with Windows Update for Business deployment service, the service is the central point of control for update deployment behavior. Because the deployment service is directly integrated into Windows Update, once the admin defines the update deployment behavior, Windows Update is already aware of the how the device should be directed to install when a device scans - -the service ensures that the update is delivered to the device in the defined manner. - The deployment service complements existing Windows Update for Business capabilities, including existing device policies and [Windows Update for Business reports](wufb-reports-overview.md). -:::image type="content" source="media/7512398-deployment-service-overview.png" alt-text="Diagram displaying the three elements that are parts of the Windows Update for Business family. "::: +:::image type="content" source="media/7512398-deployment-service-overview.png" alt-text="Diagram displaying the three elements that are parts of the Windows Update for Business family."::: -Windows Update for Business comprises three elements: -- Client policy to govern update experiences and timing which are available through Group Policy and CSPs -- Deployment service APIs to approve and schedule specific updates which are available through the Microsoft Graph and associated SDKs (including PowerShell) -- Windows Update for Business reports to monitor update deployment +## How the deployment service works -Unlike existing client policy, the deployment service doesn't interact with devices directly. The service is native to the cloud and all operations take place between various Microsoft services. It creates a direct communication channel between a management tool (including scripting tools such as Windows PowerShell) and the Windows Update service so that the approval and offering of content can be directly controlled by an IT Pro. +With most update management solutions, usually update policies are set on the client itself using either registry edits, Group Policy, or an MDM solution that leverages CSPs. This means that the end user experience and deployment settings for updates are ultimately determined by the individual device settings. However, with Windows Update for Business deployment service, the service is the central point of control for update deployment behavior. Because the deployment service is directly integrated with Windows Update, once the admin defines the update deployment behavior, Windows Update is already aware of the how the device should be directed to install updates when a device scans for updates. The deployment service creates a direct communication channel between a management tool (including scripting tools such as Windows PowerShell) and the Windows Update service so that the approval and offering of content can be directly controlled by an admin. -:::image type="content" source="media/wufbds-interaction-small.png" alt-text="Process described in following text."::: Using the deployment service typically follows a common pattern: -1. IT Pro uses a management tool to select devices and approve content to be deployed. This tool could be PowerShell, a Microsoft Graph app or a more complete management solution such as Microsoft Intune. -2. The chosen tool conveys your approval, scheduling, and device selection information to the deployment service. +1. An admin uses a management tool to select devices and approve content to be deployed. This tool could be PowerShell, a Microsoft Graph app or a more complete management solution such as Microsoft Intune. +2. The chosen management tool conveys your approval, scheduling, and device selection information to the deployment service. 3. The deployment service processes the content approval and compares it with previously approved content. Final update applicability is determined and conveyed to Windows Update, which then offers approved content to devices on their next check for updates. -The deployment service exposes these capabilities through Microsoft [Graph REST APIs](/graph/overview). You can call the APIs directly, through a Graph SDK, or integrate them with a management tool such as Microsoft Intune. + :::image type="content" source="media/wufbds-interaction-small.png" alt-text="Diagram displaying "::: + +The deployment service exposes these capabilities through Microsoft [Graph REST APIs](/graph/overview). You can call the APIs directly, through a Graph SDK, or integrate them with a management tool such as [Microsoft Intune](mem/intune). ## Capabilities of the Windows Update for Business deployment service @@ -60,7 +52,7 @@ The deployment service is designed for IT Pros who are looking for more control - **Expedite**: Bypass the configured Windows Update for Business policies to immediately deploy a security update across the organization - **Safeguard holds**: Automatically holds the deployment for devices that may be impacted by an update issue identified by Microsoft machine-learning algorithms -Certain capabilities are available for specific update classifications: +Certain capabilities are available for specific update classifications: |Capabilities | Quality updates | Feature updates | Drivers and firmware| |---|---|---|---| @@ -70,30 +62,6 @@ Certain capabilities are available for specific update classifications: |Safeguard holds| | Yes | | - - - - -## Getting started - -To use the deployment service, you use a management tool built on the platform, script common actions using PowerShell, or build your own application. - -### Using Microsoft Intune - -Intune integrates with the deployment service to provide Windows client update management capabilities. For more information, see [Feature updates for Windows 10 and later policy in Intune](/mem/intune/protect/windows-10-feature-updates). - -### Scripting common actions using PowerShell - -The Microsoft Graph SDK includes a PowerShell extension that you can use to script and automate common update actions. For more information, see [Get started with the Microsoft Graph PowerShell SDK](/graph/powershell/get-started). - -### Building your own application - -Microsoft Graph makes deployment service APIs available through. Get started with these learning paths: -- Learning path: [Microsoft Graph Fundamentals](/training/paths/m365-msgraph-fundamentals/) -- Learning path: [Build apps with Microsoft Graph](/training/paths/m365-msgraph-associate/) - -Once you're familiar with Microsoft Graph development, see [Windows updates API overview in Microsoft Graph](/graph/windowsupdates-concept-overview) for more. - ## Deployment protections The deployment service protects deployments through a combination of rollout controls and machine-learning algorithms that monitor deployments and react to issues during the rollout. @@ -120,25 +88,37 @@ To verify whether a device is affected by a safeguard hold, see [Am I affected b ### Monitoring deployments to detect rollback issues During deployments of Windows 11 or Windows 10 feature updates, driver combinations can sometimes result in an unexpected update failure that makes the device revert to the previously installed operating system version. The deployment service can monitor devices for such issues and automatically pause deployments when this happens, giving you time to detect and mitigate issues. +## Getting started with the deployment service +To use the deployment service, you use a management tool built on the platform, script common actions using PowerShell, or build your own application. -## Best practices -Follow these suggestions for the best results with the service. +### Using Microsoft Intune -### Device onboarding +Microsoft Intune integrates with the deployment service to provide Windows client update management capabilities. For more information, see: -- Wait until devices finish provisioning before managing with the service. If a device is being provisioned by Autopilot, it can only be managed by the deployment service after it finishes provisioning (typically one day). +- [Feature updates for Windows 10 and later policy in Intune](/mem/intune/protect/windows-10-feature-updates) +- [Expedite Windows quality updates in Microsoft Intune](/mem/intune/protect/windows-10-expedite-updates) -- Use the deployment service for feature update management without feature update deferral policy. If you want to use the deployment service to manage feature updates on a device that previously used a feature update deferral policy, it's best to set the feature update deferral policy to **0** days to avoid having multiple conditions governing feature updates. You should only change the feature update deferral policy value to 0 days after you've confirmed that the device was enrolled in the service with no errors. +### Scripting common actions using PowerShell -### General +The Microsoft Graph SDK includes a PowerShell extension that you can use to script and automate common update actions. For more information, see [Get started with the Microsoft Graph PowerShell SDK](/graph/powershell/get-started). -Avoid using different channels to manage the same resources. If you use Microsoft Intune along with Microsoft Graph APIs or PowerShell, aspects of resources (such as devices, deployments, updatable asset groups) might be overwritten if you use both channels to manage the same resources. Instead, only manage each resource through the channel that created it. +### Building your own application + +Microsoft Graph makes deployment service APIs available through. Get started with these learning paths: +- Learning path: [Microsoft Graph Fundamentals](/training/paths/m365-msgraph-fundamentals/) +- Learning path: [Build apps with Microsoft Graph](/training/paths/m365-msgraph-associate/) + +Once you're familiar with Microsoft Graph development, see [Windows updates API overview in Microsoft Graph](/graph/windowsupdates-concept-overview) for more. ## Next steps -To learn more about the deployment service, try the following: +To learn more about the deployment service, see: -- [Feature updates for Windows 10 and later policy in Intune](/mem/intune/protect/windows-10-feature-updates) +- [Prerequisites for Windows Update for Business deployment service](deployment-service-prerequisites.md) +- [Deploy feature updates using Graph Explorer](deployment-service-feature-updates.md) +- [Deploy expedited updates using Graph Explorer](deployment-service-expedited-updates.md) +- [Deploy driver and firmware updates using Graph Explorer](deployment-service-drivers.md) - [Windows updates API overview in Microsoft Graph](/graph/windowsupdates-concept-overview) + diff --git a/windows/deployment/update/deployment-service-prerequisites.md b/windows/deployment/update/deployment-service-prerequisites.md index dd5f8f8234..413fb6d586 100644 --- a/windows/deployment/update/deployment-service-prerequisites.md +++ b/windows/deployment/update/deployment-service-prerequisites.md @@ -63,3 +63,17 @@ Deployment scheduling controls are always available. However, to take advantage [!INCLUDE [Windows Update for Business deployment service limitations](./includes/wufb-deployment-limitations.md)] + + +## Best practices +Follow these suggestions for the best results with the service. + +### Device onboarding + +- Wait until devices finish provisioning before managing with the service. If a device is being provisioned by Autopilot, it can only be managed by the deployment service after it finishes provisioning (typically one day). + +- Use the deployment service for feature update management without feature update deferral policy. If you want to use the deployment service to manage feature updates on a device that previously used a feature update deferral policy, it's best to set the feature update deferral policy to **0** days to avoid having multiple conditions governing feature updates. You should only change the feature update deferral policy value to 0 days after you've confirmed that the device was enrolled in the service with no errors. + +### General + +Avoid using different channels to manage the same resources. If you use Microsoft Intune along with Microsoft Graph APIs or PowerShell, aspects of resources (such as devices, deployments, updatable asset groups) might be overwritten if you use both channels to manage the same resources. Instead, only manage each resource through the channel that created it. \ No newline at end of file From f32a2b45e067821c67a3620a6f66b95f1ba7407f Mon Sep 17 00:00:00 2001 From: Meghan Stewart <33289333+mestew@users.noreply.github.com> Date: Fri, 10 Feb 2023 15:42:52 -0800 Subject: [PATCH 80/92] overview and prereq edits --- .../update/deployment-service-drivers.md | 2 +- .../deployment-service-expedited-updates.md | 2 +- .../deployment-service-feature-updates.md | 2 +- .../update/deployment-service-overview.md | 28 +++++++------ .../deployment-service-prerequisites.md | 42 +++++++++++++++---- .../update/deployment-service-troubleshoot.md | 5 +++ 6 files changed, 58 insertions(+), 23 deletions(-) diff --git a/windows/deployment/update/deployment-service-drivers.md b/windows/deployment/update/deployment-service-drivers.md index 1310226a09..637e1711d3 100644 --- a/windows/deployment/update/deployment-service-drivers.md +++ b/windows/deployment/update/deployment-service-drivers.md @@ -32,7 +32,7 @@ This article uses [Graph Explorer](/graph/graph-explorer/graph-explorer-overview ## Prerequisites -All of the [prerequisites for the Windows Update for Business deployment service](deployment-service-overview.md#prerequisites) must be met. +All of the [prerequisites for the Windows Update for Business deployment service](deployment-service-prerequisites.md) must be met. ### Permissions diff --git a/windows/deployment/update/deployment-service-expedited-updates.md b/windows/deployment/update/deployment-service-expedited-updates.md index 68c6abfee9..bf265fead9 100644 --- a/windows/deployment/update/deployment-service-expedited-updates.md +++ b/windows/deployment/update/deployment-service-expedited-updates.md @@ -28,7 +28,7 @@ In this article, you will: ## Prerequisites -All of the [prerequisites for the Windows Update for Business deployment service](deployment-service-overview.md#prerequisites) must be met. +All of the [prerequisites for the Windows Update for Business deployment service](deployment-service-prerequisites.md) must be met. ### Permissions diff --git a/windows/deployment/update/deployment-service-feature-updates.md b/windows/deployment/update/deployment-service-feature-updates.md index 18903a0866..87f4c2e0a2 100644 --- a/windows/deployment/update/deployment-service-feature-updates.md +++ b/windows/deployment/update/deployment-service-feature-updates.md @@ -33,7 +33,7 @@ In this article, you will: ## Prerequisites -All of the [prerequisites for the Windows Update for Business deployment service](deployment-service-overview.md#prerequisites) must be met. +All of the [prerequisites for the Windows Update for Business deployment service](deployment-service-prerequisites.md) must be met. ### Permissions diff --git a/windows/deployment/update/deployment-service-overview.md b/windows/deployment/update/deployment-service-overview.md index 3ca8833c0b..845d790090 100644 --- a/windows/deployment/update/deployment-service-overview.md +++ b/windows/deployment/update/deployment-service-overview.md @@ -23,7 +23,7 @@ Windows Update for Business product family has three elements: - [Windows Update for Business reports](wufb-reports-overview.md) to monitor update deployment - Deployment service APIs to approve and schedule specific updates for deployment, which are available through the Microsoft Graph and associated SDKs (including PowerShell) -The deployment service complements existing Windows Update for Business capabilities, including existing device policies and [Windows Update for Business reports](wufb-reports-overview.md). +The deployment service complements existing Windows Update for Business capabilities, including existing device policies and the[Windows Update for Business reports workbook](wufb-reports-workbook.md). :::image type="content" source="media/7512398-deployment-service-overview.png" alt-text="Diagram displaying the three elements that are parts of the Windows Update for Business family."::: @@ -54,7 +54,7 @@ The deployment service is designed for IT Pros who are looking for more control Certain capabilities are available for specific update classifications: -|Capabilities | Quality updates | Feature updates | Drivers and firmware| +|Capabilities | [Quality updates](deployment-service-expedited-updates.md) | [Feature updates](deployment-service-feature-updates.md) | [Drivers and firmware](deployment-service-drivers.md)| |---|---|---|---| |Approval and scheduling | | Yes | Yes | |Gradual rollout | | Yes | Yes | @@ -66,7 +66,7 @@ Certain capabilities are available for specific update classifications: The deployment service protects deployments through a combination of rollout controls and machine-learning algorithms that monitor deployments and react to issues during the rollout. -### Schedule rollouts with automatic piloting +### Gradual rollout The deployment service allows any update to be deployed over a period of days or weeks. Once an update has been scheduled, the deployment service optimizes the deployment based on the scheduling parameters and unique attributes spanning the devices being updated. The service follows these steps: @@ -75,24 +75,28 @@ The deployment service allows any update to be deployed over a period of days or 3. Start deploying to earlier waves to build coverage of device attributes present in the population. 4. Continue deploying at a uniform rate until all waves are complete and all devices are updated. -This built-in piloting capability complements your existing ring structure and provides another support for reducing and managing risk during an update. Unlike tools such as Desktop Analytics, this capability is intended to operate within each ring. The deployment service doesn't provide a workflow for creating rings themselves. - -You should continue to use deployment rings as part of the servicing strategy for your organization, but use gradual rollouts to add scheduling convenience and other protections within each ring. +This built-in piloting capability complements your existing [deployment ring](waas-quick-start.md) structure and provides another support for reducing and managing risk during an update. This capability is intended to operate within each ring. The deployment service doesn't provide a workflow for creating rings themselves. Continue to use deployment rings as part of the servicing strategy for your organization, but use gradual rollouts to add scheduling convenience and other protections within each ring. ### Safeguard holds against likely and known issues -Microsoft uses [safeguard holds](/windows/deployment/update/safeguard-holds) to protect devices from encountering known quality or compatibility issues by preventing them from installing the update or upgrade. For Windows 11 deployments, the deployment service extends these safeguard holds to also protect devices that Microsoft identifies as being at a higher risk of experiencing problems after an update (such as operating system rollbacks, app crashes, or graphics issues). The service temporarily holds the deployment for these devices while Microsoft investigates the likely issue. Safeguard holds apply to deployments by default, but you can opt out. - -To verify whether a device is affected by a safeguard hold, see [Am I affected by a safeguard hold?](/windows/deployment/update/safeguard-holds#am-i-affected-by-a-safeguard-hold) +Microsoft uses [safeguard holds](/windows/deployment/update/safeguard-holds) to protect devices from encountering known quality or compatibility issues by preventing them from installing the update or upgrade. For Windows 11 deployments, the deployment service extends these safeguard holds to also protect devices that Microsoft identifies as being at a higher risk of experiencing problems after an update (such as operating system rollbacks, app crashes, or graphics issues). The service temporarily holds the deployment for these devices while Microsoft investigates the likely issue. Safeguard holds apply to deployments by default, but you can opt out. To verify whether a device is affected by a safeguard hold, see [Am I affected by a safeguard hold?](/windows/deployment/update/safeguard-holds#am-i-affected-by-a-safeguard-hold). ### Monitoring deployments to detect rollback issues During deployments of Windows 11 or Windows 10 feature updates, driver combinations can sometimes result in an unexpected update failure that makes the device revert to the previously installed operating system version. The deployment service can monitor devices for such issues and automatically pause deployments when this happens, giving you time to detect and mitigate issues. -## Getting started with the deployment service -To use the deployment service, you use a management tool built on the platform, script common actions using PowerShell, or build your own application. +## Get started with the deployment service -### Using Microsoft Intune +To use the deployment service, you use a management tool built on the platform like Microsoft Intune, script common actions using PowerShell, or build your own application. + +To learn more about the deployment service, see: + +- [Prerequisites for Windows Update for Business deployment service](deployment-service-prerequisites.md) +- [Deploy feature updates using Graph Explorer](deployment-service-feature-updates.md) +- [Deploy expedited updates using Graph Explorer](deployment-service-expedited-updates.md) +- [Deploy driver and firmware updates using Graph Explorer](deployment-service-drivers.md) + +### Use Microsoft Intune Microsoft Intune integrates with the deployment service to provide Windows client update management capabilities. For more information, see: diff --git a/windows/deployment/update/deployment-service-prerequisites.md b/windows/deployment/update/deployment-service-prerequisites.md index 413fb6d586..92b47b1741 100644 --- a/windows/deployment/update/deployment-service-prerequisites.md +++ b/windows/deployment/update/deployment-service-prerequisites.md @@ -38,12 +38,21 @@ Windows Update for Business deployment service requires users of the devices to - Windows 11 Professional, Education, Enterprise, Pro Education, or Pro for Workstations editions - Windows 10 Professional, Education, Enterprise, Pro Education, or Pro for Workstations editions -## Windows client servicing channels +### Windows operating system updates + +- Expediting updates requires the *Update Health Tools* on the clients. The tools are are installed starting with [KB 4023057](https://support.microsoft.com/topic/kb4023057-update-for-windows-10-update-service-components-fccad0ca-dc10-2e46-9ed1-7e392450fb3a). To confirm the presence of the Update Health Tools on a device: + - Look for the folder **C:\Program Files\Microsoft Update Health Tools** or review *Add Remove Programs* for **Microsoft Update Health Tools**. + - As an Admin, run the following PowerShell script: `Get-WmiObject -Class Win32_Product | Where-Object {$_.Name -match "Microsoft Update Health Tools"}` + +- Installing the 2023-02 Cumulative Update is highly recommended to take advantage of [Changes to Windows diagnostic data collection](/windows/privacy/changes-to-windows-diagnostic-data-collection#services-that-rely-on-enhanced-diagnostic-data). + +- ## Windows client servicing channels Windows Update for Business deployment service supports Windows client devices on the following channels: - General Availability Channel + ## Diagnostic data requirements Deployment scheduling controls are always available. However, to take advantage of the unique deployment protections tailored to your population and to [deploy driver updates](deployment-service-drivers.md), devices must share diagnostic data with Microsoft. At minimum, the deployment service requires devices to send [diagnostic data](/windows/privacy/configure-windows-diagnostic-data-in-your-organization#diagnostic-data-settings) at the *Required* level (previously called *Basic*) for these features. Some options for the deployment service require devices to send diagnostic data at the following levels: @@ -59,21 +68,38 @@ Deployment scheduling controls are always available. However, to take advantage > [!NOTE] > Leveraging other parts of the Graph API might require additional permissions. For example, to display [device](/graph/api/resources/device) information, a minimum of [Device.Read.All](/graph/permissions-reference#device-permissions) permission is needed. +## Required endpoints + +- Have access to the following endpoints: + +- [Windows Update endpoints](/windows/privacy/manage-windows-1809-endpoints#windows-update) + - *.prod.do.dsp.mp.microsoft.com + - *.windowsupdate.com + - *.dl.delivery.mp.microsoft.com + - *.update.microsoft.com + - *.delivery.mp.microsoft.com + - tsfe.trafficshaping.dsp.mp.microsoft.com +- Windows Update for Business deployment service endpoints + + - devicelistenerprod.microsoft.com + - login.windows.net + - payloadprod*.blob.core.windows.net + +- [Windows Push Notification Services](/windows/uwp/design/shell/tiles-and-notifications/firewall-allowlist-config): *(Recommended, but not required. Without this access, devices might not expedite updates until their next daily check for updates.)* + - *.notify.windows.com + + ## Limitations [!INCLUDE [Windows Update for Business deployment service limitations](./includes/wufb-deployment-limitations.md)] +## General tips for the deployment service -## Best practices -Follow these suggestions for the best results with the service. - -### Device onboarding +Follow these suggestions for the best results with the service: - Wait until devices finish provisioning before managing with the service. If a device is being provisioned by Autopilot, it can only be managed by the deployment service after it finishes provisioning (typically one day). - Use the deployment service for feature update management without feature update deferral policy. If you want to use the deployment service to manage feature updates on a device that previously used a feature update deferral policy, it's best to set the feature update deferral policy to **0** days to avoid having multiple conditions governing feature updates. You should only change the feature update deferral policy value to 0 days after you've confirmed that the device was enrolled in the service with no errors. -### General - -Avoid using different channels to manage the same resources. If you use Microsoft Intune along with Microsoft Graph APIs or PowerShell, aspects of resources (such as devices, deployments, updatable asset groups) might be overwritten if you use both channels to manage the same resources. Instead, only manage each resource through the channel that created it. \ No newline at end of file +- Avoid using different channels to manage the same resources. If you use Microsoft Intune along with Microsoft Graph APIs or PowerShell, aspects of resources (such as devices, deployments, updatable asset groups) might be overwritten if you use both channels to manage the same resources. Instead, only manage each resource through the channel that created it. diff --git a/windows/deployment/update/deployment-service-troubleshoot.md b/windows/deployment/update/deployment-service-troubleshoot.md index e97748686c..98a82ac2dc 100644 --- a/windows/deployment/update/deployment-service-troubleshoot.md +++ b/windows/deployment/update/deployment-service-troubleshoot.md @@ -19,6 +19,11 @@ ms.date: 12/31/2017 This troubleshooting guide addresses the most common issues that IT administrators face when using the Windows Update for Business [deployment service](deployment-service-overview.md). For a general troubleshooting guide for Windows Update, see [Windows Update troubleshooting](/troubleshoot/windows-client/deployment/windows-update-issues-troubleshooting?toc=/windows/deployment/toc.json&bc=/windows/deployment/breadcrumb/toc.json). + +## General tips for the deployment service + + + ## The device isn't receiving an update that I deployed - Check that the device doesn't have updates of the relevant category paused. See [Pause feature updates](waas-configure-wufb.md#pause-feature-updates) and [Pause quality updates](waas-configure-wufb.md#pause-quality-updates). From 1619af189b161664f912b681ad153fb396238f0d Mon Sep 17 00:00:00 2001 From: Meghan Stewart <33289333+mestew@users.noreply.github.com> Date: Sat, 11 Feb 2023 14:20:54 -0800 Subject: [PATCH 81/92] overview and prereq edits --- .../update/deployment-service-overview.md | 31 +++++++------------ 1 file changed, 11 insertions(+), 20 deletions(-) diff --git a/windows/deployment/update/deployment-service-overview.md b/windows/deployment/update/deployment-service-overview.md index 845d790090..695eb42728 100644 --- a/windows/deployment/update/deployment-service-overview.md +++ b/windows/deployment/update/deployment-service-overview.md @@ -6,7 +6,7 @@ author: mestew ms.localizationpriority: medium ms.author: mstewart manager: aaroncz -ms.topic: article +ms.topic: overview ms.technology: itpro-updates ms.date: 12/31/2017 --- @@ -29,21 +29,21 @@ The deployment service complements existing Windows Update for Business capabili ## How the deployment service works -With most update management solutions, usually update policies are set on the client itself using either registry edits, Group Policy, or an MDM solution that leverages CSPs. This means that the end user experience and deployment settings for updates are ultimately determined by the individual device settings. However, with Windows Update for Business deployment service, the service is the central point of control for update deployment behavior. Because the deployment service is directly integrated with Windows Update, once the admin defines the update deployment behavior, Windows Update is already aware of the how the device should be directed to install updates when a device scans for updates. The deployment service creates a direct communication channel between a management tool (including scripting tools such as Windows PowerShell) and the Windows Update service so that the approval and offering of content can be directly controlled by an admin. +With most update management solutions, usually update policies are set on the client itself using either registry edits, Group Policy, or an MDM solution that leverages CSPs. This means that the end user experience and deployment settings for updates are ultimately determined by the individual device settings. However, with Windows Update for Business deployment service, the service is the central point of control for update deployment behavior. Because the deployment service is directly integrated with Windows Update, once the admin defines the deployment behavior, Windows Update is already aware of how device should be directed to install updates when the device scans. The deployment service creates a direct communication channel between a management tool (including scripting tools such as Windows PowerShell) and the Windows Update service so that the approval and offering of content can be directly controlled by an admin. Using the deployment service typically follows a common pattern: -1. An admin uses a management tool to select devices and approve content to be deployed. This tool could be PowerShell, a Microsoft Graph app or a more complete management solution such as Microsoft Intune. +1. An admin uses a management tool to select devices and approve content to be deployed. This tool could be PowerShell, a Microsoft Graph app, or a more complete management solution such as Microsoft Intune. 2. The chosen management tool conveys your approval, scheduling, and device selection information to the deployment service. 3. The deployment service processes the content approval and compares it with previously approved content. Final update applicability is determined and conveyed to Windows Update, which then offers approved content to devices on their next check for updates. :::image type="content" source="media/wufbds-interaction-small.png" alt-text="Diagram displaying "::: -The deployment service exposes these capabilities through Microsoft [Graph REST APIs](/graph/overview). You can call the APIs directly, through a Graph SDK, or integrate them with a management tool such as [Microsoft Intune](mem/intune). +The deployment service exposes these capabilities through Microsoft [Graph REST APIs](/graph/overview). You can call the APIs directly, through a Graph SDK, or integrate them with a management tool such as [Microsoft Intune](/mem/intune). ## Capabilities of the Windows Update for Business deployment service -The deployment service is designed for IT Pros who are looking for more control than is provided through deferral policies and deployment rings. The service provides the following capabilities: +The deployment service is designed for IT Pros who are looking for more control than is provided through deferral policies and deployment rings. The service provides the following capabilities for updates: - **Approval and scheduling**: Approve and schedule deployment of updates to start on a specific date - *Example*: Deploy the Windows 11 22H2 feature update to specified devices on February 17, 2023. @@ -57,7 +57,7 @@ Certain capabilities are available for specific update classifications: |Capabilities | [Quality updates](deployment-service-expedited-updates.md) | [Feature updates](deployment-service-feature-updates.md) | [Drivers and firmware](deployment-service-drivers.md)| |---|---|---|---| |Approval and scheduling | | Yes | Yes | -|Gradual rollout | | Yes | Yes | +|Gradual rollout | | Yes | | |Expedite | Yes | | | |Safeguard holds| | Yes | | @@ -79,7 +79,7 @@ This built-in piloting capability complements your existing [deployment ring](wa ### Safeguard holds against likely and known issues -Microsoft uses [safeguard holds](/windows/deployment/update/safeguard-holds) to protect devices from encountering known quality or compatibility issues by preventing them from installing the update or upgrade. For Windows 11 deployments, the deployment service extends these safeguard holds to also protect devices that Microsoft identifies as being at a higher risk of experiencing problems after an update (such as operating system rollbacks, app crashes, or graphics issues). The service temporarily holds the deployment for these devices while Microsoft investigates the likely issue. Safeguard holds apply to deployments by default, but you can opt out. To verify whether a device is affected by a safeguard hold, see [Am I affected by a safeguard hold?](/windows/deployment/update/safeguard-holds#am-i-affected-by-a-safeguard-hold). +Microsoft uses [safeguard holds](/windows/deployment/update/safeguard-holds) to protect devices from encountering known quality or compatibility issues by preventing them from installing the update or upgrade. For Windows 11 deployments, the deployment service also extends safeguard holds to protect devices that Microsoft identifies as being at a higher risk of experiencing problems after an update (such as operating system rollbacks, app crashes, or graphics issues). The service temporarily holds the deployment for these devices while Microsoft investigates the likely issue. Safeguard holds apply to deployments by default, but you can opt out. To verify whether a device is affected by a safeguard hold, see [Am I affected by a safeguard hold?](/windows/deployment/update/safeguard-holds#am-i-affected-by-a-safeguard-hold). ### Monitoring deployments to detect rollback issues @@ -89,7 +89,7 @@ During deployments of Windows 11 or Windows 10 feature updates, driver combinati To use the deployment service, you use a management tool built on the platform like Microsoft Intune, script common actions using PowerShell, or build your own application. -To learn more about the deployment service, see: +To learn more about the deployment service and the deployment process, see: - [Prerequisites for Windows Update for Business deployment service](deployment-service-prerequisites.md) - [Deploy feature updates using Graph Explorer](deployment-service-feature-updates.md) @@ -109,20 +109,11 @@ The Microsoft Graph SDK includes a PowerShell extension that you can use to scri ### Building your own application -Microsoft Graph makes deployment service APIs available through. Get started with these learning paths: +Microsoft Graph makes deployment service APIs available through. Get started with the resources below: + - Learning path: [Microsoft Graph Fundamentals](/training/paths/m365-msgraph-fundamentals/) - Learning path: [Build apps with Microsoft Graph](/training/paths/m365-msgraph-associate/) -Once you're familiar with Microsoft Graph development, see [Windows updates API overview in Microsoft Graph](/graph/windowsupdates-concept-overview) for more. - - -## Next steps - -To learn more about the deployment service, see: - -- [Prerequisites for Windows Update for Business deployment service](deployment-service-prerequisites.md) -- [Deploy feature updates using Graph Explorer](deployment-service-feature-updates.md) -- [Deploy expedited updates using Graph Explorer](deployment-service-expedited-updates.md) -- [Deploy driver and firmware updates using Graph Explorer](deployment-service-drivers.md) +- Windows Update for Business deployment service [sample driver deployment application](https://github.com/microsoftgraph/windowsupdates-webapplication-sample) on GitHub https://github.com/microsoftgraph/windowsupdates-webapplication-sample - [Windows updates API overview in Microsoft Graph](/graph/windowsupdates-concept-overview) From 0c53642f8642aa2b7969c27c550b6b4406e6d6d5 Mon Sep 17 00:00:00 2001 From: Meghan Stewart <33289333+mestew@users.noreply.github.com> Date: Sat, 11 Feb 2023 15:18:51 -0800 Subject: [PATCH 82/92] overview and prereq edits --- .../deployment-service-prerequisites.md | 17 ++++----- .../update/deployment-service-troubleshoot.md | 35 ++++++++++++++++--- 2 files changed, 37 insertions(+), 15 deletions(-) diff --git a/windows/deployment/update/deployment-service-prerequisites.md b/windows/deployment/update/deployment-service-prerequisites.md index 92b47b1741..b81095e0c7 100644 --- a/windows/deployment/update/deployment-service-prerequisites.md +++ b/windows/deployment/update/deployment-service-prerequisites.md @@ -33,29 +33,26 @@ Windows Update for Business deployment service requires users of the devices to - Windows Virtual Desktop Access E3 or E5 - Microsoft 365 Business Premium -## Operating systems and editions +## Operating systems, editions, and channels - Windows 11 Professional, Education, Enterprise, Pro Education, or Pro for Workstations editions - Windows 10 Professional, Education, Enterprise, Pro Education, or Pro for Workstations editions +Windows Update for Business deployment service supports Windows client devices on the **General Availability Channel**. + ### Windows operating system updates - Expediting updates requires the *Update Health Tools* on the clients. The tools are are installed starting with [KB 4023057](https://support.microsoft.com/topic/kb4023057-update-for-windows-10-update-service-components-fccad0ca-dc10-2e46-9ed1-7e392450fb3a). To confirm the presence of the Update Health Tools on a device: - Look for the folder **C:\Program Files\Microsoft Update Health Tools** or review *Add Remove Programs* for **Microsoft Update Health Tools**. - As an Admin, run the following PowerShell script: `Get-WmiObject -Class Win32_Product | Where-Object {$_.Name -match "Microsoft Update Health Tools"}` -- Installing the 2023-02 Cumulative Update is highly recommended to take advantage of [Changes to Windows diagnostic data collection](/windows/privacy/changes-to-windows-diagnostic-data-collection#services-that-rely-on-enhanced-diagnostic-data). - -- ## Windows client servicing channels - -Windows Update for Business deployment service supports Windows client devices on the following channels: - -- General Availability Channel - +- To take advantage of [Changes to Windows diagnostic data collection](/windows/privacy/changes-to-windows-diagnostic-data-collection#services-that-rely-on-enhanced-diagnostic-data), installing the 2023-02 Cumulative Update on the clients is recommended. ## Diagnostic data requirements -Deployment scheduling controls are always available. However, to take advantage of the unique deployment protections tailored to your population and to [deploy driver updates](deployment-service-drivers.md), devices must share diagnostic data with Microsoft. At minimum, the deployment service requires devices to send [diagnostic data](/windows/privacy/configure-windows-diagnostic-data-in-your-organization#diagnostic-data-settings) at the *Required* level (previously called *Basic*) for these features. Some options for the deployment service require devices to send diagnostic data at the following levels: +Deployment scheduling controls are always available. However, to take advantage of the unique deployment protections tailored to your population and to [deploy driver updates](deployment-service-drivers.md), devices must share diagnostic data with Microsoft. For these features, At minimum, the deployment service requires devices to send [diagnostic data](/windows/privacy/configure-windows-diagnostic-data-in-your-organization#diagnostic-data-settings) at the *Required* level (previously called *Basic*) for these features. + +Some options for the deployment service require devices to send diagnostic data at the following levels: - *Optional* level (previously *Full*) for Windows 11 devices - *Enhanced* level for Windows 10 devices diff --git a/windows/deployment/update/deployment-service-troubleshoot.md b/windows/deployment/update/deployment-service-troubleshoot.md index 98a82ac2dc..272538a56c 100644 --- a/windows/deployment/update/deployment-service-troubleshoot.md +++ b/windows/deployment/update/deployment-service-troubleshoot.md @@ -19,11 +19,6 @@ ms.date: 12/31/2017 This troubleshooting guide addresses the most common issues that IT administrators face when using the Windows Update for Business [deployment service](deployment-service-overview.md). For a general troubleshooting guide for Windows Update, see [Windows Update troubleshooting](/troubleshoot/windows-client/deployment/windows-update-issues-troubleshooting?toc=/windows/deployment/toc.json&bc=/windows/deployment/breadcrumb/toc.json). - -## General tips for the deployment service - - - ## The device isn't receiving an update that I deployed - Check that the device doesn't have updates of the relevant category paused. See [Pause feature updates](waas-configure-wufb.md#pause-feature-updates) and [Pause quality updates](waas-configure-wufb.md#pause-quality-updates). @@ -37,3 +32,33 @@ This troubleshooting guide addresses the most common issues that IT administrato - Check that the device is scanning the Windows Update service and not a different endpoint. If the device is scanning for updates from a WSUS endpoint, for example, it might receive different updates. To learn more about scanning for updates, see [Scanning updates](how-windows-update-works.md#scanning-updates). - **Feature updates only**: Check that the device is successfully enrolled in feature update management by the deployment service. A device that is not successfully enrolled might receive different updates according to its feature update deferral period, for example. A device that is successfully enrolled will be represented by an Azure AD device resource with an update management enrollment for feature updates and have no Azure AD device registration errors. + +### The device installed a newer update then the expedited update I deployed + +There are some scenarios when a deployment to expedite an update results in the installation of a more recent update than specified in policy. This result occurs when the newer update includes and surpasses the specified update, and that newer update is available before a device checks in to install the update that's specified in the expedite update policy. + +Installing the most recent quality update reduces disruptions to the device and user while applying the benefits of the intended update. This avoids having to install multiple updates, which each might require separate reboots. + +A more recent update is deployed when the following conditions are met: + +- The device isn't targeted with a deferral policy that blocks installation of a more recent update. In this case, the most recently available update that isn't deferred is the update that might install. + +- During the process to expedite an update, the device runs a new scan that detects the newer update. This can occur due to the timing of: + - When the device restarts to complete installation + - When the device runs its daily scan + - When a new update becomes available + + When a scan identifies a newer update, Windows Update attempts to stop installation of the original update, cancel the restart, and then starts the download and installation of the more recent update. + +While expedite update deployments will override an update deferral for the update version that's specified, they don't override deferrals that are in place for any other update version. + +### Log location for the Update Health Tools + +The Update Health Tools are used when you deploy expedited updates. In some cases, you may wish to review the logs for the Update Health Tools. + +**Log location**: `%ProgramFiles%\Microsoft Update Health Tools\Logs` + +- The logs are in `.etl` format. + - Microsoft offers [PerfView as a download on GitHub](https://github.com/Microsoft/perfview/blob/main/documentation/Downloading.md) which displays etl files. + +For more information, see [Troubleshooting expedited updates](https://techcommunity.microsoft.com/t5/windows-it-pro-blog/troubleshooting-expedited-updates/ba-p/2595615). \ No newline at end of file From 112219efbdc8ace19d67bebb778e2d7bce9799df Mon Sep 17 00:00:00 2001 From: Meghan Stewart <33289333+mestew@users.noreply.github.com> Date: Sat, 11 Feb 2023 15:27:12 -0800 Subject: [PATCH 83/92] overview and prereq edits --- .../update/deployment-service-drivers.md | 2 +- .../deployment-service-expedited-updates.md | 3 +++ .../update/deployment-service-troubleshoot.md | 12 ++--------- ...ufb-deployment-update-health-tools-logs.md | 21 +++++++++++++++++++ 4 files changed, 27 insertions(+), 11 deletions(-) create mode 100644 windows/deployment/update/includes/wufb-deployment-update-health-tools-logs.md diff --git a/windows/deployment/update/deployment-service-drivers.md b/windows/deployment/update/deployment-service-drivers.md index 637e1711d3..19692f9cba 100644 --- a/windows/deployment/update/deployment-service-drivers.md +++ b/windows/deployment/update/deployment-service-drivers.md @@ -114,7 +114,7 @@ To create a policy with additional settings, in the request body: - Define any [deployment settings](/graph/api/resources/windowsupdates-deploymentsettings). - Add the `content-length` header to the request if a status code of 411 occurs. The value should be the length of the request body in bytes. For information on error codes, see [Microsoft Graph error responses and resource types](/graph/errors). - In the following driver update policy example, any deployments created by a content approval will start 7 days after approval and will gradually roll out to 1000 devices per day for **Audience ID** `d39ad1ce-0123-4567-89ab-cdef01234567`: + In the following driver update policy example, any deployments created by a content approval will start 7 days after approval for **Audience ID** `d39ad1ce-0123-4567-89ab-cdef01234567`: ```msgraph-interactive POST https://graph.microsoft.com/beta/admin/windows/updates/updatePolicies diff --git a/windows/deployment/update/deployment-service-expedited-updates.md b/windows/deployment/update/deployment-service-expedited-updates.md index bf265fead9..ae8c818be9 100644 --- a/windows/deployment/update/deployment-service-expedited-updates.md +++ b/windows/deployment/update/deployment-service-expedited-updates.md @@ -192,3 +192,6 @@ content-type: application/json } } ``` + + +[!INCLUDE [Windows Update for Business deployment service permissions using Graph Explorer](./includes/wufb-deployment-update-health-tools-logs.md)] \ No newline at end of file diff --git a/windows/deployment/update/deployment-service-troubleshoot.md b/windows/deployment/update/deployment-service-troubleshoot.md index 272538a56c..de2a896cad 100644 --- a/windows/deployment/update/deployment-service-troubleshoot.md +++ b/windows/deployment/update/deployment-service-troubleshoot.md @@ -52,13 +52,5 @@ A more recent update is deployed when the following conditions are met: While expedite update deployments will override an update deferral for the update version that's specified, they don't override deferrals that are in place for any other update version. -### Log location for the Update Health Tools - -The Update Health Tools are used when you deploy expedited updates. In some cases, you may wish to review the logs for the Update Health Tools. - -**Log location**: `%ProgramFiles%\Microsoft Update Health Tools\Logs` - -- The logs are in `.etl` format. - - Microsoft offers [PerfView as a download on GitHub](https://github.com/Microsoft/perfview/blob/main/documentation/Downloading.md) which displays etl files. - -For more information, see [Troubleshooting expedited updates](https://techcommunity.microsoft.com/t5/windows-it-pro-blog/troubleshooting-expedited-updates/ba-p/2595615). \ No newline at end of file + +[!INCLUDE [Windows Update for Business deployment service permissions using Graph Explorer](./includes/wufb-deployment-update-health-tools-logs.md)] diff --git a/windows/deployment/update/includes/wufb-deployment-update-health-tools-logs.md b/windows/deployment/update/includes/wufb-deployment-update-health-tools-logs.md new file mode 100644 index 0000000000..e627c3c296 --- /dev/null +++ b/windows/deployment/update/includes/wufb-deployment-update-health-tools-logs.md @@ -0,0 +1,21 @@ +--- +author: mestew +ms.author: mstewart +manager: aaroncz +ms.technology: itpro-updates +ms.prod: windows-client +ms.topic: include +ms.date: 02/14/2023 +ms.localizationpriority: medium +--- + +## Log location for the Update Health Tools + +The Update Health Tools are used when you deploy expedited updates. In some cases, you may wish to review the logs for the Update Health Tools. + +**Log location**: `%ProgramFiles%\Microsoft Update Health Tools\Logs` + +- The logs are in `.etl` format. + - Microsoft offers [PerfView as a download on GitHub](https://github.com/Microsoft/perfview/blob/main/documentation/Downloading.md) which displays etl files. + +For more information, see [Troubleshooting expedited updates](https://techcommunity.microsoft.com/t5/windows-it-pro-blog/troubleshooting-expedited-updates/ba-p/2595615). \ No newline at end of file From de440e7ddbf9aab349d792cee9e1638ae8f0889e Mon Sep 17 00:00:00 2001 From: Meghan Stewart <33289333+mestew@users.noreply.github.com> Date: Sat, 11 Feb 2023 15:29:12 -0800 Subject: [PATCH 84/92] overview and prereq edits --- .../update/includes/wufb-deployment-update-health-tools-logs.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/windows/deployment/update/includes/wufb-deployment-update-health-tools-logs.md b/windows/deployment/update/includes/wufb-deployment-update-health-tools-logs.md index e627c3c296..de9f61a2dc 100644 --- a/windows/deployment/update/includes/wufb-deployment-update-health-tools-logs.md +++ b/windows/deployment/update/includes/wufb-deployment-update-health-tools-logs.md @@ -16,6 +16,6 @@ The Update Health Tools are used when you deploy expedited updates. In some case **Log location**: `%ProgramFiles%\Microsoft Update Health Tools\Logs` - The logs are in `.etl` format. - - Microsoft offers [PerfView as a download on GitHub](https://github.com/Microsoft/perfview/blob/main/documentation/Downloading.md) which displays etl files. + - Microsoft offers [PerfView as a download on GitHub](https://github.com/Microsoft/perfview/blob/main/documentation/Downloading.md), which displays `.etl` files. For more information, see [Troubleshooting expedited updates](https://techcommunity.microsoft.com/t5/windows-it-pro-blog/troubleshooting-expedited-updates/ba-p/2595615). \ No newline at end of file From 8fd46377c5e9dde2bcafb24c37b0474063e2dad2 Mon Sep 17 00:00:00 2001 From: Meghan Stewart <33289333+mestew@users.noreply.github.com> Date: Sat, 11 Feb 2023 19:50:08 -0800 Subject: [PATCH 85/92] overview and prereq edits --- .../update/deployment-service-drivers.md | 18 ++++-------------- .../deployment-service-expedited-updates.md | 6 ++++++ .../deployment-service-feature-updates.md | 6 ++++++ .../wufb-deployment-audience-graph-explorer.md | 6 ++++-- .../includes/wufb-deployment-graph-explorer.md | 2 +- 5 files changed, 21 insertions(+), 17 deletions(-) diff --git a/windows/deployment/update/deployment-service-drivers.md b/windows/deployment/update/deployment-service-drivers.md index 19692f9cba..45814a4275 100644 --- a/windows/deployment/update/deployment-service-drivers.md +++ b/windows/deployment/update/deployment-service-drivers.md @@ -90,7 +90,7 @@ Response returning the policy, without any additional settings specified, that h ```json HTTP/1.1 202 Accepted -Content-type: application/json +content-type: application/json { "@odata.context": "https://graph.microsoft.com/beta/$metadata#admin/windows/updates/updatePolicies/$entity", "id": "9011c330-1234-5678-9abc-def012345678", @@ -119,8 +119,7 @@ To create a policy with additional settings, in the request body: ```msgraph-interactive POST https://graph.microsoft.com/beta/admin/windows/updates/updatePolicies content-type: application/json - - Content-length: 967 + { "@odata.type": "#microsoft.graph.windowsUpdates.updatePolicy", "audience": { @@ -139,17 +138,7 @@ To create a policy with additional settings, in the request body: }, "durationBeforeDeploymentStart": "P7D" } - ], - "deploymentSettings": { - "@odata.type": "microsoft.graph.windowsUpdates.deploymentSettings", - "schedule": { - "gradualRollout": { - "@odata.type": "#microsoft.graph.windowsUpdates.rateDrivenRolloutSettings", - "durationBetweenOffers": "P1D", - "devicePerOffer": 1000 - } - } - } + ] } ``` @@ -166,6 +155,7 @@ To edit the policy settings, **PATCH** the policy using the **Policy ID**. Run t ``` msgraph-interactive PATCH https://graph.microsoft.com/beta/admin/windows/updates/updatePolicies/9011c330-1234-5678-9abc-def012345678 +content-type: application/json { "complianceChangeRules": [ diff --git a/windows/deployment/update/deployment-service-expedited-updates.md b/windows/deployment/update/deployment-service-expedited-updates.md index ae8c818be9..00b8b774eb 100644 --- a/windows/deployment/update/deployment-service-expedited-updates.md +++ b/windows/deployment/update/deployment-service-expedited-updates.md @@ -174,6 +174,12 @@ content-type: application/json } ``` +To verify the devices were added to the audience, run the following query using the **Audience ID** of `d39ad1ce-0123-4567-89ab-cdef01234567`: + + ```msgraph-interactive + GET https://graph.microsoft.com/beta/admin/windows/updates/deploymentAudiences/d39ad1ce-0123-4567-89ab-cdef01234567/members + ``` + ## Pause a deployment To pause a deployment, PATCH the deployment to have a `requestedValue` of `paused` for the [deploymentState](/graph/api/resources/windowsupdates-deploymentstate). To resume the deployment, use the value `none` and the state will either update to `offering` or `scheduled` if the deployment hasn't reached the start date yet. diff --git a/windows/deployment/update/deployment-service-feature-updates.md b/windows/deployment/update/deployment-service-feature-updates.md index 87f4c2e0a2..7259780621 100644 --- a/windows/deployment/update/deployment-service-feature-updates.md +++ b/windows/deployment/update/deployment-service-feature-updates.md @@ -248,6 +248,12 @@ The following example adds three devices to the deployment audience using the ** } ``` +To verify the devices were added to the audience, run the following query using the **Audience ID** of `d39ad1ce-0123-4567-89ab-cdef01234567`: + + ```msgraph-interactive + GET https://graph.microsoft.com/beta/admin/windows/updates/deploymentAudiences/d39ad1ce-0123-4567-89ab-cdef01234567/members + ``` + ## Pause a deployment To pause a deployment, PATCH the deployment to have a `requestedValue` of `paused` for the [deploymentState](/graph/api/resources/windowsupdates-deploymentstate). To resume the deployment, use the value `none` and the state will either update to `offering` or `scheduled` if the deployment hasn't reached the start date yet. diff --git a/windows/deployment/update/includes/wufb-deployment-audience-graph-explorer.md b/windows/deployment/update/includes/wufb-deployment-audience-graph-explorer.md index 9d5e531e42..fda5f5a881 100644 --- a/windows/deployment/update/includes/wufb-deployment-audience-graph-explorer.md +++ b/windows/deployment/update/includes/wufb-deployment-audience-graph-explorer.md @@ -14,7 +14,8 @@ A deployment audience is a collection of devices that you want to deploy updates 1. To create a new audience, **POST** to the [deployment audience](/graph/api/resources/windowsupdates-deploymentaudience) resource with a request body of `{}`. ```msgraph-interactive - POST https://graph.microsoft.com/beta/admin/windows/updates/deploymentAudiences + POST https://graph.microsoft.com/beta/admin/windows/updates/deploymentAudiences + content-type: application/json {} ``` @@ -34,7 +35,8 @@ A deployment audience is a collection of devices that you want to deploy updates 1. Add devices, using their **Azure AD ID**, to the deployment audience so they become audience members. Specify the deployment **Audience ID** in the URL field and the devices to add in the request body. The `id` property specifies the **Azure AD ID** of the device. ```msgraph-interactive - POST https://graph.microsoft.com/beta/admin/windows/updates/deploymentAudiences/d39ad1ce-0123-4567-89ab-cdef01234567/updateAudience + POST https://graph.microsoft.com/beta/admin/windows/updates/deploymentAudiences/d39ad1ce-0123-4567-89ab-cdef01234567/updateAudience + content-type: application/json { "addMembers": [ diff --git a/windows/deployment/update/includes/wufb-deployment-graph-explorer.md b/windows/deployment/update/includes/wufb-deployment-graph-explorer.md index d06da8e611..34f811aaad 100644 --- a/windows/deployment/update/includes/wufb-deployment-graph-explorer.md +++ b/windows/deployment/update/includes/wufb-deployment-graph-explorer.md @@ -31,4 +31,4 @@ For this article, you'll use Graph Explorer to make requests to the [Microsoft G 1. Select the **Run query** button. The results will appear in the **Response** window. > [!TIP] - > When reviewing [Microsoft Graph documentation](/graph/), you may notice example requests usually list `Content-type: application/json`. Specifying `content-type` typically isn't required for Graph Explorer, but you can add it to the request by selecting the **Headers** tab and adding the `content-type` to the **Request headers** field as the **Key** and `application/json` as the **Value**. + > When reviewing [Microsoft Graph documentation](/graph/), you may notice example requests usually list `content-type: application/json`. Specifying `content-type` typically isn't required for Graph Explorer, but you can add it to the request by selecting the **Headers** tab and adding the `content-type` to the **Request headers** field as the **Key** and `application/json` as the **Value**. From 5161ea8b580ff4cdcd378bbbc2e258e7d2738a79 Mon Sep 17 00:00:00 2001 From: Meghan Stewart <33289333+mestew@users.noreply.github.com> Date: Sat, 11 Feb 2023 20:43:53 -0800 Subject: [PATCH 86/92] edit --- windows/deployment/update/deployment-service-overview.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/windows/deployment/update/deployment-service-overview.md b/windows/deployment/update/deployment-service-overview.md index 695eb42728..02f88c51bf 100644 --- a/windows/deployment/update/deployment-service-overview.md +++ b/windows/deployment/update/deployment-service-overview.md @@ -114,6 +114,6 @@ Microsoft Graph makes deployment service APIs available through. Get started wit - Learning path: [Microsoft Graph Fundamentals](/training/paths/m365-msgraph-fundamentals/) - Learning path: [Build apps with Microsoft Graph](/training/paths/m365-msgraph-associate/) -- Windows Update for Business deployment service [sample driver deployment application](https://github.com/microsoftgraph/windowsupdates-webapplication-sample) on GitHub https://github.com/microsoftgraph/windowsupdates-webapplication-sample +- Windows Update for Business deployment service [sample driver deployment application](https://github.com/microsoftgraph/windowsupdates-webapplication-sample) on GitHub - [Windows updates API overview in Microsoft Graph](/graph/windowsupdates-concept-overview) From d98e8ee94fc20c21eaf5c8285e963399346f1cae Mon Sep 17 00:00:00 2001 From: Meghan Stewart <33289333+mestew@users.noreply.github.com> Date: Sat, 11 Feb 2023 21:00:26 -0800 Subject: [PATCH 87/92] edit --- windows/deployment/update/deployment-service-prerequisites.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/windows/deployment/update/deployment-service-prerequisites.md b/windows/deployment/update/deployment-service-prerequisites.md index b81095e0c7..bfbf5eefe1 100644 --- a/windows/deployment/update/deployment-service-prerequisites.md +++ b/windows/deployment/update/deployment-service-prerequisites.md @@ -33,7 +33,7 @@ Windows Update for Business deployment service requires users of the devices to - Windows Virtual Desktop Access E3 or E5 - Microsoft 365 Business Premium -## Operating systems, editions, and channels +## Operating systems and editions - Windows 11 Professional, Education, Enterprise, Pro Education, or Pro for Workstations editions - Windows 10 Professional, Education, Enterprise, Pro Education, or Pro for Workstations editions From dbfc5d21741ed4efc18ef7712d7edeee617cecce Mon Sep 17 00:00:00 2001 From: Meghan Stewart <33289333+mestew@users.noreply.github.com> Date: Mon, 13 Feb 2023 10:33:08 -0800 Subject: [PATCH 88/92] edit more info ruls --- .../update/includes/wufb-deployment-update-health-tools-logs.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/windows/deployment/update/includes/wufb-deployment-update-health-tools-logs.md b/windows/deployment/update/includes/wufb-deployment-update-health-tools-logs.md index de9f61a2dc..4e0d5caaff 100644 --- a/windows/deployment/update/includes/wufb-deployment-update-health-tools-logs.md +++ b/windows/deployment/update/includes/wufb-deployment-update-health-tools-logs.md @@ -18,4 +18,4 @@ The Update Health Tools are used when you deploy expedited updates. In some case - The logs are in `.etl` format. - Microsoft offers [PerfView as a download on GitHub](https://github.com/Microsoft/perfview/blob/main/documentation/Downloading.md), which displays `.etl` files. -For more information, see [Troubleshooting expedited updates](https://techcommunity.microsoft.com/t5/windows-it-pro-blog/troubleshooting-expedited-updates/ba-p/2595615). \ No newline at end of file +For more information, see [Troubleshooting expedited updates](https://techcommunity.microsoft.com/t5/windows-it-pro-blog/get-the-most-out-of-expedited-windows-quality-updates/ba-p/3659741). From e9efa76181c04fd50a05343c3496db591f8e0894 Mon Sep 17 00:00:00 2001 From: Meghan Stewart <33289333+mestew@users.noreply.github.com> Date: Mon, 13 Feb 2023 11:39:06 -0800 Subject: [PATCH 89/92] edit expedite rm pause, add del --- .../deployment-service-expedited-updates.md | 21 +++++++------------ 1 file changed, 7 insertions(+), 14 deletions(-) diff --git a/windows/deployment/update/deployment-service-expedited-updates.md b/windows/deployment/update/deployment-service-expedited-updates.md index 00b8b774eb..0feafed591 100644 --- a/windows/deployment/update/deployment-service-expedited-updates.md +++ b/windows/deployment/update/deployment-service-expedited-updates.md @@ -24,7 +24,7 @@ In this article, you will: > * [List catalog entries for expedited updates](#list-catalog-entries-for-expedited-updates) > * [Create a deployment](#create-a-deployment) > * [Add members to the deployment audience](#add-members-to-the-deployment-audience) -> * [Pause a deployment](#pause-a-deployment) +> * [Delete a deployment](#pause-a-deployment) ## Prerequisites @@ -180,24 +180,17 @@ To verify the devices were added to the audience, run the following query using GET https://graph.microsoft.com/beta/admin/windows/updates/deploymentAudiences/d39ad1ce-0123-4567-89ab-cdef01234567/members ``` -## Pause a deployment +## Delete a deployment -To pause a deployment, PATCH the deployment to have a `requestedValue` of `paused` for the [deploymentState](/graph/api/resources/windowsupdates-deploymentstate). To resume the deployment, use the value `none` and the state will either update to `offering` or `scheduled` if the deployment hasn't reached the start date yet. +To stop an expedited deployment, DELETE the deployment. Deleting the deployment will prevent the content from being offered to devices if they haven't already received it. To resume offering the content, a new approval will need to be created. -The following example pauses the deployment with a **Deployment ID** of `de910e12-3456-7890-abcd-ef1234567890`: + +The following example deletes the deployment with a **Deployment ID** of `de910e12-3456-7890-abcd-ef1234567890`: ```msgraph-interactive -PATCH https://graph.microsoft.com/beta/admin/windows/updates/deployments/de910e12-3456-7890-abcd-ef1234567890 -content-type: application/json - -{ - "@odata.type": "#microsoft.graph.windowsUpdates.deployment", - "state": { - "@odata.type": "microsoft.graph.windowsUpdates.deploymentState", - "requestedValue": "paused" - } -} +DELETE https://graph.microsoft.com/beta/admin/windows/updates/deployments/de910e12-3456-7890-abcd-ef1234567890 ``` + [!INCLUDE [Windows Update for Business deployment service permissions using Graph Explorer](./includes/wufb-deployment-update-health-tools-logs.md)] \ No newline at end of file From e78941ba6db9330f03153b850b0c500c98fafcbf Mon Sep 17 00:00:00 2001 From: Meghan Stewart <33289333+mestew@users.noreply.github.com> Date: Mon, 13 Feb 2023 14:12:53 -0800 Subject: [PATCH 90/92] edits for diag data --- .../deployment/update/deployment-service-prerequisites.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/windows/deployment/update/deployment-service-prerequisites.md b/windows/deployment/update/deployment-service-prerequisites.md index bfbf5eefe1..b32a2f751d 100644 --- a/windows/deployment/update/deployment-service-prerequisites.md +++ b/windows/deployment/update/deployment-service-prerequisites.md @@ -46,13 +46,14 @@ Windows Update for Business deployment service supports Windows client devices o - Look for the folder **C:\Program Files\Microsoft Update Health Tools** or review *Add Remove Programs* for **Microsoft Update Health Tools**. - As an Admin, run the following PowerShell script: `Get-WmiObject -Class Win32_Product | Where-Object {$_.Name -match "Microsoft Update Health Tools"}` -- To take advantage of [Changes to Windows diagnostic data collection](/windows/privacy/changes-to-windows-diagnostic-data-collection#services-that-rely-on-enhanced-diagnostic-data), installing the 2023-02 Cumulative Update on the clients is recommended. +- To take advantage of [Changes to Windows diagnostic data collection](/windows/privacy/changes-to-windows-diagnostic-data-collection#services-that-rely-on-enhanced-diagnostic-data), installing the February 2023 Cumulative Update, or a later equivalent update, for Windows 10 ([KB5022834](https://support.microsoft.com/help/5022834 +)) and Windows 11 ([KB5022836](https://support.microsoft.com/help/5022836)) is recommended ## Diagnostic data requirements -Deployment scheduling controls are always available. However, to take advantage of the unique deployment protections tailored to your population and to [deploy driver updates](deployment-service-drivers.md), devices must share diagnostic data with Microsoft. For these features, At minimum, the deployment service requires devices to send [diagnostic data](/windows/privacy/configure-windows-diagnostic-data-in-your-organization#diagnostic-data-settings) at the *Required* level (previously called *Basic*) for these features. +Deployment scheduling controls are always available. However, to take advantage of the unique deployment protections tailored to your population and to [deploy driver updates](deployment-service-drivers.md), devices must share diagnostic data with Microsoft. For these features, at minimum, the deployment service requires devices to send [diagnostic data](/windows/privacy/configure-windows-diagnostic-data-in-your-organization#diagnostic-data-settings) at the *Required* level (previously called *Basic*) for these features. -Some options for the deployment service require devices to send diagnostic data at the following levels: +When you use [Windows Update for Business reports](wufb-reports-overview.md) in conjunction with the deployment service, using diagnostic data at the following levels allows device names to appear in reporting: - *Optional* level (previously *Full*) for Windows 11 devices - *Enhanced* level for Windows 10 devices From 17034a5ba9d33dc0bc0e4af7ab57b0feaa1abb23 Mon Sep 17 00:00:00 2001 From: Meghan Stewart <33289333+mestew@users.noreply.github.com> Date: Mon, 13 Feb 2023 15:30:12 -0800 Subject: [PATCH 91/92] edits --- .../update/deployment-service-drivers.md | 2 +- .../update/deployment-service-feature-updates.md | 14 +++++++++++++- .../update/deployment-service-prerequisites.md | 3 +-- .../includes/wufb-deployment-graph-explorer.md | 2 +- 4 files changed, 16 insertions(+), 5 deletions(-) diff --git a/windows/deployment/update/deployment-service-drivers.md b/windows/deployment/update/deployment-service-drivers.md index 45814a4275..cb9c80bdd4 100644 --- a/windows/deployment/update/deployment-service-drivers.md +++ b/windows/deployment/update/deployment-service-drivers.md @@ -65,7 +65,7 @@ Once a device has been enrolled and added to a deployment audience, the Windows ## Create an update policy -Update policies define how content is deployed to a deployment audience. An [update policy](/graph/api/resources/windowsupdates-updatepolicy) ensures deployments to a deployment audience behave in a consistent manner without having to create and manage multiple individual deployments. When a content approval is added to the policy, it's deployed to the devices in the associated audiences. +Update policies define how content is deployed to a deployment audience. An [update policy](/graph/api/resources/windowsupdates-updatepolicy) ensures deployments to a deployment audience behave in a consistent manner without having to create and manage multiple individual deployments. When a content approval is added to the policy, it's deployed to the devices in the associated audiences. The deployment and monitoring settings are optional. > [!IMPORTANT] > Any [deployment settings](/graph/api/resources/windowsupdates-deploymentsettings) configured for a [content approval](#approve-driver-content-for-deployment) will be combined with the existing update policy's deployment settings. If the content approval and update policy specify the same deployment setting, the setting from the content approval is used. diff --git a/windows/deployment/update/deployment-service-feature-updates.md b/windows/deployment/update/deployment-service-feature-updates.md index 7259780621..b1a289befa 100644 --- a/windows/deployment/update/deployment-service-feature-updates.md +++ b/windows/deployment/update/deployment-service-feature-updates.md @@ -28,6 +28,7 @@ In this article, you will: > * [Create a deployment](#create-a-deployment) > * [Add members to the deployment audience](#add-members-to-the-deployment-audience) > * [Pause a deployment](#pause-a-deployment) +> * [Delete a deployment](#delete-a-deployment) > * [Unenroll devices](#unenroll-devices) @@ -89,7 +90,7 @@ The following truncated response displays a **Catalog ID** of `d9049ddb-0ca8-4b ## Create a deployment -When creating a deployment for a feature update, there are multiple options available to define how the deployment behaves. The following [deployment settings](/graph/api/resources/windowsupdates-deploymentsettings) are defined in the example request body for deploying the Windows 11, version 22H2 feature update (**Catalog ID** of `d9049ddb-0ca8-4bc1-bd3c-41a456ef300f`): +When creating a deployment for a feature update, there are multiple options available to define how the deployment behaves. The deployment and monitoring settings are optional. The following [deployment settings](/graph/api/resources/windowsupdates-deploymentsettings) are defined in the example request body for deploying the Windows 11, version 22H2 feature update (**Catalog ID** of `d9049ddb-0ca8-4bc1-bd3c-41a456ef300f`): - Deployment [start date](/graph/api/resources/windowsupdates-schedulesettings) of February 14, 2023 at 5 AM UTC - [Gradual rollout](/graph/api/resources/windowsupdates-gradualrolloutsettings) at a rate of 100 devices every three days @@ -274,6 +275,17 @@ content-type: application/json } ``` +## Delete a deployment + +To remove the deployment completely, DELETE the deployment. Deleting the deployment will prevent the content from being offered to devices if they haven't already received it. To resume offering the content, a new approval will need to be created. + + +The following example deletes the deployment with a **Deployment ID** of `de910e12-3456-7890-abcd-ef1234567890`: + +```msgraph-interactive +DELETE https://graph.microsoft.com/beta/admin/windows/updates/deployments/de910e12-3456-7890-abcd-ef1234567890 +``` + ## Unenroll devices diff --git a/windows/deployment/update/deployment-service-prerequisites.md b/windows/deployment/update/deployment-service-prerequisites.md index b32a2f751d..fcf43df4de 100644 --- a/windows/deployment/update/deployment-service-prerequisites.md +++ b/windows/deployment/update/deployment-service-prerequisites.md @@ -46,8 +46,7 @@ Windows Update for Business deployment service supports Windows client devices o - Look for the folder **C:\Program Files\Microsoft Update Health Tools** or review *Add Remove Programs* for **Microsoft Update Health Tools**. - As an Admin, run the following PowerShell script: `Get-WmiObject -Class Win32_Product | Where-Object {$_.Name -match "Microsoft Update Health Tools"}` -- To take advantage of [Changes to Windows diagnostic data collection](/windows/privacy/changes-to-windows-diagnostic-data-collection#services-that-rely-on-enhanced-diagnostic-data), installing the February 2023 Cumulative Update, or a later equivalent update, for Windows 10 ([KB5022834](https://support.microsoft.com/help/5022834 -)) and Windows 11 ([KB5022836](https://support.microsoft.com/help/5022836)) is recommended +- To take advantage of [Changes to Windows diagnostic data collection](/windows/privacy/changes-to-windows-diagnostic-data-collection#services-that-rely-on-enhanced-diagnostic-data), installing the February 2023 Cumulative Update, or a later equivalent update, is recommended ## Diagnostic data requirements diff --git a/windows/deployment/update/includes/wufb-deployment-graph-explorer.md b/windows/deployment/update/includes/wufb-deployment-graph-explorer.md index 34f811aaad..31b45d8227 100644 --- a/windows/deployment/update/includes/wufb-deployment-graph-explorer.md +++ b/windows/deployment/update/includes/wufb-deployment-graph-explorer.md @@ -14,7 +14,7 @@ For this article, you'll use Graph Explorer to make requests to the [Microsoft G > [!WARNING] > -> - Requests listed in this article require signing in with a Microsoft 365 account. Join the [Microsoft 365 Developer Program](https://developer.microsoft.com/microsoft-365/dev-program) to get a free sandbox preconfigured with sample data packs for testing. +> - Requests listed in this article require signing in with a Microsoft 365 account. If needed, a free one month trial is available for [Microsoft 365 Business Premium](https://www.microsoft.com/microsoft-365/business/microsoft-365-business-premium). > - Using a test tenant to verify the deployment process first is highly recommended. If you use a production tenant, ensure you verify which client devices you're targeting with deployments. 1. From a browser, go to [Graph Explorer](https://developer.microsoft.com/graph/graph-explorer) and sign in using an Azure Active Directory (Azure AD) user account. From 0829534ec3dc3feb0f8796e348545285c6435704 Mon Sep 17 00:00:00 2001 From: Meghan Stewart <33289333+mestew@users.noreply.github.com> Date: Mon, 13 Feb 2023 15:53:06 -0800 Subject: [PATCH 92/92] edits --- .../deployment/update/deployment-service-expedited-updates.md | 2 +- windows/deployment/update/deployment-service-prerequisites.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/windows/deployment/update/deployment-service-expedited-updates.md b/windows/deployment/update/deployment-service-expedited-updates.md index 0feafed591..14b6fec38a 100644 --- a/windows/deployment/update/deployment-service-expedited-updates.md +++ b/windows/deployment/update/deployment-service-expedited-updates.md @@ -24,7 +24,7 @@ In this article, you will: > * [List catalog entries for expedited updates](#list-catalog-entries-for-expedited-updates) > * [Create a deployment](#create-a-deployment) > * [Add members to the deployment audience](#add-members-to-the-deployment-audience) -> * [Delete a deployment](#pause-a-deployment) +> * [Delete a deployment](#delete-a-deployment) ## Prerequisites diff --git a/windows/deployment/update/deployment-service-prerequisites.md b/windows/deployment/update/deployment-service-prerequisites.md index fcf43df4de..40b91b4b9f 100644 --- a/windows/deployment/update/deployment-service-prerequisites.md +++ b/windows/deployment/update/deployment-service-prerequisites.md @@ -46,7 +46,7 @@ Windows Update for Business deployment service supports Windows client devices o - Look for the folder **C:\Program Files\Microsoft Update Health Tools** or review *Add Remove Programs* for **Microsoft Update Health Tools**. - As an Admin, run the following PowerShell script: `Get-WmiObject -Class Win32_Product | Where-Object {$_.Name -match "Microsoft Update Health Tools"}` -- To take advantage of [Changes to Windows diagnostic data collection](/windows/privacy/changes-to-windows-diagnostic-data-collection#services-that-rely-on-enhanced-diagnostic-data), installing the February 2023 Cumulative Update, or a later equivalent update, is recommended +- For [Changes to Windows diagnostic data collection](/windows/privacy/changes-to-windows-diagnostic-data-collection#services-that-rely-on-enhanced-diagnostic-data), installing the January 2023 release preview cumulative update, or a later equivalent update, is recommended ## Diagnostic data requirements