Drupal is a registered trademark of Dries Buytaert
Drupal 10.6.14 Update released for Drupal core (10.6.14)! Drupal 11.3.16 Update released for Drupal core (11.3.16)! OAuth2 Client 4.2.0 Minor update available for module oauth2_client (4.2.0). OAuth2 Client 4.1.5 Minor update available for module oauth2_client (4.1.5). CKeditor Details Accordion 2.1.1 Minor update available for module ckeditor_details (2.1.1). Schema Markup Generator using AI 1.0.2 Minor update available for module ai_schema_markup_generator (1.0.2). DSFR for Drupal 1.6.2 Minor update available for theme dsfr4drupal (1.6.2). DSFR for Drupal 1.6.1 Minor update available for theme dsfr4drupal (1.6.1). Field Defaults 2.1.1 Module field_defaults updated after 15 months of inactivity (2.1.1). Provus Mega Menu Module provus_mega_menu crossed 1,000 active installs.

This module automatically re-queues the migrate failed rows so that they can be re-migrated. It is useful in case a row can not be migrated due to errors that can not be migrated from the migration side. For example: when the destination is a third party, and it has a temporary problem that won't be solved until some specific time, in that case, it is needed to re-migrate that item later.

The number of a row that is retried to migrate is limited to prevent bottlenecks. Currently, the maximum number of retries is 5.

Installation

After installing the module in an usual way, it is needed to add this line to the settings.php:

$settings['queue_service_migrate_retry'] = 'queue.migrate_retry';

Configuration

On the configuration page, check which migrations do you want to use the migrate_retry system.

How it works

To make the migrate items to be retried, it is needed to throw a MigrateException with the needs retry status (\Drupal\migrate_retry\MigrateIdMapInterface::STATUS_NEEDS_RETRY), when the items are failing. Only those rows having the source_row_status value as needs retry will be retried.

There is an example about how to throw the exception at the migrate destination used for tests.

After marking the row with that status, that row will be enqueued by the cron, and a queue worker will re-migrate the item.

It is also possible to enqueue items to retry using the queue manager service:

// Ids of a migrate row in which sourceid1 is 1 and sourceid2 is 34.
$source_ids = [1, 34]
$migration_id = 'my_custom_migration';
\Drupal::service('migrate_retry.queue_manager')->enqueueMigrateRow($migration_id, $source_ids);

Activity

Total releases
1
First release
Jul 2026
Latest release
5 hours ago
Releases (12 mo)
1 ▲ from 0
Maintenance
Active

Releases

Version Type Release date
2.1.0 Stable Jul 24, 2026