Microsoft Virtual Machine Converter 3.0 is here!

by Shijaz Abdulla on 15.10.2014 at 20:42

The Microsoft Virtual Machine Converter 3.0 (MVMC 3.0) is now publicly available and is overflowing with new features.

  1. The biggest new feature in MVMC 3.0 is online physical to virtual (P2V) conversion.
  2. Converts virtual disks that are attached to a VMware virtual machine to virtual hard disks (VHDs) that can be uploaded to Microsoft Azure.
  3. Provides native Windows PowerShell capability that enables scripting and integration into IT automation workflows.
  4. Supports conversion and provisioning of Linux-based guest operating systems from VMware hosts to Hyper-V hosts.
  5. Supports conversion of offline virtual machines.
  6. Supports the new virtual hard disk format (VHDX) when converting and provisioning in Hyper-V in Windows Server 2012 R2 and Windows Server 2012.
  7. Supports conversion of virtual machines from VMware vSphere 5.5, VMware vSphere 5.1, and VMware vSphere 4.1 hosts Hyper-V virtual machines.
  8. Supports Windows Server 2012 R2, Windows Server 2012 and Windows 8 as guest operating systems that you can select for conversion.

Supported Configurations for Converting Virtual Machines

VMware sources:   

  • VMware vSphere 5.5 (VMware ESXi 5.5)
  • VMware vSphere 5.1 (VMware ESXi 5.1)
  • VMware vSphere 4.1 (VMware ESXi/ESX 4.1)
  • VMware vCenter Server 5.5
  • VMware vCenter Server 5.1
  • VMware vCenter Server 4.1

Destination host servers:                        
Note   Hyper-V must be enabled.   

  • Windows Server 2012 R2 Standard
  • Windows Server 2012 R2 Datacenter
  • Windows Server 2012 Standard
  • Windows Server 2012 Enterprise
  • Windows Server 2012 Datacenter
  • Windows Server 2008 R2 Standard with Service Pack 1 (SP1)
  • Windows Server 2008 R2 Enterprise with Service Pack 1 (SP1)
  • Windows Server 2008 R2 Datacenter with Service Pack 1 (SP1)

Operating systems that are supported for which MVMC can be installed:   

  • Windows Server 2012 R2 Standard
  • Windows Server 2012 R2 Datacenter
  • Windows Server 2012 Standard
  • Windows Server 2012 Enterprise
  • Windows Server 2012 Datacenter
  • Windows Server 2008 R2 Standard with Service Pack 1 (SP1)
  • Windows Server 2008 R2 Enterprise with Service Pack 1 (SP1)
  • Windows Server 2008 R2 Datacenter with Service Pack 1 (SP1)

Microsoft Operating systems that are supported for conversion to Hyper-V from physical, or VMware virtual machines  

  • Windows Server 2012 R2 Standard x64
  • Windows Server 2012 R2 Datacenter x64
  • Windows Server 2012 Standard x64
  • Windows Server 2012 Datacenter x64
  • Windows Server 2008 R2 Standard x64
  • Windows Server 2008 R2 Enterprise x64
  • Windows Server 2008 R2 Datacenter x64
  • Windows Server 2008 R2 SP1
  • Windows Server 2008 Standard (x86/x64)
  • Windows Server 2008 Enterprise (x86/x64)
  • Windows Server 2008 Datacenter (x86/x64)
  • Windows 8 Enterprise (x86/x64)
  • Windows 8 Pro (x86/x64)
  • Windows 7 Enterprise (x86/x64)
  • Windows 7 Professional (x86/x64)
  • Windows 7 Ultimate (x86/x64)
  • Windows Vista Enterprise x86/x64

Linux operating systems that are supported for conversion from VMware virtual machines:   

  • Red Hat® Enterprise Linux® 6 (x86/x64)
  • Red Hat Enterprise Linux 5 (x86/x64)
  • Ubuntu 12.04 (x86/x64)
  • Ubuntu 10.04 (x86/x64)
  • SUSE® Linux Enterprise Server 11 (x86/x64)
  • CentOS 6 (x86/x64)
  • CentOS 5 (x86/x64)
  • Debian GNU/Linux 7 (x86/x64)
  • Oracle Linux 6 (x86/x64)
  • Oracle Linux 5 (x86/x64)

Migrating a blog from Blogger to WordPress

by Shijaz Abdulla on 30.12.2009 at 11:56

 I have finally moved my blog from Blogger (Blogspot) to WordPress with zero downtime and zero search engine reputation loss (pagerank). I thought I’d share the process I followed here.

Here are the main steps involved in Blogger-to-Wordpress migration:

  1. Setting up WordPress
  2. Setting Permalinks structure in WordPress
  3. Preparing your Blogger blog for export
  4. Importing posts & comments from Blogger
  5. Fixing your permalinks
  6. Using Windows Live Writer with WordPress

In my case the domain name is not changing, only the blogging platform is. Depending on your scenario, you might need to purchase a domain and/or hosting. If you need help, post a comment to this post.

Part One: Setting up WordPress

There are two kinds of WordPress blogs you could have – or is the free, hosted blog solution, while lets you download the WordPress software for your own hosting/server. The second option is recommended because it gives you FTP access to your server, and this is required in step 5.

I took Deluxe WordPress Hosting from GoDaddy, and it came with WordPress pre-installed, with tons of themes and plug-ins to choose from.

In order to prevent downtime during the migration, you should configure a CNAME on your existing blog’s domain and associate it with the WordPress blog. For example, if your blog is at, make the WordPress blog at This way visitors to your Blogspot blog will not be affected till you are done with the migration.

Also make sure you set the domain/blog URL to in the WordPress admin page.

Once you’ve acquired your WordPress hosting, you have to create an empty blog on it with the same name as your blog. This will be the blog to which you will import your posts to.

You will also have to find an identical theme for your WordPress blog and apply it.


Part Two: Setting Permalinks structure in WordPress

This is important so that your permalinks remain intact when you import from Blogger. On your WordPress dashboard, go to Settings > Permalinks.

Choose custom structure, and enter /%year%/%monthnum%/%postname%.html

Hit the Save Changes button.


Part Three: Preparing your Blogger blog for export

It’s important to understand that when WordPress imports posts from Blogger, it uses your Blogger blog’s feed. Hence, you will have to remove any headers/footers from your feed so that these wont show up in your posts on WordPress.

To check and remove if you have any feed footers, go to Dashboard > Settings > Site Feed, and clear the Post Feed Footer field:


Part Four: Importing Posts & Comments from Blogger

  • On the WordPress admin console, go to Tools > Import


  • Choose Blogger


Click Authorize. You will be asked to login to your Google account and grant access to WordPress so that it can pull content from Blogger. Click Grant Access.


On the next screen, you will be presented with a list of blogs on your Blogger account. Click Import next to the blog that you wish to import.

The import process will begin:


You will see the import progress above. In case the import process stops halfway, hit the Continue button to continue importing. Even if you repeat the import process altogether, WordPress will ignore the posts it has already imported and there will be no duplicates.

Another important point to note: The DNS setting for the old blog should not be changed till the import process has completed. If you changed the DNS setting for the old blog before import, the import process will fail with the error “Nothing has imported. Had you already imported this blog?

Once all posts and comments have imported, verify it by browsing them on your WordPress blog.


Part Five: Fixing your permalinks

Even though I set my Permalinks in WordPress in Part Two, this was not 100% compliant with Blogger permalinks. Blogger has a way of shortening your blog’s title in the permalink, while WordPress just puts the whole title in the permalink.

This is where I found an ingenious workaround from Rahul Bansal’s blog. He has written this awesome PHP file, that converts the Permalinks on all your imported posts so that it will be identical to that of Blogger. I am reproducing his code here for your convenience:

<?php require_once(‘wp-load.php’);

$res = $wpdb->get_results(“SELECT post_id, meta_value FROM $wpdb->postmeta WHERE meta_key = ‘blogger_permalink'”); $wpdb->print_error();

foreach ($res as $row){

$slug = explode(“/”,$row->meta_value);

$slug = explode(“.”,$slug[3]);

$wpdb->query(“UPDATE $wpdb->posts SET post_name ='” . $slug[0] . “‘ WHERE ID = $row->post_id”); $wpdb->print_error(); }

echo “DONE”;


All you need to do is paste this code in a new file, and call it FIX.PHP. Upload this file on your WordPress hosting, and execute it from your browser – . You will receive a confirmation “DONE” if all is well. If not, try contacting Rahul.

Now you can finally change the DNS settings on your domain so that your new WordPress blog will be active.

Part Six: Using Windows Live Writer with WordPress

Before you can use Windows Live Writer with WordPress, you need to enable XML-RPC.

On the WordPress dashboard, go to Settings > Writing. Enable the checkbox next to XML-RPC.


Notes/Things to Remember:

  • Do not delete your Blogger blog. Your images are still on Picasa, which is used by Blogger to upload images in your posts. Your WordPress blog still pulls those images off Picasa. As of today, I have found no reliable method to migrate images across.
  • If you have an Outbrain widget for Ratings, you just have to install the WordPress widget. As long as your blog’s URL has not changed, your ratings will remain. If your blog’s URL has changed, you need to contact Outbrain support and they will manually merge your ratings for you.


Setting up Virtual Windows XP (aka “XP mode”) in Windows 7

by Shijaz Abdulla on 21.05.2009 at 13:09

Last evening, I installed Windows 7 Ultimate Edition x64 Release Candidate (RC) on my Lenovo W500 notebook. Since I was moving from Windows 7 Ultimate x32 Beta, this meant a complete re-installation, as there is no upgrade option from beta to RC.

The installation was pretty smooth and I did not have issues with drivers for the standard hardware on this notebook.

After installing the RC, I decided to try out Virtual Windows XP (or ‘XP Mode’ as the media calls it). Here’s how I went about doing it:

  1. Restart the computer and enter BIOS. Make sure Hardware Assisted Virtualization (HAV) is enabled.  (Hint: Look under CPU options) This requires a processor that is HAV enabled with technologies like Intel VT or AMD-V, which is common on most of recent machines.
  2. Download Windows Virtual PC. This will require a restart at the end of the installation.
  3. Download XP Mode Beta. This is a 400+ MB download.
  4. Complete the installation, see screenshots below:
  5. Check out the Start Menu, you will find Virtual Windows XP.


  6. When Virtual Windows XP starts for the first time, it will take a while. Once it has started, you will find the Windows XP Virtual PC instance as below:
  7. Right click on the Windows XP Start menu and choose Open All Users.
  8. Place shortcuts to the Windows XP programs that you want to publish in Windows 7 in this folder. All shortcuts you place here will automatically appear in the Windows 7 Start Menu! Let’s put Internet Explorer 6 as an example:
  9. Close the virtual machine. You cannot open a virtual Windows XP application while the virtual machine is open, and you will be prompted to close the machine.
  10. On your Windows 7 Start menu, point to Windows Virtual PC > Virtual Windows XP Applications. You will find the XP shortcuts you placed in Step 8 here!
  11. Open your Windows XP application from the Windows 7 Start menu. See Internet Explorer 6 from Windows XP running side-by-side with Internet Explorer 8 from Windows 7!
    Notice the Luna theme of Windows XP is maintained on the IE 6 window, even while it is running on Windows 7.

How does one end a process running on the Virtual Windows XP machine?

Simply by opening the Windows 7 Task Manager, the user can see both Windows 7 applications as well as Windows XP mode applications in a single interface. The user may end the Windows XP task (labeled ‘(remote)’) from the same Task Manager instance:


XP Mode is a really cool feature that will help organizations running Windows XP to make the move to Windows 7 much easier. Legacy applications that do not support running on Windows Vista or Windows 7 can still continue running on XP mode, just like we ran Internet Explorer 6 on Windows 7 in this example. The user simply clicks on a shortcut on the Windows 7 Start Menu or desktop and the Windows XP application opens, giving the end-user a seamless experience.

Removing leading/trailing white spaces from displayName using PowerShell

by Shijaz Abdulla on 14.11.2008 at 06:09

I am moving thousands of Exchange 2003 mailboxes to Exchange Server 2007 over this weekend. Most of these are student mailboxes which have been provisioned using another third party system. Due to a minor bug, the third party system added a trailing space to every student’s display name.

A trailing space is a whitespace at the end of the displayName string. This may look like a very small issue, but unfortunately Exchange Server 2007 is very fussy about such things:

The DisplayName property contains leading or trailing whitespace, which must be removed.

More of that… (ouch!)

Exchange 2007 would not let me move these mailboxes across from Exchange 2003 unless I correct the DisplayName property for all the mailboxes.

I have several thousands of mailboxes having an ‘inconsistent’ display name. Correcting each of these manually would have been a frustrating exercise – so I decided to coin my own PowerShell command to remove leading/trailing spaces from all mailboxes in a given mailbox database. Nerd

get-mailbox -Database ‘SERVERMailStore’ -ResultSize 4850 | Foreach { Set-Mailbox -Identity $_.Identity -DisplayName $_.DisplayName.Trim() }

where SERVER is the Exchange 2003 server hosting the mailboxes you want to modify, MailStore is the Mailbox store on that server containing those mailboxes. I set the ResultSize to 4850 because I have more than 4000 mailboxes and by default the get-mailbox command fetches only 1000.

Upgrading address lists created in Exchange Server 2003

by Shijaz Abdulla on 29.01.2008 at 16:22

EHLO again.

Hope you enjoyed my previous post that explains how to upgrade Exchange 2003 recipient policies for use with Exchange Server 2007.

This post deals with the “art and science” of upgrading Exchange 2003 Address Lists to its Exchange Server 2007 form. I say “art and science” because it can be a little tricky to understand for those who havent worked much on Powershell or any scripting/coding environment.

If you click on an address list created by Exchange 2003 in the Exchange Management Console, you will receive the following error:

Unable to edit the specified E-mail address policy. E-mail address policies created with legacy versions of exchange must be upgraded using the ‘Set-EmailAddressPolicy’ task, with the Exchange 2007 Recipient Filter specified. specified.

Exchange 2003 Address Lists have a recipient filter that is made up of an LDAP filter. Exchange Server 2007, on the other hand, understands only OPATH filters. The trick is to convert the LDAP filter to an OPATH filter, and this needs to be done manually.

I’m going to explain this with the help of an example. Lets open an Address List in Exchange 2003 System Manager and examine the LDAP filter:

(& (& (& (mailnickname=*) ( (& (objectCategory=person) (objectClass=user) (homeMDB=CN=Mega MailStore (EXCH01),CN=SG01,CN=InformationStore,CN=EXCH01,CN=Servers,CN=First Administrative Group,CN=Administrative Groups,CN=,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=mydomain,DC=com) ) ) ) ))

To refresh our brains, this LDAP filter basically creates an Address list out of all users that have a mailbox in the ‘Mega MailStore’ mailbox store on EXCH01 server.

Before we convert this LDAP to OPATH, lets write this in a better way:

( (&
(homeMDB=CN=Mega MailStore (EXCH01),CN=SG01,CN=InformationStore,CN=EXCH01,CN=Servers,CN=First Administrative Group,CN=Administrative Groups,CN=,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=mydomain,DC=com)
) )

Now, carefully change all ampersands (&) to an -and. The ampersands are placed in a prefix fashion in LDAP filter, but in OPATH, its much simpler – you place -and between the two parameters. Similarly, change all equal signs (=) to -eq.

(RecipientType -eq ‘UserMailbox’)
(Database -eq ‘CN=Mega MailStore (EXCH01),CN=SG01,CN=InformationStore,CN=EXCH01,CN=Servers,CN=First Administrative Group,CN=Administrative Groups,CN=,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=mydomain,DC=com’)

Notice that I have also replaced the property ‘homeMDB’ with ‘Database’. This kind of change is required to convert LDAP property names to OPATH. You can get a complete list of properties here.

So, I arrive at my full command:

Set-AddressList “Mega users” -RecipientFilter { (RecipientType -eq ‘UserMailbox’) -and (Database -eq ‘CN=Mega MailStore (EXCH01),CN=SG01,CN=InformationStore,CN=EXCH01,CN=Servers,CN=First Administrative Group,CN=Administrative Groups,CN=,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=mydomain,DC=com’) }

The guys at Microsoft Exchange Team have more to say about conversion from LDAP to OPATH, and is worth a peek.

Upgrading recipient policies created in Exchange 2003

by Shijaz Abdulla on 29.01.2008 at 15:19

After installing Exchange Server 2007 Mailbox server into an Exchange Server 2003 organization, you open Exchange Management Console and navigate to Organization Configuration > Hub Transport > Email Address Policies.

You find all the legacy recipient policies that you created in Exchange 2003 over here, but when you try to edit a recipient policy, you get the following error:

Unable to edit the specified E-mail address policy. E-mail address policies created with legacy versions of Exchange must be upgraded using the ‘Set-EmailAddressPolicy’ task, with the Exchange 2007 Recipient Filter specified.

So just how do you fix your email address policy? Yup, you will need to use Exchange Management Shell, no matter how much you hate it.

First, lets fix the Default policy using the Set-EmailAddressPolicy cmdlet:

Set-EmailAddressPolicy “Default Policy” -IncludedRecipients AllRecipients

Hit ‘Y’ when you are asked to confirm the upgrade.
If you have additional recipient policies, you need to upgrade them as required. One important thing to remember is that, in Exchange 2007, you can specify only from the following ‘filter’ fields, as far as email address policies (recipient policies) are concerned:

  • Department
  • Company
  • CustomAttribute1, CustomAttribute2, … , CustomAttribute15

In Exchange 2003, it was possible to define recipient policies from complex LDAP queries, but I see that kind of flexibility is unavailable in Exchange Server 2007. For instance, in Exchange Server 2003, you could create a recipient policy for all users who have mailboxes in a particular mailbox store.

Anyways, lets upgrade our policy using one of the available tactics – lets say – based on Department. If I have an Exchange 2003 recipient policy that gives all users from the sales department email addresses of the form, my Set-EmailAddressPolicy command would look like this:

Set-EmailAddressPolicy “Sales Dept Recipient Policy” -ConditionalDepartment ‘Sales’ -IncludedRecipients AllRecipients

Note that I do not need to specify the email address format for upgrading the recipient policy.

When Setup fails: Exchange Server 2007 Mailbox Server Role

by Shijaz Abdulla on 28.01.2008 at 20:14

I went ahead to install the mailbox server role on one of the brand new servers commissioned for Exchange Server 2007.

The prerequisite checks went OK, and setup began doing the ‘real stuff’. Happiness was shortlived, because, towards the end setup showed that it failed. The following error was thrown:

An unexpected error has occurred and a Watson dump is being generated: The Exchange server address list service failed to respond. This could be because of an address list or email address policy configuration error. It was running command ‘$error.Clear(); $count=0; $ExchangeServers = Get-ExchangeServer -DomainController $RoleDomainController; foreach($server in $ExchangeServers) { if(($server.AdminDisplayVersion.Build -gt 641) -and ($server.IsMailboxServer -eq $true)) { $count++; } } if( $count -eq 1) { Set-OrganizationConfig -DomainController $RoleDomainController; }’.

I closed the Setup program, and tried to assess what’s been done. I could see that Exchange Management Console and Exchange Management Shell have been installed and that I could open both, but I could not edit the existing address lists or recipient policies from Exchange Management Console.

Upon further investigation, it dawned on me that Exchange Server 2007 does not use LDAP filters for recipient policies! It uses OPATH instead. How to make this change from LDAP to OPATH filters will be discussed in another post, but in order to make this change I need setup to complete successfully, otherwise I get an error that the Address List service is not responding. Now we have a deadlock situation.

We can trick Exchange 2007 setup into believing that the filter is alright by removing parenthesis “(“, “)”and ampersand “&” symbols from the filter. To do this,
  • Navigate to CN=Configuration, CN=Services, CN=Microsoft Exchange, CN=, CN=Recipient Policies
  • You will find all your Exchange 2000/2003 recipient policies here. Open each and find the purportedSearch attribute. Click Edit to open the value. Note the original value of this field and save it in a notepad file. Then hit the Clear button to change the value to (not set).
  • Do the previous step for each recipient policy
  • Re-run Setup. You will find that setup completes successfully!

The next question is, what do I do with the original values of purportedSearch? I put them back as they were before setup, so that I can upgrade the policies to Exchange 2007 later without disturbing the current Exchange 2003 users.

OWA for Exchange 2003 mailboxes via Exchange 2007 Client Access Server

by Shijaz Abdulla on 20.11.2007 at 09:48

If you are planning on co-existing Exchange Server 2003 backend servers alongside Exchange Server 2007 mailbox servers, you will have the following question lingering in your mind:

But what about Outlook Web Access?

If some of your users have mailboxes on Exchange Server 2003 while others have mailboxes on Exchange Server 2007, and you publish your OWA URL as http://webmail.mycompany/owa, you will notice that Exchange 2003 users get the following error:

Outlook Web Access could not find a mailbox for DOMAINUSER. If the problem continues, contact technical support for your organization and tell them the following: The mailbox may be stored on a Microsoft Exchange 2000 or Microsoft Exchange 2003 server, or the Active Directory user account was created recently and has not yet replicated to the Active Directory site where this Client Access server is hosted.

The solution is to use the URL http://webmail.mycompany/exchange on the Client Access server. The ‘/exchange’ virtual directory on the Client Access server is able to proxy OWA requests for Exchange 2003 mailboxes to the appropriate Exchange 2003 back end server and the user sees the Exchange 2003 OWA experience. The ‘/exchange’ virtual directory will also automatically redirect OWA requests for Exchange 2007 mailboxes to the ‘/owa’ virtual directory.

For more information, see this post on the Exchange Team blog.

SCVMM: Test lab built

by Shijaz Abdulla on 14.11.2007 at 10:23

I have finally completed building the servers required for my Exchange 2007 test lab. I have used Microsoft System Center Virtual Machine Manager (SCVMM) for virtualizing the lab environment. For the purposes of testing I will have a total of 10 guest machines running on my SCVMM host. The machines include 2 domain controllers, 2 Exchange 2003 back ends, 2 Exchange 2003 front ends, Exchange 2007 servers (1 hub transport, 1 edge transport, 1 mailbox and 1 CAS).

For easy management of the VMs, I installed the SCVMM Administrator Console on my Windows Vista notebook.

I’m all set to test, validate, and abuse my test lab servers as I wish! [*devilish laugh*]

Transitioning to Exchange Server 2007!

by Shijaz Abdulla on 08.11.2007 at 09:03

The organization that I work for has decided thats it’s time to upgrade to Exchange Server 2007. With approximately 18,000 Exchange mailboxes scattered across one four-node active-active-active-passive cluster and five two-node active-passive clusters spanning six geographic locations, this is going to be a mammoth task, nevertheless exciting!

The project will religiously adhere to the Microsoft Solutions Framework (MSF). Preparation is key to success. One of the most crucial stages is the testing. I’m doing the testing on a virtualized environment. More specifically, System Center Virtual Machine Manager 2007. The virtualization software is Virtual Server 2005 R2. The host is machine is a Windows 2003 x64 box with 16 GB RAM.

The virtualized environment will consist of two domain controllers, two Exchange 2003 backends, two front ends, an Exchange 2007 CAS server, a mailbox server, a hub transport server, and an edge server.

More on my adventures with this massive implementation will follow.