Many of you have probably thought about deploying Windows 10 in your organization and are already looking into the different options that Microsoft with their new operating system have brought to the table. The traditional ways of deploying a new operating system included methods like Wipe and Load, Refresh and Replace. Now with Windows 10, not for the first time though, you have the option to perform an In-Place upgrade. What’s different this time around is that it actually works, and it works really well.

For those of you out there looking to deploy Windows 10 in your organization, and are interested the In-Place Upgrade scenario, this is the post for you. I will cover the requirements and limitations for the scenario including a basic overview of how the In-Place Upgrade feature actually works under the hood. Additionally I’ll go through the process of using In-Place Upgrade with ConfigMgr vNext, and upgrade the post when the new version of ConfigMgr has been released (if there are any changes of course).


With previously released version of Windows, the In-Place Upgrade scenario was never considered a reliable option to deploy the latest version. But in Windows 10, Microsoft has put in enormous efforts to make the scenario the first choice for organizations when deploying the new version of Windows. This time around, it’s not only steady and reliable, it also features an automatic roll-back feature if any issues would occur during the deployment process, without the need of any IT-staff involvement. This scenario could also be considered faster than the traditional deployment scenarios, since applications and drivers do not need to be re-installed as part of the process. Although, there are some limitations as to how you can leverage the In-Place Upgrade scenario, which I will mention in this post.

When should you consider using the In-Place Upgrade scenario? The following scenarios describe that a bit more in detail:

  • When you want to keep all (or at least most) existing applications
  • When you do not plan to significantly change the device configuration (for example, BIOS to UEFI) or operating system configuration (for example, x86 to x64, language changes, Administrators to non-Administrators, Active Directory domain consolidations)
  • To migrate from Windows 10 to a later Windows 10 release

The latter of those statements becomes really important, and improves the future upgrades to the latest versions of Windows when Microsoft releases them. I assume that you’ve heard about the Windows as a Service terminology? If not, the picture below illustrates how the new versions of Windows will be made available through branches during different stages:


Whenever a new version is released, organizations can leverage the In-Place Upgrade scenario to test and deploy the latest version in their environment. In my opinion, this is killing blow for the traditional methods of introducing a new version of Windows in the organization, and improves the process enormously including keeping the deployment time at a minimal.

What are the upgrade paths available?

Current Operating System Upgraded version
Windows 7 Windows 10
Windows 8 Windows 10
Windows 8.1 Windows 10
Windows 10 Windows 10

Requirements for In-Place Upgrade

One of the questions I believe that many administrators are asking themselves is, what do I need in order to leverage In-Place Upgrade in a deployment scenario for deploying Windows 10? Below is a table of things to consider and that you need to be aware of. It’s important that you are familiar with the scenario and what the requirements are.

Requirement Detailed information
Default image You’re not able to use a custom image of Windows 10 for the In-Place Upgrade scenario. You’d have to use the install.wim image provided with the latest Windows 10 media that Microsoft has released.
Internet Explorer 11 While this may not be a requirement prior upgrading to Windows 10, it’s recommended that you deploy Internet Explorer 11 in your environment and make sure that your applications works since that’s the only supported version of Internet Explorer in Windows 10. It’s also good to know that earlier versions than Internet Explorer 11 will become unsupported in January of 2016.
Deployment solution This is a no brainer, since you’ll of course need some kind of deployment solution to deliver Windows 10 to your devices. Supported tools are:

  • System Center 2012 Configuration Manager R2 SP1
  • System Center 2012 Configuration Manager SP2
  • Microsoft Deployment Toolkit 2013 Update 1

Limitations with In-Place Upgrade

Until now, everything seems great and you probably want to get started with deploying Windows 10 using the In-Place Upgrade scenario. But before you do that, there’s a few scenarios you need to be aware of when you cannot leverage In-Place Upgrade:

Situation  Details
Operating system architecture switch The upgrade process cannot change from a 32-bit operating system to a 64-bit due to the possible complications with drivers and applications it may bring.
BIOS to UEFI switch When changing from BIOS to UEFI based capabilities, a new disk layout is required and therefor not supported by the upgrade process. It also includes any type of disk layout change, even without changing from BIOS to UEFI.
Operating system language change You cannot leverage the upgrade process when attempting to go from one operating system base language to another.
Changing SKU Changing the operating system version is not supported. You can only go from the same version or higher, e.g. when upgrading from Professional to Enterprise, or Enterprise to Enterprise.
Third-party disk encryption While BitLocker encrypted devices can easily be upgraded, more work is necessary for third-party disk encryption tools. Some vendors provide information on how to implement their software in the upgrade process.
Dual-boot or multi-boot systems The upgrade process is designed for devices running a single operating system.

There are some other limitations when not to use the In-Place upgrade scenario, like for instance with Windows To Go devices and when using Boot from VHD, but in my opinion they’re barely used in a organization.

How In-Place Upgrade work

In my opinion, you’d have to familiarize yourself with how the In-Place Upgrade process actually works. Perhaps not on a 500 level, but at least have an understanding of the different phases during the process. When you’re upgrading from your current operating system, Microsoft refers to this as the Down-Level operating system. In terms of the operating system being installed, they refer to that as the new operating system.

These are the following items that will be migrated to the new operating system during the upgrade process:

  • Applications
  • Drivers
  • User accounts and settings

Basically, you can look at it this way, you’ll end up with exactly what you already have on the device (except for unsupported items that are not eligible for Windows 10).

The upgrade process consists of four different phases. During my visit to Ignite in Chicago in May earlier this year, I attended the Windows 10 In-Place Upgrade deep dive session. From that session, the following was presented in terms of the four phases and what’s going on behind the scenes:

Phase 1 – Down-level phase

When setup.exe is executed on the down-level operating system, the following tasks are performed (prerequisites and compatibility checks):

  • System checks
  • Inventory Applications
  • Inventory Drivers
  • Assess compatibility
  • Prepare WinRE
Phase 2 – Boot to WinRE

WinRE (Windows Recovery Environment) is executed, and has less functionality than WinPE. Possible to recover to the down-level operating system. Tasks that are being performed are:

  • Both new and down-level operating systems are offline
  • Backup down-level operating system to Windows.old
  • Lay down new operating system
  • Prepare new operating system
    • Inject Drivers
    • Some migration (unfortunately the session did not provide any more details on this part)
Phase 3 – First boot to new operating system

New operating system is launched for the first time, but not shown to the end user. This is the configuration phase of the new operating system and it’s possible to recover to the down-level operating system. Tasks that are being performed are:

  • Binding new operating system with the down-level operating system
  • New operating system gets an identity
  • Specialize to the machine
  • Install drivers
  • Migrate applications
  • More migration (unfortunately this part was also not documented further during the session)
Phase 4 – Second boot to the new operating system

During this phase the new operating system is being booted to for the second time. User is taken directly to the Out-of-box-Experience once the finalization is complete. Tasks that are being performed are:

  • Finalizing the whole In-place Upgrade process
  • Welcome the user back with OOBE

As for the whole upgrade process, it’s much more complicated than described above, but I wanted to highlight the four phases and give you an idea of what’s going on. Now that we have a better understanding of In-Place Upgrade with Windows 10, lets go ahead and prepare for an In-Place Upgrade scenario with ConfigMgr vNext.

Deploying Windows 10 using In-Place Upgrade

As of writing this post, it’s possible to upgrade from any of the supported upgrade paths with the most current version of ConfigMgr 2012 R2 SP1. Although, this version requires a custom made task sequence (one that Microsoft has already provided for us, available here). Instead I’ll go ahead and demonstrate how the real (hopefully) task sequence will look like by using ConfigMgr vNext TP3 and a task sequence template called Upgrade an operating system from upgrade package.

NOTE! This is still in preview and might change. If the process is updated in the final release, I’ll update this post accordingly.


The scenario I’m going to demonstrate in this post involves a Windows 7 SP1 Enterprise domain joined device that will be upgraded to Windows 10 Enterprise. Before I go ahead and start creating anything, I’d need to download the source media of Windows 10 from MVLSC and extract the content of the ISO.

Add an Operating System Upgrade Package

1. Open the ConfigMgr console and go to Software Library. Expand Operating Systems, right click on Operating System Upgrade Packages and select AddOperating System Upgrade Package.
2. Specify the path to where you’ve downloaded the source content from the latest Windows 10 build available on MVLSC and click Next.
3. Specify a name of the upgrade package and a version (I suggest that you specify the build version in the version field). Click Next.
4. On the Summary page, click Next.
5. On the Completion page, click Close.
6. Distribute the Operating System Upgrade Package to your Distribution Points.

Create an Upgrade task sequence

1. Right click on Task Sequences and select Create Task Sequence.
2. Select Upgrade an operating system from upgrade package and click Next.
3. Enter a task sequence name and a description and click Next.
4. Next to the Upgrade package field, click Browse and select the new created upgrade package and click OK.
5. Back on the Upgrade the Windows Operating System page, click Next.
6. Select to install All software updates and click Next.
7. Decide whether or not to have the task sequence installing any additional applications, click Next.
8. On the Summary page, click Next.
9. On the Completion page, click Close.

We now have the upgrade package containing the latest build of Windows 10 together with an upgrade task sequence ready for deployment to our Windows 7 device. The next step would be to deploy the task sequence to a collection containing the Windows 7 device. I’ll assume that you’re familiar with deploying a task sequence, so I will not cover those steps in this post. For the purpose of demonstration and for you to follow along, I’ll deploy this task sequence with a purpose of Available to my Windows 7 device.

You should of course decide whether to make this available to your devices or if you should at some point require it. In terms of the Windows as a Service, and keeping up with the latest version in your organization so that your devices are supported, perhaps a good idea would be to make it available for your organization a certain time before the build runs out of support. And at the end of the support time frame, make it required. This is something that Microsoft is currently working on with ConfigMgr vNext and what they’re calling Windows 10 servicing plans.

NOTE! In the Technical Preview 3 of ConfigMgr vNext, I had to re-distribute the upgrade package so that it got a version 2 for it to work.

Execute In-Place Upgrade

1. On the Windows 7 device, opening up Software Center I’ll now see the new upgrade task sequence available under Applications and click Install.
2. The In-Place Upgrade process will now start where the first phase will run, checking for readiness and compatibility.
3. The device is booted into WinRE.
4. After a reboot, Windows 10 is being specialized in addition to other tasks as mentioned above.
5. A second reboot occurs and Windows 10 is being configured and launched for the first time.
6. After the third reboot Windows 10 is upgraded from Windows 7 and we’re back in the task sequence engine.
7. Software Updates are installed.
8. We’re finally presented with the logon screen after a final reboot.

After we’ve logged in, Windows 10 will setup your apps and perform a few other tasks where it eventually will present you with the desktop. The whole upgrade process is now complete and your device have successfully been upgraded from Windows 7 to Windows 10 by using the In-Place Upgrade scenario.

Nickolaj Andersen
Principal Consultant and Enterprise Mobility MVP. Nickolaj has been in the IT industry for the past 10 years specializing in Enterprise Mobility and Security, Windows deployments and Automation. In 2015 Nickolaj was awarded as PowerShell Hero by the community for his script and tools contributions. Author of ConfigMgr Prerequisites Tool, ConfigMgr OSD FrontEnd, ConfigMgr WebService and a frequent speaker at user groups.


  • Vinu
    Posted at 06:53 October 26, 2015

    Really Super! Thanks

  • Joe
    Posted at 01:52 October 27, 2015

    You reference the blog post for the custom made TS from Microsoft for ConfigMgr 2012 R2 SP1. In that blog post, there are multiple users having an issue with the TS not continuing post upgrade that you can see in the comments section. The upgrade is successful, but TS doesn’t continue. The status message on the deployment says:

    “The task sequence manager could not successfully complete execution of the task sequence. A failure exit code of 4110 was returned.”

    The smsts.log file shows:

    “Error compiling client config policies. code 8004100E.
    Task Sequence Manager could not initialize Task Sequence Environment. code 8004100E.
    Task sequence execution failed with error code 8004100E”

    There hasn’t been a solution yet and there needs to be one. Any ideas?

  • Joe
    Posted at 21:25 November 6, 2015

    For those of you running Windows 7 that are having issues with the TS not continuing post-upgrade (where the last successfully completed task is ‘Restart Computer’), check the version of PowerShell on that PC. You need version 3 or greater to have PreSetup.ps1 finish successfully. Windows 7 SP1 ships with PS v. 2, and later versions are not available via WSUS.

    In troubleshooting this, we were trying to figure out why it worked in Win 8.1 (which ships with PS v. 4) and not Win 7. Thanks to @axeshr3dder, his suggestion of looking into upgrading PS did the trick. If you look at the PreSetup.log file after PreSetup.ps1 runs, you’ll notice the last line written is “Enable Provisioning Mode.” The next line of code is what doesn’t run in PS v. 2, which is listed below. We ran this line of code manually on a box running PS v. 2 and it errored out with an RPC unavailable message. Upgrading to PS v. 3 or v. 4, it ran successfully. The TS now finishes successfully after upgrading PS to v. 3 or v. 4.

    Invoke-WmiMethod -Namespace root\CCM -Class SMS_Client -Name SetClientProvisioningMode -ArgumentList $True

    Also, there is code in the PreSetup.ps1 file that is commented out. This section of code actually checks for the version of PS and would error out if not v. 3 or greater. Not sure if it why it was commented out, but it seems as though Micrsoft knew this command wouldn’t run in PS v. 2.

    • Nickolaj
      Posted at 02:54 November 8, 2015

      Excellent find Joe, thanks for sharing!

  • selim atmaca
    Posted at 12:44 December 18, 2015
    selim atmaca

    I am using SCCM 2012 R2 SP1 CU2 and
    I dont have the option “Upgrade an operating system from upgrade package” while Creating the Upgrade task sequence. I guess that option is not available anymore. So, the only option for me is using the custom task sequence that is prepared by SCCM team.

  • Schikitar
    Posted at 03:31 January 8, 2016

    Thanks for the post!

    How much time roughly needs to pass between Step 1 and Step 2? I’m trying this on a Windows 8.1 machine (setup and deployed through ConfigMgr 1511) and in the SC (as pictured in Step 1) it just says “Installing…” and hasn’t progressed to Step 2. It’s been doing that for about 20 minutes so far (yes, I’m impatient).

    What logs could I look at either client or server to see what’s happening?

  • Nipun
    Posted at 08:05 February 13, 2016

    Hi, I am trying to Install Windows 10 (Enterprise, x64, en-US, Evaluation) using TS created on SCCM 1511. I have deployed this TS to Win 7 (Enterprise, x64, en-US, Licensed) but it is failing with error 0xC1900204. I manually executed command on Win 7 machine with “Clean” and “ScanOnly” argument. I got Result Code — 0xC1900210. But when I executed it with “Upgrade” and “ScanOnly”, I got 0xC1900204. Is it because I am using licensed version of Win 7? Is there any way I can get an error string that would explicitly convey the error message?

    • Joe S.
      Posted at 21:40 February 15, 2016
      Joe S.


      There are XML files in the C:\$windows.~bt\Sources\Panther folder that contain the details on the app that has issues. Look at the CompatData_* files. It will take a little hunting to find it. Setupact.log and setuperr.log may be of help.

      • Nipun Garg
        Posted at 09:59 February 16, 2016
        Nipun Garg

        Thanks Joe. I read setuperr.log and found error code 1635 which translates to “invalid update files”. I did some hunting and found it was due to wrong SKU. I was using Volume Licensed Windows 7 and was trying In-place upgrade using free Windows 10 Enterprise Eval version. I downloaded Win 10 Enterprise from MS Volume Licensing website and it worked perfectly.

  • Steve
    Posted at 23:14 February 17, 2016

    my CM 2012 Sp2 environment doesn’t show Upgrade existing operating system. (option in step 2)

  • Amrut
    Posted at 08:38 February 22, 2016

    After OS upgrade i get login screen windows and able to login, same time application upgrade is happening.

    how to suppress it, don’t want to get login screen, until full task sequence is completed

  • Rob
    Posted at 17:15 February 24, 2016

    Is it possible to upgrade from windows 7 to windows 10 using the Microsoft Deployment Toolkit.
    I have a network of 150 computers but no SCCM and I am looking for the most efficient way to upgrade the clients to WIndows 10.

  • Nipun Garg
    Posted at 03:56 February 28, 2016
    Nipun Garg

    Hi Again.. I am able to perform In-Place upgrade with applications & drivers. The only thing I am struggling with is ‘Language Packs”. We have Win7 in 5 languages (for different locations). In Win 7, when a language pack is installed, it becomes default UI language for all users. But when a language pack is installed in Win 10, it has to be made dafault (manually). I am able to install Language Pack (through TS), but not able to ‘SET AS DEFAULT’ that language. I don’t want to end up creating 5 Task Sequences OR 5 WIM files (for Wipen Load). Please Help!

  • Guy Oliva
    Posted at 17:56 March 2, 2016
    Guy Oliva

    Is it possible to upgrade from Windows 8.1 Professional to Windows 10 Enterprise using the in-place upgrade process? We’ve purchased Enterprise licenses and want to upgrade to that version.

    Or do I have to do a complete rebuild of every laptop? Thank you.

    • Nickolaj
      Posted at 08:48 March 3, 2016

      Hi Guy,

      Unfortunately the In-Place upgrade scenario does not support SKU upgrade. You could however in-place upgrade to Windows 10 Professional, and then change the SKU afterwards. This can be done in many ways, I suggest that you look into this option.


      • Guy Oliva
        Posted at 20:11 March 3, 2016
        Guy Oliva

        Thank you for your response. So you’re saying I can do an in-place upgrade from Windows 8.1 Pro to Windows 10 Professional? And then do a second in-place upgrade from Windows 10 Pro to Windows 10 Enterprise?

  • Gabriel Begin
    Posted at 17:36 March 17, 2016
    Gabriel Begin


    Thank you for this post, the upgrade works great. But, I had previously uninstalled built-in packages from my windows 10 upgrade package, like xbox and onedrive, these are reinstalled automatically when performing the OS upgrade. Any way to avoid this?

  • Abhishek
    Posted at 07:44 April 8, 2016

    Can I use my captured wim file of Windows 10 for inplace upgrade?

  • Abhishek
    Posted at 07:50 April 8, 2016

    Can I use my captured wim file of Windows 10 for inplace upgrade? I do not want to use default install.wim file for in place upgrade. I want to use our gold image in which some applications are already installed.

  • michael
    Posted at 05:38 May 4, 2016

    Just FYI, Im running SCCM 1602 and still have the same bug with versioning in the upgrade package. If the package is version 1 the the TS cannot find content on the DP. Rediribute the Windows 10 image and bump the package to version 2 and it all starts working

  • Vivek
    Posted at 02:00 May 12, 2016

    Hi Team,
    I am using SCCM 2012 R2 SP1
    I dont have the option “Upgrade an operating system from upgrade package”
    Kindly let me know how can I perform in-place upgrade using SCCM 2012 R2 SP1

  • Steve Ikin
    Posted at 01:29 May 13, 2016
    Steve Ikin

    I performed an in-place upgrade on a Dell BIOS workstation and after the upgrade used Partition Manager and was able to covert to EUFI with Safe Boot. Works great.

    Do you see any issues with this?

  • Matthew Teegarden
    Posted at 17:40 November 4, 2016
    Matthew Teegarden


    I have the inplace upgrade working great. However, the users are prompted with “When you install a new operating system, all the existing data on your computer will be removed”. This, of course, is not true. I was wondering how I could prompt the user before that prompt to tell them to ignore that statement and that their data is safe.

  • Aravind
    Posted at 06:59 November 8, 2016

    Wonderful post!! Clearly laid out and explained

  • Sajid
    Posted at 09:22 December 3, 2016

    Hi, I am trying to perform inplace upgrade Windows 10 (Enterprise, x64, en-US, Evaluation version) using TS created on MDT 2013 upadte 2. I have deployed this TS to Win 7 (Enterprise, x64, en-US, trial version) but it is failing with error 0xC1900204.

  • Leave a Reply