diff --git a/migrate_example/config/install/migrate_plus.migration.beer_comment.yml b/migrate_example/config/install/migrate_plus.migration.beer_comment.yml
index 991c59b1305beee7016f5728f77a4382a41e8b42..e631e9ac86b4734cc5c7752866f252ec213e2167 100644
--- a/migrate_example/config/install/migrate_plus.migration.beer_comment.yml
+++ b/migrate_example/config/install/migrate_plus.migration.beer_comment.yml
@@ -39,3 +39,7 @@ migration_dependencies:
   required:
     - beer_node
     - beer_user
+dependencies:
+  enforced:
+    module:
+      - migrate_example
diff --git a/migrate_example/config/install/migrate_plus.migration.beer_node.yml b/migrate_example/config/install/migrate_plus.migration.beer_node.yml
index b84832237524c88fde7b32fb8688eeb1a74adae9..e2a9aefcb3ac0604700a5f8c020e033a72962938 100644
--- a/migrate_example/config/install/migrate_plus.migration.beer_node.yml
+++ b/migrate_example/config/install/migrate_plus.migration.beer_node.yml
@@ -47,3 +47,7 @@ migration_dependencies:
   required:
     - beer_term
     - beer_user
+dependencies:
+  enforced:
+    module:
+      - migrate_example
diff --git a/migrate_example/config/install/migrate_plus.migration.beer_term.yml b/migrate_example/config/install/migrate_plus.migration.beer_term.yml
index 32573fa9e8a07ae9aa6a304d4172c2d97eed8af8..a7ca1858cb2b0051229eb02c3ca26362e7968bff 100644
--- a/migrate_example/config/install/migrate_plus.migration.beer_term.yml
+++ b/migrate_example/config/install/migrate_plus.migration.beer_term.yml
@@ -76,3 +76,12 @@ process:
 
 # We'll learn more about dependencies in beer_node - here, we leave them empty.
 migration_dependencies: {}
+
+# By default, configuration entities (like this migration) are not automatically
+# removed when the migration which installed them is uninstalled. To have your
+# migrations uninstalled with your migration module, add an enforced dependency
+# on your module.
+dependencies:
+  enforced:
+    module:
+      - migrate_example
diff --git a/migrate_example/config/install/migrate_plus.migration.beer_user.yml b/migrate_example/config/install/migrate_plus.migration.beer_user.yml
index edd22a57a64e8ef440e240b82642f3f0dfdf7001..6efa41fa8c73388c1cc16c69236f1ce974d02ba2 100644
--- a/migrate_example/config/install/migrate_plus.migration.beer_user.yml
+++ b/migrate_example/config/install/migrate_plus.migration.beer_user.yml
@@ -98,3 +98,11 @@ process:
 #    migration: beer_node
 
 migration_dependencies: {}
+
+# When a module is creating a custom content type it needs to add an 
+# enforced dependency to itself, otherwise the content type will persist
+# after the module is disabled. See: https://www.drupal.org/node/2629516.
+dependencies:
+  enforced:
+    module:
+      - migrate_example
diff --git a/migrate_example/config/install/migrate_plus.migration_group.beer.yml b/migrate_example/config/install/migrate_plus.migration_group.beer.yml
index fe59c3544716661e6532ea49c54d64f747011509..7d802d3a9ed83b998d358af55693d9e3d1fb45fa 100644
--- a/migrate_example/config/install/migrate_plus.migration_group.beer.yml
+++ b/migrate_example/config/install/migrate_plus.migration_group.beer.yml
@@ -28,3 +28,11 @@ shared_configuration:
     # connection to your external database in settings.php and reference its
     # key here.
     key: default
+
+# As with the migration configuration (see beer_term), we add an enforced
+# dependency so the migration_group configuration will be removed on module
+# uninstall.
+dependencies:
+  enforced:
+    module:
+      - migrate_example
diff --git a/migrate_example_advanced/config/install/migrate_plus.migration.wine_role_json.yml b/migrate_example_advanced/config/install/migrate_plus.migration.wine_role_json.yml
index 0a617fccd121ade818ab8e8e2f423cc73c0344b6..4824eab032c12042ddb84d5d23826e716779044c 100755
--- a/migrate_example_advanced/config/install/migrate_plus.migration.wine_role_json.yml
+++ b/migrate_example_advanced/config/install/migrate_plus.migration.wine_role_json.yml
@@ -41,3 +41,7 @@ process:
 destination:
   plugin: entity:user_role
 migration_dependencies: {}
+dependencies:
+  enforced:
+    module:
+      - migrate_example_advanced
diff --git a/migrate_example_advanced/config/install/migrate_plus.migration.wine_role_xml.yml b/migrate_example_advanced/config/install/migrate_plus.migration.wine_role_xml.yml
index 427493a1680de8d493e0f237fb9244930f70d1c8..6b7234c24881b1575500460d5639db277d2f8989 100755
--- a/migrate_example_advanced/config/install/migrate_plus.migration.wine_role_xml.yml
+++ b/migrate_example_advanced/config/install/migrate_plus.migration.wine_role_xml.yml
@@ -45,3 +45,7 @@ process:
 destination:
   plugin: entity:user_role
 migration_dependencies: {}
+dependencies:
+  enforced:
+    module:
+      - migrate_example_advanced
diff --git a/migrate_example_advanced/config/install/migrate_plus.migration.wine_terms.yml b/migrate_example_advanced/config/install/migrate_plus.migration.wine_terms.yml
index ab264d860d2f97d2e8009682c0b0e2c4fc1cca36..f11b82f844c210d2e9ecfe3f0ad5e8284fef2950 100644
--- a/migrate_example_advanced/config/install/migrate_plus.migration.wine_terms.yml
+++ b/migrate_example_advanced/config/install/migrate_plus.migration.wine_terms.yml
@@ -31,3 +31,7 @@ process:
     source: category_parent
   weight: ordering
 migration_dependencies: {}
+dependencies:
+  enforced:
+    module:
+      - migrate_example_advanced
diff --git a/migrate_example_advanced/config/install/migrate_plus.migration.wine_variety_multi_xml.yml b/migrate_example_advanced/config/install/migrate_plus.migration.wine_variety_multi_xml.yml
index e35e8ca94667b08c94fa6d1ba566766941c88eeb..e26579e71ac7f313e79eb7ab301b1446afa463fa 100755
--- a/migrate_example_advanced/config/install/migrate_plus.migration.wine_variety_multi_xml.yml
+++ b/migrate_example_advanced/config/install/migrate_plus.migration.wine_variety_multi_xml.yml
@@ -63,3 +63,7 @@ destination:
 migration_dependencies:
   required:
     - wine_terms
+dependencies:
+  enforced:
+    module:
+      - migrate_example_advanced
diff --git a/migrate_example_advanced/config/install/migrate_plus.migration_group.wine.yml b/migrate_example_advanced/config/install/migrate_plus.migration_group.wine.yml
index c10dcc043bc7af328358f5f6b06dc508d7370a09..5a14bf29bc0e72a23d7c2cf133673597d2a4a12a 100644
--- a/migrate_example_advanced/config/install/migrate_plus.migration_group.wine.yml
+++ b/migrate_example_advanced/config/install/migrate_plus.migration_group.wine.yml
@@ -5,3 +5,7 @@ source_type: Custom tables and XML
 shared_configuration:
   source:
     key: default
+dependencies:
+  enforced:
+    module:
+      - migrate_example_advanced