diff --git a/Tsi1.Api/Tsi1.BusinessLayer/Services/SurveyService.cs b/Tsi1.Api/Tsi1.BusinessLayer/Services/SurveyService.cs
index 3f6ba2985c3e4a3978868394898a6276097ef3d9..e10755ceb2a8124a551b06654bc58f702b8c28fb 100644
--- a/Tsi1.Api/Tsi1.BusinessLayer/Services/SurveyService.cs
+++ b/Tsi1.Api/Tsi1.BusinessLayer/Services/SurveyService.cs
@@ -183,7 +183,7 @@ namespace Tsi1.BusinessLayer.Services
         {
             var result = new ServiceResult<List<SurveyResponseDetailDto>>();
 
-            var tenant = await _context.Tenants.FirstOrDefaultAsync(x => x.Id == tenantId);
+            var tenant = await _context.Tenants.AsNoTracking().FirstOrDefaultAsync(x => x.Id == tenantId);
 
             if (tenant == null)
             {
@@ -192,7 +192,13 @@ namespace Tsi1.BusinessLayer.Services
                 return result;
             }
 
-            var survey = await _context.Surveys.FirstOrDefaultAsync(x => x.Id == surveyId);
+            var survey = await _context.Surveys
+                .AsNoTracking()
+                .Include(x => x.Tenant)
+                .Include(x => x.SectionItem)
+                    .ThenInclude(x => x.Section)
+                        .ThenInclude(x => x.Course)
+                .FirstOrDefaultAsync(x => x.Id == surveyId);
 
             if (survey == null)
             {
@@ -201,7 +207,9 @@ namespace Tsi1.BusinessLayer.Services
                 return result;
             }
 
-            if (userType == UserTypes.Professor)
+            var surveyTenant = survey.IsGlobal ? survey.Tenant.Id : survey.SectionItem.Section.Course.TenantId;
+
+            if ((userType == UserTypes.Professor || userType == UserTypes.FacultyAdmin) && tenantId != surveyTenant)
             {
                 result.HasError = true;
                 result.AddMessage(string.Format(ErrorMessages.InvalidSurvey, surveyId));