diff --git a/Rendelosch/Models/ProductForm.cs b/Rendelosch/Models/ProductForm.cs
index 97fb44968dab4ace869da1db802ec471c62be732..b7a3aa110b641b52aa92875de1e594b5e7f6130e 100644
--- a/Rendelosch/Models/ProductForm.cs
+++ b/Rendelosch/Models/ProductForm.cs
@@ -1,15 +1,15 @@
 using System.Collections;
+using MongoDB.Bson.Serialization.Attributes;
 
 namespace Rendelosch.Models;
 
-public class ProductForm : IEnumerable
+public class ProductForm
 {
+    [BsonId]
     public readonly string Id;
     public readonly string Title;
     
     public readonly List<Field> Fields;
-    
-    public readonly List<Submission> Submissions = new();
 
     public ProductForm(string id, string title, List<Field> fields)
     {
@@ -17,9 +17,4 @@ public class ProductForm : IEnumerable
         Title = title;
         Fields = fields;
     }
-
-    public IEnumerator GetEnumerator()
-    {
-        throw new NotImplementedException();
-    }
 }
\ No newline at end of file
diff --git a/Rendelosch/Models/Submission.cs b/Rendelosch/Models/Submission.cs
index 3053b02ef044c5e1448cbaff11bab7a7e59361ef..d4bee793022e083d11e8697757f8d46c3a15dbf8 100644
--- a/Rendelosch/Models/Submission.cs
+++ b/Rendelosch/Models/Submission.cs
@@ -1,12 +1,17 @@
+using MongoDB.Bson.Serialization.Attributes;
+
 namespace Rendelosch.Models;
 
 public class Submission
 {
+    [BsonId]
     public readonly string Id;
+
+    public readonly string ProductFormId;
     
-    public readonly Dictionary<Field, string> FieldData;
+    public readonly Dictionary<string, string> FieldData;
 
-    public Submission(string id, Dictionary<Field, string> fieldData)
+    public Submission(string id, Dictionary<string, string> fieldData)
     {
         Id = id;
         FieldData = fieldData;
diff --git a/Rendelosch/Pages/SubmissionsPage.cshtml b/Rendelosch/Pages/SubmissionsPage.cshtml
index b3864a4d2bae06b2911908c9526cfea392c71195..81750e5856e057ad399b7beccb2b03cf26cc9abc 100644
--- a/Rendelosch/Pages/SubmissionsPage.cshtml
+++ b/Rendelosch/Pages/SubmissionsPage.cshtml
@@ -23,7 +23,7 @@
             foreach (var field in submission.FieldData)
             {
                 <div class="col-4">
-                                    <h5 class="card-title">@field.Key.Name</h5>
+                                    <h5 class="card-title">@field.Key</h5>
 
                                     <p>@field.Value</p>
                                 </div>
diff --git a/Rendelosch/Program.cs b/Rendelosch/Program.cs
index e9377a5752435c80c06fb4ae671e199202317bb5..1d7a765693562811e460b1039b097ff745fdbd67 100644
--- a/Rendelosch/Program.cs
+++ b/Rendelosch/Program.cs
@@ -5,7 +5,7 @@ var builder = WebApplication.CreateBuilder(args);
 // Add services to the container.
 builder.Services.AddRazorPages();
 
-builder.Services.AddSingleton<IProductFormRepository>(new MemoryProductFormRepository());
+builder.Services.AddSingleton<IProductFormRepository>(new MongoDBProductFormRepository());
 
 var app = builder.Build();
 
diff --git a/Rendelosch/Properties/launchSettings.json b/Rendelosch/Properties/launchSettings.json
index 72f0121acb7d4e998f19e610b00b6eb7559195c9..c82203a4c03694d57870cadb30fed7db4339f3fc 100644
--- a/Rendelosch/Properties/launchSettings.json
+++ b/Rendelosch/Properties/launchSettings.json
@@ -15,7 +15,8 @@
       "launchBrowser": false,
       "applicationUrl": "http://localhost:5081",
       "environmentVariables": {
-        "ASPNETCORE_ENVIRONMENT": "Development"
+        "ASPNETCORE_ENVIRONMENT": "Development",
+        "MONGODB_URI":  "mongodb://localhost:27017"
       }
     },
     "https": {
diff --git a/Rendelosch/Rendelosch.csproj b/Rendelosch/Rendelosch.csproj
index 25ffd99378253dc5a9cd59b744cd9d1d75feada6..247d9c0dc6223022f74025fa48204b2d89964f84 100644
--- a/Rendelosch/Rendelosch.csproj
+++ b/Rendelosch/Rendelosch.csproj
@@ -10,4 +10,8 @@
     <_ContentIncludedByDefault Remove="wwwroot\css\site.css" />
   </ItemGroup>
 
+  <ItemGroup>
+    <PackageReference Include="MongoDB.Driver" Version="2.24.0" />
+  </ItemGroup>
+
 </Project>
diff --git a/Rendelosch/Repository/MemoryProductFormRepository.cs b/Rendelosch/Repository/MemoryProductFormRepository.cs
deleted file mode 100644
index 32011b354f3015345a9dead212fa02236c3d79bb..0000000000000000000000000000000000000000
--- a/Rendelosch/Repository/MemoryProductFormRepository.cs
+++ /dev/null
@@ -1,106 +0,0 @@
-using Rendelosch.Models;
-
-namespace Rendelosch.Repository;
-
-public class MemoryProductFormRepository : IProductFormRepository
-{
-    private List<ProductForm> _productForms = new();
-
-    public MemoryProductFormRepository()
-    {
-        var form1Fields = new List<Field>
-        {
-            new Field("name", "Név"),
-            new Field("email", "Email"),
-            new Field("size", "Méret (XS/S/M/L/XL/XXL)")
-        };
-        var sampleForm1 = new ProductForm("551d6601-7f08-4bd5-ab3a-a391c171e188", "DevTeam pulcsi", form1Fields);
-        _productForms.Add(sampleForm1);
-        
-        var form2Fields = new List<Field>
-        {
-            new Field("name", "Név"),
-            new Field("email", "Email"),
-            new Field("phone_number", "Telefonszám"),
-            new Field("colour", "Szín (sárga/zöld/kék)"),
-            new Field("note", "Megjegyzés")
-        };
-        var sampleForm2 = new ProductForm("64996c3e-51ca-444a-90ec-b387f73a84ed", "DevTeam kiskacsa", form2Fields);
-        _productForms.Add(sampleForm2);
-
-        var sampleSubmission1FieldData = new Dictionary<Field, string>
-        {
-            { sampleForm1.Fields[0], "Kovács Béla" },
-            { sampleForm1.Fields[1], "asd@gmail.com" },
-            { sampleForm1.Fields[2], "M" }
-        };
-        var sampleSubmission1 = new Submission("ce9a1a9e-1123-464d-a3ec-740058502f6d", sampleSubmission1FieldData);
-        sampleForm1.Submissions.Add(sampleSubmission1);
-        
-        var sampleSubmission2FieldData = new Dictionary<Field, string>
-        {
-            { sampleForm2.Fields[0], "Teszt Elek" },
-            { sampleForm2.Fields[1], "erogr@sd.hu" },
-            { sampleForm2.Fields[2], "06301234567" },
-            { sampleForm2.Fields[3], "zöld" },
-            { sampleForm2.Fields[4], "Rántotta" }
-        };
-        var sampleSubmission2 = new Submission("d84cf551-96cc-4620-962f-023fefa94b2f", sampleSubmission2FieldData);
-        sampleForm2.Submissions.Add(sampleSubmission2);
-        
-        var sampleSubmission3FieldData = new Dictionary<Field, string>
-        {
-            { sampleForm1.Fields[0], "kisegér" },
-            { sampleForm1.Fields[1], "123123" },
-            { sampleForm1.Fields[2], "óriási, hatalmas, leviatán" }
-        };
-        var sampleSubmission3 = new Submission("106a67ca-acc0-42b5-9a40-18f12a6c7aa1", sampleSubmission3FieldData);
-        sampleForm1.Submissions.Add(sampleSubmission3);
-    }
-
-    public List<ProductForm> GetProductForms()
-    {
-        return _productForms;
-    }
-
-    public ProductForm? GetProductForm(string formId)
-    {
-        return _productForms.Find(f => f.Id == formId);
-    }
-
-    public ProductForm CreateProductForm(string formTitle, List<Field> formFields)
-    {
-        var newForm = new ProductForm(Guid.NewGuid().ToString(), formTitle, formFields);
-        _productForms.Add(newForm);
-        return newForm;
-    }
-
-    public List<Submission>? GetSubmissionsForProductForm(string formId)
-    {
-        var form = _productForms.Find(f => f.Id == formId);
-        if (form == null) return null;
-        
-        return form.Submissions;
-    }
-
-    public Submission? AddSubmissionToProductForm(string formId, Dictionary<string, string> fieldData)
-    {
-        // find form
-        var form = _productForms.Find(f => f.Id == formId);
-        if (form == null) return null;
-        
-        // construct submission field data
-        var submissionFieldData = new Dictionary<Field, string>();
-        foreach (var (key, value) in fieldData)
-        {
-            // find field in form
-            var field = form.Fields.Find(f => f.Key == key);
-            if (field == null) return null;
-            submissionFieldData.Add(field, value);
-        }
-        
-        var submission = new Submission(Guid.NewGuid().ToString(), submissionFieldData);
-        form.Submissions.Add(submission);
-        return submission;
-    }
-}
\ No newline at end of file
diff --git a/Rendelosch/Repository/MongoDBProductFormRepository.cs b/Rendelosch/Repository/MongoDBProductFormRepository.cs
new file mode 100644
index 0000000000000000000000000000000000000000..389b3af1a8603968489f5266b3bae7108c30563e
--- /dev/null
+++ b/Rendelosch/Repository/MongoDBProductFormRepository.cs
@@ -0,0 +1,54 @@
+using MongoDB.Driver;
+using Rendelosch.Models;
+
+namespace Rendelosch.Repository;
+
+public class MongoDBProductFormRepository : IProductFormRepository
+{
+
+    public MongoDBProductFormRepository()
+    {
+        var connectionString = Environment.GetEnvironmentVariable("MONGODB_URI");
+        if (connectionString == null)
+        {
+            Console.WriteLine("MONGODB_URI environment variable is not set");
+            Environment.Exit(0);
+        }
+        
+        var client = new MongoClient(connectionString);
+
+        var database = client.GetDatabase("rendelosch");
+        var productFormsCollection = database.GetCollection<ProductForm>("productForms");
+        var submissionsCollection = database.GetCollection<Submission>("submissions");
+
+        var productForm = productFormsCollection.Find(c => c.Id == "c9d52472-9263-4610-93ca-ce16ba02c4d7").First();
+
+        Console.WriteLine("Product Form: " + productForm);
+    }
+    
+    
+    public List<ProductForm> GetProductForms()
+    {
+        throw new NotImplementedException();
+    }
+
+    public ProductForm? GetProductForm(string formId)
+    {
+        throw new NotImplementedException();
+    }
+
+    public ProductForm CreateProductForm(string formTitle, List<Field> formFields)
+    {
+        throw new NotImplementedException();
+    }
+
+    public List<Submission>? GetSubmissionsForProductForm(string formId)
+    {
+        throw new NotImplementedException();
+    }
+
+    public Submission? AddSubmissionToProductForm(string formId, Dictionary<string, string> fieldData)
+    {
+        throw new NotImplementedException();
+    }
+}
\ No newline at end of file