Quick Migration of Windows Server 2008 R2 Hyper-V to Windows Server 2012 or 2016

Here are the proven and tested steps for migrating from Windows Server 2008 R2 to Windows Server 2012 or 2016.  Note:  You cannot IMPORT a VM from 2008 R2 into 2012 or 2016, so you have to do the whole process manually.  That’s the reason for this post.

  1. log into the existing 2008 R2 virtual machine and note the following
    1. memory and CPU config
    2. IP addressing information (you need all the IP information, static IP’s etc.)
  2. Shut down the 2008 R2 virtual machine
  3. copy the VHD from the 2008 R2 virtual machine to the new host.
  4. On the new host open Hyper-V manager
    1. Edit disk
    2. select the VHD
    3. CONVERT to VHDX
    4. this will take a while
  5. When that completes, create a new VM
    1. DO NOT attach the hard drive.  Select “add a HD later”.  (I have seen issues with attaching the hard drive as part of the setup here, so I skip it and do it separate)
    2. Generation 1 VM
    3. set the memory and CPU configs
    4. complete the VM creation
    5. edit the VM and attach the VHDX file as IDE 0 master
  6. Using the Hyper-V remote control interface (by double clicking on a VM)
  7. Start the new VM
  8. boot into windows
  9. while on the desktop, after ~15-60 seconds you might see a “REBOOT” notification after changes are made to the OS.  If you get this notification, go ahead and reboot.  Otherwise, continue on.
  10. at this point in the Hyper-V manager, you need to double click on the VM and remotely control it through the Hyper-V manager
  11. while you are logged into the VM as administrator and at the desktop, insert the Hyper-V integration tools disc and upgrade the Hyper-V tools
  12. reboot when that completes
  13. log in again to the machine through the Hyper-V remote control interface
  14. edit the network adapter properties and set it exactly as it was before.
    1. Note:  During this whole process your OLD NIC will be hidden (because it’s gone now) and you will be given a new NIC and it will be in DHCP mode from the start.
    2. you will need to edit that new NIC and put in the correct static TCP/IP information if applicable to your setup.
    3. ALL OTHER settings (machine name, IIS, DNS, etc.) will retain fine.  Just edit the NIC and config the NIC the same way it was on the old VM


All done!


  • Dick Wikkerink

    Worked perfectly for me, thanks!

  • Do these instructions work when migrating from 2008r2 to 2012r2??


  • Boyan

    very good description of the procedure and yes the old NIC is hidden – if static IP has been assigned a conflict error will be shown but you can expose the old NIC and delete it so that the OS doesn’t think you’re assigning the same IP on two interfaces.

  • Matt

    Does this also work if the Windows 2008 R2 server is the DC? We tried this method, but the AD seemed corrupt after we migrated the DC to Windows Server 2016.

  • Just create a brand new Windows Server 2016 virtual machine. Patch it up to date. Run DCPROMO and create another DC in an existing forest. Let the new machine exist in your domain for a week. Then demote and remove the old server… much easier way to do things…
    I usually have “single function” VM’s where I can – and a domain controller fits this bill. Use the tools MS gives you to add (and promote) the DC and phase out the old one…

    The tools are better for DC’s in W2K16 anyways… try to get off W2K08R2…

  • shutdown your 2008r2 VM. Make a copy of the entire VM directory structure (might be better to do all this late at night or on a weekend). (this is in case the migration doesn’t work, you can just go back to your backup and lose nothing).
    perform the migration.
    if it fails, you can delete the new instance (2012r2) and revert back to the copy you made…
    let us know how it goes…


    Why do you have to convert the VHD?

  • Honestly, you saved my bacon.

    I assumed a Windows Server 2008 R2 virtual machine would be recognised by Windows Server 2016 and almost cried when it didn’t!

    The only thing I had to do was add a virtual switch from the Hyper-V (see far RHS) admin program, which I could then add in ‘Edit Settings’.

    Thanks …… life save!


Leave a Reply

Your email address will not be published. Required fields are marked *