diff --git a/Tsi1.Api/Tsi1.Api/Startup.cs b/Tsi1.Api/Tsi1.Api/Startup.cs
index 0c5c2155f2cabb390a140c0d999df314e08957b1..b6a5bffb90f09f6dcd33f75a44df4e413fad6540 100644
--- a/Tsi1.Api/Tsi1.Api/Startup.cs
+++ b/Tsi1.Api/Tsi1.Api/Startup.cs
@@ -14,6 +14,7 @@ using Microsoft.Extensions.Configuration;
 using Microsoft.Extensions.DependencyInjection;
 using Microsoft.Extensions.Hosting;
 using Microsoft.Extensions.Logging;
+using Microsoft.Extensions.Options;
 using Microsoft.IdentityModel.Tokens;
 using Microsoft.OpenApi.Models;
 using Tsi1.Api.Infrastructure;
@@ -21,6 +22,7 @@ using Tsi1.BusinessLayer.Helpers;
 using Tsi1.BusinessLayer.Interfaces;
 using Tsi1.BusinessLayer.Services;
 using Tsi1.DataLayer;
+using Tsi1.DataLayer.MongoDbConfiguration;
 
 namespace Tsi1.Api
 {
@@ -39,6 +41,13 @@ namespace Tsi1.Api
             services.AddControllers();
 
             services.AddDbContext<Tsi1Context>(x => x.UseNpgsql(Configuration.GetConnectionString("PostgreSql")));
+
+            services.Configure<ITsi1DatabaseSettings>(
+                Configuration.GetSection(nameof(Tsi1DatabaseSettings)));
+
+            services.AddSingleton<Tsi1DatabaseSettings>(sp =>
+                sp.GetRequiredService<IOptions<Tsi1DatabaseSettings>>().Value);
+
             services.AddScoped<IUserService, UserService>();
             services.AddScoped<IUserTypeService, UserTypeService>();
             services.AddScoped<ICourseService, CourseService>();
diff --git a/Tsi1.Api/Tsi1.Api/appsettings.json b/Tsi1.Api/Tsi1.Api/appsettings.json
index e957e7ef0ebdae633178642d900f87a2f773aee3..8de3212efd973a8247f91a2ae359f60135d9b95d 100644
--- a/Tsi1.Api/Tsi1.Api/appsettings.json
+++ b/Tsi1.Api/Tsi1.Api/appsettings.json
@@ -2,6 +2,11 @@
   "ConnectionStrings": {
     "PostgreSql": "Host=localhost;Database=tsi1;Username=postgres;Password=111111"
   },
+  "Tsi1DatabaseSettings": {
+    "Tsi1CollectionName": "Messages",
+    "ConnectionString": "mongodb://localhost:27017",
+    "DatabaseName": "Tsi1Db"
+  },
   "jwtTokenConfig": {
     "secret": "1234567890123456789",
     "issuer": "https://localhost:44363",
diff --git a/Tsi1.Api/Tsi1.BusinessLayer/Dtos/MessageCreateDto.cs b/Tsi1.Api/Tsi1.BusinessLayer/Dtos/MessageCreateDto.cs
new file mode 100644
index 0000000000000000000000000000000000000000..bdf163aa046b11f7a96faeaab0d0ac4a546f3ffd
--- /dev/null
+++ b/Tsi1.Api/Tsi1.BusinessLayer/Dtos/MessageCreateDto.cs
@@ -0,0 +1,15 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Tsi1.BusinessLayer.Dtos
+{
+    public class MessageCreateDto
+    {
+        public int SenderId { get; set; }
+
+        public int ReceiverId { get; set; }
+
+        public string Content { get; set; }
+    }
+}
diff --git a/Tsi1.Api/Tsi1.BusinessLayer/Dtos/MessagePreviewDto.cs b/Tsi1.Api/Tsi1.BusinessLayer/Dtos/MessagePreviewDto.cs
new file mode 100644
index 0000000000000000000000000000000000000000..e49acbb8188fd93d9a6d4479a01a12e2569ebf3b
--- /dev/null
+++ b/Tsi1.Api/Tsi1.BusinessLayer/Dtos/MessagePreviewDto.cs
@@ -0,0 +1,19 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Tsi1.BusinessLayer.Dtos
+{
+    public class MessagePreviewDto
+    {
+        public string Id { get; set; }
+
+        public int SenderId { get; set; }
+
+        public int ReceiverId { get; set; }
+
+        public string Content { get; set; }
+
+        public string Date { get; set; }
+    }
+}
diff --git a/Tsi1.Api/Tsi1.BusinessLayer/Interfaces/IMessageService.cs b/Tsi1.Api/Tsi1.BusinessLayer/Interfaces/IMessageService.cs
new file mode 100644
index 0000000000000000000000000000000000000000..58134b93c60ba3762b801f11ba2ffb1590c89e3c
--- /dev/null
+++ b/Tsi1.Api/Tsi1.BusinessLayer/Interfaces/IMessageService.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Threading.Tasks;
+using Tsi1.BusinessLayer.Helpers;
+
+namespace Tsi1.BusinessLayer.Interfaces
+{
+    public interface IMessageService
+    {
+        Task<ServiceResult<List<ForumPreviewDto>>> GetForums(int courseId);
+
+        Task<ServiceResult<Forum>> Create(ForumCreateDto newForum);
+
+        Task<ServiceResult<Forum>> Delete(int forumId);
+
+        Task<ServiceResult<>>
+
+        List<Message> Get();
+        Message Get(string id);
+        Message Create(Message message);
+        void Update(string id, Message messageIn);
+        void Remove(Message messageIn);
+        void Remove(string id);
+    }
+}
diff --git a/Tsi1.Api/Tsi1.DataLayer/Entities/Message.cs b/Tsi1.Api/Tsi1.DataLayer/Entities/Message.cs
new file mode 100644
index 0000000000000000000000000000000000000000..cd2efac098dd805a5ee099b58d806b38d6ff3826
--- /dev/null
+++ b/Tsi1.Api/Tsi1.DataLayer/Entities/Message.cs
@@ -0,0 +1,24 @@
+using MongoDB.Bson;
+using MongoDB.Bson.Serialization.Attributes;
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Tsi1.DataLayer.Entities
+{
+    public class Message
+    {
+        [BsonId]
+        [BsonRepresentation(BsonType.ObjectId)]
+        public string Id { get; set; }
+
+        public int SenderId { get; set; }
+
+        public int ReceiverId { get; set; }
+
+        public string Content { get; set; }
+
+        public string Date { get; set; }
+
+    }
+}
diff --git a/Tsi1.Api/Tsi1.DataLayer/MongoDbConfiguration/Tsi1DatabaseSettings.cs b/Tsi1.Api/Tsi1.DataLayer/MongoDbConfiguration/Tsi1DatabaseSettings.cs
new file mode 100644
index 0000000000000000000000000000000000000000..67e12a5f70efc07bad5a1f7106305d335f20c45e
--- /dev/null
+++ b/Tsi1.Api/Tsi1.DataLayer/MongoDbConfiguration/Tsi1DatabaseSettings.cs
@@ -0,0 +1,20 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Tsi1.DataLayer.MongoDbConfiguration
+{
+    public class Tsi1DatabaseSettings : ITsi1DatabaseSettings
+    {
+        public string Tsi1CollectionName { get; set; }
+        public string ConnectionString { get; set; }
+        public string DatabaseName { get; set; }
+    }
+
+    public interface ITsi1DatabaseSettings
+    {
+        public string Tsi1CollectionName { get; set; }
+        public string ConnectionString { get; set; }
+        public string DatabaseName { get; set; }
+    }
+}