diff --git a/app/models/communication/website.rb b/app/models/communication/website.rb
index 2022004ccb846dcab17e96f812181e45fec206e3..361cbb6b04c8f67256764b3fabdf1d667999e08c 100644
--- a/app/models/communication/website.rb
+++ b/app/models/communication/website.rb
@@ -43,9 +43,9 @@ class Communication::Website < ApplicationRecord
   include WithGit
   include WithGitRepository
   include WithImport
-  include WithMenus
   include WithProgramCategories
   include WithSpecialPages
+  include WithMenus # Menus must be created after special pages, so we can fill legal menu
   include WithStyle
   include WithTheme
 
diff --git a/app/models/communication/website/with_menus.rb b/app/models/communication/website/with_menus.rb
index d25cf040425b6139407765b2f8f99f0b938637a6..92ac0369b025df64e2fef870313ba8b352f36d97 100644
--- a/app/models/communication/website/with_menus.rb
+++ b/app/models/communication/website/with_menus.rb
@@ -7,7 +7,7 @@ module Communication::Website::WithMenus
                 foreign_key: :communication_website_id,
                 dependent: :destroy
 
-    after_create :initialize_menus
+    after_save :initialize_menus
   end
 
   def menu_item_kinds
@@ -65,14 +65,34 @@ module Communication::Website::WithMenus
 
   def initialize_menus
     create_menu 'primary'
-    create_menu 'legal'
     create_menu 'social'
+    menu = create_menu 'legal'
+    fill_legal_menu menu
+  end
+
+  def fill_legal_menu(menu)
+    return if menu.items.any?
+    [
+      Communication::Website::Page::LegalTerm,
+      Communication::Website::Page::PrivacyPolicy,
+      Communication::Website::Page::Accessibility,
+      Communication::Website::Page::Sitemap
+    ].each do |page_class|
+      page = special_page(page_class)
+      menu.items.where( kind: 'page', 
+                        about: page,
+                        university: university,
+                        website: self)
+                .first_or_create do |item|
+        item.title = page.title
+      end
+    end
   end
 
   def create_menu(identifier)
     title = Communication::Website::Menu.human_attribute_name(identifier)
-    menus.create  title: title,
-                  identifier: identifier,
-                  university: university
+    menus.where(identifier: identifier, university: university).first_or_create do |menu|
+      menu.title = title
+    end
   end
 end