diff --git a/region/management/__init__.py b/region/management/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/region/management/commands/__init__.py b/region/management/commands/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/region/management/commands/convert_region_to_district.py b/region/management/commands/convert_region_to_district.py
new file mode 100644
index 0000000000000000000000000000000000000000..d5b740de2e2f8be20d357a405c5fe426e79005bb
--- /dev/null
+++ b/region/management/commands/convert_region_to_district.py
@@ -0,0 +1,160 @@
+from django.core.management.base import BaseCommand
+from django.db import transaction
+from wagtail.core.models import Page, Site
+
+from district.models import (
+    DistrictAfterElectionPage,
+    DistrictArticlePage,
+    DistrictArticlesPage,
+    DistrictArticleTag,
+    DistrictCenterPage,
+    DistrictContactPage,
+    DistrictCrossroadPage,
+    DistrictCustomPage,
+    DistrictElectionBasePage,
+    DistrictElectionPage,
+    DistrictElectionPointPage,
+    DistrictHomePage,
+    DistrictPeoplePage,
+    DistrictPersonPage,
+    DistrictPersonPageForm,
+    DistrictPersonTag,
+    DistrictProgramPage,
+    DistrictTagsPage,
+)
+from region.models import (
+    RegionAfterElectionPage,
+    RegionArticlePage,
+    RegionArticlesPage,
+    RegionArticleTag,
+    RegionCenterPage,
+    RegionContactPage,
+    RegionCrossroadPage,
+    RegionCustomPage,
+    RegionElectionBasePage,
+    RegionElectionPage,
+    RegionElectionPointPage,
+    RegionHomePage,
+    RegionPeoplePage,
+    RegionPersonPage,
+    RegionPersonPageForm,
+    RegionPersonTag,
+    RegionProgramPage,
+    RegionTagsPage,
+)
+
+"""
+Dict that holds related model from district module for region model
+"""
+migration_map = {
+    RegionHomePage: DistrictHomePage,
+    RegionArticleTag: DistrictArticleTag,
+    RegionArticlePage: DistrictArticlePage,
+    RegionArticlesPage: DistrictArticlesPage,
+    RegionContactPage: DistrictContactPage,
+    RegionTagsPage: DistrictTagsPage,
+    RegionPersonTag: DistrictPersonTag,
+    RegionPersonPageForm: DistrictPersonPageForm,
+    RegionPersonPage: DistrictPersonPage,
+    RegionPeoplePage: DistrictPeoplePage,
+    RegionElectionBasePage: DistrictElectionBasePage,
+    RegionAfterElectionPage: DistrictAfterElectionPage,
+    RegionElectionPointPage: DistrictElectionPointPage,
+    RegionElectionPage: DistrictElectionPage,
+    RegionProgramPage: DistrictProgramPage,
+    RegionCenterPage: DistrictCenterPage,
+    RegionCrossroadPage: DistrictCrossroadPage,
+    RegionCustomPage: DistrictCustomPage,
+}
+
+
+def get_page_data_dict(data_dict):
+    """
+    Function that clear unnecessary data from page dict
+    """
+    data_dict.pop("id")
+    data_dict.pop("alias_of_id")
+    data_dict.pop("content_type_id")
+    data_dict.pop("depth")
+    data_dict.pop("expire_at")
+    data_dict.pop("expired")
+    data_dict.pop("footperson_coord_id", None)
+    data_dict.pop("footperson_electman_id", None)
+    data_dict.pop("footperson_media_id", None)
+    data_dict.pop("go_live_at")
+    data_dict.pop("has_unpublished_changes")
+    data_dict.pop("last_published_at")
+    data_dict.pop("latest_revision_created_at")
+    data_dict.pop("live_revision_id")
+    data_dict.pop("live")
+    data_dict.pop("locale_id")
+    data_dict.pop("locked")
+    data_dict.pop("locked_at")
+    data_dict.pop("locked_by_id")
+    data_dict.pop("numchild")
+    data_dict.pop("path")
+    data_dict.pop("translation_key")
+    data_dict.pop("url_path")
+    data_dict.pop("page_ptr_id")
+    data_dict.pop("specific", None)
+    data_dict.pop("specific_class", None)
+    data_dict.pop("_cached_parent_obj", None)
+    data_dict.pop("_state")
+    data_dict.pop("_wagtail_cached_site_root_paths", None)
+    return data_dict
+
+
+def handle_child_pages(region_root_page, district_root_page):
+    child_pages = list(region_root_page.get_children())
+    while child_pages:
+        child = child_pages.pop(0)
+        child_specific = child.specific
+        page_class = child_specific.__class__
+
+        DistrictChildPage = migration_map[page_class]
+
+        tmp_data_dict = child_specific.__dict__.copy()
+        data_dict = get_page_data_dict(tmp_data_dict)
+
+        district_child_page = DistrictChildPage(**data_dict)
+
+        district_root_page.add_child(instance=district_child_page)
+
+        district_child_page.save()
+        district_child_page.save_revision().publish()
+
+        if child.get_children():
+            handle_child_pages(child, district_child_page)
+
+
+class Command(BaseCommand):
+    help = """Zmigruje všechny stránky z modulu region do modulu district"""
+
+    def handle(self, *args, **options):
+        with transaction.atomic():
+            for region_hp in RegionHomePage.objects.all():
+
+                data_dict = region_hp.__dict__.copy()
+
+                data = get_page_data_dict(data_dict)
+
+                district_hp = DistrictHomePage(**data)
+                district_hp.slug = region_hp.slug
+
+                region_hp.slug = "old_" + region_hp.slug
+                region_hp.save()
+
+                root = Page.get_first_root_node()
+                root.add_child(instance=district_hp)
+
+                district_hp.save()
+                district_hp.save_revision().publish()
+
+                sites = Site.objects.filter(root_page_id=region_hp.id)
+                for site in sites:
+                    site.root_page = district_hp
+                    site.save()
+
+                handle_child_pages(region_hp, district_hp)
+
+                region_hp.delete()
diff --git a/region/migrations/0038_alter_regionarticlepage_content_and_more.py b/region/migrations/0038_alter_regionarticlepage_content_and_more.py
new file mode 100644
index 0000000000000000000000000000000000000000..36501679d43d489418485bae905e6f5c567f4f2b
--- /dev/null
+++ b/region/migrations/0038_alter_regionarticlepage_content_and_more.py
@@ -0,0 +1,62 @@
+# Generated by Django 4.0.4 on 2022-05-11 12:58
+
+import django.db.models.deletion
+import wagtail.core.blocks
+import wagtail.core.fields
+import wagtail.images.blocks
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ("region", "0037_alter_regionarticlepage_content"),
+    ]
+
+    operations = [
+        migrations.AlterField(
+            model_name="regionelectionpointpage",
+            name="guarantor",
+            field=models.ForeignKey(
+                null=True,
+                on_delete=django.db.models.deletion.SET_NULL,
+                to="region.regionpersonpage",
+            ),
+        ),
+        migrations.AlterField(
+            model_name="regionhomepage",
+            name="footperson_coord",
+            field=models.ForeignKey(
+                blank=True,
+                null=True,
+                on_delete=django.db.models.deletion.SET_NULL,
+                related_name="+",
+                to="region.regionpersonpage",
+                verbose_name="Koordinátor",
+            ),
+        ),
+        migrations.AlterField(
+            model_name="regionhomepage",
+            name="footperson_electman",
+            field=models.ForeignKey(
+                blank=True,
+                null=True,
+                on_delete=django.db.models.deletion.SET_NULL,
+                related_name="+",
+                to="region.regionpersonpage",
+                verbose_name="Volební manažer",
+            ),
+        ),
+        migrations.AlterField(
+            model_name="regionhomepage",
+            name="footperson_media",
+            field=models.ForeignKey(
+                blank=True,
+                null=True,
+                on_delete=django.db.models.deletion.SET_NULL,
+                related_name="+",
+                to="region.regionpersonpage",
+                verbose_name="Kontakt pro média",
+            ),
+        ),
+    ]
diff --git a/region/models.py b/region/models.py
index 5531f0f7eaa247700b4db8f14c357b8d9c4c06b6..d721e4d4f1d636afd6c4945bb18f196f53e6408c 100644
--- a/region/models.py
+++ b/region/models.py
@@ -143,7 +143,7 @@ class RegionHomePage(
     footperson_coord = models.ForeignKey(
         "region.RegionPersonPage",
         verbose_name="Koordinátor",
-        on_delete=models.PROTECT,
+        on_delete=models.SET_NULL,
         null=True,
         blank=True,
         related_name="+",
@@ -154,7 +154,7 @@ class RegionHomePage(
     footperson_electman = models.ForeignKey(
         "region.RegionPersonPage",
         verbose_name="Volební manažer",
-        on_delete=models.PROTECT,
+        on_delete=models.SET_NULL,
         null=True,
         blank=True,
         related_name="+",
@@ -165,7 +165,7 @@ class RegionHomePage(
     footperson_media = models.ForeignKey(
         "region.RegionPersonPage",
         verbose_name="Kontakt pro média",
-        on_delete=models.PROTECT,
+        on_delete=models.SET_NULL,
         null=True,
         blank=True,
         related_name="+",
@@ -766,7 +766,9 @@ class RegionAfterElectionPage(RegionElectionBasePage):
 
 class RegionElectionPointPage(RegionElectionBasePage):
     ### FIELDS
-    guarantor = models.ForeignKey("region.RegionPersonPage", on_delete=models.PROTECT)
+    guarantor = models.ForeignKey(
+        "region.RegionPersonPage", on_delete=models.SET_NULL, null=True
+    )
     list_image = models.ForeignKey(
         "wagtailimages.Image",
         on_delete=models.PROTECT,