diff --git a/core/modules/aggregator/tests/src/Kernel/Migrate/d6/MigrateBlockTest.php b/core/modules/aggregator/tests/src/Kernel/Migrate/d6/MigrateBlockTest.php
new file mode 100644
index 0000000000..7aac846344
--- /dev/null
+++ b/core/modules/aggregator/tests/src/Kernel/Migrate/d6/MigrateBlockTest.php
@@ -0,0 +1,107 @@
+<?php
+
+namespace Drupal\Tests\aggregator\Kernel\Migrate\d6;
+
+use Drupal\block\Entity\Block;
+use Drupal\Tests\migrate_drupal\Kernel\d6\MigrateDrupal6TestBase;
+
+/**
+ * Tests migration of aggregator block.
+ *
+ * @group aggregator
+ */
+class MigrateBlockTest extends MigrateDrupal6TestBase {
+
+  /**
+   * {@inheritdoc}
+   */
+  protected static $modules = [
+    'aggregator',
+    'block',
+    'block_content',
+    'path_alias',
+  ];
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function setUp(): void {
+    parent::setUp();
+
+    // Install the themes used for this test.
+    $this->container->get('theme_installer')->install(['bartik', 'test_theme']);
+
+    $this->installEntitySchema('block_content');
+    $this->installConfig(['block_content']);
+
+    // Set Bartik as the default public theme.
+    $config = $this->config('system.theme');
+    $config->set('default', 'bartik');
+    $config->save();
+
+    $this->executeMigrations([
+      'd6_filter_format',
+      'block_content_type',
+      'block_content_body_field',
+      'd6_custom_block',
+      'd6_user_role',
+      'd6_block',
+    ]);
+    block_rebuild();
+  }
+
+  /**
+   * Asserts various aspects of a block.
+   *
+   * @param string $id
+   *   The block ID.
+   * @param array $visibility
+   *   The block visibility settings.
+   * @param string $region
+   *   The display region.
+   * @param string $theme
+   *   The theme.
+   * @param int $weight
+   *   The block weight.
+   * @param array $settings
+   *   (optional) The block settings.
+   * @param bool $status
+   *   Whether the block is expected to be enabled or disabled.
+   *
+   * @internal
+   */
+  public function assertEntity(string $id, array $visibility, string $region, string $theme, int $weight, array $settings = NULL, bool $status = TRUE): void {
+    $block = Block::load($id);
+    $this->assertInstanceOf(Block::class, $block);
+    $this->assertSame($visibility, $block->getVisibility());
+    $this->assertSame($region, $block->getRegion());
+    $this->assertSame($theme, $block->getTheme());
+    $this->assertSame($weight, $block->getWeight());
+    $this->assertSame($status, $block->status());
+    if ($settings) {
+      $block_settings = $block->get('settings');
+      $block_settings['id'] = current(explode(':', $block_settings['id']));
+      $this->assertEquals($settings, $block_settings);
+    }
+  }
+
+  /**
+   * Tests the block migration.
+   */
+  public function testBlockMigration() {
+    $blocks = Block::loadMultiple();
+    $this->assertCount(14, $blocks);
+
+    // Check aggregator block.
+    $settings = [
+      'id' => 'aggregator_feed_block',
+      'label' => '',
+      'provider' => 'aggregator',
+      'label_display' => '0',
+      'block_count' => 7,
+      'feed' => '5',
+    ];
+    $this->assertEntity('aggregator', [], 'sidebar_second', 'bartik', -2, $settings);
+  }
+
+}
diff --git a/core/modules/block/src/Plugin/migrate/destination/EntityBlock.php b/core/modules/block/src/Plugin/migrate/destination/EntityBlock.php
index 537b16073e..6a449ea5f3 100644
--- a/core/modules/block/src/Plugin/migrate/destination/EntityBlock.php
+++ b/core/modules/block/src/Plugin/migrate/destination/EntityBlock.php
@@ -2,6 +2,8 @@
 
 namespace Drupal\block\Plugin\migrate\destination;
 
+use Drupal\Core\Config\Schema\SchemaIncompleteException;
+use Drupal\migrate\MigrateException;
 use Drupal\migrate\Plugin\migrate\destination\EntityConfigBase;
 use Drupal\migrate\Row;
 
@@ -25,4 +27,17 @@ protected function getEntityId(Row $row) {
     return reset($blocks);
   }
 
+  /**
+   * {@inheritdoc}
+   */
+  public function import(Row $row, array $old_destination_id_values = []) {
+    try {
+      parent::import($row, $old_destination_id_values);
+    }
+    catch (SchemaIncompleteException $e) {
+      throw new MigrateException($e->getMessage());
+    }
+
+  }
+
 }
diff --git a/core/modules/block/tests/src/Kernel/Migrate/d6/MigrateBlockTest.php b/core/modules/block/tests/src/Kernel/Migrate/d6/MigrateBlockTest.php
index ecbea2ffb9..d5eca1bcf9 100644
--- a/core/modules/block/tests/src/Kernel/Migrate/d6/MigrateBlockTest.php
+++ b/core/modules/block/tests/src/Kernel/Migrate/d6/MigrateBlockTest.php
@@ -23,7 +23,6 @@ class MigrateBlockTest extends MigrateDrupal6TestBase {
     'block_content',
     'taxonomy',
     'node',
-    'aggregator',
     'book',
     'forum',
     'path_alias',
@@ -197,9 +196,9 @@ public function testBlockMigration() {
 
     // Check aggregator block.
     $settings = [
-      'id' => 'aggregator_feed_block',
+      'id' => 'broken',
       'label' => '',
-      'provider' => 'aggregator',
+      'provider' => 'core',
       'label_display' => '0',
       'block_count' => 7,
       'feed' => '5',
@@ -306,6 +305,11 @@ public function testBlockMigration() {
     // Custom block with php code is not migrated.
     $block = Block::load('block_3');
     $this->assertNotInstanceOf(Block::class, $block);
+
+    // Check migrate messages.
+    $messages = iterator_to_array($this->getMigration('d6_block')->getIdMap()->getMessages());
+    $this->assertCount(3, $messages);
+    $this->assertSame($messages[2]->message, 'Schema errors for block.block.aggregator with the following errors: block.block.aggregator:settings.block_count missing schema, block.block.aggregator:settings.feed missing schema');
   }
 
 }
