diff --git a/profiles/forms.py b/profiles/forms.py
index ce6b1a5159a8f33e814646bccd5bc5852f7241af..10c3b586cad4563abc97f181a927f96d870b8b89 100644
--- a/profiles/forms.py
+++ b/profiles/forms.py
@@ -91,7 +91,8 @@ class ProfileMergeForm(forms.Form):
         # Model fields:
         if profile_to_merge.expertises:
             for expertise in profile_to_merge.expertises:
-                profile_to_merge_into.expertises.add(expertise)
+                if expertise not in profile_to_merge_into.expertises:
+                    profile_to_merge_into.expertises.append(expertise)
         if profile_to_merge.orcid_id and (profile_to_merge_into.orcid_id is None):
             profile_to_merge_into.orcid_id = profile_to_merge.orcid_id
         if profile_to_merge.webpage and (profile_to_merge_into.webpage is None):
diff --git a/profiles/templates/profiles/_profile_card.html b/profiles/templates/profiles/_profile_card.html
index fa8d437ba1425ca865a0d098aec72cef4f8f7026..e7599098ef006d1e4b8b4c5d0bf6cc4c4cb52e18 100644
--- a/profiles/templates/profiles/_profile_card.html
+++ b/profiles/templates/profiles/_profile_card.html
@@ -32,8 +32,9 @@
 
                       </td>
                       <td class="d-flex">
-                          <form method="post" action="{% url 'profiles:toggle_email_status' profile_mail.id %}">{% csrf_token %}<button type="submit" class="btn btn-link p-0">{{ profile_mail.still_valid|yesno:'Deprecate,Mark valid' }}</button></form>
-                          <form method="post" action="{% url 'profiles:delete_profile_email' profile_mail.id %}">{% csrf_token %}<button type="submit" class="btn btn-link text-danger p-0 ml-2" onclick="return confirm('Sure you want to delete {{ profile_mail.email }}?')"><i class="fa fa-trash"></i></button></form>
+                        <form method="post" action="{% url 'profiles:toggle_email_status' profile_mail.id %}">{% csrf_token %}<button type="submit" class="btn btn-link">{{ profile_mail.still_valid|yesno:'Deprecate,Mark valid' }}</button></form>
+			<form method="post" action="{% url 'profiles:email_make_primary' profile_mail.id %}">{% csrf_token %}<button type="submit" class="btn btn-link">Make primary</button></form>
+                        <form method="post" action="{% url 'profiles:delete_profile_email' profile_mail.id %}">{% csrf_token %}<button type="submit" class="btn btn-link text-danger ml-2" onclick="return confirm('Sure you want to delete {{ profile_mail.email }}?')"><i class="fa fa-trash"></i></button></form>
                       </td>
                   </tr>
     	      {% endfor %}
diff --git a/profiles/urls.py b/profiles/urls.py
index 2a571772e1462a3b841fde43b721df8a56250cf4..9d693d9f8044dda2ea5b2c32402ca05ab5cfa66d 100644
--- a/profiles/urls.py
+++ b/profiles/urls.py
@@ -57,6 +57,11 @@ urlpatterns = [
         views.add_profile_email,
         name='add_profile_email'
     ),
+    url(
+        r'^emails/(?P<email_id>[0-9]+)/make_primary$',
+        views.email_make_primary,
+        name='email_make_primary'
+    ),
     url(
         r'^emails/(?P<email_id>[0-9]+)/toggle$',
         views.toggle_email_status,
diff --git a/profiles/views.py b/profiles/views.py
index 737eb6afe9f8d1ceb8eedf21a34478e807b0a8d0..49ef5a11485b55a20e4b62b0e3c0a60bdd7842bb 100644
--- a/profiles/views.py
+++ b/profiles/views.py
@@ -4,6 +4,7 @@ __license__ = "AGPL v3"
 
 from django.contrib import messages
 from django.core.urlresolvers import reverse, reverse_lazy
+from django.db import transaction
 from django.db.models import Q, Count
 from django.db.models.functions import Concat
 from django.shortcuts import get_object_or_404, render, redirect
@@ -249,9 +250,6 @@ class ProfileDuplicateListView(PermissionsMixin, ListView):
             nr_count=Count('full_name')
         ).filter(nr_count__gt=1)
         queryset = profiles.filter(full_name__in=[item['full_name'] for item in duplicates])
-        # duplicates = Profile.objects.values('last_name').annotate(
-        #     nr=Count('last_name')).filter(nr__gt=1)
-        # queryset = Profile.objects.filter(last_name__in=[item['last_name'] for item in duplicates])
         return queryset
 
     def get_context_data(self, *args, **kwargs):
@@ -260,6 +258,7 @@ class ProfileDuplicateListView(PermissionsMixin, ListView):
         return context
 
 
+@transaction.atomic
 @permission_required('scipost.can_create_profiles')
 def profile_merge(request):
     """
@@ -302,6 +301,19 @@ def add_profile_email(request, profile_id):
     return redirect(reverse('profiles:profiles'))
 
 
+@require_POST
+@permission_required('scipost.can_create_profiles')
+def email_make_primary(request, email_id):
+    """
+    Make this email the primary one for this Profile.
+    """
+    profile_email = get_object_or_404(ProfileEmail, pk=email_id)
+    ProfileEmail.objects.filter(profile=profile_email.profile).update(primary=False)
+    profile_email.primary = True
+    profile_email.save()
+    return redirect(profile_email.profile.get_absolute_url())
+
+
 @require_POST
 @permission_required('scipost.can_create_profiles')
 def toggle_email_status(request, email_id):