diff --git a/scipost/admin.py b/scipost/admin.py
index 95dcfdec25707aa4fd86054756ce59c9bf893684..08d72dba4d6e11a029777e6e4b6ac69302b60331 100644
--- a/scipost/admin.py
+++ b/scipost/admin.py
@@ -10,7 +10,7 @@ from django.contrib.auth.models import User, Permission
 
 from scipost.models import TOTPDevice, Contributor, Remark,\
                            AuthorshipClaim, PrecookedEmail,\
-                           EditorialCollege, EditorialCollegeFellowship, UnavailabilityPeriod
+                           UnavailabilityPeriod
 
 from organizations.admin import ContactInline
 from production.admin import ProductionUserInline
@@ -150,38 +150,3 @@ class PrecookedEmailAdmin(admin.ModelAdmin):
 
 
 admin.site.register(PrecookedEmail, PrecookedEmailAdmin)
-
-
-class EditorialCollegeAdmin(admin.ModelAdmin):
-    search_fields = ['discipline', 'member']
-
-
-admin.site.register(EditorialCollege, EditorialCollegeAdmin)
-
-
-def college_fellow_is_active(fellow):
-    '''Check if fellow is currently active.'''
-    return fellow.is_active()
-
-
-class EditorialCollegeFellowshipAdminForm(forms.ModelForm):
-    contributor = forms.ModelChoiceField(
-        queryset=Contributor.objects.order_by('user__last_name'))
-
-    class Meta:
-        model = EditorialCollegeFellowship
-        fields = '__all__'
-
-
-class EditorialCollegeFellowshipAdmin(admin.ModelAdmin):
-    list_display = ('__str__', 'college', college_fellow_is_active)
-    list_filter = ('college', 'affiliation')
-    search_fields = ['college__discipline',
-                     'contributor__user__first_name', 'contributor__user__last_name']
-    fields = ('contributor', 'college', 'start_date', 'until_date', 'affiliation', )
-
-    college_fellow_is_active.boolean = True
-    form = EditorialCollegeFellowshipAdminForm
-
-
-admin.site.register(EditorialCollegeFellowship, EditorialCollegeFellowshipAdmin)
diff --git a/scipost/factories.py b/scipost/factories.py
index 4d86a30baa7200de718037db1fb4497785266c34..6f3128d64f8a7787b6dfe68724254337884cad31 100644
--- a/scipost/factories.py
+++ b/scipost/factories.py
@@ -11,7 +11,7 @@ from django.contrib.auth.models import Group
 from common.helpers import generate_orcid
 from submissions.models import Submission
 
-from .models import Contributor, EditorialCollege, EditorialCollegeFellowship, Remark, TOTPDevice
+from .models import Contributor, Remark, TOTPDevice
 from .constants import TITLE_CHOICES, SCIPOST_SUBJECT_AREAS, NORMAL_CONTRIBUTOR
 
 
@@ -89,23 +89,6 @@ class TOTPDeviceFactory(factory.django.DjangoModelFactory):
         model = TOTPDevice
 
 
-class EditorialCollegeFactory(factory.django.DjangoModelFactory):
-    discipline = random.choice(['Physics', 'Chemistry', 'Medicine'])
-
-    class Meta:
-        model = EditorialCollege
-        django_get_or_create = ('discipline',)
-
-
-class EditorialCollegeFellowshipFactory(factory.django.DjangoModelFactory):
-    college = factory.Iterator(EditorialCollege.objects.all())
-    contributor = factory.Iterator(Contributor.objects.exclude(
-                                   user__username='deleted').order_by('?'))
-
-    class Meta:
-        model = EditorialCollegeFellowship
-
-
 class SubmissionRemarkFactory(factory.django.DjangoModelFactory):
     contributor = factory.Iterator(Contributor.objects.all())
     submission = factory.Iterator(Submission.objects.all())
diff --git a/scipost/migrations/0028_auto_20190827_2023.py b/scipost/migrations/0028_auto_20190827_2023.py
new file mode 100644
index 0000000000000000000000000000000000000000..dedaef2ce6a61d6e3809a9072a9ad9386e0ba48e
--- /dev/null
+++ b/scipost/migrations/0028_auto_20190827_2023.py
@@ -0,0 +1,31 @@
+# Generated by Django 2.1.8 on 2019-08-27 18:23
+
+from django.db import migrations
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('scipost', '0027_auto_20190826_0924'),
+    ]
+
+    operations = [
+        migrations.AlterUniqueTogether(
+            name='editorialcollegefellowship',
+            unique_together=set(),
+        ),
+        migrations.RemoveField(
+            model_name='editorialcollegefellowship',
+            name='college',
+        ),
+        migrations.RemoveField(
+            model_name='editorialcollegefellowship',
+            name='contributor',
+        ),
+        migrations.DeleteModel(
+            name='EditorialCollege',
+        ),
+        migrations.DeleteModel(
+            name='EditorialCollegeFellowship',
+        ),
+    ]
diff --git a/scipost/models.py b/scipost/models.py
index ee3de61787c41d427342fdcd8aa078bf71e1ec13..57fed958d6b1bd8689a34a3321e5c4e345f7a823 100644
--- a/scipost/models.py
+++ b/scipost/models.py
@@ -329,51 +329,3 @@ class PrecookedEmail(models.Model):
 
     def __str__(self):
         return self.email_subject
-
-
-######################
-# Static info models #
-######################
-
-class EditorialCollege(models.Model):
-    """A SciPost Editorial College for a specific discipline.
-
-    DEPRECATED. To be removed.
-    """
-    discipline = models.CharField(max_length=255, unique=True)
-
-    def __str__(self):
-        return self.discipline
-
-
-class EditorialCollegeFellowship(TimeStampedModel):
-    """
-    Editorial College Fellowship connecting Editorial College and Contributors,
-    maybe with a limiting start/until date.
-
-    DEPRECATED. To be removed.
-    """
-    contributor = models.ForeignKey('scipost.Contributor', on_delete=models.CASCADE,
-                                    related_name='+')
-    college = models.ForeignKey('scipost.EditorialCollege', on_delete=models.CASCADE,
-                                related_name='fellowships')
-    affiliation = models.CharField(max_length=255, blank=True)
-    start_date = models.DateField(null=True, blank=True)
-    until_date = models.DateField(null=True, blank=True)
-
-    objects = FellowManager()
-
-    class Meta:
-        unique_together = ('contributor', 'college', 'start_date', 'until_date')
-
-    def __str__(self):
-        return self.contributor.__str__()
-
-    def is_active(self):
-        if not self.start_date:
-            if not self.until_date:
-                return True
-            return today <= self.until_date
-        elif not self.until_date:
-            return today >= self.start_date
-        return today >= self.start_date and today <= self.until_date
diff --git a/scipost/test_views.py b/scipost/test_views.py
index 15ece1cf016271af3b0174597932d37066887bde..69fae6f60af05b50488b655a7bbe00e1bafb701b 100644
--- a/scipost/test_views.py
+++ b/scipost/test_views.py
@@ -11,9 +11,7 @@ from commentaries.factories import UnvettedCommentaryFactory, CommentaryFactory,
 from commentaries.forms import CommentarySearchForm
 from commentaries.models import Commentary
 
-from .factories import ContributorFactory,\
-                       EditorialCollegeFellowshipFactory, EditorialCollegeFactory
-from .models import EditorialCollege, EditorialCollegeFellowship
+from .factories import ContributorFactory
 
 
 class RequestCommentaryTest(TestCase):
@@ -131,28 +129,3 @@ class CommentaryDetailTest(TestCase):
     def test_status_code_200(self):
         response = self.client.get(self.target)
         self.assertEqual(response.status_code, 200)
-
-
-@tag('static-info', 'full')
-class AboutViewTest(TestCase):
-    def setUp(self):
-        self.client = Client()
-        self.target = reverse('scipost:about')
-
-        # Create College with 10 members
-        self.college = EditorialCollegeFactory()
-        EditorialCollegeFellowshipFactory.create_batch(10)
-
-    def test_status_code_200_including_members(self):
-        response = self.client.get(self.target)
-        self.assertEqual(response.status_code, 200)
-
-        # College exists in context
-        self.assertTrue('object_list' in response.context)
-        college = response.context['object_list'][0]
-        self.assertTrue(isinstance(college, EditorialCollege))
-
-        # Members exist in college
-        self.assertTrue(college.member.count() >= 10)
-        last_member = college.member.last()
-        self.assertTrue(isinstance(last_member, EditorialCollegeFellowship))