diff --git a/default_content_deploy.links.menu.yml b/default_content_deploy.links.menu.yml
index 0ed4066..3b3b078 100644
--- a/default_content_deploy.links.menu.yml
+++ b/default_content_deploy.links.menu.yml
@@ -1,5 +1,17 @@
+default_content_deploy.settings:
+  title: 'Default Content Deploy'
+  description: 'Various settings for Default Content Deploy.'
+  parent: system.admin_config_development
+  route_name: default_content_deploy.settings
+
 default_content_deploy.import:
-  title: 'Default Content Deploy - Import'
+  title: 'Import'
   description: 'Perform content import (drush dcdi) via UI.'
   route_name: default_content_deploy.import
-  parent: system.admin_config_development
+  parent: default_content_deploy.settings
+
+default_content_deploy.content_directory:
+  title: 'Content Directory'
+  description: 'Set content directory for Default Content Deploy.'
+  route_name: default_content_deploy.content_directory
+  parent: default_content_deploy.settings
diff --git a/default_content_deploy.routing.yml b/default_content_deploy.routing.yml
index 1b8ac45..8872a17 100644
--- a/default_content_deploy.routing.yml
+++ b/default_content_deploy.routing.yml
@@ -1,5 +1,15 @@
+default_content_deploy.settings:
+  path: '/admin/config/development/dcd'
+  defaults:
+    _title: Default Content Deploy
+    _controller: '\Drupal\system\Controller\SystemController::systemAdminMenuBlockPage'
+  requirements:
+    _is_administrator: 'true'
+  options:
+    _admin_route: TRUE
+
 default_content_deploy.import:
-  path: '/admin/config/development/dcd-import'
+  path: '/admin/config/development/dcd/import'
   defaults:
     _form: 'Drupal\default_content_deploy\Form\ImportForm'
     _title: 'Default Content Deploy - Import'
@@ -7,3 +17,13 @@ default_content_deploy.import:
     _permission: 'import content'
   options:
     _admin_route: TRUE
+
+default_content_deploy.content_directory:
+  path: '/admin/config/development/dcd/content-directory'
+  defaults:
+    _form: 'Drupal\default_content_deploy\Form\ContentDirectoryForm'
+    _title: 'Default Content Deploy - Content Directory'
+  requirements:
+    _permission: 'administer site configuration'
+  options:
+    _admin_route: TRUE
diff --git a/default_content_deploy.services.yml b/default_content_deploy.services.yml
index 8dfc12b..10d735a 100644
--- a/default_content_deploy.services.yml
+++ b/default_content_deploy.services.yml
@@ -8,7 +8,6 @@ services:
   default_content_deploy.exporter:
     class: Drupal\default_content_deploy\Exporter
     arguments: ['@database', '@default_content.exporter', '@settings', '@entity_type.manager', '@serializer', '@account_switcher', '@logger.channel.default_content_deploy']
-
   logger.channel.default_content_deploy:
     parent: logger.channel_base
-    arguments: ['default_content_deploy']
\ No newline at end of file
+    arguments: ['default_content_deploy']
diff --git a/src/DefaultContentDeployBase.php b/src/DefaultContentDeployBase.php
index 05a0ca0..244bc4d 100644
--- a/src/DefaultContentDeployBase.php
+++ b/src/DefaultContentDeployBase.php
@@ -91,19 +91,14 @@ class DefaultContentDeployBase {
    *   $settings['default_content_deploy_content_directory'] = '../content';
    */
   public function getContentFolder() {
-    global $config;
-    // Using $settings["default_content_deploy_content_directory"]
-    // is recommended.
-    if ($contentDir = $this->settings->get('default_content_deploy_content_directory')) {
+    $config = \Drupal::config('default_content_deploy.content_directory');
+
+    if ($contentDir = $config->get('content_directory')) {
+      return $contentDir;
+    }
+    elseif ($contentDir = $this->settings->get('default_content_deploy_content_directory')) {
       return $contentDir;
-    };
-
-    // Using $config_directories['content_directory'] is deprecated,
-    // because it causes unnecessary questions during drush cim or cex commands.
-    // But it was (by mistake) implemented in 8.x-1.0-alpha1 and 8.x-1.0-alpha2,
-    // so we have to maintain backward compatibility.
-    // Using $config['content_directory'] is newer, but also deprecated.
-    // @todo Remove both $configs backward compatibility before beta version.
+    }
 
     if (isset($config) && isset($config['content_directory'])) {
       $contentDir = $config['content_directory'];
diff --git a/src/Form/ContentDirectoryForm.php b/src/Form/ContentDirectoryForm.php
new file mode 100644
index 0000000..fead89c
--- /dev/null
+++ b/src/Form/ContentDirectoryForm.php
@@ -0,0 +1,63 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\default_content_deploy\Form\ContentDirectoryForm.
+ */
+
+namespace Drupal\default_content_deploy\Form;
+
+use Drupal\Core\Form\ConfigFormBase;
+use Drupal\Core\Form\FormStateInterface;
+
+/**
+ * Sets content directory.
+ */
+class ContentDirectoryForm extends ConfigFormBase {
+
+  /** @var string Config settings */
+  const SETTINGS = 'default_content_deploy.content_directory';
+
+  /**
+   * {@inheritdoc}
+   */
+  public function getFormId() {
+    return 'dcd_content_directory_form';
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function getEditableConfigNames() {
+    return [
+      static::SETTINGS,
+    ];
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function buildForm(array $form, FormStateInterface $form_state) {
+    $config = $this->config(static::SETTINGS);
+
+    $form['content_directory'] = [
+      '#type' => 'textfield',
+      '#title' => $this->t('Content Directory'),
+      '#default_value' => $config->get('content_directory'),
+    ];
+
+    return parent::buildForm($form, $form_state);
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function submitForm(array &$form, FormStateInterface $form_state) {
+    $this->configFactory->getEditable(static::SETTINGS)
+      ->set('content_directory', $form_state->getValue('content_directory'))
+      ->save();
+
+    parent::submitForm($form, $form_state);
+  }
+
+}
