Need to migrate large, complex Drupal 6 site to Drupal 8. Suggestions for a good way to tackle this if the core Migrate Upgrade doesn't work for me? I have a lot of experience with Drupal 5, 6 and 7 and am just starting with Drupal 8 and I have a large, complex Drupal 6 site that I need to migrate to D8.

I first tried using D8's Migrate Upgrade but it fails part way through. I didn't have high hopes for this to work but I thought if it could at least get the users and bulk content in then that would be a great starting point. It was unable to accomplish either.

So now I'm going to go the export/import route and try to rebuild the data manually. I've done this a number of times upgrading D6->D7 using XML Views to create the export and Feeds to map and import. It looks like Feeds is nowhere near ready for use yet.

Is using core Migrate module along with other contrib modules to right approach? Is what I'm trying to do even possible?

If so, could anyone point me in the correct direction to get started? I've heard migration plugins mentioned before, I'm assuming that I'll have to create custom migration plugins to make this work, correct?
I guess it depends on what your Drupal 6 does and contains. It's not the same if your complex site has lots of content but little functionality (a large blog, for example), or if it has some or lots of content AND complex functionality (news site publishing workflow with rules, complex permissions, etc). Every case is different.

If what you have is lots of content, this could apply: I recently moved lots of content (around 26k items that became nodes) from a Frankenstein WordPress-based app, and found the following approach useful:

Do exhaustive pre-production:


Make an inventory of everything you have in your old site. Mark what is valuable and what is not.
Based on that inventory, design the entities, fields, taxonomy and relationships that will contain them in your D8 instance.
Make a detailed migration map that makes it explicit how each fragment will map to its new location, and what will be left behind / lost.


Then implement your migration tools:


Export your content (the things you decided are worth migrating) to XML, JSON, or whatever format you feel more comfortable with.
Instead of messing with migration modules, I wrote several drush scripts that read from the old app's db, extract items and save them into entities.
The scripts had reset, migrate_all and type-specific migration routines that helped me test again and again and again, until everything was just right.
Automate everything and make it easy to clear and repeat. There are lots of things that can go wrong, but it's not a problem if you can simply ./reset.drush; ./migrate_all.drush.


Hope this helps.