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!


  • Michael

    I was migrating from 2012r2 HV to 2016 HV using a Windows 10 guest on a network with a VLAN. Your post got me close enough. I used my domain login that was cached on the virtual machine.
    ## make sure there are no snapshots
    ## get name, IP and memory settings.
    ## shut down guest on 2012r2
    ## copy guest Virtual Hard Drive to 2016 hyper-v host
    ## if disk is a VHD, use Hyper-V manager to “Edit Disk…” and convert it to HVDX
    ## create a New… Virtual Machine. Enter old name.
    ## Store machine in a different location (browse to your location)
    ## Gen 1
    ## Enter old memory setting
    ## Connet it to the proper VLAN switch
    ## DO NOT attach the hard drive… Select “Attach a virtual hard disk later”
    ## Finish
    ## Select the VM, use settings to configure Your NIC on the VLAN, Apply, Select IDE Controller 0, add your virtual hard disk, Apply, Go to Integration and enable guest services, Apply, OK.
    ## Connect, Start, Log in.
    ## configure IP in NIC. You will get prompted to remove the static IP configuration for the absent adapter. Yes. Close.
    ## Restart.
    ## Check your local apps and network access. All done.

  • Tomasz

    you are a star!

  • Dayis

    The information is concise and complete. Thank you very much for your contribution.

Leave a Reply

Your email address will not be published.