diff --git a/README.md b/README.md
new file mode 100755
index 0000000..abe7d89
--- /dev/null
+++ b/README.md
@@ -0,0 +1,53 @@
+
+CONTENTS OF THIS FILE
+---------------------
+
+ * Introduction
+ * Installation
+ * Known Issues
+ * How can you contribute?
+
+
+INTRODUCTION
+------------
+
+Creator: akashjain132 <http://drupal.org/user/2622667>
+
+This module enables you to make Menu Settings required on specific content types
+
+It forces a node from one or more content types to be included in the menu system
+before the content will be saved successfully. This can be useful in a number of
+situations, e.g. when using [menupath-raw] in the pathauto settings, which expects
+a node to live in the menu system. This module makes sure it does.
+
+
+INSTALLATION
+------------
+
+See http://drupal.org/getting-started/install-contrib for instructions on
+how to install or update Drupal modules.
+
+- Enable the module
+- Navigate to Administration -> Structure -> Content Types -> YOUR CONTENT TYPE
+- You can force menu settings in the fieldset 'Menu settings'
+- When enabled, adding or editing nodes of this content type will be impossible
+  without adding a menu entry.
+
+
+KNOWN ISSUES
+------------
+
+- There are no known issues at this time.
+
+
+HOW CAN YOU CONTRIBUTE?
+---------------------
+
+- Write a review for this module at drupalmodules.com.
+  http://drupalmodules.com/module/menu-force
+
+- Help translate this module.
+  http://localize.drupal.org/translate/projects/menu_force
+
+- Report any bugs, feature requests, etc. in the issue tracker.
+  http://drupal.org/project/issues/menu_force
diff --git a/README.txt b/README.txt
deleted file mode 100644
index 389dbf0..0000000
--- a/README.txt
+++ /dev/null
@@ -1,55 +0,0 @@
-
-CONTENTS OF THIS FILE
----------------------
-
- * Introduction
- * Installation
- * Known Issues
- * How can you contribute?
-
-
-INTRODUCTION
-------------
-
-Creator: BarisW <http://drupal.org/user/107229>
-
-This module enables you to make Menu Settings required on specific content types
-
-It forces a node from one or more content types to be included in the menu system 
-before the content will be saved successfully. This can be useful in a number of 
-situations, e.g. when using [menupath-raw] in the pathauto settings, which expects
-a node to live in the menu system. This module makes sure it does.
- 
-Credits for @Keyz for inspiring me with his PHP snippet (http://drupal.org/node/466620)
-
-
-INSTALLATION
-------------
-
-See http://drupal.org/getting-started/install-contrib for instructions on
-how to install or update Drupal modules.
-
-- Enable the module
-- Navigate to Content Management -> Content Types -> YOUR CONTENT TYPE
-- You can force menu settings in the fieldset 'Menu settings'
-- When enabled, adding or editing nodes of this content type will be impossible 
-  without adding a menu entry.
-
-
-KNOWN ISSUES
-------------
-
-- There are no known issues at this time.
-
-
-HOW CAN YOU CONTRIBUTE?
----------------------
-
-- Write a review for this module at drupalmodules.com.
-  http://drupalmodules.com/module/menu-force
-
-- Help translate this module.
-  http://localize.drupal.org/translate/projects/menu_force
-
-- Report any bugs, feature requests, etc. in the issue tracker.
-  http://drupal.org/project/issues/menu_force
diff --git a/menu_force.info b/menu_force.info
deleted file mode 100644
index 1d76511..0000000
--- a/menu_force.info
+++ /dev/null
@@ -1,5 +0,0 @@
-name = Menu Force
-description = "Makes sure a node gets added to the menu system on specific content types"
-core = 7.x
-package = Administration
-dependencies[] = menu
\ No newline at end of file
diff --git a/menu_force.info.yml b/menu_force.info.yml
new file mode 100755
index 0000000..2f27740
--- /dev/null
+++ b/menu_force.info.yml
@@ -0,0 +1,7 @@
+name: Menu Force
+type: module
+description: "Makes sure a node gets added to the menu system on specific content types"
+package: Menu
+core: 8.x
+dependencies:
+  - menu_ui
diff --git a/menu_force.install b/menu_force.install
old mode 100644
new mode 100755
index 48c13e3..abd4a70
--- a/menu_force.install
+++ b/menu_force.install
@@ -1,15 +1,18 @@
 <?php
+
 /**
  * @file
- * Install, update and uninstall functions for the Menu Force module.
+ * Installation functions for Menu Force module.
  */
 
 /**
- * Implement hook_uninstall().
+ * Implements hook_install().
  */
-function menu_force_uninstall() {
-  $node_types = node_type_get_types();
-  foreach ($node_types as $type) {
-    variable_del('menu_force_' . $type->type);
-  }
-}
\ No newline at end of file
+function menu_force_install() {
+  // Set the weight of the menu_force.module to 1
+  // so it is loaded after the menu_ui.module.
+  module_set_weight('menu_force', 1);
+
+  // Empty table.
+  db_truncate('cache_container')->execute();
+}
diff --git a/menu_force.js b/menu_force.js
deleted file mode 100644
index 6a2c898..0000000
--- a/menu_force.js
+++ /dev/null
@@ -1,40 +0,0 @@
-// $Id$
-
-(function ($) {
-
-/**
- * Automatically fill in a menu link title, if possible.
- */
-Drupal.behaviors.menuForceLinkAutomaticTitle = {
-  attach: function (context) {
-    $('fieldset.menu-link-form', context).each(function () {
-      // Try to find menu settings widget elements as well as a 'title' field in
-      // the form, but play nicely with user permissions and form alterations.
-      var $link_title = $('.form-item-menu-link-title input', context);
-      var $title = $(this).closest('form').find('.form-item-title input');
-      // Bail out if we do not have all required fields.
-      if (!($link_title.length && $title.length)) {
-        return;
-      }
-      // If there is a link title already, mark it as overridden. The user expects
-      // that toggling the checkbox twice will take over the node's title.
-      if ($link_title.val().length) {
-        $link_title.data('menuLinkAutomaticTitleOveridden', true);
-      }
-      // Whenever the value is changed manually, disable this behavior.
-      $link_title.keyup(function () {
-        $link_title.data('menuLinkAutomaticTitleOveridden', true);
-      });
-      
-      // Take over any title change.
-      $title.keyup(function () {
-        if (!$link_title.data('menuLinkAutomaticTitleOveridden')) {
-          $link_title.val($title.val());
-          $link_title.val($title.val()).trigger('formUpdated');
-        }
-      });
-    });
-  }
-};
-
-})(jQuery);
\ No newline at end of file
diff --git a/menu_force.module b/menu_force.module
old mode 100644
new mode 100755
index 3e59055..bd91254
--- a/menu_force.module
+++ b/menu_force.module
@@ -1,103 +1,108 @@
 <?php
 /**
  * @file
- * This module enables you to make Menu Settings required on specific content types
- *
- * It forces a node from one or more content types to be included in the menu system
- * before the content will be saved successfully. This can be useful in a number of
- * situations, e.g. when using [menupath-raw] in the pathauto settings, which expects
- * a node to live in the menu system. This module makes sure it does.
- *
- * Based on the PHP snippet of @Keyz (http://drupal.org/node/466620)
+ * Core functions for the Text Selection module.
  */
 
+use Drupal\Core\Form\FormStateInterface;
+use Drupal\node\NodeTypeInterface;
+
 /**
-* Implements hook_form_alter().
-*/
-function menu_force_form_alter(&$form, &$form_state, $form_id) {
-  if ($form_id == 'node_type_form') {
-    $form['menu']['menu_force'] = array(
-      '#type' => 'checkbox',
-      '#title' => t('Make the Menu Settings mandatory for this content type'),
-      '#description' => t('Enabling this will force the user to add the node to the menu system.'),
-      '#default_value' => variable_get('menu_force_' . $form['#node_type']->type, FALSE),
-    );
-    $form['menu']['menu_force_parent'] = array(
-      '#type' => 'checkbox',
-      '#title' => t('Lock the "Default parent item" as well'),
-      '#description' => t('Enabling this will lock the parent item choice, forcing created content to a chosen parent in the menu.'),
-      '#default_value' => variable_get('menu_force_parent_' . $form['#node_type']->type, FALSE),
-      '#states' => array(
-        'invisible' => array(
-         'input[name="menu_force"]' => array('checked' => FALSE),
-        ),
-      ),
-    );
-    $form['#validate'][] = 'menu_force_node_type_form_validate';
-    $form['#submit'][] = 'menu_force_node_type_form_submit';
+ * Implements hook_help().
+ */
+function menu_force_help($route_name) {
+  switch ($route_name) {
+    case 'help.page.menu_force':
+      $output = '<p>' . t('<strong>INTRODUCTION</strong>') . '</p>';
+      $output .= '<p>' . t('This module enables you to make Menu Settings required on specific content types.<br/><br/>It forces a node from one or more content types to be included in the menu system before the content will be saved successfully. This can be useful in a number of situations, e.g. when using [menupath-raw] in the pathauto settings, which expects a node to live in the menu system. This module makes sure it does.') . '</p>';
+      $output .= '<p>' . t('<strong>INSTALLATION</strong>') . '</p>';
+      $output .= '<p>' . t('<ul>
+                            <li>Enable the module </li>
+                            <li>Navigate to Administration -> Structure -> Content Types -> YOUR CONTENT TYPE</li>
+                            <li>You can force menu settings in the fieldset \'Menu settings\' </li>
+                            <li>When enabled, adding or editing nodes of this content type will be impossible without adding a menu entry.</li>
+                         ') . '</p>';
+      return $output;
   }
+}
 
-  // If the menu settings have been forced, alter the form add/edit form
-  $node_types = node_type_get_types();
-  foreach ($node_types as $type) {
-    if ($form_id == $type->type . '_node_form') {
-      if (variable_get('menu_force_' . $type->type, FALSE)) {
-        // Make the menu entry required by hiding the
-        // checkbox and setting the link title required
-        $form['menu']['enabled']['#value'] = TRUE;
-        $form['menu']['enabled']['#type'] = 'value';
-        $form['menu']['link']['link_title']['#required'] = TRUE;
-        $form['#attached']['js'][] = drupal_get_path('module', 'menu_force') .'/menu_force.js';
-      }
-      if (variable_get('menu_force_parent_' . $type->type, FALSE)) {
-        //disable the drop down option as required
-        $form['menu']['link']['parent']['#disabled'] = TRUE;
-      }
+/**
+ * Implements hook_form_BASE_FORM_ID_alter() for \Drupal\node\NodeForm.
+ *
+ * Make menu option mandatory based on configuration.
+ */
+function menu_force_form_node_form_alter(&$form, FormStateInterface $form_state) {
+
+  $node = $form_state->getFormObject()->getEntity();
+  $type = $node->type->entity;
+  if ($type->getThirdPartySetting('menu_force', 'menu_force', FALSE)) {
+    $form['menu']['#open'] = TRUE;
+    $form['menu']['enabled']['#default_value'] = TRUE;
+    $form['menu']['link']['title']['#required'] = TRUE;
+    if ($type->getThirdPartySetting('menu_force', 'menu_force_parent', FALSE)) {
+      $form['menu']['link']['menu_parent']['#disabled'] = TRUE;
     }
   }
+
 }
 
 /**
- *  Validate the menu_force settings when a content type form has been submitted
+ * Implements hook_form_FORM_ID_alter() for \Drupal\node\NodeTypeForm.
+ *
+ * Adds menu options to the node type form.
+ *
+ * @see NodeTypeForm::form()
  */
-function menu_force_node_type_form_validate($form, &$form_state) {
-  if ($form_state['values']['menu_force_parent']) {
+function menu_force_form_node_type_form_alter(&$form, FormStateInterface $form_state) {
+  /** @var \Drupal\node\NodeTypeInterface $type */
+  $type = $form_state->getFormObject()->getEntity();
 
-    $menu_parent = $form_state['values']['menu_parent'];
-    list($menu, $menu_item) = explode(':', $form_state['values']['menu_parent']);
+  $form['menu']['menu_force'] = array(
+    '#type' => 'checkbox',
+    '#title' => t('Make the Menu Settings mandatory for this content type'),
+    '#description' => t('Enabling this will force the user to add the node to the menu system.'),
+    '#default_value' => $type->getThirdPartySetting('menu_force', 'menu_force', FALSE),
+  );
 
-    // Print an error if a menu is selected instead of a menu_item
-    if ($menu && $menu_item == 0) {
-      form_set_error('menu_parent', t('If you want to force a Default parent menu item, please select which one.'));
-    }
-  }
+  $form['menu']['menu_force_parent'] = array(
+    '#type' => 'checkbox',
+    '#title' => t('Lock the "Default parent item" as well'),
+    '#description' => t('Enabling this will lock the parent item choice, forcing created content to a chosen parent in the menu.'),
+    '#default_value' => $type->getThirdPartySetting('menu_force', 'menu_force_parent', FALSE),
+    '#states' => array(
+      'invisible' => array(
+       'input[name="menu_force"]' => array('checked' => FALSE),
+      ),
+    ),
+  );
+
+  $form['#validate'][] = 'menu_force_form_node_type_form_validate';
+  $form['#entity_builders'][] = 'menu_force_form_node_type_form_builder';
 }
 
 /**
- *  Saves the menu_force settings when a content type form has been submitted
+ * Submit handler for forms with menu options.
+ *
+ * @see menu_force_form_node_type_form_alter().
  */
-function menu_force_node_type_form_submit(&$form, $form_state) {
-  $force_menu = $form_state['values']['menu_force'];
-  $force_menu_parent = $form_state['values']['menu_force_parent'];
-  if ($force_menu) {
-    variable_set('menu_force_' . $form_state['values']['type'], TRUE);
-  }
-  else {
-    variable_del('menu_force_' . $form_state['values']['type']);
-  }
+function menu_force_form_node_type_form_validate(&$form, FormStateInterface $form_state) {
+  if ($form_state->getValue('menu_force_parent')) {
 
-  if ($force_menu_parent) {
-    variable_set('menu_force_parent_' . $form_state['values']['type'], TRUE);
-  }
-  else {
-    variable_del('menu_force_parent_' . $form_state['values']['type']);
+    $menu_parent = $form_state->getValue('menu_parent');
+    list($menu, $menu_item) = explode(':', $menu_parent);
+
+    if ($menu && empty($menu_item)) {
+      $form_state->setErrorByName('menu_parent', t('If you want to force a Default parent menu item, please select which one.'));
+    }
   }
 }
 
 /**
- *  Delete the menu_force setting when a content type is deleted
+ * Entity builder for the node type form with menu options.
+ *
+ * @see menu_force_form_node_type_form_alter()
  */
-function menu_force_type_delete_confirm(&$form, $form_state) {
-  variable_del('menu_force_' . $form_state['values']['type']);
-  variable_del('menu_force_parent_' . $form_state['values']['type']);
+function menu_force_form_node_type_form_builder($entity_type, NodeTypeInterface $type, &$form, FormStateInterface $form_state) {
+  $type->setThirdPartySetting('menu_force', 'menu_force', $form_state->getValue('menu_force'));
+  $type->setThirdPartySetting('menu_force', 'menu_force_parent', $form_state->getValue('menu_force_parent'));
 }
