diff --git a/partners/forms.py b/partners/forms.py
index c0cc8855b067f6a1615608fd14c110c3f4c03597..09d849ca6c3aee2d2c674fcbaba72677c57c7f08 100644
--- a/partners/forms.py
+++ b/partners/forms.py
@@ -35,16 +35,19 @@ class MembershipAgreementForm(forms.ModelForm):
         }
 
     def save(self, current_user, commit=True):
-        agreement = super().save(commit)
-        if commit and agreement.partner and not self.instance.id:
-            # Create PartnerEvent if Agreement is new
-            event = PartnerEvent(
-                partner=agreement.partner,
-                event=PARTNER_STATUS_UPDATE,
-                comments='Membership Agreement added with start date %s' % agreement.start_date,
-                noted_by=current_user
-            )
-            event.save()
+        agreement = super().save(commit=False)
+        if commit:
+            if agreement.partner and not self.instance.id:
+                # Create PartnerEvent if Agreement is new
+                event = PartnerEvent(
+                    partner=agreement.partner,
+                    event=PARTNER_STATUS_UPDATE,
+                    comments='Membership Agreement added with start date %s' % agreement.start_date,
+                    noted_by=current_user
+                )
+                event.save()
+            # Save agreement afterwards to be able to detect edit/add difference
+            agreement.save()
         return agreement
 
 
diff --git a/partners/migrations/0020_auto_20170624_2013.py b/partners/migrations/0020_auto_20170624_2013.py
new file mode 100644
index 0000000000000000000000000000000000000000..5a69c81a3a25fa09f78f1d1a67e3b2f2ac903a83
--- /dev/null
+++ b/partners/migrations/0020_auto_20170624_2013.py
@@ -0,0 +1,21 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.10.3 on 2017-06-24 18:13
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('partners', '0019_auto_20170624_2003'),
+    ]
+
+    operations = [
+        migrations.AlterField(
+            model_name='partner',
+            name='main_contact',
+            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='partner_main_contact', to='partners.Contact'),
+        ),
+    ]
diff --git a/partners/models.py b/partners/models.py
index 8b75ce2743cbf9b4b28c724602af4703f6020bef..89cd1660dbe99b2f726fd3e32012581373436ef3 100644
--- a/partners/models.py
+++ b/partners/models.py
@@ -185,9 +185,8 @@ class Partner(models.Model):
     institution = models.ForeignKey('partners.Institution', on_delete=models.CASCADE,
                                     blank=True, null=True)
     status = models.CharField(max_length=16, choices=PARTNER_STATUS, default=PARTNER_INITIATED)
-    main_contact = models.ForeignKey('partners.Contact', on_delete=models.CASCADE,
-                                     blank=True, null=True,
-                                     related_name='partner_main_contact')
+    main_contact = models.ForeignKey('partners.Contact', on_delete=models.SET_NULL,
+                                     blank=True, null=True, related_name='partner_main_contact')
 
     def __str__(self):
         if self.institution: