diff --git a/default_content.services.yml b/default_content.services.yml
index 7b26f69..a1568ad 100644
--- a/default_content.services.yml
+++ b/default_content.services.yml
@@ -5,7 +5,7 @@ services:
     class: Drupal\default_content\Scanner
   default_content.importer:
     class: Drupal\default_content\Importer
-    arguments: ['@serializer', '@entity_type.manager', '@hal.link_manager', '@event_dispatcher', '@default_content.scanner', '%default_content.link_domain%', '@account_switcher']
+    arguments: ['@serializer', '@entity_type.manager', '@hal.link_manager', '@event_dispatcher', '@default_content.scanner', '%default_content.link_domain%', '@account_switcher', '@module_handler', '%install_profile%']
   default_content.exporter:
     class: Drupal\default_content\Exporter
     arguments: ['@serializer', '@entity_type.manager', '@entity.repository', '@hal.link_manager', '@event_dispatcher', '@module_handler', '@info_parser', '%default_content.link_domain%']
diff --git a/drush/default_content.drush.inc b/drush/default_content.drush.inc
index 6c4ace0..a3597dd 100644
--- a/drush/default_content.drush.inc
+++ b/drush/default_content.drush.inc
@@ -5,10 +5,14 @@
  * Drush integration for the default_content module.
  */
 
+use Drush\Log\LogLevel;
+use Drupal\Core\StringTranslation\PluralTranslatableMarkup;
+
 /**
  * Implements hook_drush_command().
  */
 function default_content_drush_command() {
+  // Export Commands.
   $items['default-content-export'] = [
     'description' => dt('Exports a single entity'),
     'arguments' => [
@@ -41,6 +45,19 @@ function default_content_drush_command() {
     'aliases' => ['dcem'],
     'required-arguments' => 1,
   ];
+  // Import Commands.
+  $items['default-content-import-module'] = [
+    'description' => dt('Imports all the content defined in a module info file.'),
+    'arguments' => [
+      'module' => dt('The name of the module or profile to import.'),
+    ],
+    'aliases' => ['dcim'],
+    'required-arguments' => 1,
+  ];
+  $items['default-content-import-all'] = [
+    'description' => dt('Imports the content provided by installed modules and default profile.'),
+    'aliases' => ['dcia'],
+  ];
 
   return $items;
 }
@@ -99,6 +116,10 @@ function drush_default_content_export_references($entity_type_id, $entity_id = N
  *   The module name to export.
  */
 function drush_default_content_export_module($module_name) {
+  if (!_drush_default_content_valid_module($module_name)) {
+    return;
+  }
+
   /** @var \Drupal\default_content\DefaultContentExporterInterface $exporter */
   $exporter = \Drupal::service('default_content.exporter');
   $serialized_by_type = $exporter->exportModuleContent($module_name);
@@ -107,3 +128,57 @@ function drush_default_content_export_module($module_name) {
     ->getPath() . '/content';
   $exporter->writeDefaultContent($serialized_by_type, $module_folder);
 }
+
+/**
+ * Imports content provided in enabled modules and default profile.
+ *
+ * @param string $module
+ *   The import will be limited to this module or profile.
+ */
+function drush_default_content_import_module($module) {
+  if (!_drush_default_content_valid_module($module)) {
+    return;
+  }
+
+  /** @var \Drupal\default_content\ImporterInterface $importer */
+  $importer = \Drupal::service('default_content.importer');
+  if ($count = count($importer->importContent($module))) {
+    $message = new PluralTranslatableMarkup($count, 'Total: 1 entity imported.', '@module: @count entries imported.');
+    drush_log($message, LogLevel::OK);
+  }
+  else {
+    drush_log(dt('No content has been imported.'), LogLevel::WARNING);
+  }
+}
+
+/**
+ * Imports all default content.
+ */
+function drush_default_content_import_all() {
+  /** @var \Drupal\default_content\ImporterInterface $importer */
+  $importer = \Drupal::service('default_content.importer');
+  $count = count($importer->importAllContent());
+  if ($count) {
+    $message = new PluralTranslatableMarkup($count, 'Total: 1 entry imported.', 'Total: @count entries imported.');
+    drush_log($message, LogLevel::OK);
+  }
+  else {
+    drush_log(dt('No content has been imported.'), LogLevel::WARNING);
+  }
+}
+
+/**
+ * Validates that a module or a profile exists and is installed.
+ *
+ * @param string|null $module
+ *   An installed module or the default profile. If not passed, the validation
+ *   passes.
+ *
+ * @return bool
+ *   TRUE if the passed module or profile name validates.
+ */
+function _drush_default_content_valid_module($module) {
+  return \Drupal::moduleHandler()->moduleExists($module) || $module === drupal_get_profile() ?
+      TRUE :
+      drush_set_error('INVALID_MODULE', dt("Module or profile '@module' doesn't exist or is uninstalled.", ['@module' => $module]));
+}
diff --git a/src/Importer.php b/src/Importer.php
index 600ed5c..4b32292 100644
--- a/src/Importer.php
+++ b/src/Importer.php
@@ -10,6 +10,7 @@ use Drupal\default_content\Event\DefaultContentEvents;
 use Drupal\default_content\Event\ImportEvent;
 use Drupal\hal\LinkManager\LinkManagerInterface;
 use Drupal\user\EntityOwnerInterface;
+use Drupal\Core\Extension\ModuleHandlerInterface;
 use Symfony\Component\EventDispatcher\EventDispatcherInterface;
 use Symfony\Component\Serializer\Serializer;
 
@@ -70,6 +71,13 @@ class Importer implements ImporterInterface {
   protected $eventDispatcher;
 
   /**
+   * The module handler.
+   *
+   * @var \Drupal\Core\Extension\ModuleHandlerInterface
+   */
+  protected $moduleHandler;
+
+  /**
    * The file system scanner.
    *
    * @var \Drupal\default_content\ScannerInterface
@@ -84,6 +92,13 @@ class Importer implements ImporterInterface {
   protected $accountSwitcher;
 
   /**
+   * The installation profile.
+   *
+   * @var string
+   */
+  protected $installProfile;
+
+  /**
    * Constructs the default content manager.
    *
    * @param \Symfony\Component\Serializer\Serializer $serializer
@@ -100,15 +115,21 @@ class Importer implements ImporterInterface {
    *   Defines relation domain URI for entity links.
    * @param \Drupal\Core\Session\AccountSwitcherInterface $account_switcher
    *   The account switcher.
+   * @param \Drupal\Core\Extension\ModuleHandlerInterface $module_handler
+   *   The module handler.
+   * @param string $install_profile
+   *   The install profile.
    */
-  public function __construct(Serializer $serializer, EntityTypeManagerInterface $entity_type_manager, LinkManagerInterface $link_manager, EventDispatcherInterface $event_dispatcher, ScannerInterface $scanner, $link_domain, AccountSwitcherInterface $account_switcher) {
+  public function __construct(Serializer $serializer, EntityTypeManagerInterface $entity_type_manager, LinkManagerInterface $link_manager, EventDispatcherInterface $event_dispatcher, ScannerInterface $scanner, $link_domain, AccountSwitcherInterface $account_switcher, ModuleHandlerInterface $module_handler, $install_profile) {
     $this->serializer = $serializer;
     $this->entityTypeManager = $entity_type_manager;
     $this->linkManager = $link_manager;
     $this->eventDispatcher = $event_dispatcher;
     $this->scanner = $scanner;
+    $this->moduleHandler = $module_handler;
     $this->linkDomain = $link_domain;
     $this->accountSwitcher = $account_switcher;
+    $this->installProfile = $install_profile;
   }
 
   /**
@@ -201,6 +222,17 @@ class Importer implements ImporterInterface {
   }
 
   /**
+   * {@inheritdoc}
+   */
+  public function importAllContent() {
+    $module_names = array_keys($this->moduleHandler->getModuleList());
+    // Flatten the created entities into one array.
+    return array_reduce(array_unique($module_names + [$this->installProfile]), function (array $entities, $module_name) {
+      return array_merge($entities, $this->importContent($module_name));
+    }, []);
+  }
+
+  /**
    * Parses content files.
    *
    * @param object $file
diff --git a/src/ImporterInterface.php b/src/ImporterInterface.php
index 0d300a3..bd56f68 100644
--- a/src/ImporterInterface.php
+++ b/src/ImporterInterface.php
@@ -18,4 +18,12 @@ interface ImporterInterface {
    */
   public function importContent($module);
 
+  /**
+   * Imports all default content across the site.
+   *
+   * @return \Drupal\Core\Entity\EntityInterface[]
+   *   The created entities.
+   */
+  public function importAllContent();
+
 }
diff --git a/tests/src/Kernel/ImporterIntegrationTest.php b/tests/src/Kernel/ImporterIntegrationTest.php
new file mode 100644
index 0000000..b0b9c00
--- /dev/null
+++ b/tests/src/Kernel/ImporterIntegrationTest.php
@@ -0,0 +1,108 @@
+<?php
+
+namespace Drupal\Tests\default_content\Kernel;
+
+use Drupal\field\Entity\FieldConfig;
+use Drupal\KernelTests\KernelTestBase;
+use Drupal\node\Entity\Node;
+use Drupal\node\Entity\NodeType;
+use Drupal\node\NodeInterface;
+use Drupal\taxonomy\Entity\Term;
+use Drupal\taxonomy\TermInterface;
+
+/**
+ * Tests import functionality.
+ *
+ * @coversDefaultClass \Drupal\default_content\Importer
+ * @group default_content
+ */
+class ImporterIntegrationTest extends KernelTestBase {
+
+  /**
+   * {@inheritdoc}
+   */
+  public static $modules = ['system'];
+
+  /**
+   * The tested default content importet.
+   *
+   * @var \Drupal\default_content\Importer
+   */
+  protected $importer;
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function setUp() {
+    parent::setUp();
+
+    $this->installSchema('system', ['router', 'sequences']);
+  }
+
+  protected function setupImport() {
+    \Drupal::service('module_installer')->install(['node', 'taxonomy', 'field']);
+    $this->installEntitySchema('node');
+    $this->installEntitySchema('taxonomy_term');
+
+    NodeType::create([
+      'type' => 'page',
+    ])->save();
+
+    FieldConfig::create([
+      'entity_type' => 'node',
+      'field_name' => 'body',
+      'bundle' => 'page',
+    ])->save();
+
+    \Drupal::service('module_installer')->install(['rest', 'serialization']);
+    \Drupal::service('module_installer')->install([
+      'default_content',
+    ]);
+
+    // Install the module but remove its content.
+    \Drupal::service('module_installer')->install([
+      'default_content_test',
+    ]);
+
+    // Cleanup previously installed content.
+    \Drupal::service('entity.repository')->loadEntityByUuid('node', '65c412a3-b83f-4efb-8a05-5a6ecea10ad4')->delete();
+    \Drupal::service('entity.repository')->loadEntityByUuid('taxonomy_term', '550f86ad-aa11-4047-953f-636d42889f85')->delete();
+  }
+
+  /**
+   * Tests the import mechanism.
+   */
+  public function testSingleImport() {
+    $this->setupImport();
+
+    $this->importer = \Drupal::service('default_content.importer');
+
+    $entities = $this->importer->importContent('default_content_test');
+    $this->assertInstanceOf(TermInterface::class, $entities['550f86ad-aa11-4047-953f-636d42889f85']);
+    $this->assertInstanceOf(NodeInterface::class, $entities['65c412a3-b83f-4efb-8a05-5a6ecea10ad4']);
+
+    $this->assertCount(2, $entities);
+    // Ensure the content can be actually loaded.
+    $this->assertEquals('A tag', Term::load($entities['550f86ad-aa11-4047-953f-636d42889f85']->id())->label());
+    $this->assertEquals('Imported node', Node::load($entities['65c412a3-b83f-4efb-8a05-5a6ecea10ad4']->id())->label());
+  }
+
+  /**
+   * Tests the import mechanism of all modules.
+   */
+  public function testImportAllContent() {
+    $this->setupImport();
+
+    $this->importer = \Drupal::service('default_content.importer');
+
+    $entities = $this->importer->importAllContent();
+    $this->assertInstanceOf(TermInterface::class, $entities['550f86ad-aa11-4047-953f-636d42889f85']);
+    $this->assertInstanceOf(NodeInterface::class, $entities['65c412a3-b83f-4efb-8a05-5a6ecea10ad4']);
+
+    $this->assertCount(2, $entities);
+    // Ensure the content can be actually loaded.
+    $this->assertEquals('A tag', Term::load($entities['550f86ad-aa11-4047-953f-636d42889f85']->id())->label());
+    $this->assertEquals('Imported node', Node::load($entities['65c412a3-b83f-4efb-8a05-5a6ecea10ad4']->id())->label());
+  } 
+
+}
