diff --git a/Tsi1.Api/Tsi1.Api/Controllers/CommunicationController.cs b/Tsi1.Api/Tsi1.Api/Controllers/CommunicationController.cs
index d5e9b2d82a6414c62badc6a90ce2e3b82bcd9807..479c0d74e20a76720ea17a96e8177f3534a6b611 100644
--- a/Tsi1.Api/Tsi1.Api/Controllers/CommunicationController.cs
+++ b/Tsi1.Api/Tsi1.Api/Controllers/CommunicationController.cs
@@ -99,6 +99,22 @@ namespace Tsi1.Api.Controllers
             return Ok(result.Data);
         }
 
+        [Authorize(Roles = UserTypes.FacultyAdmin)]
+        [HttpGet("GetAllCourseCommunications")]
+        public async Task<IActionResult> GetAllCourseCommunications()
+        {
+            var tenantId = int.Parse(HttpContext.User.Claims.FirstOrDefault(x => x.Type == "TenantId").Value);
+
+            var result = await _communicationService.GetAllCourseCommunications(tenantId);
+
+            if (result.HasError)
+            {
+                return BadRequest(result.Message);
+            }
+
+            return Ok(result.Data);
+        }
+
         [Authorize(Roles = UserTypes.Student + ", " + UserTypes.FacultyAdmin + ", " + UserTypes.Professor + ", " + UserTypes.UdelarAdmin)]
         [HttpGet("GetGlobalCommunications")]
         public async Task<IActionResult> GetGlobalCommunications(int tenantId)
diff --git a/Tsi1.Api/Tsi1.BusinessLayer/Interfaces/ICommunicationService.cs b/Tsi1.Api/Tsi1.BusinessLayer/Interfaces/ICommunicationService.cs
index b215bd914da1d507644e6d12862bde4c28233b3c..0c14aaefe1db024539fdf603a024f578f48dd247 100644
--- a/Tsi1.Api/Tsi1.BusinessLayer/Interfaces/ICommunicationService.cs
+++ b/Tsi1.Api/Tsi1.BusinessLayer/Interfaces/ICommunicationService.cs
@@ -21,5 +21,6 @@ namespace Tsi1.BusinessLayer.Interfaces
 
         Task<ServiceResult<bool>> TenantValidation(int tenantId, int courseId);
         Task<ServiceResult<List<CommunicationPreviewDto>>> GetAllGlobalCommunications();
+        Task<ServiceResult<List<CommunicationPreviewDto>>> GetAllCourseCommunications(int tenantId);
     }
 }
diff --git a/Tsi1.Api/Tsi1.BusinessLayer/Services/CommunicationService.cs b/Tsi1.Api/Tsi1.BusinessLayer/Services/CommunicationService.cs
index 039347c78ed142a825b3d014f4520398d4b1d5f0..ffcd09d10628cbefbaea410626dcaccb7727aa64 100644
--- a/Tsi1.Api/Tsi1.BusinessLayer/Services/CommunicationService.cs
+++ b/Tsi1.Api/Tsi1.BusinessLayer/Services/CommunicationService.cs
@@ -102,6 +102,13 @@ namespace Tsi1.BusinessLayer.Services
 
             var validation = await this.TenantValidation(tenantId, courseId);
 
+            if (validation.HasError)
+            {
+                result.HasError = true;
+                result.AddMessage(validation.Message);
+                return result;
+            }
+
             var communications = await _context.Communications
                 .AsNoTracking()
                 .Include(x => x.Course)
@@ -142,6 +149,13 @@ namespace Tsi1.BusinessLayer.Services
             var tenantAdmin = await _context.Tenants.AsNoTracking().FirstOrDefaultAsync(x => x.Name == TenantAdmin.Name);
             var course = await _context.Courses.AsNoTracking().FirstOrDefaultAsync(x => x.Id == courseId);
 
+            if (course == null)
+            {
+                result.HasError = true;
+                result.AddMessage(string.Format(ErrorMessages.CourseDoesNotExist, courseId));
+                return result;
+            }
+
             if (tenantAdmin.Id != tenantId)
             {
                 result.HasError = course.TenantId != tenantId;
@@ -151,6 +165,47 @@ namespace Tsi1.BusinessLayer.Services
             return result;
         }
 
+
+        public async Task<ServiceResult<List<CommunicationPreviewDto>>> GetAllGlobalCommunications()
+        {
+            var result = new ServiceResult<List<CommunicationPreviewDto>>();
+
+            var communications = await _context.Communications
+                .AsNoTracking()
+                .Include(x => x.Tenant)
+                .Where(x => x.IsGlobal)
+                .ToListAsync();
+
+            result.Data = _mapper.Map<List<CommunicationPreviewDto>>(communications);
+
+            return result;
+        }
+
+        public async Task<ServiceResult<List<CommunicationPreviewDto>>> GetAllCourseCommunications(int tenantId)
+        {
+            var result = new ServiceResult<List<CommunicationPreviewDto>>();
+
+            var tenant = await _context.Tenants.Include(x => x.Courses).FirstOrDefaultAsync(x => x.Id == tenantId);
+
+            if (tenant == null)
+            {
+                result.HasError = true;
+                result.AddMessage(string.Format(ErrorMessages.TenantDoesNotExist, tenantId));
+            }
+
+            var courseIds = tenant.Courses.Select(x => x.Id);
+
+            var communications = await _context.Communications
+                .AsNoTracking()
+                .Include(x => x.Course)
+                .Where(x => courseIds.Contains(x.Course.Id))
+                .ToListAsync();
+
+            result.Data = _mapper.Map<List<CommunicationPreviewDto>>(communications);
+
+            return result;
+        }
+
         private async Task<ServiceResult<bool>> CreateValidation(int id, bool isGlobal, Communication commmunication)
         {
             var result = new ServiceResult<bool>();
@@ -185,19 +240,5 @@ namespace Tsi1.BusinessLayer.Services
             return result;
         }
 
-        public async Task<ServiceResult<List<CommunicationPreviewDto>>> GetAllGlobalCommunications()
-        {
-            var result = new ServiceResult<List<CommunicationPreviewDto>>();
-
-            var communications = await _context.Communications
-                .AsNoTracking()
-                .Include(x => x.Tenant)
-                .Where(x => x.IsGlobal)
-                .ToListAsync();
-
-            result.Data = _mapper.Map<List<CommunicationPreviewDto>>(communications);
-
-            return result;
-        }
     }
 }