Last night I decided to take care of my outdated modules and ran into some problems with Migrate and Wordpress Migrate. Among my outdated modules are Migrate and Wordpress Migrate. This site is on a staging host until it can replace the existing site, which is WordPress 3.9.3. Drupal is currently running with all cacheing and several other optimizations disabled while I finish it up.

Dump database, turn on Maintenance mode, go to upgrade.php.

  • Migrate: 7.x.2.6 to 7.x.2.7
  • WordPress Migrate: 7.x.2.2 to 7.x.2.3

The upgrade fails with this message:

An AJAX HTTP error occurred.

HTTP Result Code: 500

Debugging information follows.

Path: [base url]/update.php?op=selection&token=VcOE8fAChytSw_juB0oF-9e7XLuCNf35J9IPgIRWT9Q&id=44&op=do
StatusText: Service unavailable (with message)
ResponseText: Recoverable fatal error: Argument 6 passed to MigrateSourceXML::__construct() must be of the type array, null given,
called in [path to drupal]/sites/all/modules/wordpress_migrate/wordpress_author.inc on line 46
and defined in MigrateSourceXML->__construct() (line 1206 of [path to drupal]/sites/all/modules/migrate/plugins/sources/xml.inc).

I tried this twice and got a the same result.

Restore database from dump, put the old versions of these modules back in place.

Generate a fresh export from WP and try to migrate. There are about a dozen posts, a couple pages, and several images that need to be migrated. I've done this three times before, so I'm no stranger to it.

However, nothing gets migrated, and I'm met with this stack of errors (PHP 5.4.38 running as FastCGI):

Passing a group object to a migration constructor is now deprecated - pass through the arguments array passed to the leaf class instead.
The DynamicMigration class is no longer necessary and is now deprecated - please derive your migration classes directly from Migration.
The field mapping arguments() method is now deprecated - please use subfield notation instead.
The field mapping arguments() method is now deprecated - please use subfield notation instead.
The field mapping arguments() method is now deprecated - please use subfield notation instead.
No migration found with machine name WordPressAuthor
No migration found with machine name WordPressBlogEntry
No migration found with machine name WordPressPage
No migration found with machine name WordPressAttachment
No migration found with machine name WordPressComment
Passing a group object to a migration constructor is now deprecated - pass through the arguments array passed to the leaf class instead.
The DynamicMigration class is no longer necessary and is now deprecated - please derive your migration classes directly from Migration.
The field mapping arguments() method is now deprecated - please use subfield notation instead.
The field mapping arguments() method is now deprecated - please use subfield notation instead.
The field mapping arguments() method is now deprecated - please use subfield notation instead.

The progress bar goes from "Starting import process" to 100% almost instantly. I flushed all caches and tried stripping the XML down to only the new entries, but still nothing migrated.

I've confirmed twice that the outdated module code is what's in sites/all/modules, but it seems like the newer code is being executed.

What should my next steps be?

Comments

John_B’s picture

What should my next steps be?

1. Ask yourself why you need to update Migrate and Wordpress Migrate, since the older versions were working for you and these updates are not security updates. With Drupal updates it is sometimes best not to fix what is not broken.
2. Open an issue for Wordpress Migrate.

Digit Professionals specialising in Drupal, WordPress & CiviCRM support for publishers in non-profit and related sectors