Strategy for upgrading large Drupal 6 site to D7 We are running a middle sized Drupal 6 site (about 10k nodes plus comments, 200k user accounts), which is using many additional modules like OG, Views, CCK, Messaging, Notifications, CKEditor, Syntaxhighlighter, Pathauto, Token, Captcha, User Relationships, Fivestart, XML Sitemap. In addition, there are about 10 custom modules, most of them rather simple.

We now wonder how to upgrade to D7? We evaluated the following strategies, which don't seem to work:


Start from scratch with a blank D7 installation, configure it, set up all modules as we need them and migrate the existing content. The problem is about migrating existing content. When we set up the site, we need to create things like node types, roles, taxonomies, but when we migrate the content, the IDs of those entities might differ. It seems to be a very error prone approach.
Use official upgrade procedure. If we are not mistaken, the idea of the official upgrade procedure is disable all third party modules, replace core with D7, run update procedure, upload D7 version of modules, enable them and run their update and hope everything goes well. Problem here is that a lot of the modules we are using are moved to core or work now differently, but we still reference their functions in our theme all over the place. This again is very error prone. Also, the database contains afterwards many unused tables, but it is very hard to tell if we really need them.


What other options do we have? Personally, I would prefer to follow strategy 1, but we can't figure out how to migrate content.
Although both methods are valid, #2 can be painful if you have a lof of custom code in your app. I would consider option #1.  Migration is quite straightforward using migrate module. 

There is a little more overhead than doing a straight-up upgrade but the process is very well documented and well integrated with Drush.  With migrate you can even have roll-backs and migration reports out of the box, all scriptable and quite easily automated.

I have done some pretty large migrations myself with this module and it works like a charm once in place.

PS: No worry for your entity id's, migrate uses the same nid when it imports the nodes.