diff --git a/core/lib/Drupal/Core/Entity/Entity.php b/core/lib/Drupal/Core/Entity/Entity.php
index ba7380a..cb1572b 100644
--- a/core/lib/Drupal/Core/Entity/Entity.php
+++ b/core/lib/Drupal/Core/Entity/Entity.php
@@ -156,8 +156,9 @@ public function urlInfo($rel = 'canonical') {
     $link_templates = $this->linkTemplates();
 
     if (isset($link_templates[$rel])) {
-      // If there is a template for the given relationship type, generate the path.
-      $uri = new Url($link_templates[$rel], $this->urlRouteParameters($rel));
+      $route_parameters = $this->urlRouteParameters($rel);
+      $route_name = "entity.{$this->entityTypeId}." . str_replace(array('-', 'drupal:'), array('_', ''), $rel);
+      $uri = new Url($route_name, $route_parameters);
     }
     else {
       $bundle = $this->bundle();
@@ -215,7 +216,7 @@ public function hasLinkTemplate($rel) {
    * Returns an array link templates.
    *
    * @return array
-   *   An array of link templates containing route names.
+   *   An array of link templates containing route names (temporary) or paths.
    */
   protected function linkTemplates() {
     return $this->getEntityType()->getLinkTemplates();
diff --git a/core/lib/Drupal/Core/Entity/EntityManager.php b/core/lib/Drupal/Core/Entity/EntityManager.php
index 26eac4e..ab7fc1a 100644
--- a/core/lib/Drupal/Core/Entity/EntityManager.php
+++ b/core/lib/Drupal/Core/Entity/EntityManager.php
@@ -315,6 +315,20 @@ public function getHandler($entity_type, $handler_type) {
   /**
    * {@inheritdoc}
    */
+  public function getAdminRouteInfo($entity_type_id, $bundle) {
+    if (($entity_type = $this->getDefinition($entity_type_id, FALSE)) && $entity_type->getLinkTemplate('admin-form')) {
+      return array(
+        'route_name' => "entity.$entity_type_id.admin_form",
+        'route_parameters' => array(
+          $entity_type->getBundleEntityType() => $bundle,
+        ),
+      );
+    }
+  }
+
+  /**
+   * {@inheritdoc}
+   */
   public function getBaseFieldDefinitions($entity_type_id) {
     // Check the static cache.
     if (!isset($this->baseFieldDefinitions[$entity_type_id])) {
diff --git a/core/lib/Drupal/Core/Entity/EntityType.php b/core/lib/Drupal/Core/Entity/EntityType.php
index 37ed343..e307dd3 100644
--- a/core/lib/Drupal/Core/Entity/EntityType.php
+++ b/core/lib/Drupal/Core/Entity/EntityType.php
@@ -533,8 +533,8 @@ public function hasLinkTemplate($key) {
   /**
    * {@inheritdoc}
    */
-  public function setLinkTemplate($key, $route_name) {
-    $this->links[$key] = $route_name;
+  public function setLinkTemplate($key, $path) {
+    $this->links[$key] = $path;
     return $this;
   }
 
diff --git a/core/lib/Drupal/Core/Entity/EntityTypeInterface.php b/core/lib/Drupal/Core/Entity/EntityTypeInterface.php
index a1c1bc9..e421df1 100644
--- a/core/lib/Drupal/Core/Entity/EntityTypeInterface.php
+++ b/core/lib/Drupal/Core/Entity/EntityTypeInterface.php
@@ -440,7 +440,8 @@ public function getLinkTemplates();
    *   The link type.
    *
    * @return string|bool
-   *   The route name for this link, or FALSE if it doesn't exist.
+   *   The route name (temporary) or path for this link, or FALSE if it doesn't
+   *   exist.
    */
   public function getLinkTemplate($key);
 
@@ -460,12 +461,12 @@ public function hasLinkTemplate($key);
    *
    * @param string $key
    *   The name of a link.
-   * @param string $route_name
-   *   The route name to use for the link.
+   * @param string $path
+   *   The route name (temporary) or path to use for the link.
    *
    * @return static
    */
-  public function setLinkTemplate($key, $route_name);
+  public function setLinkTemplate($key, $path);
 
   /**
    * Gets the callback for the label of the entity.
diff --git a/core/lib/Drupal/Core/Plugin/DefaultPluginManager.php b/core/lib/Drupal/Core/Plugin/DefaultPluginManager.php
index e1d0731..d6e9e71 100644
--- a/core/lib/Drupal/Core/Plugin/DefaultPluginManager.php
+++ b/core/lib/Drupal/Core/Plugin/DefaultPluginManager.php
@@ -179,7 +179,7 @@ public function clearCachedDefinitions() {
    *   and would actually be returned by the getDefinitions() method.
    */
   protected function getCachedDefinitions() {
-    if (!isset($this->definitions) && $this->cacheBackend && $cache = $this->cacheBackend->get($this->cacheKey)) {
+    if (FALSE && !isset($this->definitions) && $this->cacheBackend && $cache = $this->cacheBackend->get($this->cacheKey)) {
       $this->definitions = $cache->data;
     }
     return $this->definitions;
diff --git a/core/modules/action/action.module b/core/modules/action/action.module
index 8e11de1..5e0412e 100644
--- a/core/modules/action/action.module
+++ b/core/modules/action/action.module
@@ -29,7 +29,7 @@ function action_help($route_name, RouteMatchInterface $route_match) {
       $output = '<p>' . t('There are two types of actions: simple and advanced. Simple actions do not require any additional configuration and are listed here automatically. Advanced actions need to be created and configured before they can be used because they have options that need to be specified; for example, sending an email to a specified address or unpublishing content containing certain words. To create an advanced action, select the action from the drop-down list in the advanced action section below and click the <em>Create</em> button.') . '</p>';
       return $output;
 
-    case 'action.admin_configure':
+    case 'entity.action.edit_form':
       return t('An advanced action offers additional configuration options which may be filled out below. Changing the <em>Description</em> field is recommended in order to better identify the precise action taking place.');
   }
 }
@@ -55,6 +55,6 @@ function action_entity_type_build(array &$entity_types) {
     ->setFormClass('edit', 'Drupal\action\ActionEditForm')
     ->setFormClass('delete', 'Drupal\action\Form\ActionDeleteForm')
     ->setListBuilderClass('Drupal\action\ActionListBuilder')
-    ->setLinkTemplate('delete-form', 'action.delete')
-    ->setLinkTemplate('edit-form', 'action.admin_configure');
+    ->setLinkTemplate('delete-form', 'entity.action.delete_form')
+    ->setLinkTemplate('edit-form', 'entity.action.edit_form');
 }
diff --git a/core/modules/action/action.routing.yml b/core/modules/action/action.routing.yml
index 535830a..c75ff23 100644
--- a/core/modules/action/action.routing.yml
+++ b/core/modules/action/action.routing.yml
@@ -14,7 +14,7 @@ action.admin_add:
   requirements:
     _permission: 'administer actions'
 
-action.admin_configure:
+entity.action.edit_form:
   path: '/admin/config/system/actions/configure/{action}'
   defaults:
     _entity_form: 'action.edit'
@@ -22,7 +22,7 @@ action.admin_configure:
   requirements:
     _permission: 'administer actions'
 
-action.delete:
+entity.action.delete_form:
   path: '/admin/config/system/actions/configure/{action}/delete'
   defaults:
     _entity_form: 'action.delete'
diff --git a/core/modules/config_translation/config_translation.module b/core/modules/config_translation/config_translation.module
index 43aa754..339e13e 100644
--- a/core/modules/config_translation/config_translation.module
+++ b/core/modules/config_translation/config_translation.module
@@ -103,7 +103,7 @@ function config_translation_entity_type_alter(array &$entity_types) {
       $entity_type->setHandlerClass('config_translation_list', $class);
 
       if ($entity_type->hasLinkTemplate('edit-form')) {
-        $entity_type->setLinkTemplate('drupal:config-translation-overview', 'config_translation.item.overview.' . $entity_type->getLinkTemplate('edit-form'));
+        $entity_type->setLinkTemplate('drupal:config-translation-overview', 'entity.' . $entity_type_id . '.config_translation_overview');
       }
     }
   }
@@ -162,9 +162,10 @@ function config_translation_config_translation_info(&$info) {
     }
 
     // Use the entity type as the plugin ID.
+    $base_route_name = "entity.$entity_type_id.edit_form";
     $info[$entity_type_id] = array(
       'class' => '\Drupal\config_translation\ConfigEntityMapper',
-      'base_route_name' => $entity_type->getLinkTemplate('edit-form'),
+      'base_route_name' => $base_route_name,
       'title' => '!label !entity_type',
       'names' => array(),
       'entity_type' => $entity_type_id,
diff --git a/core/modules/config_translation/src/ConfigEntityMapper.php b/core/modules/config_translation/src/ConfigEntityMapper.php
index ce66ff6..29770e3 100644
--- a/core/modules/config_translation/src/ConfigEntityMapper.php
+++ b/core/modules/config_translation/src/ConfigEntityMapper.php
@@ -241,6 +241,13 @@ public function getContextualLinkGroup() {
   /**
    * {@inheritdoc}
    */
+  public function getOverviewRouteName() {
+    return 'entity.' . $this->entityType . '.config_translation_overview';
+  }
+
+  /**
+   * {@inheritdoc}
+   */
   protected function processRoute(Route $route) {
     // Add entity upcasting information.
     $parameters = $route->getOption('parameters') ?: array();
diff --git a/core/modules/contact/contact.links.task.yml b/core/modules/contact/contact.links.task.yml
index becce68..2c38ae2 100644
--- a/core/modules/contact/contact.links.task.yml
+++ b/core/modules/contact/contact.links.task.yml
@@ -3,8 +3,8 @@ entity.contact_form.edit_form:
   route_name: entity.contact_form.edit_form
   base_route: entity.contact_form.edit_form
 
-contact.personal_page:
+entity.user.contact_form:
   title: 'Contact'
-  route_name: contact.personal_page
+  route_name: entity.user.contact_form
   weight: 2
   base_route: entity.user.canonical
diff --git a/core/modules/contact/contact.module b/core/modules/contact/contact.module
index afbbc8d..ac073eb 100644
--- a/core/modules/contact/contact.module
+++ b/core/modules/contact/contact.module
@@ -60,7 +60,7 @@ function contact_permission() {
  */
 function contact_entity_type_alter(array &$entity_types) {
   /** @var $entity_types \Drupal\Core\Entity\EntityTypeInterface[] */
-  $entity_types['user']->setLinkTemplate('contact-form', 'contact.personal_page');
+  $entity_types['user']->setLinkTemplate('contact-form', 'entity.user.contact_form');
 }
 
 /**
diff --git a/core/modules/contact/contact.routing.yml b/core/modules/contact/contact.routing.yml
index 567ccf0..7eb0739 100644
--- a/core/modules/contact/contact.routing.yml
+++ b/core/modules/contact/contact.routing.yml
@@ -47,7 +47,7 @@ contact.site_page_form:
   requirements:
     _entity_access: 'contact_form.view'
 
-contact.personal_page:
+entity.user.contact_form:
   path: '/user/{user}/contact'
   defaults:
     _title: 'Contact'
diff --git a/core/modules/content_translation/src/Plugin/Derivative/ContentTranslationContextualLinks.php b/core/modules/content_translation/src/Plugin/Derivative/ContentTranslationContextualLinks.php
index b1f424f..9afcd5f 100644
--- a/core/modules/content_translation/src/Plugin/Derivative/ContentTranslationContextualLinks.php
+++ b/core/modules/content_translation/src/Plugin/Derivative/ContentTranslationContextualLinks.php
@@ -53,7 +53,13 @@ public function getDerivativeDefinitions($base_plugin_definition) {
     // Create contextual links for translatable entity types.
     foreach ($this->contentTranslationManager->getSupportedEntityTypes() as $entity_type_id => $entity_type) {
       $this->derivatives[$entity_type_id]['title'] = t('Translate');
-      $this->derivatives[$entity_type_id]['route_name'] = $entity_type->getLinkTemplate('drupal:content-translation-overview');
+      // @TODO What to do with this once link templates are paths again?
+      if (($link_template = $entity_type->getLinkTemplate('drupal:content-translation-overview')) && strpos($link_template, '/') !== FALSE) {
+        $this->derivatives[$entity_type_id]['route_name'] = "entity.$entity_type_id.content_translation_overview";
+      }
+      else {
+        $this->derivatives[$entity_type_id]['route_name'] = $entity_type->getLinkTemplate('drupal:content-translation-overview');
+      }
       $this->derivatives[$entity_type_id]['group'] = $entity_type_id;
     }
     return parent::getDerivativeDefinitions($base_plugin_definition);
diff --git a/core/modules/content_translation/src/Plugin/Derivative/ContentTranslationLocalTasks.php b/core/modules/content_translation/src/Plugin/Derivative/ContentTranslationLocalTasks.php
index 8b060f2..995de59 100644
--- a/core/modules/content_translation/src/Plugin/Derivative/ContentTranslationLocalTasks.php
+++ b/core/modules/content_translation/src/Plugin/Derivative/ContentTranslationLocalTasks.php
@@ -61,13 +61,14 @@ public function getDerivativeDefinitions($base_plugin_definition) {
     // Create tabs for all possible entity types.
     foreach ($this->contentTranslationManager->getSupportedEntityTypes() as $entity_type_id => $entity_type) {
       // Find the route name for the translation overview.
-      $translation_route_name = $entity_type->getLinkTemplate('drupal:content-translation-overview');
+      $translation_route_name = "entity.$entity_type_id.content_translation_overview";
 
+      $base_route_name = "entity.$entity_type_id.canonical";
       $this->derivatives[$translation_route_name] = array(
         'entity_type' => $entity_type_id,
         'title' => 'Translate',
         'route_name' => $translation_route_name,
-        'base_route' => $entity_type->getLinkTemplate('canonical'),
+        'base_route' => $base_route_name,
       ) + $base_plugin_definition;
     }
     return parent::getDerivativeDefinitions($base_plugin_definition);
diff --git a/core/modules/content_translation/src/Routing/ContentTranslationRouteSubscriber.php b/core/modules/content_translation/src/Routing/ContentTranslationRouteSubscriber.php
index ce8bd57..a33b07b 100644
--- a/core/modules/content_translation/src/Routing/ContentTranslationRouteSubscriber.php
+++ b/core/modules/content_translation/src/Routing/ContentTranslationRouteSubscriber.php
@@ -42,17 +42,26 @@ public function __construct(ContentTranslationManagerInterface $content_translat
   protected function alterRoutes(RouteCollection $collection) {
     foreach ($this->contentTranslationManager->getSupportedEntityTypes() as $entity_type_id => $entity_type) {
       // Try to get the route from the current collection.
-      if (!$entity_route = $collection->get($entity_type->getLinkTemplate('canonical'))) {
-        continue;
+      $link_template = $entity_type->getLinkTemplate('canonical');
+      if (strpos($link_template, '/') !== FALSE) {
+        $base_path = '/' . $link_template;
+      }
+      else {
+        if (!$entity_route = $collection->get("entity.$entity_type_id.canonical")) {
+          continue;
+        }
+        $base_path = $entity_route->getPath();
       }
-      $path = $entity_route->getPath() . '/translations';
 
       // Inherit admin route status from edit route, if exists.
       $is_admin = FALSE;
-      if ($edit_route = $collection->get($entity_type->getLinkTemplate('edit-form'))) {
+      $route_name = "entity.$entity_type_id.edit_form";
+      if ($edit_route = $collection->get($route_name)) {
         $is_admin = (bool) $edit_route->getOption('_admin_route');
       }
 
+      $path = $base_path . '/translations';
+
       $route = new Route(
         $path,
         array(
@@ -71,7 +80,8 @@ protected function alterRoutes(RouteCollection $collection) {
           '_admin_route' => $is_admin,
         )
       );
-      $collection->add($entity_type->getLinkTemplate('drupal:content-translation-overview'), $route);
+      $route_name = "entity.$entity_type_id.content_translation_overview";
+      $collection->add($route_name, $route);
 
       $route = new Route(
         $path . '/add/{source}/{target}',
diff --git a/core/modules/field/src/Entity/FieldInstanceConfig.php b/core/modules/field/src/Entity/FieldInstanceConfig.php
index 4a4239d..911bda7 100644
--- a/core/modules/field/src/Entity/FieldInstanceConfig.php
+++ b/core/modules/field/src/Entity/FieldInstanceConfig.php
@@ -258,12 +258,12 @@ public static function postDelete(EntityStorageInterface $storage, array $instan
   protected function linkTemplates() {
     $link_templates = parent::linkTemplates();
     if (\Drupal::moduleHandler()->moduleExists('field_ui')) {
-      $link_templates['edit-form'] = 'field_ui.instance_edit_' . $this->entity_type;
-      $link_templates['storage-edit-form'] = 'field_ui.storage_edit_' . $this->entity_type;
-      $link_templates['delete-form'] = 'field_ui.delete_' . $this->entity_type;
+      $link_templates["field_ui.instance-{$this->entity_type}-edit-form"] = 'field_ui.instance_edit_' . $this->entity_type;
+      $link_templates["field_ui.storage-{$this->entity_type}-edit-form"] = 'field_ui.storage_edit_' . $this->entity_type;
+      $link_templates["field_ui.{$this->entity_type}-delete-form"] = 'field_ui.delete_' . $this->entity_type;
 
       if (isset($link_templates['drupal:config-translation-overview'])) {
-        $link_templates['drupal:config-translation-overview'] .= $link_templates['edit-form'];
+        $link_templates['drupal:config-translation-overview' . "field_ui.instance-{$this->entity_type}-edit-form"] .= $link_templates["field_ui.instance-{$this->entity_type}-edit-form"];
       }
     }
     return $link_templates;
diff --git a/core/modules/field_ui/field_ui.module b/core/modules/field_ui/field_ui.module
index 4cd3bce..1cce756 100644
--- a/core/modules/field_ui/field_ui.module
+++ b/core/modules/field_ui/field_ui.module
@@ -116,9 +116,9 @@ function field_ui_entity_type_build(array &$entity_types) {
   foreach ($entity_types as $entity_type) {
     if ($bundle = $entity_type->getBundleOf()) {
       $entity_type
-        ->setLinkTemplate('field_ui-fields', "field_ui.overview_$bundle")
-        ->setLinkTemplate('field_ui-form-display', "field_ui.form_display_overview_$bundle")
-        ->setLinkTemplate('field_ui-display', "field_ui.display_overview_$bundle");
+        ->setLinkTemplate('field_ui-fields', "entity.{$entity_type->id()}.field_ui_fields")
+        ->setLinkTemplate('field_ui-form-display', "entity.{$entity_type->id()}.field_ui_form_display")
+        ->setLinkTemplate('field_ui-display', "entity.{$entity_type->id()}.field_ui_display");
     }
   }
 }
diff --git a/core/modules/field_ui/src/FieldInstanceConfigListBuilder.php b/core/modules/field_ui/src/FieldInstanceConfigListBuilder.php
index 74252e0..2bdb042 100644
--- a/core/modules/field_ui/src/FieldInstanceConfigListBuilder.php
+++ b/core/modules/field_ui/src/FieldInstanceConfigListBuilder.php
@@ -62,11 +62,25 @@ public function getDefaultOperations(EntityInterface $entity) {
     /** @var \Drupal\field\FieldInstanceConfigInterface $entity */
     $operations = parent::getDefaultOperations($entity);
 
+    if ($entity->access('update') && $entity->hasLinkTemplate("field_ui.instance-{$entity->entity_type}-edit-form")) {
+      $operations['edit'] = array(
+          'title' => $this->t('Edit'),
+          'weight' => 10,
+        ) + $entity->urlInfo("field_ui.instance-{$entity->entity_type}-edit-form")->toArray();
+    }
+    if ($entity->access('delete') && $entity->hasLinkTemplate("field_ui.{$entity->entity_type}-delete-form")) {
+      $operations['delete'] = array(
+          'title' => $this->t('Delete'),
+          'weight' => 100,
+        ) + $entity->urlInfo("field_ui.{$entity->entity_type}-delete-form")->toArray();
+    }
+
+    $bundle = $this->entityManager->getDefinition($entity->entity_type)->getBundleEntityType();
     $operations['storage-settings'] = array(
       'title' => $this->t('Field settings'),
       'weight' => 20,
       'attributes' => array('title' => $this->t('Edit field settings.')),
-    ) + $entity->urlInfo('storage-edit-form')->toArray();
+    ) + $entity->urlInfo("field_ui.storage-{$entity->entity_type}-edit-form")->toArray();
     $operations['edit']['attributes']['title'] = $this->t('Edit instance settings.');
     $operations['delete']['attributes']['title'] = $this->t('Delete instance.');
 
diff --git a/core/modules/field_ui/src/FieldOverview.php b/core/modules/field_ui/src/FieldOverview.php
index 6d5f15f..5031781 100644
--- a/core/modules/field_ui/src/FieldOverview.php
+++ b/core/modules/field_ui/src/FieldOverview.php
@@ -135,7 +135,7 @@ public function buildForm(array $form, FormStateInterface $form_state, $entity_t
         'type' => array(
           '#type' => 'link',
           '#title' => $field_types[$field_storage->getType()]['label'],
-          '#route_name' => 'field_ui.storage_edit_' . $this->entity_type,
+          '#route_name' => "entity.field_instance_config.field_ui.storage_{$this->entity_type}_edit_form",
           '#route_parameters' => $route_parameters,
           '#options' => array('attributes' => array('title' => $this->t('Edit field settings.'))),
         ),
diff --git a/core/modules/field_ui/src/FieldUI.php b/core/modules/field_ui/src/FieldUI.php
index 77ec651..e3f557e 100644
--- a/core/modules/field_ui/src/FieldUI.php
+++ b/core/modules/field_ui/src/FieldUI.php
@@ -29,7 +29,7 @@ class FieldUI {
   public static function getOverviewRouteInfo($entity_type_id, $bundle) {
     $entity_type = \Drupal::entityManager()->getDefinition($entity_type_id);
     if ($entity_type->get('field_ui_base_route')) {
-      return new Url("field_ui.overview_$entity_type_id", array(
+      return new Url("entity.{$entity_type->getBundleEntityType()}.field_ui_fields", array(
         $entity_type->getBundleEntityType() => $bundle,
       ));
     }
diff --git a/core/modules/field_ui/src/Plugin/Derivative/FieldUiLocalTask.php b/core/modules/field_ui/src/Plugin/Derivative/FieldUiLocalTask.php
index 758a98b..cfb6b0d 100644
--- a/core/modules/field_ui/src/Plugin/Derivative/FieldUiLocalTask.php
+++ b/core/modules/field_ui/src/Plugin/Derivative/FieldUiLocalTask.php
@@ -70,41 +70,42 @@ public function getDerivativeDefinitions($base_plugin_definition) {
 
     foreach ($this->entityManager->getDefinitions() as $entity_type_id => $entity_type) {
       if ($entity_type->isFieldable() && $entity_type->get('field_ui_base_route')) {
-        $this->derivatives["overview_$entity_type_id"] = array(
-          'route_name' => "field_ui.overview_$entity_type_id",
+        $field_entity_type = $entity_type->getBundleEntityType() ?: $entity_type_id;
+        $this->derivatives["overview_$field_entity_type"] = array(
+          'route_name' => "entity.$field_entity_type.field_ui_fields",
           'weight' => 1,
           'title' => $this->t('Manage fields'),
-          'base_route' => "field_ui.overview_$entity_type_id",
+          'base_route' => "entity.$field_entity_type.field_ui_fields",
         );
 
         // 'Manage form display' tab.
-        $this->derivatives["form_display_overview_$entity_type_id"] = array(
-          'route_name' => "field_ui.form_display_overview_$entity_type_id",
+        $this->derivatives["form_display_overview_$field_entity_type"] = array(
+          'route_name' => "entity.{$field_entity_type}.field_ui_form_display",
           'weight' => 2,
           'title' => $this->t('Manage form display'),
-          'base_route' => "field_ui.overview_$entity_type_id",
+          'base_route' => "entity.$field_entity_type.field_ui_fields",
         );
 
         // 'Manage display' tab.
-        $this->derivatives["display_overview_$entity_type_id"] = array(
-          'route_name' => "field_ui.display_overview_$entity_type_id",
+        $this->derivatives["display_overview_$field_entity_type"] = array(
+          'route_name' => "entity.{$field_entity_type}.field_ui_display",
           'weight' => 3,
           'title' => $this->t('Manage display'),
-          'base_route' => "field_ui.overview_$entity_type_id",
+          'base_route' => "entity.$field_entity_type.field_ui_fields",
         );
 
         // Field instance edit tab.
-        $this->derivatives["instance_edit_$entity_type_id"] = array(
-          'route_name' => "field_ui.instance_edit_$entity_type_id",
+        $this->derivatives["instance_edit_$field_entity_type"] = array(
+          'route_name' => "field_ui.instance_edit_$field_entity_type",
           'title' => $this->t('Edit'),
-          'base_route' => "field_ui.instance_edit_$entity_type_id",
+          'base_route' => "field_ui.instance_edit_$field_entity_type",
         );
 
         // Field settings tab.
-        $this->derivatives["field_edit_$entity_type_id"] = array(
-          'route_name' => "field_ui.storage_edit_$entity_type_id",
+        $this->derivatives["field_edit_$field_entity_type"] = array(
+          'route_name' => "field_ui.storage_edit_$field_entity_type",
           'title' => $this->t('Field settings'),
-          'base_route' => "field_ui.instance_edit_$entity_type_id",
+          'base_route' => "field_ui.instance_edit_$field_entity_type",
         );
 
         // View and form modes secondary tabs.
@@ -114,29 +115,29 @@ public function getDerivativeDefinitions($base_plugin_definition) {
         // modes available for customisation. So we define menu items for all
         // view modes, and use a route requirement to determine which ones are
         // actually visible for a given bundle.
-        $this->derivatives['field_form_display_default_' . $entity_type_id] = array(
+        $this->derivatives['field_form_display_default_' . $field_entity_type] = array(
           'title' => 'Default',
-          'route_name' => "field_ui.form_display_overview_$entity_type_id",
-          'parent_id' => "field_ui.fields:form_display_overview_$entity_type_id",
+          'route_name' => "entity.{$field_entity_type}.field_ui_form_display",
+          'parent_id' => "field_ui.fields:form_display_overview_$field_entity_type",
           'weight' => -1,
         );
-        $this->derivatives['field_display_default_' . $entity_type_id] = array(
+        $this->derivatives['field_display_default_' . $field_entity_type] = array(
           'title' => 'Default',
-          'route_name' => "field_ui.display_overview_$entity_type_id",
-          'parent_id' => "field_ui.fields:display_overview_$entity_type_id",
+          'route_name' => "entity.{$field_entity_type}.field_ui_display",
+          'parent_id' => "field_ui.fields:display_overview_$field_entity_type",
           'weight' => -1,
         );
 
         // One local task for each form mode.
         $weight = 0;
         foreach ($this->entityManager->getFormModes($entity_type_id) as $form_mode => $form_mode_info) {
-          $this->derivatives['field_form_display_' . $form_mode . '_' . $entity_type_id] = array(
+          $this->derivatives['field_form_display_' . $form_mode . '_' . $field_entity_type] = array(
             'title' => $form_mode_info['label'],
-            'route_name' => "field_ui.form_display_overview_form_mode_$entity_type_id",
+            'route_name' => "field_ui.form_display_overview_form_mode_$field_entity_type",
             'route_parameters' => array(
               'form_mode_name' => $form_mode,
             ),
-            'parent_id' => "field_ui.fields:form_display_overview_$entity_type_id",
+            'parent_id' => "field_ui.fields:form_display_overview_$field_entity_type",
             'weight' => $weight++,
           );
         }
@@ -144,13 +145,13 @@ public function getDerivativeDefinitions($base_plugin_definition) {
         // One local task for each view mode.
         $weight = 0;
         foreach ($this->entityManager->getViewModes($entity_type_id) as $view_mode => $form_mode_info) {
-          $this->derivatives['field_display_' . $view_mode . '_' . $entity_type_id] = array(
+          $this->derivatives['field_display_' . $view_mode . '_' . $field_entity_type] = array(
             'title' => $form_mode_info['label'],
-            'route_name' => "field_ui.display_overview_view_mode_$entity_type_id",
+            'route_name' => "field_ui.display_overview_view_mode_$field_entity_type",
             'route_parameters' => array(
               'view_mode_name' => $view_mode,
             ),
-            'parent_id' => "field_ui.fields:display_overview_$entity_type_id",
+            'parent_id' => "field_ui.fields:display_overview_$field_entity_type",
             'weight' => $weight++,
           );
         }
@@ -172,19 +173,20 @@ public function getDerivativeDefinitions($base_plugin_definition) {
    */
   public function alterLocalTasks(&$local_tasks) {
     foreach ($this->entityManager->getDefinitions() as $entity_type_id => $entity_type) {
+      $field_entity_type = $entity_type->getBundleEntityType() ?: $entity_type_id;
       if ($entity_type->isFieldable() && $route_name = $entity_type->get('field_ui_base_route')) {
-        $local_tasks["field_ui.fields:overview_$entity_type_id"]['base_route'] = $route_name;
-        $local_tasks["field_ui.fields:form_display_overview_$entity_type_id"]['base_route'] = $route_name;
-        $local_tasks["field_ui.fields:display_overview_$entity_type_id"]['base_route'] = $route_name;
-        $local_tasks["field_ui.fields:field_form_display_default_$entity_type_id"]['base_route'] = $route_name;
-        $local_tasks["field_ui.fields:field_display_default_$entity_type_id"]['base_route'] = $route_name;
+        $local_tasks["field_ui.fields:overview_$field_entity_type"]['base_route'] = $route_name;
+        $local_tasks["field_ui.fields:form_display_overview_$field_entity_type"]['base_route'] = $route_name;
+        $local_tasks["field_ui.fields:display_overview_$field_entity_type"]['base_route'] = $route_name;
+        $local_tasks["field_ui.fields:field_form_display_default_$field_entity_type"]['base_route'] = $route_name;
+        $local_tasks["field_ui.fields:field_display_default_$field_entity_type"]['base_route'] = $route_name;
 
         foreach ($this->entityManager->getFormModes($entity_type_id) as $form_mode => $form_mode_info) {
-          $local_tasks['field_ui.fields:field_form_display_' . $form_mode . '_' . $entity_type_id]['base_route'] = $route_name;
+          $local_tasks['field_ui.fields:field_form_display_' . $form_mode . '_' . $field_entity_type]['base_route'] = $route_name;
         }
 
         foreach ($this->entityManager->getViewModes($entity_type_id) as $view_mode => $form_mode_info) {
-          $local_tasks['field_ui.fields:field_display_' . $view_mode . '_' . $entity_type_id]['base_route'] = $route_name;
+          $local_tasks['field_ui.fields:field_display_' . $view_mode . '_' . $field_entity_type]['base_route'] = $route_name;
         }
       }
     }
diff --git a/core/modules/field_ui/src/Routing/RouteSubscriber.php b/core/modules/field_ui/src/Routing/RouteSubscriber.php
index 4b371ab..479a40d 100644
--- a/core/modules/field_ui/src/Routing/RouteSubscriber.php
+++ b/core/modules/field_ui/src/Routing/RouteSubscriber.php
@@ -64,7 +64,7 @@ protected function alterRoutes(RouteCollection $collection) {
           array('_entity_access' => 'field_instance_config.update'),
           $options
         );
-        $collection->add("field_ui.instance_edit_$entity_type_id", $route);
+        $collection->add("entity.field_instance_config.field_ui.instance_{$entity_type_id}_edit_form", $route);
 
         $route = new Route(
           "$path/fields/{field_instance_config}/storage",
@@ -72,7 +72,7 @@ protected function alterRoutes(RouteCollection $collection) {
           array('_entity_access' => 'field_instance_config.update'),
           $options
         );
-        $collection->add("field_ui.storage_edit_$entity_type_id", $route);
+        $collection->add("entity.field_instance_config.field_ui.storage_{$entity_type_id}_edit_form", $route);
 
         $route = new Route(
           "$path/fields/{field_instance_config}/delete",
@@ -80,7 +80,7 @@ protected function alterRoutes(RouteCollection $collection) {
           array('_entity_access' => 'field_instance_config.delete'),
           $options
         );
-        $collection->add("field_ui.delete_$entity_type_id", $route);
+        $collection->add("entity.field_instance_config.field_ui.{$entity_type_id}_delete_form", $route);
 
         // If the entity type has no bundles, use the entity type.
         $defaults['entity_type_id'] = $entity_type_id;
@@ -96,7 +96,7 @@ protected function alterRoutes(RouteCollection $collection) {
           array('_permission' => 'administer ' . $entity_type_id . ' fields'),
           $options
         );
-        $collection->add("field_ui.overview_$entity_type_id", $route);
+        $collection->add("entity.$bundle_entity_type.field_ui_fields", $route);
 
         $route = new Route(
           "$path/form-display",
@@ -107,7 +107,7 @@ protected function alterRoutes(RouteCollection $collection) {
           array('_field_ui_form_mode_access' => 'administer ' . $entity_type_id . ' form display'),
           $options
         );
-        $collection->add("field_ui.form_display_overview_$entity_type_id", $route);
+        $collection->add("entity.{$bundle_entity_type}.field_ui_form_display", $route);
 
         $route = new Route(
           "$path/form-display/{form_mode_name}",
@@ -118,7 +118,7 @@ protected function alterRoutes(RouteCollection $collection) {
           array('_field_ui_form_mode_access' => 'administer ' . $entity_type_id . ' form display'),
           $options
         );
-        $collection->add("field_ui.form_display_overview_form_mode_$entity_type_id", $route);
+        $collection->add("field_ui.form_display_overview_form_mode_$bundle_entity_type", $route);
 
         $route = new Route(
           "$path/display",
@@ -129,7 +129,7 @@ protected function alterRoutes(RouteCollection $collection) {
           array('_field_ui_view_mode_access' => 'administer ' . $entity_type_id . ' display'),
           $options
         );
-        $collection->add("field_ui.display_overview_$entity_type_id", $route);
+        $collection->add("entity.{$bundle_entity_type}.field_ui_display", $route);
 
         $route = new Route(
           "$path/display/{view_mode_name}",
@@ -140,7 +140,7 @@ protected function alterRoutes(RouteCollection $collection) {
           array('_field_ui_view_mode_access' => 'administer ' . $entity_type_id . ' display'),
           $options
         );
-        $collection->add("field_ui.display_overview_view_mode_$entity_type_id", $route);
+        $collection->add("field_ui.display_overview_view_mode_$bundle_entity_type", $route);
       }
     }
   }
diff --git a/core/modules/menu_link_content/menu_link_content.routing.yml b/core/modules/menu_link_content/menu_link_content.routing.yml
index 4890e97..09b41ae 100644
--- a/core/modules/menu_link_content/menu_link_content.routing.yml
+++ b/core/modules/menu_link_content/menu_link_content.routing.yml
@@ -1,4 +1,4 @@
-menu_link_content.link_add:
+entity.menu_link_content.add_form:
   path: '/admin/structure/menu/manage/{menu}/add'
   defaults:
     _content: '\Drupal\menu_link_content\Controller\MenuController::addLink'
diff --git a/core/modules/menu_link_content/src/Form/MenuLinkContentDeleteForm.php b/core/modules/menu_link_content/src/Form/MenuLinkContentDeleteForm.php
index c5a7232..59ffa21 100644
--- a/core/modules/menu_link_content/src/Form/MenuLinkContentDeleteForm.php
+++ b/core/modules/menu_link_content/src/Form/MenuLinkContentDeleteForm.php
@@ -60,7 +60,7 @@ public function getQuestion() {
    * {@inheritdoc}
    */
   public function getCancelUrl() {
-    return new Url('menu_ui.menu_edit', array('menu' => $this->entity->getMenuName()));
+    return new Url('entity.menu.edit_form', array('menu' => $this->entity->getMenuName()));
   }
 
   /**
diff --git a/core/modules/menu_ui/menu_ui.links.action.yml b/core/modules/menu_ui/menu_ui.links.action.yml
index af8716f..557f6ed 100644
--- a/core/modules/menu_ui/menu_ui.links.action.yml
+++ b/core/modules/menu_ui/menu_ui.links.action.yml
@@ -1,12 +1,12 @@
-menu_ui.link_add:
-  route_name: menu_link_content.link_add
+entity.menu_link_content.add_form:
+  route_name: entity.menu_link_content.add_form
   title: 'Add link'
   class: \Drupal\menu_ui\Plugin\Menu\LocalAction\MenuLinkAdd
   appears_on:
-    - menu_ui.menu_edit
+    - entity.menu.edit_form
 
-menu_ui.menu_add:
-  route_name: menu_ui.menu_add
+entity.menu.add_form:
+  route_name: entity.menu.add_form
   title: 'Add menu'
   appears_on:
     - menu_ui.overview_page
diff --git a/core/modules/menu_ui/menu_ui.links.contextual.yml b/core/modules/menu_ui/menu_ui.links.contextual.yml
index 22e3a4e..9a2241f 100644
--- a/core/modules/menu_ui/menu_ui.links.contextual.yml
+++ b/core/modules/menu_ui/menu_ui.links.contextual.yml
@@ -1,4 +1,4 @@
-menu_ui_edit:
+entity.menu.edit_form:
   title: 'Edit menu'
-  route_name: 'menu_ui.menu_edit'
+  route_name: 'entity.menu.edit_form'
   group: menu
diff --git a/core/modules/menu_ui/menu_ui.links.task.yml b/core/modules/menu_ui/menu_ui.links.task.yml
index 92aadeb..d9f1937 100644
--- a/core/modules/menu_ui/menu_ui.links.task.yml
+++ b/core/modules/menu_ui/menu_ui.links.task.yml
@@ -1,7 +1,7 @@
-menu_ui.menu_edit:
+entity.menu.edit_form:
   title: 'Edit menu'
-  route_name: menu_ui.menu_edit
-  base_route: menu_ui.menu_edit
+  route_name: entity.menu.edit_form
+  base_route: entity.menu.edit_form
 
 menu_ui.overview_page:
   title: 'List'
diff --git a/core/modules/menu_ui/menu_ui.module b/core/modules/menu_ui/menu_ui.module
index 820887a..739c009 100644
--- a/core/modules/menu_ui/menu_ui.module
+++ b/core/modules/menu_ui/menu_ui.module
@@ -45,7 +45,7 @@ function menu_ui_help($route_name, RouteMatchInterface $route_match) {
       $output .= '</dl>';
       return $output;
   }
-  if ($route_name == 'menu_ui.menu_add' && \Drupal::moduleHandler()->moduleExists('block')) {
+  if ($route_name == 'entity.menu.add_form' && \Drupal::moduleHandler()->moduleExists('block')) {
     return '<p>' . t('You can enable the newly-created block for this menu on the <a href="!blocks">Block layout page</a>.', array('!blocks' => \Drupal::url('block.admin_display'))) . '</p>';
   }
   elseif ($route_name == 'menu_ui.overview_page' && \Drupal::moduleHandler()->moduleExists('block')) {
@@ -74,10 +74,10 @@ function menu_ui_entity_type_build(array &$entity_types) {
     ->setFormClass('edit', 'Drupal\menu_ui\MenuForm')
     ->setFormClass('delete', 'Drupal\menu_ui\Form\MenuDeleteForm')
     ->setListBuilderClass('Drupal\menu_ui\MenuListBuilder')
-    ->setLinkTemplate('add-form', 'menu_ui.menu_add')
-    ->setLinkTemplate('delete-form', 'menu_ui.delete_menu')
-    ->setLinkTemplate('edit-form', 'menu_ui.menu_edit')
-    ->setLinkTemplate('add-link-form', 'menu_link_content.link_add');
+    ->setLinkTemplate('add-form', 'entity.menu.add_form')
+    ->setLinkTemplate('delete-form', 'entity.menu.delete_form')
+    ->setLinkTemplate('edit-form', 'entity.menu.edit_form')
+    ->setLinkTemplate('add-link-form', 'entity.menu_link_content.add_form');
 }
 
 
@@ -567,7 +567,7 @@ function menu_ui_system_breadcrumb_alter(array &$breadcrumb, RouteMatchInterface
     if (($menu_link instanceof MenuLinkInterface)) {
       // Add a link to the menu admin screen.
       $menu = Menu::load($menu_link->getMenuName());
-      $breadcrumb[] = Link::createFromRoute($menu->label(), 'menu_ui.menu_edit', array('menu' => $menu->id()));
+      $breadcrumb[] = Link::createFromRoute($menu->label(), 'entity.menu.edit_form', array('menu' => $menu->id()));
     }
   }
 }
diff --git a/core/modules/menu_ui/menu_ui.routing.yml b/core/modules/menu_ui/menu_ui.routing.yml
index b095c34..1b431e9 100644
--- a/core/modules/menu_ui/menu_ui.routing.yml
+++ b/core/modules/menu_ui/menu_ui.routing.yml
@@ -46,7 +46,7 @@ menu_ui.link_reset:
     _permission: 'administer menu'
     _custom_access: '\Drupal\menu_ui\Form\MenuLinkResetForm::linkIsResettable'
 
-menu_ui.menu_add:
+entity.menu.add_form:
   path: '/admin/structure/menu/add'
   defaults:
     _entity_form: 'menu.add'
@@ -54,7 +54,7 @@ menu_ui.menu_add:
   requirements:
     _entity_create_access: 'menu'
 
-menu_ui.menu_edit:
+entity.menu.edit_form:
   path: '/admin/structure/menu/manage/{menu}'
   defaults:
     _entity_form: 'menu.edit'
@@ -62,7 +62,7 @@ menu_ui.menu_edit:
   requirements:
     _entity_access: 'menu.update'
 
-menu_ui.delete_menu:
+entity.menu.delete_form:
   path: '/admin/structure/menu/manage/{menu}/delete'
   defaults:
     _entity_form: 'menu.delete'
diff --git a/core/modules/menu_ui/src/Form/MenuDeleteForm.php b/core/modules/menu_ui/src/Form/MenuDeleteForm.php
index 299df36..764a7c5 100644
--- a/core/modules/menu_ui/src/Form/MenuDeleteForm.php
+++ b/core/modules/menu_ui/src/Form/MenuDeleteForm.php
@@ -106,7 +106,7 @@ public function submit(array $form, FormStateInterface $form_state) {
     //   parameter that is being removed. Also, consider moving this to
     //   menu_ui.module as part of a generic response to entity deletion.
     //   https://www.drupal.org/node/2310329
-    $menu_links = $this->menuLinkManager->loadLinksByRoute('menu_ui.menu_edit', array('menu' => $this->entity->id()), TRUE);
+    $menu_links = $this->menuLinkManager->loadLinksByRoute('entity.menu.edit_form', array('menu' => $this->entity->id()), TRUE);
     foreach ($menu_links as $id => $link) {
       $this->menuLinkManager->removeDefinition($id);
     }
diff --git a/core/modules/menu_ui/src/Form/MenuLinkEditForm.php b/core/modules/menu_ui/src/Form/MenuLinkEditForm.php
index 784024a..fae404c 100644
--- a/core/modules/menu_ui/src/Form/MenuLinkEditForm.php
+++ b/core/modules/menu_ui/src/Form/MenuLinkEditForm.php
@@ -96,7 +96,7 @@ public function submitForm(array &$form, FormStateInterface $form_state) {
 
     drupal_set_message($this->t('The menu link has been saved.'));
     $form_state->setRedirect(
-      'menu_ui.menu_edit',
+      'entity.menu.edit_form',
       array('menu' => $link->getMenuName())
     );
   }
diff --git a/core/modules/menu_ui/src/Form/MenuLinkResetForm.php b/core/modules/menu_ui/src/Form/MenuLinkResetForm.php
index d0bd61e..74d0fa0 100644
--- a/core/modules/menu_ui/src/Form/MenuLinkResetForm.php
+++ b/core/modules/menu_ui/src/Form/MenuLinkResetForm.php
@@ -71,7 +71,7 @@ public function getQuestion() {
    * {@inheritdoc}
    */
   public function getCancelUrl() {
-    return new Url('menu_ui.menu_edit', array(
+    return new Url('entity.menu.edit_form', array(
       'menu' => $this->link->getMenuName(),
     ));
   }
diff --git a/core/modules/menu_ui/src/MenuForm.php b/core/modules/menu_ui/src/MenuForm.php
index 58cb663..15453a7 100644
--- a/core/modules/menu_ui/src/MenuForm.php
+++ b/core/modules/menu_ui/src/MenuForm.php
@@ -239,8 +239,8 @@ protected function buildOverviewForm(array &$form, FormStateInterface $form_stat
     $delta = max($count($tree), 50);
 
     $form = array_merge($form, $this->buildOverviewTreeForm($tree, $delta));
-    $destination = $this->getUrlGenerator()->getPathFromRoute('menu_ui.menu_edit', array('menu' => $this->entity->id()));
-    $url = $destination = $this->url('menu_link_content.link_add', array('menu' => $this->entity->id()), array('query' => array('destination' => $destination)));
+    $destination = $this->getUrlGenerator()->getPathFromRoute('entity.menu.edit_form', array('menu' => $this->entity->id()));
+    $url = $destination = $this->url('entity.menu_link_content.add_form', array('menu' => $this->entity->id()), array('query' => array('destination' => $destination)));
     $form['#empty_text'] = $this->t('There are no menu links yet. <a href="@url">Add link</a>.', array('@url' => $url));
 
     return $form;
diff --git a/core/modules/menu_ui/src/Tests/MenuTest.php b/core/modules/menu_ui/src/Tests/MenuTest.php
index 54bfd00..09bc6f4 100644
--- a/core/modules/menu_ui/src/Tests/MenuTest.php
+++ b/core/modules/menu_ui/src/Tests/MenuTest.php
@@ -530,7 +530,7 @@ public function testBlockContextualLinks() {
     $response =  $this->drupalPost('contextual/render', 'application/json', $post, array('query' => array('destination' => 'test-page')));
     $this->assertResponse(200);
     $json = Json::decode($response);
-    $this->assertIdentical($json[$id], '<ul class="contextual-links"><li class="block-configure"><a href="' . base_path() . 'admin/structure/block/manage/' . $block->id() . '">Configure block</a></li><li class="menu-ui-edit"><a href="' . base_path() . 'admin/structure/menu/manage/tools">Edit menu</a></li></ul>');
+    $this->assertIdentical($json[$id], '<ul class="contextual-links"><li class="block-configure"><a href="' . base_path() . 'admin/structure/block/manage/' . $block->id() . '">Configure block</a></li><li class="entitymenuedit-form"><a href="' . base_path() . 'admin/structure/menu/manage/tools">Edit menu</a></li></ul>');
   }
 
   /**
diff --git a/core/modules/node/node.module b/core/modules/node/node.module
index d96052d..2d054cb 100644
--- a/core/modules/node/node.module
+++ b/core/modules/node/node.module
@@ -127,12 +127,12 @@ function node_help($route_name, RouteMatchInterface $route_match) {
     case 'node.type_add':
       return '<p>' . t('Individual content types can have different fields, behaviors, and permissions assigned to them.') . '</p>';
 
-    case 'field_ui.form_display_overview_node':
+    case "entity.node.field_ui_form_display":
     case 'field_ui.form_display_overview_form_mode_node':
       $type = $route_match->getParameter('node_type');
       return '<p>' . t('Content items can be edited using different form modes. Here, you can define which fields are shown and hidden when %type content is edited in each form mode, and define how the field form widgets are displayed in each form mode.', array('%type' => $type->label())) . '</p>' ;
 
-    case 'field_ui.display_overview_node':
+    case 'entity.node.field_ui_display':
     case 'field_ui.display_overview_view_mode_node':
       $type = $route_match->getParameter('node_type');
       return '<p>' . t('Content items can be displayed using different view modes: Teaser, Full content, Print, RSS, etc. <em>Teaser</em> is a short format that is typically used in lists of multiple content items. <em>Full content</em> is typically used when the content is displayed on its own page.') . '</p>' .
diff --git a/core/modules/rest/src/Plugin/Derivative/EntityDerivative.php b/core/modules/rest/src/Plugin/Derivative/EntityDerivative.php
index 5b17bc6..bfb0e35 100644
--- a/core/modules/rest/src/Plugin/Derivative/EntityDerivative.php
+++ b/core/modules/rest/src/Plugin/Derivative/EntityDerivative.php
@@ -109,7 +109,11 @@ public function getDerivativeDefinitions($base_plugin_definition) {
         foreach ($default_uris as $link_relation => $default_uri) {
           // Check if there are link templates defined for the entity type and
           // use the path from the route instead of the default.
-          if ($route_name = $entity_type->getLinkTemplate($link_relation)) {
+          $link_template = $entity_type->getLinkTemplate($link_relation);
+          if (strpos($link_template, '/') !== FALSE) {
+            $this->derivatives[$entity_type_id]['uri_paths'][$link_relation] = '/' . $link_template;
+          }
+          elseif ($route_name = $link_template) {
             // @todo remove the try/catch as part of
             // http://drupal.org/node/2158571
             try {
diff --git a/core/modules/user/user.module b/core/modules/user/user.module
index 75777bb..542eb4d 100644
--- a/core/modules/user/user.module
+++ b/core/modules/user/user.module
@@ -81,13 +81,13 @@ function user_help($route_name, RouteMatchInterface $route_match) {
     case 'user.role_list':
       return '<p>' . t('A role defines a group of users that have certain privileges. These privileges are defined on the <a href="!permissions">Permissions page</a>. Here, you can define the names and the display sort order of the roles on your site. It is recommended to order roles from least permissive (for example, Anonymous user) to most permissive (for example, Administrator user). Users who are not logged in have the Anonymous user role. Users who are logged in have the Authenticated user role, plus any other roles granted to their user account.', array('!permissions' => \Drupal::url('user.admin_permissions'))) . '</p>';
 
-    case 'field_ui.overview_user':
+    case 'entity.user.field_ui_fields':
       return '<p>' . t('This form lets administrators add and edit fields for storing user data.') . '</p>';
 
-    case 'field_ui.form_display_overview_user':
+    case 'entity.user.field_ui_form_display':
       return '<p>' . t('This form lets administrators configure how form fields should be displayed when editing a user profile.') . '</p>';
 
-    case 'field_ui.display_overview_user':
+    case 'entity.node.field_ui_display':
       return '<p>' . t('This form lets administrators configure how fields should be displayed when rendering a user profile page.') . '</p>';
   }
 }
diff --git a/core/tests/Drupal/Tests/Core/Entity/EntityUrlTest.php b/core/tests/Drupal/Tests/Core/Entity/EntityUrlTest.php
index 4787e62..9091dd4 100644
--- a/core/tests/Drupal/Tests/Core/Entity/EntityUrlTest.php
+++ b/core/tests/Drupal/Tests/Core/Entity/EntityUrlTest.php
@@ -65,10 +65,10 @@ public function testUrlInfo($entity_class, $link_template, $expected) {
    */
   public function providerTestUrlInfo() {
     return array(
-      array('Drupal\Core\Entity\Entity', 'edit-form', 'test_entity_type.edit'),
-      array('Drupal\Core\Config\Entity\ConfigEntityBase', 'edit-form', 'test_entity_type.edit'),
+      array('Drupal\Core\Entity\Entity', 'edit-form', 'entity.test_entity_type.edit_form'),
+      array('Drupal\Core\Config\Entity\ConfigEntityBase', 'edit-form', 'entity.test_entity_type.edit_form'),
       // Test that overriding the default $rel parameter works.
-      array('Drupal\Core\Config\Entity\ConfigEntityBase', FALSE, 'test_entity_type.edit'),
+      array('Drupal\Core\Config\Entity\ConfigEntityBase', FALSE, 'entity.test_entity_type.edit_form'),
     );
   }
 
@@ -181,13 +181,13 @@ public function testUrl() {
       ->method('generateFromRoute')
       ->will($this->returnValueMap(array(
         array(
-          'test_entity_type.view',
+          'entity.test_entity_type.canonical',
           array('test_entity_type' => 'test_entity_id'),
           array('entity_type' => 'test_entity_type', 'entity' => $valid_entity),
           '/entity/test_entity_type/test_entity_id',
         ),
         array(
-          'test_entity_type.view',
+          'entity.test_entity_type.canonical',
           array('test_entity_type' => 'test_entity_id'),
           array('absolute' => TRUE, 'entity_type' => 'test_entity_type', 'entity' => $valid_entity),
           'http://drupal/entity/test_entity_type/test_entity_id',
@@ -208,7 +208,7 @@ public function testGetSystemPath() {
     $entity_type->expects($this->exactly(3))
       ->method('getLinkTemplates')
       ->will($this->returnValue(array(
-        'canonical' => 'test_entity_type.view',
+        'canonical' => 'entity.test_entity_type.canonical',
       )));
 
     $this->entityManager
@@ -222,7 +222,7 @@ public function testGetSystemPath() {
 
     $this->urlGenerator->expects($this->once())
       ->method('getPathFromRoute')
-      ->with('test_entity_type.view', array('test_entity_type' => 'test_entity_id'))
+      ->with('entity.test_entity_type.canonical', array('test_entity_type' => 'test_entity_id'))
       ->will($this->returnValue('entity/test_entity_type/test_entity_id'));
 
     $valid_entity = $this->getMockForAbstractClass('Drupal\Core\Entity\Entity', array(array('id' => 'test_entity_id'), 'test_entity_type'));
