diff --git a/hypha/apply/funds/forms.py b/hypha/apply/funds/forms.py
index 0a4d30075794ab215675d854dcb993d3c11e004d..1259a1762d3cade41651e46c8672ba909a27779d 100644
--- a/hypha/apply/funds/forms.py
+++ b/hypha/apply/funds/forms.py
@@ -315,9 +315,18 @@ class UpdateReviewersForm(ApplicationSubmissionModelForm):
 
 class BatchUpdateReviewersForm(forms.Form):
     submissions = forms.CharField(widget=forms.HiddenInput(attrs={'class': 'js-submissions-id'}))
+    external_reviewers = forms.ModelMultipleChoiceField(
+        queryset=User.objects.reviewers().only('pk', 'full_name'),
+        widget=Select2MultiCheckboxesWidget(attrs={'data-placeholder': 'Reviewers'}),
+        label=_('External Reviewers'),
+        required=False,
+    )
 
     def __init__(self, *args, user=None, round=None, **kwargs):
         super().__init__(*args, **kwargs)
+        self.user = user
+
+        self.fields = OrderedDict(self.fields)
 
         self.role_fields = {}
         field_data = make_role_reviewer_fields()
@@ -327,6 +336,8 @@ class BatchUpdateReviewersForm(forms.Form):
             self.fields[field_name] = data['field']
             self.role_fields[field_name] = data['role']
 
+        self.fields.move_to_end('external_reviewers')
+
     def clean_submissions(self):
         value = self.cleaned_data['submissions']
         submission_ids = [int(submission) for submission in value.split(',')]
@@ -334,6 +345,16 @@ class BatchUpdateReviewersForm(forms.Form):
 
     def clean(self):
         cleaned_data = super().clean()
+        external_reviewers = self.cleaned_data['external_reviewers']
+        submissions = self.cleaned_data['submissions']
+        if external_reviewers:
+            # User needs to be superuser or lead of all selected submissions.
+            if self.user_cant_alter_submissions_external_reviewers(submissions, self.user):
+                self.add_error('external_reviewers', _("Only Lead can change the External Reviewers"))
+            # If user is trying to change the external reviewers for submissions that doesn't have workflow with external_review stage.
+            elif self.submissions_cant_have_external_reviewers(submissions):
+                self.add_error('external_reviewers', _('External Reviewers cannot be selected because of the application workflow'))
+
         role_reviewers = [
             user
             for field, user in self.cleaned_data.items()
@@ -346,8 +367,21 @@ class BatchUpdateReviewersForm(forms.Form):
 
         return cleaned_data
 
+    def submissions_cant_have_external_reviewers(self, submissions):
+        for submission in submissions:
+            if not submission.stage.has_external_review:
+                return True
+        return False
+
+    def user_cant_alter_submissions_external_reviewers(self, submissions, user):
+        for submission in submissions:
+            if user != submission.lead and not user.is_superuser:
+                return True
+        return False
+
     def save(self):
         submissions = self.cleaned_data['submissions']
+        external_reviewers = self.cleaned_data['external_reviewers']
         assigned_roles = {
             role: self.cleaned_data[field]
             for field, role in self.role_fields.items()
@@ -356,6 +390,12 @@ class BatchUpdateReviewersForm(forms.Form):
             if reviewer:
                 AssignedReviewers.objects.update_role(role, reviewer, *submissions)
 
+        for submission in submissions:
+            AssignedReviewers.objects.bulk_create_reviewers(
+                [reviewer for reviewer in external_reviewers],
+                submission,
+            )
+
         return None