diff --git a/scipost/forms.py b/scipost/forms.py
index 5b99fda70aedbef279084c4bc0e09ad3170d8d93..7fca3c331787cb9c581f302af4702ba247196c49 100644
--- a/scipost/forms.py
+++ b/scipost/forms.py
@@ -4,6 +4,7 @@ from django.contrib.auth.models import User, Group
 from django.contrib.auth.password_validation import validate_password
 from django.core.exceptions import ValidationError
 from django.core.urlresolvers import reverse_lazy
+from django.utils import timezone
 from django.utils.http import is_safe_url
 
 from django_countries import countries
@@ -378,10 +379,21 @@ class UnavailabilityPeriodForm(forms.ModelForm):
         fields = ['start', 'end']
 
     def __init__(self, *args, **kwargs):
-        super(UnavailabilityPeriodForm, self).__init__(*args, **kwargs)
+        super().__init__(*args, **kwargs)
         self.fields['start'].widget.attrs.update({'placeholder': 'YYYY-MM-DD'})
         self.fields['end'].widget.attrs.update({'placeholder': 'YYYY-MM-DD'})
 
+    def clean_end(self):
+        now = timezone.now()
+        start = self.cleaned_data['start']
+        end = self.cleaned_data['end']
+        if start > end:
+            self.add_error('end', 'The start date you have entered is later than the end date.')
+
+        if end < now.date():
+            self.add_error('end', 'You have entered an end date in the past.')
+        return end
+
 
 class RemarkForm(forms.Form):
     remark = forms.CharField(widget=forms.Textarea(), label='')
diff --git a/scipost/models.py b/scipost/models.py
index 886fe252800b6f70c7fd4dc4574a008a1a9b599d..9bd5f46d8b07baef13f563c7d0feb7da0ffa7c0d 100644
--- a/scipost/models.py
+++ b/scipost/models.py
@@ -161,7 +161,7 @@ class Contributor(models.Model):
 
 
 class UnavailabilityPeriod(models.Model):
-    contributor = models.ForeignKey(Contributor, on_delete=models.CASCADE)
+    contributor = models.ForeignKey('scipost.Contributor', on_delete=models.CASCADE)
     start = models.DateField()
     end = models.DateField()
 
diff --git a/scipost/templates/scipost/personal_page.html b/scipost/templates/scipost/personal_page.html
index 883f8dcdfa54f0006aa954ec0574c7fa7cf2763b..7956a555a79b7407bf26aa11a112cc02f705dc83 100644
--- a/scipost/templates/scipost/personal_page.html
+++ b/scipost/templates/scipost/personal_page.html
@@ -158,16 +158,23 @@
                 </div>
                 <div class="col-md-4 offset-md-1">
                     {% if unavailabilities %}
-                        <h3>Your unavailability periods in our records (YYYY-DD-MM):</h3>
-                        <table class="availabilities">
+                        <h3>Your unavailability periods in our records</h3>
+                        <p class="text-muted">(YYYY-DD-MM)</p>
+                        <table class="table">
                             <tr>
                                 <th>Start</th>
-                                <th>End</th>
+                                <th colspan="2">End</th>
                             </tr>
                         {% for unav in unavailabilities %}
                             <tr>
                                 <td>{{ unav.start }}</td>
                                 <td>{{ unav.end }}</td>
+                                <td>
+                                    <form action="{% url 'scipost:delete_unavailable_period' unav.id %}" method="post">
+                                        {% csrf_token %}
+                                        <input class="btn btn-danger" type="submit" value="Delete" />
+                                    </form>
+                                </td>
                             </tr>
                         {% endfor %}
                         </table>
diff --git a/scipost/templates/scipost/unavailability_period_form.html b/scipost/templates/scipost/unavailability_period_form.html
new file mode 100644
index 0000000000000000000000000000000000000000..fc4b11d94fad505d3e50293f9104bd09a166ad68
--- /dev/null
+++ b/scipost/templates/scipost/unavailability_period_form.html
@@ -0,0 +1,26 @@
+{% extends 'scipost/_personal_page_base.html' %}
+
+{% block breadcrumb_items %}
+    {{block.super}}
+    <span class="breadcrumb-item">Mark a period as unavailable</span>
+{% endblock %}
+
+{% load bootstrap %}
+
+{% block pagetitle %}: Mark a period as unavailable{% endblock pagetitle %}
+
+{% block content %}
+
+<div class="row">
+    <div class="col-lg-8 offset-lg-2">
+        <h1 class="highlight">Mark a period as unavailable</h1>
+
+        <form method="post">
+            {% csrf_token %}
+            {{form|bootstrap}}
+            <input type="submit" class="btn btn-secondary" value="Submit" />
+        </form>
+    </div>
+</div>
+
+{% endblock content %}
diff --git a/scipost/urls.py b/scipost/urls.py
index ac5f3ab49fd370739874923df4f9d863bb3268a0..307e602b55e23ded0f1586c407be8ceb15a47131 100644
--- a/scipost/urls.py
+++ b/scipost/urls.py
@@ -133,11 +133,13 @@ urlpatterns = [
     url(r'^update_personal_data$', views.update_personal_data, name='update_personal_data'),
 
     # Unavailabilities
-    url(r'^mark_unavailable_period$', views.mark_unavailable_period,
-        name='mark_unavailable_period'),
+    url(r'^unavailable_period$', views.mark_unavailable_period, name='mark_unavailable_period'),
+    url(r'^unavailable_period/(?P<period_id>[0-9]+)/delete$', views.delete_unavailable_period,
+        name='delete_unavailable_period'),
 
     # Contributor info
-    url(r'^contributor/(?P<contributor_id>[0-9]+)$', views.contributor_info, name="contributor_info"),
+    url(r'^contributor/(?P<contributor_id>[0-9]+)$', views.contributor_info,
+        name="contributor_info"),
 
     # Authorship claims
     url(r'^claim_authorships$', views.claim_authorships, name="claim_authorships"),
diff --git a/scipost/views.py b/scipost/views.py
index 6d2321837bff512e105000408ab8f625fe5a0b55..d7b30e9a456ac1817cb90bf956498194a506be9c 100644
--- a/scipost/views.py
+++ b/scipost/views.py
@@ -7,7 +7,6 @@ from django.contrib.auth import login, logout, update_session_auth_hash
 from django.contrib.auth.decorators import login_required
 from django.contrib.auth.models import Group
 from django.contrib.auth.views import password_reset, password_reset_confirm
-from django.core.exceptions import MultipleObjectsReturned, ObjectDoesNotExist
 from django.core import mail
 from django.core.mail import EmailMessage, EmailMultiAlternatives
 from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
@@ -15,6 +14,7 @@ from django.core.urlresolvers import reverse
 from django.db.models import Q
 from django.shortcuts import redirect
 from django.template import Context, Template
+from django.views.decorators.http import require_POST
 from django.views.generic.list import ListView
 
 from django.db.models import Prefetch
@@ -703,28 +703,34 @@ def logout_view(request):
     return redirect(reverse('scipost:index'))
 
 
+@login_required
 def mark_unavailable_period(request):
-    if request.method == 'POST':
-        unav_form = UnavailabilityPeriodForm(request.POST)
-        errormessage = None
-        if unav_form.is_valid():
-            now = timezone.now()
-            if unav_form.cleaned_data['start'] > unav_form.cleaned_data['end']:
-                errormessage = 'The start date you have entered is later than the end date.'
-            elif unav_form.cleaned_data['end'] < now.date():
-                errormessage = 'You have entered an end date in the past.'
-            if errormessage is not None:
-                return render(request, 'scipost/error.html',
-                              context={'errormessage': errormessage})
-            else:
-                unav = UnavailabilityPeriod(
-                    contributor=request.user.contributor,
-                    start=unav_form.cleaned_data['start'],
-                    end=unav_form.cleaned_data['end'])
-                unav.save()
-        else:
-            errormessage = 'Please enter valid dates (format: YYYY-MM-DD).'
-            return render(request, 'scipost/error.html', context={'errormessage': errormessage})
+    '''
+    Mark period unavailable for Contributor using this view.
+    '''
+    unav_form = UnavailabilityPeriodForm(request.POST or None)
+    if unav_form.is_valid():
+        unav = unav_form.save(commit=False)
+        unav.contributor = request.user.contributor
+        unav.save()
+        messages.success(request, 'Unavailability period registered')
+        return redirect('scipost:personal_page')
+
+    # Template acts as a backup in case the form is invalid.
+    context = {'form': unav_form}
+    return render(request, 'scipost/unavailability_period_form.html', context)
+
+
+@require_POST
+@login_required
+def delete_unavailable_period(request, period_id):
+    '''
+    Delete period unavailable registered.
+    '''
+    unav = get_object_or_404(UnavailabilityPeriod,
+                             contributor=request.user.contributor, id=int(period_id))
+    unav.delete()
+    messages.success(request, 'Unavailability period deleted')
     return redirect('scipost:personal_page')