diff --git a/scheduler.module b/scheduler.module
index 358c941..0679442 100644
--- a/scheduler.module
+++ b/scheduler.module
@@ -458,6 +458,30 @@ function _scheduler_scheduler_api(NodeInterface $node, $action) {
 }
 
 /**
+ * Implements hook_entity_extra_field_info().
+ */
+function scheduler_entity_extra_field_info() {
+  // Expose the Scheduler group on the 'Manage Form Display' tab when editing a
+  // content type. This allows admins to adjust the weight of the group, and it
+  // works for vertical tabs and separate fieldsets.
+  $fields = array();
+  foreach (node_type_get_types() as $type) {
+    // @todo change the FALSE to SCHEDULER_DEFAULT_... when https://www.drupal.org/node/2633870 lands.
+    $publishing_enabled = $type->getThirdPartySetting('scheduler', 'publish_enable', FALSE);
+    $unpublishing_enabled = $type->getThirdPartySetting('scheduler', 'unpublish_enable', FALSE);
+
+    if ($publishing_enabled || $unpublishing_enabled) {
+      $fields['node'][$type->get('type')]['form']['scheduler_settings'] = array(
+        'label' => t('Scheduler Dates'),
+        'description' => t('Fieldset containing Scheduler Publish-on and Unpublish-on date input fields'),
+        'weight' => 20, // Default 20 puts this below the core fields.
+      );
+    }
+  }
+  return $fields;
+}
+
+/**
  * Prepares variables for node templates.
  *
  * Makes the publish_on and unpublish_on data available as theme variables.
diff --git a/src/Tests/SchedulerFieldsDisplayTest.php b/src/Tests/SchedulerFieldsDisplayTest.php
index 45de5be..1df189c 100644
--- a/src/Tests/SchedulerFieldsDisplayTest.php
+++ b/src/Tests/SchedulerFieldsDisplayTest.php
@@ -17,6 +17,12 @@ use Drupal\node\Entity\NodeType;
 class SchedulerFieldsDisplayTest extends SchedulerTestBase {
 
   /**
+   * SchedulerTestBase loads the standard modules.
+   * Additional module field_ui is required for the 'manage form display' test.
+   */
+  public static $modules = ['field_ui'];
+
+  /**
    * Tests date input is displayed as vertical tab or an expandable fieldset.
    */
   public function testFieldsDisplay() {
@@ -75,4 +81,31 @@ class SchedulerFieldsDisplayTest extends SchedulerTestBase {
     $this->drupalGet('node/' . $node->id() . '/edit');
     $this->assertTrue($this->xpath('//details[@id = "edit-scheduler-settings" and @open = "open"]'), 'The scheduler dates are shown in an expanded fieldset when an unpublish-on date already exists.');
   }
+
+  /**
+   * Tests the settings entry in the content type form display.
+   * This test covers scheduler_entity_extra_field_info().
+   */
+  public function testManageFormDisplay() {
+
+    // Create a custom administrator user with permissions to use the field_ui
+    // module 'node form display' tab.
+    $this->adminUser = $this->drupalCreateUser([
+      'administer content types',
+      'administer node form display',
+    ]);
+    $this->drupalLogin($this->adminUser);
+
+    // Check that the weight input field is displayed when the content type is
+    // enabled for scheduling.
+    $this->drupalGet('admin/structure/types/manage/' . $this->nodetype->get('type') . '/form-display');
+    $this->assertFieldByName('fields[scheduler_settings][weight]', '', 'The scheduler settings weight entry is shown when the content type is enabled for scheduling.');
+
+    // Check that the weight input field is not displayed when the content type
+    // is not enabled for scheduling.
+    $this->nodetype->setThirdPartySetting('scheduler', 'publish_enable', FALSE)
+      ->setThirdPartySetting('scheduler', 'unpublish_enable', FALSE)->save();
+    $this->drupalGet('admin/structure/types/manage/' . $this->nodetype->get('type') . '/form-display');
+    $this->assertNoFieldByName('fields[scheduler_settings][weight]', '', 'The scheduler settings weight entry is not shown when the content type is not enabled for scheduling.');
+  }
 }
