diff --git a/hypha/apply/funds/migrations/0096_only_active_users.py b/hypha/apply/funds/migrations/0096_only_active_users.py
new file mode 100644
index 0000000000000000000000000000000000000000..0f0f2267e77bb5e7a7020102385b3253c33abb73
--- /dev/null
+++ b/hypha/apply/funds/migrations/0096_only_active_users.py
@@ -0,0 +1,57 @@
+# Generated by Django 3.2.13 on 2022-04-13 12:16
+
+from django.conf import settings
+from django.db import migrations, models
+import django.db.models.deletion
+import modelcluster.fields
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        migrations.swappable_dependency(settings.AUTH_USER_MODEL),
+        ('funds', '0095_only_external_review_option'),
+    ]
+
+    operations = [
+        migrations.AlterField(
+            model_name='applicationbase',
+            name='reviewers',
+            field=modelcluster.fields.ParentalManyToManyField(blank=True, limit_choices_to={'groups__name': 'Reviewer', 'is_active': True}, related_name='applicationbase_reviewers', to=settings.AUTH_USER_MODEL),
+        ),
+        migrations.AlterField(
+            model_name='applicationsubmission',
+            name='lead',
+            field=models.ForeignKey(limit_choices_to={'groups__name': 'Staff', 'is_active': True}, on_delete=django.db.models.deletion.PROTECT, related_name='submission_lead', to=settings.AUTH_USER_MODEL),
+        ),
+        migrations.AlterField(
+            model_name='applicationsubmission',
+            name='partners',
+            field=models.ManyToManyField(blank=True, limit_choices_to={'groups__name': 'Partner', 'is_active': True}, related_name='submissions_partner', to=settings.AUTH_USER_MODEL),
+        ),
+        migrations.AlterField(
+            model_name='assignedreviewers',
+            name='reviewer',
+            field=models.ForeignKey(limit_choices_to={'groups__name__in': ['Staff', 'Reviewer', 'Community reviewer'], 'is_active': True}, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL),
+        ),
+        migrations.AlterField(
+            model_name='labbase',
+            name='lead',
+            field=models.ForeignKey(limit_choices_to={'groups__name': 'Staff', 'is_active': True}, on_delete=django.db.models.deletion.PROTECT, related_name='lab_lead', to=settings.AUTH_USER_MODEL),
+        ),
+        migrations.AlterField(
+            model_name='labbase',
+            name='reviewers',
+            field=modelcluster.fields.ParentalManyToManyField(blank=True, limit_choices_to={'groups__name': 'Reviewer', 'is_active': True}, related_name='labs_reviewer', to=settings.AUTH_USER_MODEL),
+        ),
+        migrations.AlterField(
+            model_name='roundbase',
+            name='lead',
+            field=models.ForeignKey(limit_choices_to={'groups__name': 'Staff', 'is_active': True}, on_delete=django.db.models.deletion.PROTECT, related_name='roundbase_lead', to=settings.AUTH_USER_MODEL),
+        ),
+        migrations.AlterField(
+            model_name='roundbase',
+            name='reviewers',
+            field=modelcluster.fields.ParentalManyToManyField(blank=True, limit_choices_to={'groups__name': 'Reviewer', 'is_active': True}, related_name='roundbase_reviewer', to=settings.AUTH_USER_MODEL),
+        ),
+    ]
diff --git a/hypha/apply/funds/models/utils.py b/hypha/apply/funds/models/utils.py
index 920c4f48a7cd10ddcfc49038a162a0f34e77c408..034fde9dfc4c9156eeb42767614bc4cdd6a4e867 100644
--- a/hypha/apply/funds/models/utils.py
+++ b/hypha/apply/funds/models/utils.py
@@ -26,11 +26,11 @@ REVIEW_GROUPS = [
     REVIEWER_GROUP_NAME,
     COMMUNITY_REVIEWER_GROUP_NAME,
 ]
-LIMIT_TO_STAFF = {'groups__name': STAFF_GROUP_NAME}
-LIMIT_TO_REVIEWERS = {'groups__name': REVIEWER_GROUP_NAME}
-LIMIT_TO_PARTNERS = {'groups__name': PARTNER_GROUP_NAME}
-LIMIT_TO_COMMUNITY_REVIEWERS = {'groups__name': COMMUNITY_REVIEWER_GROUP_NAME}
-LIMIT_TO_REVIEWER_GROUPS = {'groups__name__in': REVIEW_GROUPS}
+LIMIT_TO_STAFF = {'groups__name': STAFF_GROUP_NAME, 'is_active': True}
+LIMIT_TO_REVIEWERS = {'groups__name': REVIEWER_GROUP_NAME, 'is_active': True}
+LIMIT_TO_PARTNERS = {'groups__name': PARTNER_GROUP_NAME, 'is_active': True}
+LIMIT_TO_COMMUNITY_REVIEWERS = {'groups__name': COMMUNITY_REVIEWER_GROUP_NAME, 'is_active': True}
+LIMIT_TO_REVIEWER_GROUPS = {'groups__name__in': REVIEW_GROUPS, 'is_active': True}
 
 
 def admin_url(page):
diff --git a/hypha/apply/users/models.py b/hypha/apply/users/models.py
index f23aeab93173db51c7d1819762e70fb7e106d9fe..1b84b1a7c91b437a4d45ee73e0e65e6aae3faca3 100644
--- a/hypha/apply/users/models.py
+++ b/hypha/apply/users/models.py
@@ -25,35 +25,35 @@ from .utils import send_activation_email
 class UserQuerySet(models.QuerySet):
     def staff(self):
         return self.filter(
-            Q(groups__name=STAFF_GROUP_NAME) | Q(is_superuser=True)
+            Q(groups__name=STAFF_GROUP_NAME, is_active=True) | Q(is_superuser=True, is_active=True)
         ).distinct()
 
     def staff_admin(self):
-        return self.filter(groups__name=TEAMADMIN_GROUP_NAME)
+        return self.filter(groups__name=TEAMADMIN_GROUP_NAME, is_active=True)
 
     def reviewers(self):
-        return self.filter(groups__name=REVIEWER_GROUP_NAME)
+        return self.filter(groups__name=REVIEWER_GROUP_NAME, is_active=True)
 
     def partners(self):
-        return self.filter(groups__name=PARTNER_GROUP_NAME)
+        return self.filter(groups__name=PARTNER_GROUP_NAME, is_active=True)
 
     def community_reviewers(self):
-        return self.filter(groups__name=COMMUNITY_REVIEWER_GROUP_NAME)
+        return self.filter(groups__name=COMMUNITY_REVIEWER_GROUP_NAME, is_active=True)
 
     def applicants(self):
-        return self.filter(groups__name=APPLICANT_GROUP_NAME)
+        return self.filter(groups__name=APPLICANT_GROUP_NAME, is_active=True)
 
     def approvers(self):
-        return self.filter(groups__name=APPROVER_GROUP_NAME)
+        return self.filter(groups__name=APPROVER_GROUP_NAME, is_active=True)
 
     def finances_level_1(self):
-        return self.filter(groups__name=FINANCE_GROUP_NAME).exclude(groups__name=APPROVER_GROUP_NAME)
+        return self.filter(groups__name=FINANCE_GROUP_NAME, is_active=True).exclude(groups__name=APPROVER_GROUP_NAME)
 
     def finances_level_2(self):
-        return self.filter(groups__name=FINANCE_GROUP_NAME).filter(groups__name=APPROVER_GROUP_NAME)
+        return self.filter(groups__name=FINANCE_GROUP_NAME, is_active=True).filter(groups__name=APPROVER_GROUP_NAME)
 
     def contracting(self):
-        return self.filter(groups__name=CONTRACTING_GROUP_NAME)
+        return self.filter(groups__name=CONTRACTING_GROUP_NAME, is_active=True)
 
 
 class UserManager(BaseUserManager.from_queryset(UserQuerySet)):