diff --git a/client/components/CandidateReview/CandidateTestPlanRun/index.jsx b/client/components/CandidateReview/CandidateTestPlanRun/index.jsx
index b48d3a508..be7bbe1c7 100644
--- a/client/components/CandidateReview/CandidateTestPlanRun/index.jsx
+++ b/client/components/CandidateReview/CandidateTestPlanRun/index.jsx
@@ -9,7 +9,7 @@ import {
   ADD_VIEWER_MUTATION,
   CANDIDATE_REPORTS_QUERY,
   PROMOTE_VENDOR_REVIEW_STATUS_REPORT_MUTATION,
-  VENDOR_APPROVAL_STATUS_QUERY
+  REVIEWER_STATUS_QUERY
 } from './queries';
 import Badge from 'react-bootstrap/Badge';
 import Container from 'react-bootstrap/Container';
@@ -117,18 +117,14 @@ const CandidateTestPlanRun = () => {
   );
 
   const auth = evaluateAuth(data?.me ? data?.me : {});
-  const { isAdmin, company } = auth;
-  const { data: vendorApprovalStatusData } = useQuery(
-    VENDOR_APPROVAL_STATUS_QUERY,
-    {
-      variables: {
-        userId: auth.id,
-        vendorId: company?.id,
-        testPlanReportId: testPlanReport?.id
-      },
-      skip: !company || !testPlanReport
-    }
-  );
+  const { isAdmin } = auth;
+  const { data: reviewerStatusData } = useQuery(REVIEWER_STATUS_QUERY, {
+    variables: {
+      userId: auth.id,
+      testPlanReportId: testPlanReport?.id
+    },
+    skip: !testPlanReport
+  });
 
   const isSummaryView = currentTestIndex === -1;
 
@@ -249,8 +245,7 @@ const CandidateTestPlanRun = () => {
 
   useEffect(() => {
     if (data) {
-      const viewedTests =
-        vendorApprovalStatusData?.vendorApprovalStatus?.viewedTests || [];
+      const viewedTests = reviewerStatusData?.reviewerStatus?.viewedTests || [];
       setViewedTests(viewedTests);
       setReviewStatus(testPlanReport.vendorReviewStatus);
 
@@ -267,7 +262,7 @@ const CandidateTestPlanRun = () => {
       setTestsLength(tests.length);
       setShowBrowserClicks(browserClicks);
     }
-  }, [data, vendorApprovalStatusData]);
+  }, [data, reviewerStatusData]);
 
   useEffect(() => {
     if (data) {
@@ -284,11 +279,6 @@ const CandidateTestPlanRun = () => {
     if (isLastTest && tests?.length !== 1) finishButtonRef.current.focus();
   }, [isLastTest]);
 
-  useEffect(() => {
-    if (viewedTests.length > 0 && currentTest?.id)
-      addViewerToTest(currentTest.id).then(() => setFirstTimeViewing(true));
-  }, [viewedTests]);
-
   if (error)
     return (
       <PageStatus
diff --git a/client/components/CandidateReview/CandidateTestPlanRun/queries.js b/client/components/CandidateReview/CandidateTestPlanRun/queries.js
index 475253367..90a1a8797 100644
--- a/client/components/CandidateReview/CandidateTestPlanRun/queries.js
+++ b/client/components/CandidateReview/CandidateTestPlanRun/queries.js
@@ -32,17 +32,9 @@ export const PROMOTE_VENDOR_REVIEW_STATUS_REPORT_MUTATION = gql`
   }
 `;
 
-export const VENDOR_APPROVAL_STATUS_QUERY = gql`
-  query VendorApprovalStatusQuery(
-    $userId: ID!
-    $vendorId: ID!
-    $testPlanReportId: ID!
-  ) {
-    vendorApprovalStatus(
-      userId: $userId
-      vendorId: $vendorId
-      testPlanReportId: $testPlanReportId
-    ) {
+export const REVIEWER_STATUS_QUERY = gql`
+  query ReviewerStatusQuery($userId: ID!, $testPlanReportId: ID!) {
+    reviewerStatus(userId: $userId, testPlanReportId: $testPlanReportId) {
       viewedTests
     }
   }
diff --git a/server/graphql-schema.js b/server/graphql-schema.js
index 5f81639e7..34d75e2fd 100644
--- a/server/graphql-schema.js
+++ b/server/graphql-schema.js
@@ -1135,7 +1135,7 @@ const graphqlSchema = gql`
     draftTestPlanRuns: [TestPlanRun]!
     """
     The state of the vendor review, which can be "READY", "IN_PROGRESS", and "APPROVED".
-    Generated from VendorApprovalStatus.
+    Generated from ReviewerStatus.
     """
     vendorReviewStatus: String
     """
@@ -1170,7 +1170,7 @@ const graphqlSchema = gql`
 
   """
   """
-  type VendorApprovalStatus {
+  type ReviewerStatus {
     """
     The vendor representative who reviewed the test.
     """
@@ -1317,17 +1317,13 @@ const graphqlSchema = gql`
     """
     vendors: [Vendor]!
     """
-    Get a VendorApprovalStatus.
+    Get a ReviewerStatus.
     """
-    vendorApprovalStatus(
-      userId: ID!
-      vendorId: ID!
-      testPlanReportId: ID!
-    ): VendorApprovalStatus!
+    reviewerStatus(userId: ID!, testPlanReportId: ID!): ReviewerStatus!
     """
-    Get all VendorApprovalStatuses.
+    Get all ReviewerStatuses.
     """
-    vendorApprovalStatuses: [VendorApprovalStatus]!
+    reviewerStatuses: [ReviewerStatus]!
     """
     Get a particular TestPlanVersion by ID.
     """
diff --git a/server/migrations/20250217155901-createVendorApprovalStatus.js b/server/migrations/20250217155901-createReviewerStatus.js
similarity index 88%
rename from server/migrations/20250217155901-createVendorApprovalStatus.js
rename to server/migrations/20250217155901-createReviewerStatus.js
index 028b52ec5..05a75538b 100644
--- a/server/migrations/20250217155901-createVendorApprovalStatus.js
+++ b/server/migrations/20250217155901-createReviewerStatus.js
@@ -40,7 +40,7 @@ const checkIfValidVendorUsername = username => {
 module.exports = {
   async up(queryInterface, Sequelize) {
     return queryInterface.sequelize.transaction(async transaction => {
-      // Collect all the TestPlanVersion.tests information to move into VendorApprovalStatus
+      // Collect all the TestPlanVersion.tests information to move into ReviewerStatus
       const testPlanVersions = await queryInterface.sequelize.query(
         `select id, tests from "TestPlanVersion"`,
         {
@@ -57,7 +57,7 @@ module.exports = {
         }
       );
 
-      const vendorApprovalStatuses = [];
+      const reviewerStatuses = [];
 
       for (const testPlanReport of testPlanReports) {
         const testPlanVersion = testPlanVersions.find(
@@ -92,7 +92,7 @@ module.exports = {
             const isApproved = testPlanReport.vendorReviewStatus === 'APPROVED';
             const date = new Date();
 
-            let vendorApprovalStatus = {
+            let reviewerStatus = {
               userId,
               vendorId,
               testPlanReportId: testPlanReport.id,
@@ -104,15 +104,15 @@ module.exports = {
               updatedAt: date
             };
 
-            const viewerExists = vendorApprovalStatuses.find(
+            const viewerExists = reviewerStatuses.find(
               ({ userId, vendorId, testPlanReportId }) =>
-                vendorApprovalStatus.userId === userId &&
-                vendorApprovalStatus.vendorId === vendorId &&
-                vendorApprovalStatus.testPlanReportId === testPlanReportId
+                reviewerStatus.userId === userId &&
+                reviewerStatus.vendorId === vendorId &&
+                reviewerStatus.testPlanReportId === testPlanReportId
             );
 
             if (!viewerExists) {
-              vendorApprovalStatuses.push(vendorApprovalStatus);
+              reviewerStatuses.push(reviewerStatus);
             }
             break;
           }
@@ -147,7 +147,7 @@ module.exports = {
       );
 
       await queryInterface.createTable(
-        'VendorApprovalStatus',
+        'ReviewerStatus',
         {
           userId: {
             type: Sequelize.INTEGER,
@@ -162,8 +162,7 @@ module.exports = {
           },
           vendorId: {
             type: Sequelize.INTEGER,
-            primaryKey: true,
-            allowNull: false,
+            allowNull: true,
             references: {
               model: 'Vendor',
               key: 'id'
@@ -199,7 +198,7 @@ module.exports = {
           },
           reviewStatus: {
             type: Sequelize.TEXT,
-            allowNull: false,
+            allowNull: true,
             defaultValue: 'IN_PROGRESS'
           },
           approvedAt: {
@@ -215,18 +214,16 @@ module.exports = {
         }
       );
 
-      if (vendorApprovalStatuses.length) {
-        await queryInterface.bulkInsert(
-          'VendorApprovalStatus',
-          vendorApprovalStatuses,
-          { transaction }
-        );
+      if (reviewerStatuses.length) {
+        await queryInterface.bulkInsert('ReviewerStatus', reviewerStatuses, {
+          transaction
+        });
       }
     });
   },
 
   async down(queryInterface, Sequelize) {
-    await queryInterface.dropTable('VendorApprovalStatus');
+    await queryInterface.dropTable('ReviewerStatus');
     await queryInterface.addColumn('TestPlanReport', 'vendorReviewStatus', {
       type: Sequelize.TEXT,
       defaultValue: null,
diff --git a/server/models/VendorApprovalStatus.js b/server/models/ReviewerStatus.js
similarity index 96%
rename from server/models/VendorApprovalStatus.js
rename to server/models/ReviewerStatus.js
index 8bd298a80..8027e2b1e 100644
--- a/server/models/VendorApprovalStatus.js
+++ b/server/models/ReviewerStatus.js
@@ -1,4 +1,4 @@
-const MODEL_NAME = 'VendorApprovalStatus';
+const MODEL_NAME = 'ReviewerStatus';
 
 module.exports = function (sequelize, DataTypes) {
   const Model = sequelize.define(
@@ -6,8 +6,8 @@ module.exports = function (sequelize, DataTypes) {
     {
       userId: {
         type: DataTypes.INTEGER,
-        allowNull: false,
         primaryKey: true,
+        allowNull: false,
         references: {
           model: 'User',
           key: 'id'
@@ -17,8 +17,7 @@ module.exports = function (sequelize, DataTypes) {
       },
       vendorId: {
         type: DataTypes.INTEGER,
-        allowNull: false,
-        primaryKey: true,
+        allowNull: true,
         references: {
           model: 'Vendor',
           key: 'id'
@@ -28,8 +27,8 @@ module.exports = function (sequelize, DataTypes) {
       },
       testPlanReportId: {
         type: DataTypes.INTEGER,
-        allowNull: false,
         primaryKey: true,
+        allowNull: false,
         references: {
           model: 'TestPlanReport',
           key: 'id'
@@ -39,7 +38,7 @@ module.exports = function (sequelize, DataTypes) {
       },
       testPlanVersionId: {
         type: DataTypes.INTEGER,
-        allowNull: true,
+        allowNull: false,
         references: {
           model: 'TestPlanVersion',
           key: 'id'
@@ -54,7 +53,7 @@ module.exports = function (sequelize, DataTypes) {
       },
       reviewStatus: {
         type: DataTypes.TEXT,
-        allowNull: false,
+        allowNull: true,
         defaultValue: 'IN_PROGRESS'
       },
       approvedAt: {
diff --git a/server/models/services/VendorApprovalStatusService.js b/server/models/services/ReviewerStatusService.js
similarity index 64%
rename from server/models/services/VendorApprovalStatusService.js
rename to server/models/services/ReviewerStatusService.js
index 6ee914003..33924d4de 100644
--- a/server/models/services/VendorApprovalStatusService.js
+++ b/server/models/services/ReviewerStatusService.js
@@ -1,12 +1,12 @@
 const ModelService = require('./ModelService');
 const {
-  VENDOR_APPROVAL_STATUS_ATTRIBUTES,
+  REVIEWER_STATUS_ATTRIBUTES,
   TEST_PLAN_REPORT_ATTRIBUTES,
   TEST_PLAN_VERSION_ATTRIBUTES,
   USER_ATTRIBUTES,
   VENDOR_ATTRIBUTES
 } = require('./helpers');
-const { TestPlanReport, VendorApprovalStatus } = require('../');
+const { TestPlanReport, ReviewerStatus } = require('../');
 
 // Associate helpers
 
@@ -50,7 +50,7 @@ const vendorAssociation = vendorAttributes => ({
  * @param testPlanReportId
  * @param userId
  * @param vendorId
- * @param vendorApprovalStatusAttributes
+ * @param reviewerStatusAttributes
  * @param testPlanReportAttributes
  * @param testPlanVersionAttributes
  * @param userAttributes
@@ -58,24 +58,22 @@ const vendorAssociation = vendorAttributes => ({
  * @param transaction
  * @returns {Promise<Model>}
  */
-const getVendorApprovalStatusById = async ({
+const getReviewerStatusById = async ({
   testPlanReportId,
   userId,
-  vendorId,
-  vendorApprovalStatusAttributes = VENDOR_APPROVAL_STATUS_ATTRIBUTES,
+  reviewerStatusAttributes = REVIEWER_STATUS_ATTRIBUTES,
   testPlanReportAttributes = TEST_PLAN_REPORT_ATTRIBUTES,
   testPlanVersionAttributes = TEST_PLAN_VERSION_ATTRIBUTES,
   userAttributes = USER_ATTRIBUTES,
   vendorAttributes = VENDOR_ATTRIBUTES,
   transaction
 }) => {
-  return ModelService.getByQuery(VendorApprovalStatus, {
+  return ModelService.getByQuery(ReviewerStatus, {
     where: {
       testPlanReportId,
-      userId,
-      vendorId
+      userId
     },
-    attributes: vendorApprovalStatusAttributes,
+    attributes: reviewerStatusAttributes,
     include: [
       testPlanReportAssociation(testPlanReportAttributes),
       testPlanVersionAssociation(testPlanVersionAttributes),
@@ -88,7 +86,7 @@ const getVendorApprovalStatusById = async ({
 
 /**
  * @param where
- * @param vendorApprovalStatusAttributes
+ * @param reviewerStatusAttributes
  * @param testPlanReportAttributes
  * @param testPlanVersionAttributes
  * @param userAttributes
@@ -97,9 +95,9 @@ const getVendorApprovalStatusById = async ({
  * @param transaction
  * @returns {Promise<*>}
  */
-const getVendorApprovalStatuses = async ({
+const getReviewerStatuses = async ({
   where = {},
-  vendorApprovalStatusAttributes = VENDOR_APPROVAL_STATUS_ATTRIBUTES,
+  reviewerStatusAttributes = REVIEWER_STATUS_ATTRIBUTES,
   testPlanReportAttributes = TEST_PLAN_REPORT_ATTRIBUTES,
   testPlanVersionAttributes = TEST_PLAN_VERSION_ATTRIBUTES,
   userAttributes = USER_ATTRIBUTES,
@@ -107,9 +105,9 @@ const getVendorApprovalStatuses = async ({
   pagination = {},
   transaction
 }) => {
-  return ModelService.get(VendorApprovalStatus, {
+  return ModelService.get(ReviewerStatus, {
     where,
-    attributes: vendorApprovalStatusAttributes,
+    attributes: reviewerStatusAttributes,
     include: [
       testPlanReportAssociation(testPlanReportAttributes),
       testPlanVersionAssociation(testPlanVersionAttributes),
@@ -128,7 +126,7 @@ const getVendorApprovalStatuses = async ({
  * @param reviewStatus
  * @param approvedAt
  * @param viewedTests
- * @param vendorApprovalStatusAttributes
+ * @param reviewerStatusAttributes
  * @param testPlanReportAttributes
  * @param testPlanVersionAttributes
  * @param userAttributes
@@ -136,7 +134,7 @@ const getVendorApprovalStatuses = async ({
  * @param transaction
  * @returns {Promise<Model>}
  */
-const createVendorApprovalStatus = async ({
+const createReviewerStatus = async ({
   values: {
     testPlanReportId,
     userId,
@@ -145,7 +143,7 @@ const createVendorApprovalStatus = async ({
     approvedAt,
     viewedTests = []
   },
-  vendorApprovalStatusAttributes = VENDOR_APPROVAL_STATUS_ATTRIBUTES,
+  reviewerStatusAttributes = REVIEWER_STATUS_ATTRIBUTES,
   testPlanReportAttributes = TEST_PLAN_REPORT_ATTRIBUTES,
   testPlanVersionAttributes = TEST_PLAN_VERSION_ATTRIBUTES,
   userAttributes = USER_ATTRIBUTES,
@@ -156,7 +154,7 @@ const createVendorApprovalStatus = async ({
     where: { id: testPlanReportId },
     transaction
   });
-  await ModelService.create(VendorApprovalStatus, {
+  await ModelService.create(ReviewerStatus, {
     values: {
       testPlanReportId,
       testPlanVersionId: testPlanReport.testPlanVersionId,
@@ -169,11 +167,11 @@ const createVendorApprovalStatus = async ({
     transaction
   });
 
-  return getVendorApprovalStatusById({
+  return getReviewerStatusById({
     testPlanReportId,
     userId,
     vendorId,
-    vendorApprovalStatusAttributes,
+    reviewerStatusAttributes,
     testPlanReportAttributes,
     testPlanVersionAttributes,
     userAttributes,
@@ -189,7 +187,7 @@ const createVendorApprovalStatus = async ({
  * @param viewedTests
  * @param reviewStatus
  * @param approvedAt
- * @param vendorApprovalStatusAttributes
+ * @param reviewerStatusAttributes
  * @param testPlanReportAttributes
  * @param testPlanVersionAttributes
  * @param userAttributes
@@ -197,25 +195,24 @@ const createVendorApprovalStatus = async ({
  * @param transaction
  * @returns {Promise<Model>}
  */
-const updateVendorApprovalStatusByIds = async ({
+const updateReviewerStatusByIds = async ({
   testPlanReportId,
   userId,
-  vendorId,
-  values: { viewedTests, reviewStatus, approvedAt },
-  vendorApprovalStatusAttributes = VENDOR_APPROVAL_STATUS_ATTRIBUTES,
+  values: { vendorId, viewedTests, reviewStatus, approvedAt },
+  reviewerStatusAttributes = REVIEWER_STATUS_ATTRIBUTES,
   testPlanReportAttributes = TEST_PLAN_REPORT_ATTRIBUTES,
   testPlanVersionAttributes = TEST_PLAN_VERSION_ATTRIBUTES,
   userAttributes = USER_ATTRIBUTES,
   vendorAttributes = VENDOR_ATTRIBUTES,
   transaction
 }) => {
-  await ModelService.update(VendorApprovalStatus, {
+  await ModelService.update(ReviewerStatus, {
     where: {
       testPlanReportId,
-      userId,
-      vendorId
+      userId
     },
     values: {
+      vendorId,
       reviewStatus,
       approvedAt,
       viewedTests
@@ -223,11 +220,74 @@ const updateVendorApprovalStatusByIds = async ({
     transaction
   });
 
-  return getVendorApprovalStatusById({
+  return getReviewerStatusById({
     testPlanReportId,
     userId,
     vendorId,
-    vendorApprovalStatusAttributes,
+    reviewerStatusAttributes,
+    testPlanReportAttributes,
+    testPlanVersionAttributes,
+    userAttributes,
+    vendorAttributes,
+    transaction
+  });
+};
+
+/**
+ * @param testPlanReportId
+ * @param userId
+ * @param testId
+ * @param vendorId
+ * @param reviewerStatusAttributes
+ * @param testPlanReportAttributes
+ * @param testPlanVersionAttributes
+ * @param userAttributes
+ * @param vendorAttributes
+ * @param transaction
+ * @returns {Promise<Model>}
+ */
+const createOrUpdateReviewerStatus = async ({
+  testPlanReportId,
+  userId,
+  testId,
+  vendorId,
+  reviewerStatusAttributes = REVIEWER_STATUS_ATTRIBUTES,
+  testPlanReportAttributes = TEST_PLAN_REPORT_ATTRIBUTES,
+  testPlanVersionAttributes = TEST_PLAN_VERSION_ATTRIBUTES,
+  userAttributes = USER_ATTRIBUTES,
+  vendorAttributes = VENDOR_ATTRIBUTES,
+  transaction
+}) => {
+  const testPlanReport = await TestPlanReport.findOne({
+    where: { id: testPlanReportId },
+    transaction
+  });
+
+  const existing = await ReviewerStatus.findOne({
+    where: { testPlanReportId, userId },
+    transaction
+  });
+
+  const viewedTests = existing
+    ? [...new Set([...existing.viewedTests, testId])]
+    : [testId];
+
+  await ReviewerStatus.upsert(
+    {
+      testPlanReportId,
+      testPlanVersionId: testPlanReport.testPlanVersionId,
+      userId,
+      vendorId,
+      reviewStatus: vendorId ? 'IN_PROGRESS' : null,
+      viewedTests
+    },
+    { transaction }
+  );
+
+  return getReviewerStatusById({
+    testPlanReportId,
+    userId,
+    reviewerStatusAttributes,
     testPlanReportAttributes,
     testPlanVersionAttributes,
     userAttributes,
@@ -238,8 +298,9 @@ const updateVendorApprovalStatusByIds = async ({
 
 module.exports = {
   // Basic CRUD
-  getVendorApprovalStatusById,
-  getVendorApprovalStatuses,
-  createVendorApprovalStatus,
-  updateVendorApprovalStatusByIds
+  getReviewerStatusById,
+  getReviewerStatuses,
+  createReviewerStatus,
+  updateReviewerStatusByIds,
+  createOrUpdateReviewerStatus
 };
diff --git a/server/models/services/helpers.js b/server/models/services/helpers.js
index 201705038..359043f58 100644
--- a/server/models/services/helpers.js
+++ b/server/models/services/helpers.js
@@ -5,6 +5,7 @@ const {
   BrowserVersion,
   CollectionJob,
   CollectionJobTestStatus,
+  ReviewerStatus,
   Role,
   TestPlan,
   TestPlanReport,
@@ -13,8 +14,7 @@ const {
   User,
   UserAts,
   UserRoles,
-  Vendor,
-  VendorApprovalStatus
+  Vendor
 } = require('../index');
 
 /**
@@ -38,6 +38,7 @@ module.exports = {
   COLLECTION_JOB_TEST_STATUS_ATTRIBUTES: getSequelizeModelAttributes(
     CollectionJobTestStatus
   ),
+  REVIEWER_STATUS_ATTRIBUTES: getSequelizeModelAttributes(ReviewerStatus),
   ROLE_ATTRIBUTES: getSequelizeModelAttributes(Role),
   TEST_PLAN_ATTRIBUTES: getSequelizeModelAttributes(TestPlan),
   TEST_PLAN_REPORT_ATTRIBUTES: getSequelizeModelAttributes(TestPlanReport),
@@ -46,7 +47,5 @@ module.exports = {
   USER_ATTRIBUTES: getSequelizeModelAttributes(User),
   USER_ROLES_ATTRIBUTES: getSequelizeModelAttributes(UserRoles),
   USER_ATS_ATTRIBUTES: getSequelizeModelAttributes(UserAts),
-  VENDOR_ATTRIBUTES: getSequelizeModelAttributes(Vendor),
-  VENDOR_APPROVAL_STATUS_ATTRIBUTES:
-    getSequelizeModelAttributes(VendorApprovalStatus)
+  VENDOR_ATTRIBUTES: getSequelizeModelAttributes(Vendor)
 };
diff --git a/server/resolvers/TestPlanReport/vendorReviewStatusResolver.js b/server/resolvers/TestPlanReport/vendorReviewStatusResolver.js
index 64437c338..f97b510de 100644
--- a/server/resolvers/TestPlanReport/vendorReviewStatusResolver.js
+++ b/server/resolvers/TestPlanReport/vendorReviewStatusResolver.js
@@ -1,6 +1,7 @@
+const { Op } = require('sequelize');
 const {
-  getVendorApprovalStatuses
-} = require('../../models/services/VendorApprovalStatusService');
+  getReviewerStatuses
+} = require('../../models/services/ReviewerStatusService');
 const vendorReviewStatusResolver = async (
   testPlanReport,
   args, // eslint-disable-line no-unused-vars
@@ -9,19 +10,20 @@ const vendorReviewStatusResolver = async (
   const { transaction } = context;
 
   const where = {
-    testPlanReportId: testPlanReport.id
+    testPlanReportId: testPlanReport.id,
+    vendorId: { [Op.ne]: null } // Only if approval comes from a vendor
   };
-  const vendorApprovalStatuses = await getVendorApprovalStatuses({
+  const reviewerStatuses = await getReviewerStatuses({
     where,
     transaction
   });
 
   // TODO: Use enum for review values
-  if (!vendorApprovalStatuses.length) return 'READY';
+  if (!reviewerStatuses.length) return 'READY';
 
   // TODO: Determine what to do if there is a difference in statuses; ie. 1 APPROVED and 2 other IN_PROGRESS
   // For now, use a single review as that's been the current expectation
-  const isApprovingReview = vendorApprovalStatuses.some(
+  const isApprovingReview = reviewerStatuses.some(
     ({ reviewStatus }) => reviewStatus === 'APPROVED'
   );
   if (isApprovingReview) return 'APPROVED';
diff --git a/server/resolvers/TestPlanReportOperations/promoteVendorReviewStatusResolver.js b/server/resolvers/TestPlanReportOperations/promoteVendorReviewStatusResolver.js
index 1d54acb69..3fd3c4a71 100644
--- a/server/resolvers/TestPlanReportOperations/promoteVendorReviewStatusResolver.js
+++ b/server/resolvers/TestPlanReportOperations/promoteVendorReviewStatusResolver.js
@@ -2,8 +2,8 @@ const { AuthenticationError } = require('apollo-server-errors');
 const populateData = require('../../services/PopulatedData/populateData');
 const checkUserRole = require('../helpers/checkUserRole');
 const {
-  updateVendorApprovalStatusByIds
-} = require('../../models/services/VendorApprovalStatusService');
+  updateReviewerStatusByIds
+} = require('../../models/services/ReviewerStatusService');
 
 const promoteVendorReviewStatusResolver = async (
   { parentContext: { id: testPlanReportId } },
@@ -19,7 +19,7 @@ const promoteVendorReviewStatusResolver = async (
   }
 
   if (user.vendorId || user.company?.id) {
-    await updateVendorApprovalStatusByIds({
+    await updateReviewerStatusByIds({
       testPlanReportId,
       userId: user.id,
       vendorId: user.vendorId || user.company?.id,
diff --git a/server/resolvers/addViewerResolver.js b/server/resolvers/addViewerResolver.js
index e4430395e..896bc7f4b 100644
--- a/server/resolvers/addViewerResolver.js
+++ b/server/resolvers/addViewerResolver.js
@@ -1,10 +1,8 @@
 const { AuthenticationError } = require('apollo-server-errors');
 const checkUserRole = require('./helpers/checkUserRole');
 const {
-  getVendorApprovalStatusById,
-  createVendorApprovalStatus,
-  updateVendorApprovalStatusByIds
-} = require('../models/services/VendorApprovalStatusService');
+  createOrUpdateReviewerStatus
+} = require('../models/services/ReviewerStatusService');
 
 const addViewerResolver = async (_, { testId, testPlanReportId }, context) => {
   const { user, transaction } = context;
@@ -15,40 +13,16 @@ const addViewerResolver = async (_, { testId, testPlanReportId }, context) => {
     throw new AuthenticationError();
   }
 
-  const viewer = {
-    testPlanReportId,
-    userId: user.id,
-    vendorId: user.vendorId || user.company?.id
-  };
-
-  // No need to add a 'viewer' if not affiliated with a company
-  if (!viewer?.vendorId) return user;
+  const vendorId = user.vendorId || user.company?.id;
 
   try {
-    const vendorApprovalStatus = await getVendorApprovalStatusById({
-      ...viewer,
+    await createOrUpdateReviewerStatus({
+      testPlanReportId,
+      userId: user.id,
+      testId,
+      vendorId,
       transaction
     });
-
-    if (vendorApprovalStatus) {
-      if (!vendorApprovalStatus.viewedTests.includes(testId)) {
-        await updateVendorApprovalStatusByIds({
-          ...viewer,
-          values: {
-            viewedTests: [...vendorApprovalStatus.viewedTests, testId]
-          },
-          transaction
-        });
-      }
-    } else {
-      await createVendorApprovalStatus({
-        values: {
-          ...viewer,
-          viewedTests: [testId]
-        },
-        transaction
-      });
-    }
   } catch (error) {
     console.error('addViewerResolver.error', error);
   }
diff --git a/server/resolvers/helpers/processCopiedReports.js b/server/resolvers/helpers/processCopiedReports.js
index 0fa96e099..edcdc1664 100644
--- a/server/resolvers/helpers/processCopiedReports.js
+++ b/server/resolvers/helpers/processCopiedReports.js
@@ -7,10 +7,10 @@ const {
   getOrCreateTestPlanReport
 } = require('../../models/services/TestPlanReportService');
 const {
-  getVendorApprovalStatuses,
-  createVendorApprovalStatus,
-  getVendorApprovalStatusById
-} = require('../../models/services/VendorApprovalStatusService');
+  getReviewerStatuses,
+  createReviewerStatus,
+  getReviewerStatusById
+} = require('../../models/services/ReviewerStatusService');
 const { hashTest } = require('../../util/aria');
 const {
   createTestPlanRun,
@@ -332,12 +332,12 @@ const processCopiedReports = async ({
       newTestPlanVersion
     );
 
-    const newVendorApprovalStatusViewedTestsToSave = [];
-    const oldVendorApprovalStatuses = await getVendorApprovalStatuses({
+    const newReviewerStatusViewedTestsToSave = [];
+    const oldReviewerStatuses = await getReviewerStatuses({
       where: { testPlanReportId: oldTestPlanReport.id },
       transaction
     });
-    const oldVendorViewedTests = oldVendorApprovalStatuses.flatMap(
+    const oldVendorViewedTests = oldReviewerStatuses.flatMap(
       ({ viewedTests }) => viewedTests
     );
 
@@ -348,7 +348,7 @@ const processCopiedReports = async ({
       if (isBotIdRegex.test(oldTestPlanRun.testerUserId)) continue;
 
       // Keep track if previous vendor approval status should be carried over
-      let shouldSaveVendorApprovalStatus = true;
+      let shouldSaveReviewerStatus = true;
 
       // Track which old test results need to be preserved
       const keptTestResultsByTestId = getKeptTestResultsByTestId(
@@ -429,7 +429,7 @@ const processCopiedReports = async ({
           // Unknown combination of command + settings when compared with last version
           const oldScenarioResult = scenarioResultsByScenarioIds[rawScenarioId];
           if (!oldScenarioResult) {
-            shouldSaveVendorApprovalStatus = false;
+            shouldSaveReviewerStatus = false;
             newTestResult.completedAt = null;
             continue;
           }
@@ -455,7 +455,7 @@ const processCopiedReports = async ({
             const oldAssertionResult =
               assertionResultsByAssertionIds[rawAssertionId];
             if (!oldAssertionResult) {
-              shouldSaveVendorApprovalStatus = false;
+              shouldSaveReviewerStatus = false;
               newTestResult.completedAt = null;
               continue;
             }
@@ -466,15 +466,13 @@ const processCopiedReports = async ({
 
         // Keep track of vendor viewed tests to carry over
         if (
-          shouldSaveVendorApprovalStatus &&
+          shouldSaveReviewerStatus &&
           oldVendorViewedTests.includes(oldTest.id) &&
-          !newVendorApprovalStatusViewedTestsToSave.includes(
+          !newReviewerStatusViewedTestsToSave.includes(
             `${oldTest.id}:${test.id}`
           )
         ) {
-          newVendorApprovalStatusViewedTestsToSave.push(
-            `${oldTest.id}:${test.id}`
-          );
+          newReviewerStatusViewedTestsToSave.push(`${oldTest.id}:${test.id}`);
         }
       }
 
@@ -487,44 +485,44 @@ const processCopiedReports = async ({
         transaction
       });
 
-      for (const oldVendorApprovalStatus of oldVendorApprovalStatuses) {
-        let newVendorApprovalStatusExists;
+      for (const oldReviewerStatus of oldReviewerStatuses) {
+        let newReviewerStatusExists;
 
         try {
-          newVendorApprovalStatusExists = await getVendorApprovalStatusById({
+          newReviewerStatusExists = await getReviewerStatusById({
             testPlanReportId: newTestPlanReport.id,
-            userId: oldVendorApprovalStatus.userId,
-            vendorId: oldVendorApprovalStatus.vendorId,
+            userId: oldReviewerStatus.userId,
+            vendorId: oldReviewerStatus.vendorId,
             transaction
           });
         } catch (error) {
           console.error(
-            `Unable to query for vendorApprovalStatus: { ${newTestPlanReport.id},${oldVendorApprovalStatus.userId},${oldVendorApprovalStatus.vendorId} }`,
+            `Unable to query for reviewerStatus: { ${newTestPlanReport.id},${oldReviewerStatus.userId},${oldReviewerStatus.vendorId} }`,
             error
           );
         }
 
-        if (newVendorApprovalStatusExists) continue;
+        if (newReviewerStatusExists) continue;
 
         const viewedTests = [];
-        newVendorApprovalStatusViewedTestsToSave.forEach(oldNewViewedTest => {
+        newReviewerStatusViewedTestsToSave.forEach(oldNewViewedTest => {
           const [oldTestId, newTestId] = oldNewViewedTest.split(':');
-          if (oldVendorApprovalStatus.viewedTests.includes(oldTestId))
+          if (oldReviewerStatus.viewedTests.includes(oldTestId))
             viewedTests.push(newTestId);
         });
 
         try {
-          await createVendorApprovalStatus({
+          await createReviewerStatus({
             values: {
               testPlanReportId: newTestPlanReport.id,
-              userId: oldVendorApprovalStatus.userId,
-              vendorId: oldVendorApprovalStatus.vendorId,
-              reviewStatus: shouldSaveVendorApprovalStatus
-                ? oldVendorApprovalStatus.reviewStatus
+              userId: oldReviewerStatus.userId,
+              vendorId: oldReviewerStatus.vendorId,
+              reviewStatus: shouldSaveReviewerStatus
+                ? oldReviewerStatus.reviewStatus
                 : 'IN_PROGRESS',
               approvedAt:
-                shouldSaveVendorApprovalStatus &&
-                oldVendorApprovalStatus.reviewStatus === 'APPROVED'
+                shouldSaveReviewerStatus &&
+                oldReviewerStatus.reviewStatus === 'APPROVED'
                   ? new Date()
                   : null,
               viewedTests
@@ -533,7 +531,7 @@ const processCopiedReports = async ({
           });
         } catch (error) {
           console.error(
-            `Unable to create vendorApprovalStatus: { ${newTestPlanReport.id},${oldVendorApprovalStatus.userId},${oldVendorApprovalStatus.vendorId} }`,
+            `Unable to create reviewerStatus: { ${newTestPlanReport.id},${oldReviewerStatus.userId},${oldReviewerStatus.vendorId} }`,
             error
           );
         }
diff --git a/server/resolvers/index.js b/server/resolvers/index.js
index 49da28a57..e84ceed81 100644
--- a/server/resolvers/index.js
+++ b/server/resolvers/index.js
@@ -9,13 +9,13 @@ const testPlanReports = require('./testPlanReportsResolver');
 const testPlanVersion = require('./testPlanVersionResolver');
 const testPlanVersions = require('./testPlanVersionsResolver');
 const latestTestPlanVersion = require('./latestTestPlanVersionResolver');
+const reviewerStatus = require('./reviewerStatusResolver');
+const reviewerStatuses = require('./reviewerStatusesResolver');
 const testPlanRun = require('./testPlanRunResolver');
 const testPlanRuns = require('./testPlanRunsResolver');
 const vendors = require('./vendorsResolver');
 const vendor = require('./vendorResolver');
 const vendorByName = require('./vendorByNameResolver');
-const vendorApprovalStatus = require('./vendorApprovalStatusResolver');
-const vendorApprovalStatuses = require('./vendorApprovalStatusesResolver');
 const createTestPlanReport = require('./createTestPlanReportResolver');
 const addViewer = require('./addViewerResolver');
 const mutateAt = require('./mutateAtResolver');
@@ -72,11 +72,11 @@ const resolvers = {
     collectionJob,
     collectionJobs,
     collectionJobByTestPlanRunId,
+    reviewerStatus,
+    reviewerStatuses,
     vendors,
     vendor,
-    vendorByName,
-    vendorApprovalStatus,
-    vendorApprovalStatuses
+    vendorByName
   },
   Mutation: {
     at: mutateAt,
diff --git a/server/resolvers/reviewerStatusResolver.js b/server/resolvers/reviewerStatusResolver.js
new file mode 100644
index 000000000..ce1c53795
--- /dev/null
+++ b/server/resolvers/reviewerStatusResolver.js
@@ -0,0 +1,19 @@
+const {
+  getReviewerStatusById
+} = require('../models/services/ReviewerStatusService');
+
+const reviewerStatusResolver = async (
+  _,
+  { userId, testPlanReportId },
+  context
+) => {
+  const { transaction } = context;
+
+  return getReviewerStatusById({
+    userId,
+    testPlanReportId,
+    transaction
+  });
+};
+
+module.exports = reviewerStatusResolver;
diff --git a/server/resolvers/reviewerStatusesResolver.js b/server/resolvers/reviewerStatusesResolver.js
new file mode 100644
index 000000000..241b4a4ef
--- /dev/null
+++ b/server/resolvers/reviewerStatusesResolver.js
@@ -0,0 +1,17 @@
+const {
+  getReviewerStatuses
+} = require('../models/services/ReviewerStatusService');
+
+const reviewerStatusesResolver = async (_, __, context) => {
+  const { transaction } = context;
+
+  const where = {};
+
+  return getReviewerStatuses({
+    where,
+    pagination: { order: [['updatedAt', 'desc']] },
+    transaction
+  });
+};
+
+module.exports = reviewerStatusesResolver;
diff --git a/server/resolvers/vendorApprovalStatusResolver.js b/server/resolvers/vendorApprovalStatusResolver.js
deleted file mode 100644
index fb97f1a18..000000000
--- a/server/resolvers/vendorApprovalStatusResolver.js
+++ /dev/null
@@ -1,20 +0,0 @@
-const {
-  getVendorApprovalStatusById
-} = require('../models/services/VendorApprovalStatusService');
-
-const vendorApprovalStatusResolver = async (
-  _,
-  { userId, vendorId, testPlanReportId },
-  context
-) => {
-  const { transaction } = context;
-
-  return getVendorApprovalStatusById({
-    userId,
-    vendorId,
-    testPlanReportId,
-    transaction
-  });
-};
-
-module.exports = vendorApprovalStatusResolver;
diff --git a/server/resolvers/vendorApprovalStatusesResolver.js b/server/resolvers/vendorApprovalStatusesResolver.js
deleted file mode 100644
index a59bd7b6e..000000000
--- a/server/resolvers/vendorApprovalStatusesResolver.js
+++ /dev/null
@@ -1,17 +0,0 @@
-const {
-  getVendorApprovalStatuses
-} = require('../models/services/VendorApprovalStatusService');
-
-const vendorApprovalStatusesResolver = async (_, __, context) => {
-  const { transaction } = context;
-
-  const where = {};
-
-  return getVendorApprovalStatuses({
-    where,
-    pagination: { order: [['updatedAt', 'desc']] },
-    transaction
-  });
-};
-
-module.exports = vendorApprovalStatusesResolver;
diff --git a/server/tests/integration/dataManagement.test.js b/server/tests/integration/dataManagement.test.js
index 3da20057b..7b3c8b6ea 100644
--- a/server/tests/integration/dataManagement.test.js
+++ b/server/tests/integration/dataManagement.test.js
@@ -1021,7 +1021,7 @@ describe('data management', () => {
           vendorId: testPlanReport.at.vendorId
         });
 
-        // To ensure at least one VendorApprovalStatus exists so it can be approved
+        // To ensure at least one ReviewerStatus exists so it can be approved
         await addViewer(
           testPlanReport.draftTestPlanRuns[0].testResults[0].test.id,
           testPlanReport.id,
diff --git a/server/tests/integration/graphql.test.js b/server/tests/integration/graphql.test.js
index d36e99521..0a4cae65d 100644
--- a/server/tests/integration/graphql.test.js
+++ b/server/tests/integration/graphql.test.js
@@ -139,7 +139,7 @@ describe('graphql', () => {
       'Vendor',
       'scheduleCollectionJob',
       'CollectionJobTestStatus',
-      'VendorApprovalStatus'
+      'ReviewerStatus'
     ];
     const excludedTypeNameAndField = [
       // Items formatted like this:
@@ -154,8 +154,8 @@ describe('graphql', () => {
       ['CollectionJob', 'externalLogsUrl'],
       ['CollectionJob', 'testStatus'],
       ['User', 'company'],
-      ['Query', 'vendorApprovalStatus'],
-      ['Query', 'vendorApprovalStatuses'],
+      ['Query', 'reviewerStatus'],
+      ['Query', 'reviewerStatuses'],
       // These interact with Response Scheduler API
       // which is mocked in other tests.
       ['Mutation', 'scheduleCollectionJob'],