diff --git a/finances/forms.py b/finances/forms.py
index 4fbafdb8da41d7409469b87113160b86456da05c..2bce60b8f13cc9bc8101f876d4d81f61f101ba41 100644
--- a/finances/forms.py
+++ b/finances/forms.py
@@ -10,16 +10,22 @@ from django.db.models import Sum
 from django.utils import timezone
 
 from ajax_select.fields import AutoCompleteSelectField
+from dal import autocomplete
 from dateutil.rrule import rrule, MONTHLY
 
 from common.forms import MonthYearWidget
+from organizations.models import Organization
 from scipost.fields import UserModelChoiceField
 
 from .models import Subsidy, SubsidyAttachment, WorkLog
 
 
 class SubsidyForm(forms.ModelForm):
-    organization = AutoCompleteSelectField('organization_lookup')
+    # organization = AutoCompleteSelectField('organization_lookup')
+    organization = forms..ModelChoiceField(
+        queryset=Organization.objects.all(),
+        widget=autocomplete.ModelSelect2(url='/organizations/organization-autocomplete')
+    )
 
     class Meta:
         model = Subsidy
diff --git a/forums/forms.py b/forums/forms.py
index f9cbb48e951acaa0f93e2627f24105f41ca97812..02a44678fe4af6b19dd3e17534c6b2403f6322f0 100644
--- a/forums/forms.py
+++ b/forums/forms.py
@@ -5,8 +5,10 @@ __license__ = "AGPL v3"
 from django import forms
 
 from ajax_select.fields import AutoCompleteSelectField
+from dal import autocomplete
 
 from .models import Forum, Meeting, Post, Motion
+from organizations.models import Organization
 
 
 class ForumForm(forms.ModelForm):
@@ -45,7 +47,10 @@ class ForumGroupPermissionsForm(forms.ModelForm):
 
 
 class ForumOrganizationPermissionsForm(forms.Form):
-    organization = AutoCompleteSelectField('organization_lookup')
+    organization = forms..ModelChoiceField(
+        queryset=Organization.objects.all(),
+        widget=autocomplete.ModelSelect2(url='/organizations/organization-autocomplete')
+    )
     can_view = forms.BooleanField()
     can_post = forms.BooleanField()
 
diff --git a/funders/forms.py b/funders/forms.py
index 728cacd8762def5fe6cfb2f5a2783910bdf9037a..a11f156981cf773fef9ccc01397a335e0ec847cf 100644
--- a/funders/forms.py
+++ b/funders/forms.py
@@ -7,9 +7,11 @@ from django import forms
 from .models import Funder, Grant
 
 from ajax_select.fields import AutoCompleteSelectField
+from dal import autocomplete
 
 from scipost.forms import HttpRefererFormMixin
 from scipost.models import Contributor
+from organizations.models import Organization
 
 
 class FunderRegistrySearchForm(forms.Form):
@@ -27,7 +29,10 @@ class FunderSelectForm(forms.Form):
 
 
 class FunderOrganizationSelectForm(forms.ModelForm):
-    organization = AutoCompleteSelectField('organization_lookup')
+    organization = forms..ModelChoiceField(
+        queryset=Organization.objects.all(),
+        widget=autocomplete.ModelSelect2(url='/organizations/organization-autocomplete')
+    )
 
     class Meta:
         model = Funder
diff --git a/journals/forms.py b/journals/forms.py
index 7dbd24d12885c2b3ac365ce6d68eb97983d0035d..d90072a496802be8c30377ecd04b51ba8489ded0 100644
--- a/journals/forms.py
+++ b/journals/forms.py
@@ -16,7 +16,8 @@ from django.forms import BaseModelFormSet, modelformset_factory
 from django.template import loader
 from django.utils import timezone
 
-from ajax_select.fields import AutoCompleteSelectField
+#from ajax_select.fields import AutoCompleteSelectField
+from dal import autocomplete
 
 from .constants import STATUS_DRAFT, STATUS_PUBLICLY_OPEN,\
     PUBLICATION_PREPUBLISHED, PUBLICATION_PUBLISHED
@@ -31,6 +32,7 @@ from .signals import notify_manuscript_published
 from funders.models import Grant, Funder
 from journals.models import Journal
 from mails.utils import DirectMailUtil
+from organizations.models import Organization
 from production.constants import PROOFS_PUBLISHED
 from production.models import ProductionEvent
 from production.signals import notify_stream_status_change
@@ -120,7 +122,11 @@ PublicationAuthorOrderingFormSet = modelformset_factory(
 
 
 class AuthorsTableOrganizationSelectForm(forms.ModelForm):
-    organization = AutoCompleteSelectField('organization_lookup')
+    # organization = AutoCompleteSelectField('organization_lookup')
+    organization = forms..ModelChoiceField(
+        queryset=Organization.objects.all(),
+        widget=autocomplete.ModelSelect2(url='/organizations/organization-autocomplete')
+    )
 
     class Meta:
         model = PublicationAuthorsTable
diff --git a/organizations/templatetags/lookup.py b/organizations/templatetags/lookup.py
deleted file mode 100644
index a57ad364a16de5531dce5487b85fd13bdbef24d5..0000000000000000000000000000000000000000
--- a/organizations/templatetags/lookup.py
+++ /dev/null
@@ -1,33 +0,0 @@
-__copyright__ = "Copyright © Stichting SciPost (SciPost Foundation)"
-__license__ = "AGPL v3"
-
-
-from django.core.exceptions import PermissionDenied
-from django.db.models import Q
-
-from ajax_select import register, LookupChannel
-
-from ..models import Organization
-
-
-@register('organization_lookup')
-class OrganizationLookup(LookupChannel):
-    model = Organization
-
-    def get_query(self, q, request):
-        return (self.model.objects.order_by('name')
-                .filter(Q(name__icontains=q) |
-                        Q(acronym__icontains=q) |
-                        Q(name_original__icontains=q))[:10])
-
-    def format_item_display(self, item):
-        """(HTML) format item for displaying item in the selected deck area."""
-        return u"<span class='auto_lookup_display'>%s</span>" % item.full_name_with_acronym
-
-    def format_match(self, item):
-        """(HTML) Format item for displaying in the dropdown."""
-        return item.full_name_with_acronym
-
-    def check_auth(self, request):
-        """Allow use by everybody (this is used in the registration form)."""
-        pass
diff --git a/organizations/urls.py b/organizations/urls.py
index 1f3afc10493f28d654758bedba04bcdb39398e1a..fd4666aabb84e08213f69e85cc9521856fadb9b3 100644
--- a/organizations/urls.py
+++ b/organizations/urls.py
@@ -3,12 +3,18 @@ __license__ = "AGPL v3"
 
 
 from django.conf.urls import url
+from django.urls import path
 
 from . import views
 
 app_name = 'organizations'
 
 urlpatterns = [
+    path(
+        'organization-autocomplete/',
+        views.OrganizationAutocompleteView.as_view(),
+        name='organization-autocomplete',
+        ),
     url(
         r'^$',
         views.OrganizationListView.as_view(),
diff --git a/organizations/views.py b/organizations/views.py
index 5ec12cd69717315012187ed0dc0cf5147812bf53..762be18a45c90d709e1c3b61554e10b3cf47f944 100644
--- a/organizations/views.py
+++ b/organizations/views.py
@@ -8,6 +8,7 @@ from django.contrib.auth.mixins import UserPassesTestMixin
 from django.core.exceptions import PermissionDenied
 from django.urls import reverse_lazy
 from django.db import transaction
+from django.db.models import Q
 from django.shortcuts import get_object_or_404, render, redirect
 from django.urls import reverse
 from django.utils import timezone
@@ -15,6 +16,7 @@ from django.views.generic.detail import DetailView
 from django.views.generic.edit import CreateView, UpdateView, DeleteView
 from django.views.generic.list import ListView
 
+from dal import autocomplete
 from guardian.decorators import permission_required
 
 from .constants import ORGTYPE_PRIVATE_BENEFACTOR,\
@@ -27,10 +29,27 @@ from funders.models import Funder
 from mails.utils import DirectMailUtil
 from mails.views import MailEditorSubview
 from organizations.decorators import has_contact
+from organizations.models import Organization
 
 from scipost.mixins import PermissionsMixin, PaginationMixin
 
 
+######################
+# Autocomplete views #
+######################
+
+class OrganizationAutocompleteView(autocomplete.Select2QuerySetView):
+    """To feed the Select2 widget."""
+    def get_queryset(self):
+        qs = Organization.objects.all()
+        if self.q:
+            qs = qs.filter(
+                Q(name__icontains=self.q) |
+                Q(name_original__icontains=self.q) |
+                Q(acronym__icontains=self.q))
+        return qs
+
+
 class OrganizationCreateView(PermissionsMixin, CreateView):
     """
     Create a new Organization.
diff --git a/profiles/forms.py b/profiles/forms.py
index e5ed8296df10c14b34dae8ea3e4a86d7896f69ab..03c1841c9eef1a6c62b50f52b7a65eef155cfb8d 100644
--- a/profiles/forms.py
+++ b/profiles/forms.py
@@ -5,9 +5,11 @@ __license__ = "AGPL v3"
 from django import forms
 
 from ajax_select.fields import AutoCompleteSelectField
+from dal import autocomplete
 
 from common.forms import ModelChoiceFieldwithid
 from invitations.models import RegistrationInvitation
+from organizations.models import Organization
 from scipost.models import Contributor
 from submissions.models import RefereeInvitation
 
@@ -179,7 +181,11 @@ class ProfileSelectForm(forms.Form):
 
 
 class AffiliationForm(forms.ModelForm):
-    organization = AutoCompleteSelectField('organization_lookup')
+    # organization = AutoCompleteSelectField('organization_lookup')
+    organization = forms..ModelChoiceField(
+        queryset=Organization.objects.all(),
+        widget=autocomplete.ModelSelect2(url='/organizations/organization-autocomplete')
+    )
 
     class Meta:
         model = Affiliation
diff --git a/scipost/forms.py b/scipost/forms.py
index 1761b7f75fc54231f8f4c02e1a3277d5c0232eee..fa0f0b12e96783c848f80bfeac7f3e77dfef2618 100644
--- a/scipost/forms.py
+++ b/scipost/forms.py
@@ -19,6 +19,7 @@ from django_countries import countries
 from django_countries.widgets import CountrySelectWidget
 
 from ajax_select.fields import AutoCompleteSelectField
+from dal import autocomplete
 from haystack.forms import ModelSearchForm as HayStackSearchForm
 
 from .behaviors import orcid_validator
@@ -41,6 +42,7 @@ from funders.models import Grant
 from invitations.models import CitationNotification
 from journals.models import PublicationAuthorsTable, Publication
 from mails.utils import DirectMailUtil
+from organizations.models import Organization
 from profiles.models import Profile, ProfileEmail, Affiliation
 from submissions.models import Submission, EditorialAssignment, RefereeInvitation, Report, \
     EditorialCommunication, EICRecommendation
@@ -95,14 +97,23 @@ class RegistrationForm(forms.Form):
         widget=forms.TextInput({
             'placeholder': 'Recommended. Get one at orcid.org'}))
     discipline = forms.ChoiceField(choices=SCIPOST_DISCIPLINES, label='* Main discipline')
-    current_affiliation = AutoCompleteSelectField(
-        'organization_lookup',
+    current_affiliation = forms.ModelChoiceField(
+        queryset=Organization.objects.all(),
+        widget=autocomplete.ModelSelect2(url='/organizations/organization-autocomplete'),
+        label='* Current affiliation',
         help_text=('Start typing, then select in the popup; '
                    'if you do not find the organization you seek, '
                    'please fill in your institution name and address instead.'),
-        show_help_text=False,
-        required=False,
-        label='* Current affiliation')
+        required=False
+    )
+    # current_affiliation = AutoCompleteSelectField(
+    #     'organization_lookup',
+    #     help_text=('Start typing, then select in the popup; '
+    #                'if you do not find the organization you seek, '
+    #                'please fill in your institution name and address instead.'),
+    #     show_help_text=False,
+    #     required=False,
+    #     label='* Current affiliation')
     address = forms.CharField(
         label='Institution name and address', max_length=1000,
         widget=forms.TextInput({'placeholder': '[only if you did not find your affiliation above]'}),