diff --git a/src/ConfigurationItem.php b/src/ConfigurationItem.php
index b18026d..aa470f8 100644
--- a/src/ConfigurationItem.php
+++ b/src/ConfigurationItem.php
@@ -106,7 +106,11 @@ class ConfigurationItem {
     $this->name = $name;
     $this->data = $data;
 
+    $properties = get_object_vars($this);
     foreach ($additional_properties as $property => $value) {
+      if (!array_key_exists($property, $properties)) {
+        throw new \InvalidArgumentException('Invalid property: ' . $property);
+      }
       $this->{$property} = $value;
     }
   }
diff --git a/src/FeaturesManager.php b/src/FeaturesManager.php
index 5bee846..523b792 100644
--- a/src/FeaturesManager.php
+++ b/src/FeaturesManager.php
@@ -481,6 +481,7 @@ class FeaturesManager implements FeaturesManagerInterface {
    */
   public function assignConfigPackage($package_name, array $item_names, $force = FALSE) {
     $config_collection = $this->getConfigCollection();
+    $module_list = $this->moduleHandler->getModuleList();
 
     $packages =& $this->packages;
     if (isset($packages[$package_name])) {
@@ -510,6 +511,18 @@ class FeaturesManager implements FeaturesManagerInterface {
           $package->appendConfig($item_name);
           // Mark the item as already assigned.
           $config_collection[$item_name]->setPackage($package_name);
+
+          $module_dependencies = [];
+          // Add a dependency on the extension that provides this configuration
+          // type.
+          if ($config_collection[$item_name]->getType() != static::SYSTEM_SIMPLE_CONFIG) {
+            $provider = $this->entityManager->getDefinition($config_collection[$item_name]->getType())->getProvider();
+            // Ensure the provider is an installed module and not, for example,
+            // 'core'.
+            if (isset($module_list[$provider])) {
+              $module_dependencies[] = $provider;
+            }
+          }
           // For configuration in the InstallStorage::CONFIG_INSTALL_DIRECTORY
           // directory, set any module dependencies of the configuration item
           // as package dependencies.
@@ -517,8 +530,9 @@ class FeaturesManager implements FeaturesManagerInterface {
           // InstallStorage::CONFIG_OPTIONAL_DIRECTORY should not create
           // dependencies.
           if ($config_collection[$item_name]->getSubdirectory() === InstallStorage::CONFIG_INSTALL_DIRECTORY && isset($config_collection[$item_name]->getData()['dependencies']['module'])) {
-            $package->setDependencies($this->mergeUniqueItems($package->getDependencies(), $config_collection[$item_name]->getData()['dependencies']['module']));
+            $module_dependencies = array_merge($module_dependencies, $config_collection[$item_name]->getData()['dependencies']['module']);
           }
+          $package->setDependencies($this->mergeUniqueItems($package->getDependencies(), $module_dependencies));
         }
       }
     }
diff --git a/tests/src/Unit/FeaturesManagerTest.php b/tests/src/Unit/FeaturesManagerTest.php
index 25191d2..1569d3c 100644
--- a/tests/src/Unit/FeaturesManagerTest.php
+++ b/tests/src/Unit/FeaturesManagerTest.php
@@ -11,6 +11,7 @@ use Drupal\Component\Serialization\Yaml;
 use Drupal\config_update\ConfigDiffInterface;
 use Drupal\Core\Config\ConfigFactoryInterface;
 use Drupal\Core\Config\ConfigManagerInterface;
+use Drupal\Core\Config\InstallStorage;
 use Drupal\Core\Config\StorageInterface;
 use Drupal\Core\DependencyInjection\ContainerBuilder;
 use Drupal\Core\Extension\Extension;
@@ -389,7 +390,13 @@ class FeaturesManagerTest extends UnitTestCase {
   public function testAssignConfigPackageWithNonExtensionProvidedConfig() {
     $config_collection = [
       'test_config' => new ConfigurationItem('test_config', []),
-      'test_config2' => new ConfigurationItem('test_config2', []),
+      'test_config2' => new ConfigurationItem('test_config2', [
+        'dependencies' => [
+          'module' => ['example'],
+        ]
+      ], [
+        'subdirectory' => InstallStorage::CONFIG_INSTALL_DIRECTORY,
+      ]),
     ];
     $this->featuresManager->setConfigCollection($config_collection);
 
@@ -399,6 +406,7 @@ class FeaturesManagerTest extends UnitTestCase {
     $this->featuresManager->assignConfigPackage('test_package', ['test_config', 'test_config2']);
 
     $this->assertEquals(['test_config', 'test_config2'], $this->featuresManager->getPackage('test_package')->getConfig());
+    $this->assertEquals(['example'], $this->featuresManager->getPackage('test_package')->getDependencies());
   }
 
   /**
