diff --git a/FitConnect/Encryption/CertificateHelper.cs b/FitConnect/Encryption/CertificateHelper.cs
index ed2ddca504f3054bbe5b122f404c8e8f1c38b7f5..132dad52e6a420821b634501fd7972691b163ff8 100644
--- a/FitConnect/Encryption/CertificateHelper.cs
+++ b/FitConnect/Encryption/CertificateHelper.cs
@@ -24,7 +24,7 @@ public class CertificateHelper {
         LogLevel logLevel = LogLevel.Warning) {
         var certificateChain = new X509Chain();
 
-        certificate.ExportToPem($"./temp/{Guid.NewGuid().ToString()}.pem");
+ //       certificate.ExportToPem($"./temp/{Guid.NewGuid().ToString()}.pem");
         _logger?.LogDebug("Issuers: {Issuer}", certificate.Issuer);
 
         if (rootCertificate != null) {
@@ -64,11 +64,11 @@ public class CertificateHelper {
         var certificates = key.X5c.Select(s => new X509Certificate2(Convert.FromBase64String(s)))
             .ToList();
 
-        if (certificates.Count != 3) {
-            _logger?.Log(logLevel, "Found {Count} certificate(s) but should be 3",
-                certificates.Count);
-            return false;
-        }
+        // if (certificates.Count != 3) {
+        //     _logger?.Log(logLevel, "Found {Count} certificate(s) but should be 3",
+        //         certificates.Count);
+        //     return false;
+        // }
         // root ??= new X509Certificate2(Convert.FromBase64String(key.X5t));
 
 
diff --git a/FitConnect/Encryption/FitEncryption.cs b/FitConnect/Encryption/FitEncryption.cs
index 4d7ad1b755ba42b0dddca1e091b3f561df097f93..4975ed142f25316c18ce1b3f94aecfe7e4ca9d20 100644
--- a/FitConnect/Encryption/FitEncryption.cs
+++ b/FitConnect/Encryption/FitEncryption.cs
@@ -97,7 +97,7 @@ public class FitEncryption {
         _logger?.LogInformation("Generating authentication tags");
         var attachmentDictionary = new Dictionary<string, string>();
         submission.Attachments.ForEach(a =>
-            attachmentDictionary.Add(a.Id, a.AttachmentAuthentication));
+            attachmentDictionary.Add(a.Id, a.AttachmentAuthentication!));
 
         if (submission.Data != null)
             return new {
diff --git a/FitConnect/Interfaces/Subscriber/ISubscriber.cs b/FitConnect/Interfaces/Subscriber/ISubscriber.cs
index 2f6c2489409826aafe2847d9413a3fef07541359..2f3b0520aa008b362a9b4d71cbd4d9953ffc64e6 100644
--- a/FitConnect/Interfaces/Subscriber/ISubscriber.cs
+++ b/FitConnect/Interfaces/Subscriber/ISubscriber.cs
@@ -20,6 +20,6 @@ public interface ISubscriber : IFitConnectClient {
     /// <param name="submissionId">unique identifier of a <see cref="Submission" /></param>
     /// <param name="skipSchemaTest"></param>
     /// <returns>A subscriber object with a submission</returns>
-    public ISubscriberWithSubmission RequestSubmission(string? submissionId,
+    public ISubscriberWithSubmission RequestSubmission(string submissionId,
         bool skipSchemaTest = false);
 }
diff --git a/FitConnect/Models/Attachment.cs b/FitConnect/Models/Attachment.cs
index 5450e7f35990ba68513bb19355b912d8bb3aac77..88cdc74a7c7f13e0279dd7f47f13f441c8b8cfa9 100644
--- a/FitConnect/Models/Attachment.cs
+++ b/FitConnect/Models/Attachment.cs
@@ -44,7 +44,7 @@ public class Attachment {
     public string Id { get; } = Guid.NewGuid().ToString();
 
     public byte[]? Content { get; init; }
-    public string AttachmentAuthentication { get; }
+    public string? AttachmentAuthentication { get; }
 
     public string? Hash => CalculateHash();
 
diff --git a/FitConnect/Models/Submission.cs b/FitConnect/Models/Submission.cs
index c3027214c7ec3f28b906eaef6c649f05d0dbd4a7..b8792a1d46a3790e20986c32dc9b4a42afad5ee0 100644
--- a/FitConnect/Models/Submission.cs
+++ b/FitConnect/Models/Submission.cs
@@ -5,8 +5,8 @@ using FitConnect.Services.Models.v1.Submission;
 namespace FitConnect.Models;
 
 public class Submission {
-    public string? Id { get; set; }
-    public string? CaseId { get; set; }
+    public string Id { get; set; } = null!;
+    public string CaseId { get; set; } = null!;
     public Destination Destination { get; set; } = new();
 
     public string DestinationId {
diff --git a/FitConnect/Services/Models/ServiceTypeDto.cs b/FitConnect/Services/Models/ServiceTypeDto.cs
index 4a2b55f2b758148d3af08b37f39ce58496e3bc7b..25591062ac054a093237cb3654ccc6ad84a7dd1b 100644
--- a/FitConnect/Services/Models/ServiceTypeDto.cs
+++ b/FitConnect/Services/Models/ServiceTypeDto.cs
@@ -15,11 +15,11 @@ public class ServiceTypeDto {
 
 public class AcceptanceStatus {
     [JsonProperty("metadata")]
-    public string Metadata { get; set; }
+    public string? Metadata { get; set; }
 
     [JsonProperty("data")]
-    public string Data { get; set; }
+    public string? Data { get; set; }
 
     [JsonProperty("attachments")]
-    public Dictionary<string, string> Attachments { get; set; }
+    public Dictionary<string, string> Attachments { get; set; } = new Dictionary<string, string>();
 }
diff --git a/FitConnect/Services/Models/v1/Submission/SubmissionCreatedDto.cs b/FitConnect/Services/Models/v1/Submission/SubmissionCreatedDto.cs
index fa607ae2dfa44a67008a0052ee68f75abd6d6fb8..048c3490e83081d74952465691e80bf56f4b0026 100644
--- a/FitConnect/Services/Models/v1/Submission/SubmissionCreatedDto.cs
+++ b/FitConnect/Services/Models/v1/Submission/SubmissionCreatedDto.cs
@@ -4,11 +4,11 @@ namespace FitConnect.Services.Models.v1.Submission;
 
 public class SubmissionCreatedDto {
     [JsonProperty("destinationId")]
-    public string? DestinationId { get; set; }
+    public string DestinationId { get; set; } = null!;
 
     [JsonProperty("submissionId")]
-    public string? SubmissionId { get; set; }
+    public string SubmissionId { get; set; } = null!;
 
     [JsonProperty("caseId")]
-    public string? CaseId { get; set; }
+    public string CaseId { get; set; } = null!;
 }
diff --git a/FitConnect/Services/Models/v1/Submission/SubmissionDto.cs b/FitConnect/Services/Models/v1/Submission/SubmissionDto.cs
index 9a4f1aa1c17a3796cb435cc7ee5a6022597931de..1c0e3be45e4188ee8111f9434a463cf4491388c4 100644
--- a/FitConnect/Services/Models/v1/Submission/SubmissionDto.cs
+++ b/FitConnect/Services/Models/v1/Submission/SubmissionDto.cs
@@ -12,10 +12,10 @@ public class SubmissionDto {
 
 
     [JsonProperty("caseId")]
-    public string? CaseId { get; set; }
+    public string CaseId { get; set; } = null!;
 
     [JsonProperty("destinationId")]
-    public string? DestinationId { get; set; }
+    public string DestinationId { get; set; } = null!;
 
 
     [JsonProperty("encryptedData")]
@@ -31,5 +31,5 @@ public class SubmissionDto {
 
 
     [JsonProperty("submissionId")]
-    public string? SubmissionId { get; set; }
+    public string SubmissionId { get; set; } = null!;
 }
diff --git a/FitConnect/Services/Models/v1/Submission/SubmissionForPickupDto.cs b/FitConnect/Services/Models/v1/Submission/SubmissionForPickupDto.cs
index a3106e65e80ac8c9a405ff5a92b99f8627a1e22b..c1a7911aacd32b07f4bf7427993e173b18ad1523 100644
--- a/FitConnect/Services/Models/v1/Submission/SubmissionForPickupDto.cs
+++ b/FitConnect/Services/Models/v1/Submission/SubmissionForPickupDto.cs
@@ -10,5 +10,5 @@ public class SubmissionForPickupDto {
     public string? DestinationId { get; set; }
 
     [JsonProperty("submissionId")]
-    public string? Id { get; set; }
+    public string Id { get; set; } = null!;
 }
diff --git a/FitConnect/Subscriber.cs b/FitConnect/Subscriber.cs
index 1635bc5b9cb6db2d470318bfa19ddff327e92aba..40e6e839b31d225fd445395d3aeeeb299828cda4 100644
--- a/FitConnect/Subscriber.cs
+++ b/FitConnect/Subscriber.cs
@@ -15,6 +15,7 @@ using Microsoft.AspNetCore.Http;
 using Microsoft.Extensions.Logging;
 using Newtonsoft.Json;
 using NJsonSchema;
+using NJsonSchema.Annotations;
 using NJsonSchema.Validation;
 using Metadata = FitConnect.Models.Api.Metadata.Metadata;
 
@@ -82,7 +83,7 @@ public class Subscriber : FitConnectClient,
     public ISubscriberWithSubmission RequestSubmission(string submissionId,
         bool skipSchemaTest = false) {
         var submission = (Submission)SubmissionService.GetSubmission(submissionId);
-        var (metaDataString, _, metaHash) = Encryption.Decrypt(submission.EncryptedMetadata);
+        var (metaDataString, _, metaHash) = Encryption.Decrypt(submission.EncryptedMetadata!);
 
         if (!skipSchemaTest) {
             var valid = JsonHelper.VerifyMetadata(metaDataString);
diff --git a/IntegrationTests/CertificateValidation.cs b/IntegrationTests/CertificateValidation.cs
index 67fd47f630cc6bcd29d856e0469ec54304e23a49..7a26e50a8bff96bb44352117d7066bd4f2a44103 100644
--- a/IntegrationTests/CertificateValidation.cs
+++ b/IntegrationTests/CertificateValidation.cs
@@ -23,7 +23,6 @@ public class CertificateValidation {
     private MockSettings _settings = null!;
     private ILogger _logger = null!;
     private CertificateHelper _certificateHelper = null!;
-    private Mock<ILogger> _mockLogger = null!;
 
     [SetUp]
     public void Setup() {
@@ -48,7 +47,7 @@ public class CertificateValidation {
             _settings.SenderClientSecret,
             _logger);
 
-        var certificate = (sender as FitConnect.Sender)
+        var certificate = (sender as FitConnect.Sender)!
             .GetPublicKeyFromDestination(_settings.DestinationId).Result;
         new CertificateHelper(_logger).ValidateCertificate(JsonWebKey.Create(certificate),
             LogLevel.Trace);
@@ -61,7 +60,7 @@ public class CertificateValidation {
             _settings.SenderClientSecret,
             _logger);
 
-        var certificate = (sender as FitConnect.Sender)
+        var certificate = (sender as FitConnect.Sender)!
             .GetPublicKeyFromDestination(_settings.DestinationId).Result;
         new CertificateHelper(_logger).ValidateCertificate(JsonWebKey.Create(certificate),
             LogLevel.Trace);
@@ -81,7 +80,7 @@ public class CertificateValidation {
                 .WithServiceType("", _settings.LeikaKey)
                 .WithAttachments(new Attachment("Test.pdf", "Simple Test PDF"))
                 .Submit();
-        }).InnerExceptions.Any(e => e.GetType() == typeof(SecurityException));
+        })!.InnerExceptions.Any(e => e.GetType() == typeof(SecurityException)).Should().BeTrue();
     }
 
     [Test]
@@ -97,7 +96,7 @@ public class CertificateValidation {
                 .WithServiceType("", _settings.LeikaKey)
                 .WithAttachments(new Attachment("Test.pdf", "Simple Test PDF"))
                 .Submit();
-        }).InnerExceptions.Any(e => e.GetType() == typeof(SecurityException));
+        })!.InnerExceptions.Any(e => e.GetType() == typeof(SecurityException)).Should().BeTrue();
     }
 
     [Test]
@@ -159,12 +158,9 @@ public class CertificateValidation {
                 var shouldFail = !fileName.Contains("/valid");
                 var jwk = new JsonWebKey(File.ReadAllText(fileName));
                 var valid = _certificateHelper.ValidateCertificate(jwk,
-                    shouldFail ? LogLevel.Warning : LogLevel.Critical, new[] {
-                        new X509Certificate2("./certificates/root.pem"),
-                        new X509Certificate2("./certificates/ca.30244.der"),
-                        new X509Certificate2("./certificates/ca.26305.der"),
-                        new X509Certificate2("./certificates/ca.26281.der")
-                    });
+                    shouldFail ? LogLevel.Warning : LogLevel.Critical,
+                    Directory.GetFiles("./certificates/roots")
+                        .Select(file => new X509Certificate2(file)).ToArray());
 
                 if (shouldFail)
                     valid = !valid;
diff --git a/IntegrationTests/IntegrationTests.csproj b/IntegrationTests/IntegrationTests.csproj
index 6ffb71a77899ebf01aebf25db372b787fd40d3c1..567f9503d482b4017bb248ab89f7db83e4b7fe98 100644
--- a/IntegrationTests/IntegrationTests.csproj
+++ b/IntegrationTests/IntegrationTests.csproj
@@ -48,28 +48,58 @@
         <None Update="certificates\revokedEncJWK.json">
           <CopyToOutputDirectory>Always</CopyToOutputDirectory>
         </None>
-        <None Update="certificates\root.pem">
+        <None Update="certificates\ca.30244.der">
           <CopyToOutputDirectory>Always</CopyToOutputDirectory>
         </None>
-        <None Update="certificates\ca.30244.der">
+        <None Update="temp\readme.md">
           <CopyToOutputDirectory>Always</CopyToOutputDirectory>
         </None>
-        <None Update="certificates\ca.30244.der">
+        <None Update="certificates\invalidEncJwkWithLessThan3Certificates.json">
           <CopyToOutputDirectory>Always</CopyToOutputDirectory>
         </None>
-        <None Update="temp\readme.md">
+        <None Update="certificates\ca.26281.der">
+          <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+        </None>
+        <None Update="certificates\ca.26305.der">
           <CopyToOutputDirectory>Always</CopyToOutputDirectory>
         </None>
-        <None Update="certificates\ca.21636.der">
+        <None Update="certificates\roots\ca.21636.der">
           <CopyToOutputDirectory>Always</CopyToOutputDirectory>
         </None>
-        <None Update="certificates\invalidEncJwkWithLessThan3Certificates.json">
+        <None Update="certificates\roots\ca.30244.der">
           <CopyToOutputDirectory>Always</CopyToOutputDirectory>
         </None>
-        <None Update="certificates\ca.26281.der">
+        <None Update="certificates\roots\root.pem">
           <CopyToOutputDirectory>Always</CopyToOutputDirectory>
         </None>
-        <None Update="certificates\ca.26305.der">
+        <None Update="certificates\roots\ca.17478.der">
+          <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+        </None>
+        <None Update="certificates\roots\ca.29249.der">
+          <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+        </None>
+        <None Update="certificates\roots\ca.29267.der">
+          <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+        </None>
+        <None Update="certificates\roots\ca.29284.der">
+          <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+        </None>
+        <None Update="certificates\roots\ca.29302.der">
+          <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+        </None>
+        <None Update="certificates\roots\ca.29319.der">
+          <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+        </None>
+        <None Update="certificates\roots\ca.29336.der">
+          <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+        </None>
+        <None Update="certificates\roots\ca.29353.der">
+          <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+        </None>
+        <None Update="certificates\roots\ca.29370.der">
+          <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+        </None>
+        <None Update="certificates\roots\ca.29387.der">
           <CopyToOutputDirectory>Always</CopyToOutputDirectory>
         </None>
     </ItemGroup>
diff --git a/IntegrationTests/Sender/ThreadTest.cs b/IntegrationTests/Sender/ThreadTest.cs
index 9de0bf1d2eacc495e89f8bb00e1fa5b3f777caef..2588b1db76c0418696901346514e9156392bab15 100644
--- a/IntegrationTests/Sender/ThreadTest.cs
+++ b/IntegrationTests/Sender/ThreadTest.cs
@@ -75,7 +75,7 @@ public class ThreadTest {
 
         foreach (var submission in submissions)
             subscriber
-                .RequestSubmission(submission.Id)
+                .RequestSubmission(submission.Id!)
                 .AcceptSubmission();
 
         submissions.Count.Should().Be(NumberOfThreads);
diff --git a/IntegrationTests/Subscriber/SubscriberTestHappyPath.cs b/IntegrationTests/Subscriber/SubscriberTestHappyPath.cs
index 34917379c86191992e036e65eb68996e4582a5c9..9255aed0061d7c5af65a71c18052bac6d2a418b9 100644
--- a/IntegrationTests/Subscriber/SubscriberTestHappyPath.cs
+++ b/IntegrationTests/Subscriber/SubscriberTestHappyPath.cs
@@ -42,7 +42,7 @@ public class SubscriberTestHappyPath : SubscriberTestBase {
         var submissions = Subscriber.GetAvailableSubmissions().ToList();
         submissions.Count().Should().BeGreaterThan(0);
         var i = 0;
-        foreach (var submissionId in submissions.Select(s => s.Id)) {
+        foreach (var submissionId in submissions.Select(s => s.Id!)) {
             // Act
             Console.WriteLine($"Getting submission {submissionId}");
             var dto = Subscriber.RequestSubmission(submissionId);