diff --git a/submissions/admin.py b/submissions/admin.py
index 46f4227301496ef2d9341cdeecec6593c549ab6e..78dcb301f7517a454584ca5bbf6d883b6060599e 100644
--- a/submissions/admin.py
+++ b/submissions/admin.py
@@ -20,7 +20,12 @@ def submission_short_title(obj):
     return obj.submission.title[:30]
 
 
-admin.site.register(PreprintServer)
+class PreprintServerAdmin(admin.ModelAdmin):
+    autocomplete_fields = [
+        'acad_fields'
+    ]
+
+admin.site.register(PreprintServer, PreprintServerAdmin)
 
 
 class iThenticateReportAdmin(admin.ModelAdmin):
diff --git a/submissions/migrations/0098_preprintserver_acad_fields.py b/submissions/migrations/0098_preprintserver_acad_fields.py
new file mode 100644
index 0000000000000000000000000000000000000000..69e555b66146b97d889f80bd63e6358b4a050816
--- /dev/null
+++ b/submissions/migrations/0098_preprintserver_acad_fields.py
@@ -0,0 +1,19 @@
+# Generated by Django 2.2.16 on 2020-09-29 07:57
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('ontology', '0007_Branch_Field_Specialty'),
+        ('submissions', '0097_remove_submission_secondary_areas'),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name='preprintserver',
+            name='acad_fields',
+            field=models.ManyToManyField(blank=True, related_name='preprint_servers', to='ontology.AcademicField'),
+        ),
+    ]
diff --git a/submissions/migrations/0099_populate_preprint_server_acad_fields.py b/submissions/migrations/0099_populate_preprint_server_acad_fields.py
new file mode 100644
index 0000000000000000000000000000000000000000..cae3386f4478245e1482306bee12e3be248143d6
--- /dev/null
+++ b/submissions/migrations/0099_populate_preprint_server_acad_fields.py
@@ -0,0 +1,23 @@
+# Generated by Django 2.2.16 on 2020-09-29 07:57
+
+from django.db import migrations
+
+
+def populate_acad_fields(apps, schema_editor):
+    PreprintServer = apps.get_model('submissions.PreprintServer')
+    AcademicField = apps.get_model('ontology', 'AcademicField')
+
+    for ps in PreprintServer.objects.all():
+        ps.acad_fields.set(AcademicField.objects.filter(slug__in=ps.disciplines))
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('submissions', '0098_preprintserver_acad_fields'),
+    ]
+
+    operations = [
+        migrations.RunPython(populate_acad_fields,
+                             reverse_code=migrations.RunPython.noop),
+    ]
diff --git a/submissions/migrations/0100_remove_preprintserver_disciplines.py b/submissions/migrations/0100_remove_preprintserver_disciplines.py
new file mode 100644
index 0000000000000000000000000000000000000000..9979edddd1afc178cd4627c25228e317669cf50c
--- /dev/null
+++ b/submissions/migrations/0100_remove_preprintserver_disciplines.py
@@ -0,0 +1,17 @@
+# Generated by Django 2.2.16 on 2020-09-29 08:16
+
+from django.db import migrations
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('submissions', '0099_populate_preprint_server_acad_fields'),
+    ]
+
+    operations = [
+        migrations.RemoveField(
+            model_name='preprintserver',
+            name='disciplines',
+        ),
+    ]
diff --git a/submissions/models/preprint_server.py b/submissions/models/preprint_server.py
index 801d363d523b7dd19046f2b73660a69fe1e81578..1bc91b5489cfacbfb42d733ad0f30002f154fd84 100644
--- a/submissions/models/preprint_server.py
+++ b/submissions/models/preprint_server.py
@@ -4,9 +4,6 @@ __license__ = "AGPL v3"
 
 from django.db import models
 
-from scipost.constants import SCIPOST_DISCIPLINES
-from scipost.fields import ChoiceArrayField
-
 
 class PreprintServer(models.Model):
     """
@@ -14,8 +11,10 @@ class PreprintServer(models.Model):
     """
     name = models.CharField(max_length=256)
     url = models.URLField()
-    disciplines = ChoiceArrayField(
-        models.CharField(max_length=32, choices=SCIPOST_DISCIPLINES)
+    acad_fields = models.ManyToManyField(
+        'ontology.AcademicField',
+        blank=True,
+        related_name='preprint_servers'
     )
 
     class Meta:
diff --git a/submissions/views.py b/submissions/views.py
index d8a7966d066415f7629f241782465b2bc8d677ef..f7743345d2fd648e0d0d627cd2628d4243e91660 100644
--- a/submissions/views.py
+++ b/submissions/views.py
@@ -159,7 +159,7 @@ def submit_choose_preprint_server(request, journal_doi_label):
     Choose a preprint server. If `thread_hash` is given as a GET parameter, this is a resubmission.
     """
     journal = get_object_or_404(Journal, doi_label=journal_doi_label)
-    preprint_servers = PreprintServer.objects.filter(disciplines__contains=[journal.discipline])
+    preprint_servers = PreprintServer.objects.filter(acad_fields=journal.college.acad_field)
     thread_hash = request.GET.get('thread_hash') or None
     # Each integrated preprint server has a prefill form:
     scipost_prefill_form = SciPostPrefillForm(