I'm in the process of migrating from Exchange 2007 to Exchange 2010. I thought Microsoft would make this fairly easy (for their benefit as much as the users'). Oh how wrong I was.
Firstly, it's impossible to do an in-place upgrade from 2007 to 2010. The only supported upgrade path is to build a new physical (or virtual) server, install 2010 and move all mailboxes from 2007 to 2010. We need to upgrade our hardware to add more storage space for our mailboxes, so this was the general idea anyway but is still a complete pain especially for a smaller company with limited hardware resources.
So, I've got 2010 installed on my new server. Now, Exchange is supposed to be an enterprise level system, therefore you'd expect to be able to move mailboxes between servers with very little effort. Again, wrong. The actual move of a mailbox from 2007 to 2010 is quite painless admittedly, but only if you never want to access it again. I would have thought that the two servers would communicate seamlessly with each other, but this is not the case. Firstly, connecting an ActiveSync client (such as an Android phone or Mac Mail client) to 2007 to access the 2010 mailbox fails due to version differences. Similarly, connecting to 2010 to access the 2007 mailbox also fails due to some unexplained internal error. This means that I had to setup a new external IP/FQDN to the new server, and as I move each mailbox over, re-configure each client one at a time. Frustrating to say the least, and I only have a small number of clients.
Even Outlook doesn't escape unscathed. Outlook 2003 users (yes they still exist) must go into their account settings and enable encryption as 2010 no longer supports unencrypted connections. Easy when you know how, but a generic "unable to connect" error does not point you in the right direction.
Then there's certificates. My God, how complicated can it be? I just want my clients to connect to the server without having to ignore scary certificate warnings.
Finally, and the most ridiculous part of all this is that Outlook 2010 clients fail to send to Exchange 2010 via SMTP. For SPAM reasons we only let known and trusted servers through our firewall over SMTP to prevent any infected internal machines from sending out SPAM (no one likes to be blacklisted after all). Anyone who wants to send e-mails via their personal accounts must use our Exchange server as a relay, but Outlook consistently fails to send a basic message to Exchange 2010 over SMTP. This is a known bug as of earlier this year and as yet is still unfixed.
Exchange 2000, please come back, all is forgiven.