You are here:   Research
  |  Login

Welcome to my blog, quickest way to find articles is usually to search for them.

Search in All Title Contents

Setup Delivery Optimization (DO) for ConfigMgr Current Branch

Jun 22 2018

Here is a quick guide on setting up Delivery Optimization (DO) for a ConfigMgr environment.

Note: The setup is almost the same for non-ConfigMgr environments as well, most of the DO configuration is done via Group Policies.


Delivery Optimization Background

Delivery Optimization (DO) has been around since the very first versions of Windows 10, but it has not been until recently (ConfigMgr 1802) that you find some integration between DO and ConfigMgr. DO is used whenever Windows 10 updates any of it’s built-in universal apps, or when a user installs an application from either the Microsoft Store, or the Microsoft Store for Business. DO is also used for Software Updates when they are setup to use Express installation files. Phil Wilcock has great post about the Express installation files scenario here:

Delivery Optimization is a peer to peer technology, meaning as soon as one Windows 10 client in a location got the content, it can share the content with other clients. Now, there is a ton of different configuration options for Delivery Optimizations, controlling how the peering works, the cache size allowed, and the bandwidth control. The options vary with the Windows 10 version. In general, as of now, I recommend you to be at least on Windows 10 v1709, but from a core DO point of view, you probably want to be on Windows 10 v1803. Microsoft has all options listed here, and in what version of Windows 10 each option is available:

Like the BITS technology, Delivery Optimization also have the concept of foreground and background jobs. Foreground jobs in when a user starts a job, for example by installing an application from the Microsoft store. Background jobs are for example when Windows decides to update an application. In Windows 10 v1709 you can only set one bandwidth limit for both, but in Windows 10 v1803 you can configure bandwidth limits for background and foreground jobs independently.

Some nice features of DO is that is supports a distributed cache, meaning content is stored efficiently across multiple devices. It supports multitasking, as in support downloading from multiple sources, and it supports hybrid which means it can download from http and peer sources in parallel. Pretty cool.


Note: AFAIK, there are currently no third party solutions available that can do Delivery Optimization peering, meaning peering universal app downloads. You’re stuck with the native options for now.



The scenario for this guide is that we have a distributed environment running ConfigMgr Current Branch, in this setup there are two sites connected with a limited WAN link. Internet access is provided via the WAN link to the main office only.



The network topology.


Step-by-step guide

For the the scenario in this guide, we want to make sure that no clients in Chicago are reaching over the WAN link for finding peer clients for DO content. The default behavior of DO is that all clients with the same public IP can share content, but since all clients in our environment have the same public IP, we’re using the group mode instead. Only allowing machines in Chicago share content with each other.

Setup the Group Mode

Configuring DO the use group mode is done via Group Policy, but there are two options to set the group ID, e.g. the identifier that we assign to each Chicago client. It can either be set ConfigMgr assuming you are on 1802 or later, and when you do that, you’re simply saying that all clients belonging to the same boundary group, have the same ID.

Note: For the group mode to work, all clients in the group must use the same NAT IP.

1. Configure the ConfigMgr Client Settings to set the Group ID

Client settings in ConfigMgr 1802 (or later) to use boundary groups as DO group ID.


The DO Group ID set to the boundary group in ConfigMgr, this is from one of the clients in the New York office.


The DO Group ID is set from the GroupGUID in the Boundary Group view.


Note: If using older ConfigMgr versions than 1802, or if you boundary groups doesn’t reflect your network topology, you can set the group id directly via group policy instead.

2. Create a GPO that configures the DO settings. In this example the download to the Chicago clients where limited to 256 KB/s (2 mbit)

GPO Settings for Windows 10 v1709:

  • Absolut Max Cache Size: 30
  • Allow uploads while the device is on battery while under set Battery level: 40
  • Download Mode: Group (2)
  • Group ID : <not configured, set via ConfigMgr Client Settings>
  • Max Cache Age: 0
  • Maximum Download Bandwidth (in KB/s): 256 (256 KB/s = 2 mbit)
  • Minimum Peer Caching Content File Size (in MB): 1
  • Minimum RAM (inclusive) allowed to use Peer Caching (in MB): 2


GPO Settings for Windows 10 v1803:

  • Absolut Max Cache Size: 30
  • Allow uploads while the device is on battery while under set Battery level: 40
  • Delay background download from http (in secs): 1200 (20 min)
  • Delay foreground download from http (in secs): 60 (1 min)
  • Download Mode: Group (2)
  • Group ID : <not configured, set via ConfigMgr Client Settings>
  • Max Cache Age: 0
  • Maximum Download Bandwidth (in KB/s): 256 (256 KB/s = 2 mbit)
  • Minimum Peer Caching Content File Size (in MB): 1
  • Minimum RAM (inclusive) allowed to use Peer Caching (in MB): 2


Note #1: A neat trick for those of you running Windows 10 v1803 or later is that you can set the “Select a method to restrict Peer Selection” group policy to subnet, making sure that only clients on the same subnet will peer content, even if they have the same NAT IP, or the same Group ID as everybody else. You need to set at least one Group ID for this to work. It can’t be blank.

Note #2: Again, If you don’t set the group ID via ConfigMgr, set your group ID directly in this GPO. You can generate a GUID easily via PowerShell: [guid]::NewGuid()

Note #3: Prior to June 20, 2018, DO wouldn’t cache files under 10 MB, even though you set it lower. It has been fixed now.

Note #4: Setting the background delay quite high (20 min) for Windows 10 v1803 seems to improve the P2P ratio quite a bit (only background since you probably don’t want users having to wait 20 minutes for foreground jobs, like when requesting an app from Microsoft store).


Group policy used for Windows 10 v1803 clients, restricting the peering to local subnet.



To verify that DO works as expect you can use some of the the DO PowerShell cmdlets. Below you find some of the more useful DO cmdlets for Windows 10.

Windows 10 v1709

  • Get-DeliveryOptimizationPerfSnap
  • Get-DeliveryOptimizationStatus

Windows 10 v1803

  • Get-DeliveryOptimizationLog
  • Get-DeliveryOptimizationPerfSnap
  • Get-DeliveryOptimizationPerfSnapThisMonth
  • Get-DeliveryOptimizationStatus


Showing DO status for one of the downloaded files.


Happy Deployment, / Johan

Deployment News

Happy deployment, and thanks for reading!

What our lawyers makes us say:

This information is provided "AS IS" with no warranties, confers no rights and is not supported by the authors or Deployment Artist.

Copyright © 2017 by Deployment Artist (the company behind deployment research). All rights reserved. No part of the information on this web site may be reproduced or posted in any form or by any means without the prior written permission of the publisher.

Shorthand: Don't pass off our work as yours, it's not nice.

Blog Archive


Where you can meet us!

Live Stream Recordings
ConfigMgr 1806 and W10 OSD

5 Days - Mega Geek Week 
(multiple classes, ConfigMgr, OSD etc.)
- Johan Arwidmark, Mikael Nystrom...
Jun 10, 2019, Chicago, IL, US

4 Days - Windows 10 OSD Classes
- Johan Arwidmark
May 20, 2019, San Diego, CA, US
Jun 17, 2019, Culemborg, NL
Jul 8, 2019, Phoenix, AZ, US

5 days - ConfigMgr Classes
- Johan Arwidmark and Kent Agerlund
Apr 8, 2019, Chicago, IL, US
Apr 22, 2019, Houston, TX, US

Video-based trainings

MDT, Windows 10 and ConfigMgr Books

Contact Info