diff --git a/app/controllers/admin/communication/website/pages_controller.rb b/app/controllers/admin/communication/website/pages_controller.rb
index 4e29babb1dee0d5f74c06ac72bad86d134ed3600..dd827a9f8c624a546da8ef2cded522a349814196 100644
--- a/app/controllers/admin/communication/website/pages_controller.rb
+++ b/app/controllers/admin/communication/website/pages_controller.rb
@@ -42,7 +42,8 @@ class Admin::Communication::Website::PagesController < Admin::Communication::Web
   end
 
   def destroy
-    redirect_to admin_communication_website_url, notice: t('admin.successfully_destroyed_html', model: @page.to_s)
+    @page.destroy
+    redirect_to admin_communication_website_pages_url(@website), notice: t('admin.successfully_destroyed_html', model: @page.to_s)
   end
 
   protected
diff --git a/app/controllers/admin/communication/website/posts_controller.rb b/app/controllers/admin/communication/website/posts_controller.rb
index 30ad908702dd63df9d421bfa3609d2db311b6862..ed5450d9ec3fe49abbc8296a3c86083a16973ed5 100644
--- a/app/controllers/admin/communication/website/posts_controller.rb
+++ b/app/controllers/admin/communication/website/posts_controller.rb
@@ -42,7 +42,7 @@ class Admin::Communication::Website::PostsController < Admin::Communication::Web
   end
 
   def destroy
-    @communication_website_post.destroy
+    @post.destroy
     redirect_to admin_communication_website_posts_url, notice: t('admin.successfully_destroyed_html', model: @post.to_s)
   end
 
diff --git a/app/models/communication/website/imported/page.rb b/app/models/communication/website/imported/page.rb
index 00d49f2d74abbda0eba34de1431b539e77259b1f..16ee4fd3fd4b2bcefcb6a8b0e75413d6b2f37f0a 100644
--- a/app/models/communication/website/imported/page.rb
+++ b/app/models/communication/website/imported/page.rb
@@ -64,10 +64,11 @@ class Communication::Website::Imported::Page < ApplicationRecord
       self.page = Communication::Website::Page.new  university: university,
                                                     website: website.website, # Real website, not imported website
                                                     slug: path
-      self.page.title = "TMP"
+      self.page.title = "Untitled"
       self.page.save
     end
     # TODO only if not modified since import
+    page.slug = slug
     page.title = Wordpress.clean title.to_s
     page.description = Wordpress.clean excerpt.to_s
     page.text = Wordpress.clean content.to_s
diff --git a/app/models/communication/website/imported/post.rb b/app/models/communication/website/imported/post.rb
index ba052620a21290e6568475a2cd50003d61b906c2..d683be4ca80728290769822b0bf863c0c138b141 100644
--- a/app/models/communication/website/imported/post.rb
+++ b/app/models/communication/website/imported/post.rb
@@ -64,11 +64,12 @@ class Communication::Website::Imported::Post < ApplicationRecord
     if post.nil?
       self.post = Communication::Website::Post.new university: university,
                                                    website: website.website # Real website, not imported website
-      self.post.title = "TMP" # No title yet
+      self.post.title = "Untitled" # No title yet
       self.post.save
     end
     # TODO only if not modified since import
     post.title = Wordpress.clean title.to_s
+    post.slug = slug
     post.description = Wordpress.clean excerpt.to_s
     post.text = Wordpress.clean content.to_s
     post.published_at = published_at if published_at
diff --git a/app/models/communication/website/imported/website.rb b/app/models/communication/website/imported/website.rb
index 962cd135a4f5e3cb5b39f0ef18a1c1c8ce857208..1ffb3b713bd14d424adc3d521196cfa2e48e1081 100644
--- a/app/models/communication/website/imported/website.rb
+++ b/app/models/communication/website/imported/website.rb
@@ -45,7 +45,15 @@ class Communication::Website::Imported::Website < ApplicationRecord
       page.data = data
       page.save
     end
-    # TODO parents
+    pages.find_each do |page|
+      next if page.parent.blank?
+      parent = pages.where(identifier: page.parent).first
+      next if parent.nil?
+      generated_page = page.page
+      generated_page.parent = parent.page
+      generated_page.save
+      # TODO save children
+    end
   end
 
   def sync_posts
diff --git a/app/models/communication/website/page.rb b/app/models/communication/website/page.rb
index 3fa0fe5013c259dd2dbb096c66c4c5969a814f78..65c9cdddca0dfe0b0f479495a468924a32963ad4 100644
--- a/app/models/communication/website/page.rb
+++ b/app/models/communication/website/page.rb
@@ -39,9 +39,13 @@ class Communication::Website::Page < ApplicationRecord
   belongs_to :parent,
              class_name: 'Communication::Website::Page',
              optional: true
+  has_many   :children,
+             class_name: 'Communication::Website::Page',
+             foreign_key: :parent_id
   has_one    :imported_page,
              class_name: 'Communication::Website::Imported::Page',
-             foreign_key: :page_id
+             foreign_key: :page_id,
+             dependent: :nullify
 
   validates :title, presence: true
 
diff --git a/app/models/communication/website/post.rb b/app/models/communication/website/post.rb
index b453f2082b4759c55da244bc42253c729f862daa..7d40a1fb3272ad8fe5497f0ed87e93731706d949 100644
--- a/app/models/communication/website/post.rb
+++ b/app/models/communication/website/post.rb
@@ -6,6 +6,7 @@
 #  description              :text
 #  published                :boolean          default(FALSE)
 #  published_at             :datetime
+#  slug                     :text
 #  text                     :text
 #  title                    :string
 #  created_at               :datetime         not null
@@ -29,7 +30,8 @@ class Communication::Website::Post < ApplicationRecord
              foreign_key: :communication_website_id
   has_one    :imported_post,
              class_name: 'Communication::Website::Imported::Post',
-             foreign_key: :post_id
+             foreign_key: :post_id,
+             dependent: :nullify
 
   scope :ordered, -> { order(published_at: :desc, created_at: :desc) }
   scope :recent, -> { order(published_at: :desc).limit(5) }
diff --git a/app/views/admin/communication/website/pages/_list.html.erb b/app/views/admin/communication/website/pages/_list.html.erb
index 3d0543ce119431e70bf9d156f7009dda827888a5..8d714dc6bbf9c76e91d5dcd5d88b8beb72730972 100644
--- a/app/views/admin/communication/website/pages/_list.html.erb
+++ b/app/views/admin/communication/website/pages/_list.html.erb
@@ -3,6 +3,7 @@
     <tr>
       <th><%= Communication::Website::Page.human_attribute_name('title') %></th>
       <th><%= Communication::Website::Page.human_attribute_name('path') %></th>
+      <th><%= Communication::Website::Page.human_attribute_name('parent') %></th>
       <th width="150"></th>
     </tr>
   </thead>
@@ -11,6 +12,7 @@
       <tr>
         <td><%= link_to page, admin_communication_website_page_path(website_id: page.website.id, id: page.id) %></td>
         <td><%= page.path %></td>
+        <td><%= link_to page.parent, admin_communication_website_page_path(website_id: page.website.id, id: page.parent.id) if page.parent %></td>
         <td class="text-end">
           <%= link_to t('edit'),
                       edit_admin_communication_website_page_path(website_id: page.website.id, id: page.id),
diff --git a/app/views/admin/communication/website/pages/show.html.erb b/app/views/admin/communication/website/pages/show.html.erb
index 3e51aa8bac77f0144d252df82225d35dcfd7b690..98963fb5e351602fe42c67f13d9a832ce258560f 100644
--- a/app/views/admin/communication/website/pages/show.html.erb
+++ b/app/views/admin/communication/website/pages/show.html.erb
@@ -24,23 +24,50 @@
       <div class="card-header">
         <h5 class="card-title mb-0">Metadata</h5>
       </div>
-      <div class="card-body">
-        <p>
-          <strong>Slug</strong>
-          <%= @page.slug %>
-        </p>
-        <p>
-          <strong>Path</strong>
-          <%= @page.path %>
-        </p>
-
-        <% if @page.imported_page %>
-          <p>
-            <strong>Imported from</strong><br>
-            <a href="<%= @page.imported_page.url %>" target="_blank"><%= @page.imported_page.url %></a>
-          </p>
-        <% end %>
-      </div>
+      <table class="<%= table_classes %>">
+        <tbody>
+          <tr>
+            <td><%= Communication::Website::Page.human_attribute_name('slug') %></td>
+            <td><%= @page.slug %></td>
+          </tr>
+          <tr>
+            <td><%= Communication::Website::Page.human_attribute_name('path') %></td>
+            <td><%= @page.path %></td>
+          </tr>
+          <% if @page.imported_page %>
+            <tr>
+              <td>Imported from</td>
+              <td><a href="<%= @page.imported_page.url %>" target="_blank">Original URL</a></td>
+            </tr>
+          <% end %>
+          <% if @page.parent %>
+            <tr>
+              <td><%= Communication::Website::Page.human_attribute_name('parent') %></td>
+              <td><%= link_to @page.parent,
+                              admin_communication_website_page_path(
+                                website_id: @website.id,
+                                id: @page.parent.id
+                              ) %></td>
+            </tr>
+          <% end %>
+          <% if @page.children.any? %>
+            <tr>
+              <td><%= Communication::Website::Page.human_attribute_name('children') %></td>
+              <td>
+                <ul class="list-unstyled mb-0">
+                  <% @page.children.each do |child| %>
+                    <li><%= link_to child,
+                                    admin_communication_website_page_path(
+                                      website_id: @website.id,
+                                      id: child.id
+                                    ) %></li>
+                  <% end %>
+                </ul>
+              </td>
+            </tr>
+          <% end %>
+        </tbody>
+      </table>
     </div>
   </div>
 </div>
diff --git a/app/views/admin/communication/website/posts/show.html.erb b/app/views/admin/communication/website/posts/show.html.erb
index a3c9b3ab74454938c0573562b4ffc2f16be90567..c228339cda7b80b64c112e936312d3469ad15782 100644
--- a/app/views/admin/communication/website/posts/show.html.erb
+++ b/app/views/admin/communication/website/posts/show.html.erb
@@ -24,18 +24,24 @@
       <div class="card-header">
         <h5 class="card-title mb-0">Metadata</h5>
       </div>
-      <div class="card-body">
-        <p>
-          <strong>Published</strong>
-          <%= @post.published %>
-        </p>
-        <% if @post.imported_post %>
-          <p>
-            <strong>Imported from</strong> 
-            <a href="<%= @post.imported_post.url %>" target="_blank"><%= @post.imported_post.url %></a>
-          </p>
-        <% end %>
-      </div>
+      <table class="<%= table_classes %>">
+        <tbody>
+          <tr>
+            <td><%= Communication::Website::Page.human_attribute_name('slug') %></td>
+            <td><%= @post.slug %></td>
+          </tr>
+          <tr>
+            <td><%= Communication::Website::Page.human_attribute_name('published') %></td>
+            <td><%= @post.published %></td>
+          </tr>
+          <% if @post.imported_post %>
+            <tr>
+              <td>Imported from</td>
+              <td><a href="<%= @post.imported_post.url %>" target="_blank">Original URL</a></td>
+            </tr>
+          <% end %>
+        </tbody>
+      </table>
     </div>
   </div>
 </div>
diff --git a/db/migrate/20211019100112_add_slug_to_communication_website_posts.rb b/db/migrate/20211019100112_add_slug_to_communication_website_posts.rb
new file mode 100644
index 0000000000000000000000000000000000000000..e990e2ac3a18a775f396badef1dafa0267be2bc0
--- /dev/null
+++ b/db/migrate/20211019100112_add_slug_to_communication_website_posts.rb
@@ -0,0 +1,5 @@
+class AddSlugToCommunicationWebsitePosts < ActiveRecord::Migration[6.1]
+  def change
+    add_column :communication_website_posts, :slug, :text
+  end
+end
diff --git a/db/schema.rb b/db/schema.rb
index 683a249f59f00cafadae14bb6a5d1fedb82aafaa..de439897c8a84f90276084bdeb4c0fc42bf76d68 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -10,7 +10,7 @@
 #
 # It's strongly recommended that you check this file into your version control system.
 
-ActiveRecord::Schema.define(version: 2021_10_19_092503) do
+ActiveRecord::Schema.define(version: 2021_10_19_100112) do
 
   # These are extensions that must be enabled in order to support this database
   enable_extension "pgcrypto"
@@ -151,6 +151,7 @@ ActiveRecord::Schema.define(version: 2021_10_19_092503) do
     t.datetime "published_at"
     t.datetime "created_at", precision: 6, null: false
     t.datetime "updated_at", precision: 6, null: false
+    t.text "slug"
     t.index ["communication_website_id"], name: "index_communication_website_posts_on_communication_website_id"
     t.index ["university_id"], name: "index_communication_website_posts_on_university_id"
   end