Exciting times! ConfigMgr TP 1903 was just released, and so the very first public beta of Delivery Optimization In-Network Cache (DOINC), nicely integrated with ConfigMgr. Here is a link to the documentation for ConfigMgr TP 1903: https://docs.microsoft.com/en-us/sccm/core/get-started/2019/technical-preview-1903
Update: DOINC is also available in ConfigMgr Current Branch v1906 (or later)
Introduction to DOINC
DOINC is cache server for Delivery Optimization (DO) content, for example updates for the built-in Windows 10 applications, Microsoft Store applications, and Office 365 updates. DOINC has it’s own cache, and does not use the ConfigMgr Content Library. DOINC is supported on servers running Windows Server 2012 or later, but I highly recommend using at least Windows Server 2016. On the client side, you need to be on at least Windows 10 v1709, but I recommend at least Windows 10 v1803 because of updated settings for Delivery Optimization.
When a client needs to download say a Windows 10 application update, the DOINC server acts as a proxy, sort of, and stores the download in its cache, and also forwards the bits to the client. The download doesn’t need to complete on the cache server. As soon as a chunk is available, it is offered to the client. And then, obviously, when another client needs the same update, it will get the bits directly from the cache server, or from a local peer.
DOINC is built by the Delivery Optimization team at Microsoft, and the ConfigMgr team redistribute some key parts of it as part of the ConfigMgr TP 1903 release.

Setup DOINC on the Server (DP)
Installing DOINC on a DP is very straight forward, you simply go the DP properties, and select the magic check box: Enable this distribution point to be used as a Delivery Optimization In-Network Cache server. When you did this, ConfigMgr triggers the DOINC installer (a PowerShell Script). You can watch the progress in the distmgr.log file, and also the DOINC installer logfile ("E:\SMS_DP$\Ms.Dsp.Do.Inc.Setup\DoincSetup.log" in my environment).
DOINC also installs two maintenance tasks (PowerShell scripts).




Configuring the Windows 10 Clients
To enable your Windows 10 v1709 or later ConfigMgr clients to use DOINC, you must first upgrade the ConfigMgr agent to the TP 1903 version, and then enable and deploy the client setting that configures the client policy. This configures the DOCacheHost and DODownloadMode local policy on the client in the same location as the other Delivery Optimization policies are: HKLM\SOFTWARE\Policies\Microsoft\Windows\DeliveryOptimization.


Note: Currently, after the new client settings has been applied, you need to reboot the machine for the DOCacheHost registry value to show up.
Verifying DOINC in action
To verify DOINC in action, simply login to a few newly deployed Windows 10 v1709 or later machines, and wait until the built-in apps starts to update. Or download a bunch of Microsoft Store apps. I recommend racing games since they are often quite big :).
Once downloaded you can start PowerShell and run the Get-DeliveryOptimizationStatus cmdlet. Look for the BytesFromCacheServer value. You can also check the DOINC monitor on the DOINC Server itself by opening up IIS manager, and drill down to Server Farms.



Written by Johan Arwidmark
Hi Johan
thanks you so much for your effort
i have a question please, i am using mcc for co-managed device, but when i check with get-delieveryOptimizationstatus i get:
status : paused and bytesfromcachserver : 0
could you plpease help
Hi Zoheir,
This was fixed in a patch for MCC/DOINC earlier this year.
Hello Jason, We are now at MECM 2010 and it's not clear for me what is required to have the DOCacheHost value configured in the client registry. Of course "Enable devices managed by Configuration Manager to use Microsoft Cache servers for content download" has to be enabled. From my experience, "Use Configuration Manager Boundary groups for delivery optimization Group ID." is optional. In our organization, peer sharing is not needed / recommended. In the boundary group options, I'm not sure if the "allow per download in this boundary group" is required. What is you opinion ? Is there any client… Read more »
You typically want to allow peering even when using a cache server, but configure group id or other peer restricting boundaries to make sure clients don't try to peer over WAN links.
The Get-DeliveryOptimizationStatus cmdlet gives you some generic status on the client downloads, including cache server usage. You can also parse the output from Get-DeliveryOptimizationLog with PowerShell to get basically all DO info you need 🙂
Is it possible to configure the clients to receive only content from the Microsoft Connected Cache and not from peers ? We use VLAN and clients on the same subnets can be located at different locations.
Hi Michel,
I haven't tried, but download mode 0 (HTTP Only) should disable local peering even when using a connected cache server. Also the grouping machines per VLAN with a group ID will make sure peering is restricted to the same VLAN. Feel free to ping me on LinkedIn if you have any additional questions.
Can you use DOINC in a multi tennant environment, or would it have to be dedicated to each user (could it be virtual?). We are looking to setup configuration services for multiple customers and need to create an environment
The MCC (DOINC) implementation in ConfigMgr is not a cloud attached feature. It's an on-premises feature for the DP only. As far as using ConfigMgr in a hosting, service provider type scenario. It's by far best to create a single standalone primary site for each customer. If you script that process, you can quickly spin up new environments, making sure they look the same. You can also automate publishing of packages/applications to these customers via scripting, allowing you to have a central repository with apps, that you can quickly publish to customers needing them.
I was unable to get this to work in 1906. It would crash with the following error:
"Exception message: Could not load type 'http://Ms.Xbl.Dd.Controller.Service.Global'"
In 1910 this seems to have been sorted out.
However when first trying to install this feature in 1910, distrmgr.log on the site server reported:
"Failed to run DOINC Install.ps1. Error code 8".
I copied the PS command from distrmgr.log and ran it directly on my DP. This fixed my issue and DOINC was installed. (Just remember to change directory to “\SMS_DP$\Ms.Dsp.Do.Inc.Setup” before running the command.)
Thanks for the info. I didn't have any issues in 1906, but in the first release if 1910, the installation didn't complete until I went in a did a change on the properties (known bug).
Hi, I'm currently using branche cache in my environment with DO set to bypass. Can DOINC work along side BC.?
Yes, DO and BC are peering different content.
do you know how the DOCacheHost is gathered? Mine ends up empty 🙁
DOGroupId, and DODownloadMode is set correct.
If i type the SCCM DP server with the DO enabled it works perfect.. but the DOCacheHost is not automatically written to the reg key?
Currently, in the beta, after the new client settings has been applied, you need to reboot the machine for the DOCacheHost registry value to show up. I added that info to the post as a note.
To bad, that this is only available in SSCM! It should also available for free for all customers!
Initially DOINC was intended has a standalone release, and technically there are no real dependencies on ConfigMgr. I've reached out to the DOINC team and asked whether a non-ConfigMgr release is in the planning. / Johan
That will be the announced Microsoft Connected Cache feature, an agent installed on OnPrem servers but managed through the Azure portal.
There will be a private preview but won't start before Feb 2020, I was told during Ignite.
Check details on https://aka.ms/PreviewConnectedCache with link to private preview registration
Thanks for the nice article. I am having some issues making it work though. Do you know if the cache should get filled with some files or it fills as clients are requesting Store apps for example?
Yes, the cache should be used for updates to native Windows 10 apps, as well as Windows store apps. Make sure that the clients are configured to use the DOINC server. / Johan
I had the problem that the registry settings (DOCacheHost, DOGroupId) weren't applied to my 1906 clients at all. You need to have "Allow peer downloads in this boundary group" check-marked within the options tab of the boundary group. Now I have the above mentioned hits and downloads in the IIS monitoring and the DOINC folder on the server local drive gets filled.
Yes, that is a weird dependency 🙂