diff --git a/core/modules/migrate_drupal/config/install/migrate.migration.d6_block.yml b/core/modules/migrate_drupal/config/install/migrate.migration.d6_block.yml
index 494752c..a7a7481 100644
--- a/core/modules/migrate_drupal/config/install/migrate.migration.d6_block.yml
+++ b/core/modules/migrate_drupal/config/install/migrate.migration.d6_block.yml
@@ -90,3 +90,4 @@ migration_dependencies:
   required:
     - d6_menu
     - d6_custom_block
+    - d6_user_role
diff --git a/core/modules/migrate_drupal/src/Plugin/migrate/process/d6/BlockVisibility.php b/core/modules/migrate_drupal/src/Plugin/migrate/process/d6/BlockVisibility.php
index 431b8e9..29b149b 100644
--- a/core/modules/migrate_drupal/src/Plugin/migrate/process/d6/BlockVisibility.php
+++ b/core/modules/migrate_drupal/src/Plugin/migrate/process/d6/BlockVisibility.php
@@ -7,18 +7,50 @@
 
 namespace Drupal\migrate_drupal\Plugin\migrate\process\d6;
 
+use Drupal\Core\Plugin\ContainerFactoryPluginInterface;
 use Drupal\migrate\MigrateExecutable;
 use Drupal\migrate\ProcessPluginBase;
 use Drupal\migrate\Row;
+use Drupal\migrate\Entity\MigrationInterface;
+use Drupal\migrate\Plugin\MigrateProcessInterface;
+use Symfony\Component\DependencyInjection\ContainerInterface;
 
 /**
  * @MigrateProcessPlugin(
  *   id = "d6_block_visibility"
  * )
  */
-class BlockVisibility extends ProcessPluginBase {
+class BlockVisibility extends ProcessPluginBase implements ContainerFactoryPluginInterface {
 
   /**
+   * The migration plugin.
+   *
+   * @var \Drupal\migrate\Plugin\MigrateProcessInterface
+   */
+  protected $migrationPlugin;
+
+  /**
+   * {@inheritdoc}
+   */
+  public function __construct(array $configuration, $plugin_id, $plugin_definition, MigrationInterface $migration, MigrateProcessInterface $migration_plugin) {
+    parent::__construct($configuration, $plugin_id, $plugin_definition);
+    $this->migration = $migration;
+    $this->migrationPlugin = $migration_plugin;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition, MigrationInterface $migration = NULL) {
+    return new static(
+      $configuration,
+      $plugin_id,
+      $plugin_definition,
+      $migration,
+      $container->get('plugin.manager.migrate.process')->createInstance('migration', array('migration' => 'd6_user_role'), $migration)
+    );
+  }
+  /**
    * {@inheritdoc}
    *
    * Set the block visibility settings.
@@ -31,7 +63,10 @@ public function transform($value, MigrateExecutable $migrate_executable, Row $ro
     $visibility['request_path']['negate'] = !$old_visibility;
 
     if (!empty($roles)) {
-      $visibility['user_role']['roles'] = $roles;
+      foreach ($roles as $key => $role_id) {
+        $new_role = $this->migrationPlugin->transform($role_id, $migrate_executable, $row, $destination_property);
+        $visibility['user_role']['roles'][$new_role] = $new_role;
+      }
       $visibility['user_role']['id'] = 'user_role';
       $visibility['user_role']['context_mapping']['user'] = 'user.current_user';
     }
diff --git a/core/modules/migrate_drupal/src/Plugin/migrate/source/d6/Block.php b/core/modules/migrate_drupal/src/Plugin/migrate/source/d6/Block.php
index 9bca13e..fa46518 100644
--- a/core/modules/migrate_drupal/src/Plugin/migrate/source/d6/Block.php
+++ b/core/modules/migrate_drupal/src/Plugin/migrate/source/d6/Block.php
@@ -85,7 +85,7 @@ public function prepareRow(Row $row) {
       ->condition('delta', $delta)
       ->execute()
       ->fetchCol();
-    $row->setSourceProperty('permissions', $roles);
+    $row->setSourceProperty('roles', $roles);
     $settings = array();
     // Contrib can use hook_migration_d6_block_prepare_row() to add similar
     // variables via $migration->getSource()->variableGet().
diff --git a/core/modules/migrate_drupal/src/Tests/Table/Blocks.php b/core/modules/migrate_drupal/src/Tests/Table/Blocks.php
index 634644b..460ac15 100644
--- a/core/modules/migrate_drupal/src/Tests/Table/Blocks.php
+++ b/core/modules/migrate_drupal/src/Tests/Table/Blocks.php
@@ -166,7 +166,7 @@ public function load() {
       'delta' => '0',
       'theme' => 'garland',
       'status' => '0',
-      'weight' => '-6',
+      'weight' => '-9',
       'region' => '',
       'custom' => '0',
       'throttle' => '0',
@@ -194,7 +194,7 @@ public function load() {
       'delta' => 'secondary-links',
       'theme' => 'garland',
       'status' => '0',
-      'weight' => '-5',
+      'weight' => '-8',
       'region' => '',
       'custom' => '0',
       'throttle' => '0',
@@ -208,7 +208,7 @@ public function load() {
       'delta' => '0',
       'theme' => 'garland',
       'status' => '0',
-      'weight' => '-4',
+      'weight' => '-7',
       'region' => '',
       'custom' => '0',
       'throttle' => '0',
@@ -221,9 +221,9 @@ public function load() {
       'module' => 'user',
       'delta' => '2',
       'theme' => 'garland',
-      'status' => '0',
-      'weight' => '-3',
-      'region' => '',
+      'status' => '1',
+      'weight' => '-9',
+      'region' => 'right',
       'custom' => '0',
       'throttle' => '0',
       'visibility' => '0',
@@ -235,9 +235,9 @@ public function load() {
       'module' => 'user',
       'delta' => '3',
       'theme' => 'garland',
-      'status' => '0',
-      'weight' => '-1',
-      'region' => '',
+      'status' => '1',
+      'weight' => '-6',
+      'region' => 'right',
       'custom' => '0',
       'throttle' => '0',
       'visibility' => '0',
@@ -306,7 +306,7 @@ public function load() {
       'delta' => 'feed-5',
       'theme' => 'garland',
       'status' => '0',
-      'weight' => '0',
+      'weight' => '-2',
       'region' => '',
       'custom' => '0',
       'throttle' => '0',
@@ -320,7 +320,7 @@ public function load() {
       'delta' => '2',
       'theme' => 'garland',
       'status' => '0',
-      'weight' => '0',
+      'weight' => '1',
       'region' => '',
       'custom' => '0',
       'throttle' => '0',
@@ -334,7 +334,7 @@ public function load() {
       'delta' => '0',
       'theme' => 'garland',
       'status' => '0',
-      'weight' => '0',
+      'weight' => '-5',
       'region' => '',
       'custom' => '0',
       'throttle' => '0',
@@ -348,7 +348,7 @@ public function load() {
       'delta' => '0',
       'theme' => 'garland',
       'status' => '0',
-      'weight' => '0',
+      'weight' => '-3',
       'region' => '',
       'custom' => '0',
       'throttle' => '0',
@@ -376,7 +376,7 @@ public function load() {
       'delta' => 'event-upcoming-event',
       'theme' => 'garland',
       'status' => '0',
-      'weight' => '0',
+      'weight' => '-1',
       'region' => '',
       'custom' => '0',
       'throttle' => '0',
@@ -390,7 +390,7 @@ public function load() {
       'delta' => '0',
       'theme' => 'garland',
       'status' => '0',
-      'weight' => '0',
+      'weight' => '-4',
       'region' => '',
       'custom' => '0',
       'throttle' => '0',
diff --git a/core/modules/migrate_drupal/src/Tests/Table/BlocksRoles.php b/core/modules/migrate_drupal/src/Tests/Table/BlocksRoles.php
index e69bcb7..02c0275 100644
--- a/core/modules/migrate_drupal/src/Tests/Table/BlocksRoles.php
+++ b/core/modules/migrate_drupal/src/Tests/Table/BlocksRoles.php
@@ -50,7 +50,15 @@ public function load() {
       'delta',
       'rid',
     ))
-    ->execute();
+    ->values(array(
+      'module' => 'user',
+      'delta' => '2',
+      'rid' => '2',
+    ))->values(array(
+      'module' => 'user',
+      'delta' => '3',
+      'rid' => '3',
+    ))->execute();
   }
 
 }
diff --git a/core/modules/migrate_drupal/src/Tests/Table/Variable.php b/core/modules/migrate_drupal/src/Tests/Table/Variable.php
index b848e70..482cef1 100644
--- a/core/modules/migrate_drupal/src/Tests/Table/Variable.php
+++ b/core/modules/migrate_drupal/src/Tests/Table/Variable.php
@@ -655,6 +655,15 @@ public function load() {
       'name' => 'upload_story',
       'value' => 'b:1;',
     ))->values(array(
+      'name' => 'user_block_max_list_count',
+      'value' => 's:2:"10";',
+    ))->values(array(
+      'name' => 'user_block_seconds_online',
+      'value' => 's:3:"900";',
+    ))->values(array(
+      'name' => 'user_block_whois_new_count',
+      'value' => 's:1:"5";',
+    ))->values(array(
       'name' => 'user_email_verification',
       'value' => 'i:0;',
     ))->values(array(
diff --git a/core/modules/migrate_drupal/src/Tests/d6/MigrateBlockTest.php b/core/modules/migrate_drupal/src/Tests/d6/MigrateBlockTest.php
index abd0d69..99511a1 100644
--- a/core/modules/migrate_drupal/src/Tests/d6/MigrateBlockTest.php
+++ b/core/modules/migrate_drupal/src/Tests/d6/MigrateBlockTest.php
@@ -57,6 +57,10 @@ protected function setUp() {
       'd6_menu' => array(
         array(array('menu1'), array('menu')),
       ),
+      'd6_user_role' => array(
+        array(array(2), array('authenticated')),
+        array(array(3), array('migrate_test_role_1')),
+      ),
     ));
 
     // Set Bartik and Seven as the default public and admin theme.
@@ -85,7 +89,7 @@ protected function setUp() {
    */
   public function testBlockMigration() {
     $blocks = Block::loadMultiple();
-    $this->assertEqual(count($blocks), 8);
+    $this->assertEqual(count($blocks), 10);
 
     // User blocks
     $test_block_user = $blocks['user'];
@@ -104,6 +108,30 @@ public function testBlockMigration() {
     $this->assertTrue(empty($visibility['request_path']['pages']));
     $this->assertEqual(0, $test_block_user_1->getWeight());
 
+    $test_block_user_2 = $blocks['user_2'];
+    $this->assertNotNull($test_block_user_2);
+    $this->assertEqual('sidebar_second', $test_block_user_2->getRegion());
+    $this->assertEqual('bartik', $test_block_user_2->getTheme());
+    $visibility = $test_block_user_2->getVisibility();
+    $this->assertEqual($visibility['user_role']['id'], 'user_role');
+    $roles = array();
+    $roles['authenticated'] = 'authenticated';
+    $this->assertEqual($visibility['user_role']['roles'], $roles);
+    $this->assertFalse($visibility['user_role']['negate']);
+    $this->assertEqual(-9, $test_block_user_2->getWeight());
+
+    $test_block_user_3 = $blocks['user_3'];
+    $this->assertNotNull($test_block_user_3);
+    $this->assertEqual('sidebar_second', $test_block_user_3->getRegion());
+    $this->assertEqual('bartik', $test_block_user_3->getTheme());
+    $visibility = $test_block_user_3->getVisibility();
+    $this->assertEqual($visibility['user_role']['id'], 'user_role');
+    $roles = array();
+    $roles['migrate_test_role_1'] = 'migrate_test_role_1';
+    $this->assertEqual($visibility['user_role']['roles'], $roles);
+    $this->assertFalse($visibility['user_role']['negate']);
+    $this->assertEqual(-6, $test_block_user_3->getWeight());
+
     // Check system block
     $test_block_system = $blocks['system'];
     $this->assertNotNull($test_block_system);
