diff --git a/dotnet/SK-dotnet.sln b/dotnet/SK-dotnet.sln
index a1f32f6286a9..a3bc4f9a380d 100644
--- a/dotnet/SK-dotnet.sln
+++ b/dotnet/SK-dotnet.sln
@@ -320,7 +320,9 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Connectors.Qdrant.UnitTests
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "StepwisePlannerMigration", "samples\Demos\StepwisePlannerMigration\StepwisePlannerMigration.csproj", "{38374C62-0263-4FE8-A18C-70FC8132912B}"
EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AIModelRouter", "samples\Demos\AIModelRouter\AIModelRouter.csproj", "{E06818E3-00A5-41AC-97ED-9491070CDEA1}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Connectors.AzureCosmosDBMongoDB.UnitTests", "src\Connectors\Connectors.AzureCosmosDBMongoDB.UnitTests\Connectors.AzureCosmosDBMongoDB.UnitTests.csproj", "{2918478E-BC86-4D53-9D01-9C318F80C14F}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AIModelRouter", "samples\Demos\AIModelRouter\AIModelRouter.csproj", "{E06818E3-00A5-41AC-97ED-9491070CDEA1}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Connectors.AzureCosmosDBNoSQL.UnitTests", "src\Connectors\Connectors.AzureCosmosDBNoSQL.UnitTests\Connectors.AzureCosmosDBNoSQL.UnitTests.csproj", "{385A8FE5-87E2-4458-AE09-35E10BD2E67F}"
EndProject
@@ -799,6 +801,12 @@ Global
{38374C62-0263-4FE8-A18C-70FC8132912B}.Publish|Any CPU.Build.0 = Debug|Any CPU
{38374C62-0263-4FE8-A18C-70FC8132912B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{38374C62-0263-4FE8-A18C-70FC8132912B}.Release|Any CPU.Build.0 = Release|Any CPU
+ {2918478E-BC86-4D53-9D01-9C318F80C14F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {2918478E-BC86-4D53-9D01-9C318F80C14F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {2918478E-BC86-4D53-9D01-9C318F80C14F}.Publish|Any CPU.ActiveCfg = Debug|Any CPU
+ {2918478E-BC86-4D53-9D01-9C318F80C14F}.Publish|Any CPU.Build.0 = Debug|Any CPU
+ {2918478E-BC86-4D53-9D01-9C318F80C14F}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {2918478E-BC86-4D53-9D01-9C318F80C14F}.Release|Any CPU.Build.0 = Release|Any CPU
{E06818E3-00A5-41AC-97ED-9491070CDEA1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E06818E3-00A5-41AC-97ED-9491070CDEA1}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E06818E3-00A5-41AC-97ED-9491070CDEA1}.Publish|Any CPU.ActiveCfg = Debug|Any CPU
@@ -920,6 +928,7 @@ Global
{1D4667B9-9381-4E32-895F-123B94253EE8} = {0247C2C9-86C3-45BA-8873-28B0948EDC0C}
{E92AE954-8F3A-4A6F-A4F9-DC12017E5AAF} = {0247C2C9-86C3-45BA-8873-28B0948EDC0C}
{38374C62-0263-4FE8-A18C-70FC8132912B} = {5D4C0700-BBB5-418F-A7B2-F392B9A18263}
+ {2918478E-BC86-4D53-9D01-9C318F80C14F} = {0247C2C9-86C3-45BA-8873-28B0948EDC0C}
{E06818E3-00A5-41AC-97ED-9491070CDEA1} = {5D4C0700-BBB5-418F-A7B2-F392B9A18263}
{385A8FE5-87E2-4458-AE09-35E10BD2E67F} = {0247C2C9-86C3-45BA-8873-28B0948EDC0C}
EndGlobalSection
diff --git a/dotnet/src/Connectors/Connectors.AzureCosmosDBMongoDB.UnitTests/.editorconfig b/dotnet/src/Connectors/Connectors.AzureCosmosDBMongoDB.UnitTests/.editorconfig
new file mode 100644
index 000000000000..394eef685f21
--- /dev/null
+++ b/dotnet/src/Connectors/Connectors.AzureCosmosDBMongoDB.UnitTests/.editorconfig
@@ -0,0 +1,6 @@
+# Suppressing errors for Test projects under dotnet folder
+[*.cs]
+dotnet_diagnostic.CA2007.severity = none # Do not directly await a Task
+dotnet_diagnostic.VSTHRD111.severity = none # Use .ConfigureAwait(bool) is hidden by default, set to none to prevent IDE from changing on autosave
+dotnet_diagnostic.CS1591.severity = none # Missing XML comment for publicly visible type or member
+dotnet_diagnostic.IDE1006.severity = warning # Naming rule violations
diff --git a/dotnet/src/Connectors/Connectors.AzureCosmosDBMongoDB.UnitTests/AzureCosmosDBMongoDBHotelModel.cs b/dotnet/src/Connectors/Connectors.AzureCosmosDBMongoDB.UnitTests/AzureCosmosDBMongoDBHotelModel.cs
new file mode 100644
index 000000000000..6d7db223d41b
--- /dev/null
+++ b/dotnet/src/Connectors/Connectors.AzureCosmosDBMongoDB.UnitTests/AzureCosmosDBMongoDBHotelModel.cs
@@ -0,0 +1,42 @@
+// Copyright (c) Microsoft. All rights reserved.
+
+using System;
+using System.Collections.Generic;
+using Microsoft.SemanticKernel.Data;
+
+namespace SemanticKernel.Connectors.AzureCosmosDBMongoDB.UnitTests;
+
+public class AzureCosmosDBMongoDBHotelModel(string hotelId)
+{
+ /// The key of the record.
+ [VectorStoreRecordKey]
+ public string HotelId { get; init; } = hotelId;
+
+ /// A string metadata field.
+ [VectorStoreRecordData]
+ public string? HotelName { get; set; }
+
+ /// An int metadata field.
+ [VectorStoreRecordData]
+ public int HotelCode { get; set; }
+
+ /// A float metadata field.
+ [VectorStoreRecordData]
+ public float? HotelRating { get; set; }
+
+ /// A bool metadata field.
+ [VectorStoreRecordData(StoragePropertyName = "parking_is_included")]
+ public bool ParkingIncluded { get; set; }
+
+ /// An array metadata field.
+ [VectorStoreRecordData]
+ public List Tags { get; set; } = [];
+
+ /// A data field.
+ [VectorStoreRecordData]
+ public string? Description { get; set; }
+
+ /// A vector field.
+ [VectorStoreRecordVector(Dimensions: 4, IndexKind: IndexKind.IvfFlat, DistanceFunction: DistanceFunction.CosineDistance)]
+ public ReadOnlyMemory? DescriptionEmbedding { get; set; }
+}
diff --git a/dotnet/src/Connectors/Connectors.AzureCosmosDBMongoDB.UnitTests/AzureCosmosDBMongoDBKernelBuilderExtensionsTests.cs b/dotnet/src/Connectors/Connectors.AzureCosmosDBMongoDB.UnitTests/AzureCosmosDBMongoDBKernelBuilderExtensionsTests.cs
new file mode 100644
index 000000000000..86b64257988f
--- /dev/null
+++ b/dotnet/src/Connectors/Connectors.AzureCosmosDBMongoDB.UnitTests/AzureCosmosDBMongoDBKernelBuilderExtensionsTests.cs
@@ -0,0 +1,36 @@
+// Copyright (c) Microsoft. All rights reserved.
+
+using Microsoft.Extensions.DependencyInjection;
+using Microsoft.SemanticKernel;
+using Microsoft.SemanticKernel.Connectors.AzureCosmosDBMongoDB;
+using Microsoft.SemanticKernel.Data;
+using MongoDB.Driver;
+using Moq;
+using Xunit;
+
+namespace SemanticKernel.Connectors.AzureCosmosDBMongoDB.UnitTests;
+
+///
+/// Unit tests for class.
+///
+public sealed class AzureCosmosDBMongoDBKernelBuilderExtensionsTests
+{
+ private readonly IKernelBuilder _kernelBuilder = Kernel.CreateBuilder();
+
+ [Fact]
+ public void AddVectorStoreRegistersClass()
+ {
+ // Arrange
+ this._kernelBuilder.Services.AddSingleton(Mock.Of());
+
+ // Act
+ this._kernelBuilder.AddAzureCosmosDBMongoDBVectorStore();
+
+ var kernel = this._kernelBuilder.Build();
+ var vectorStore = kernel.Services.GetRequiredService();
+
+ // Assert
+ Assert.NotNull(vectorStore);
+ Assert.IsType(vectorStore);
+ }
+}
diff --git a/dotnet/src/Connectors/Connectors.AzureCosmosDBMongoDB.UnitTests/AzureCosmosDBMongoDBServiceCollectionExtensionsTests.cs b/dotnet/src/Connectors/Connectors.AzureCosmosDBMongoDB.UnitTests/AzureCosmosDBMongoDBServiceCollectionExtensionsTests.cs
new file mode 100644
index 000000000000..4e07f71b1d3a
--- /dev/null
+++ b/dotnet/src/Connectors/Connectors.AzureCosmosDBMongoDB.UnitTests/AzureCosmosDBMongoDBServiceCollectionExtensionsTests.cs
@@ -0,0 +1,36 @@
+// Copyright (c) Microsoft. All rights reserved.
+
+using Microsoft.Extensions.DependencyInjection;
+using Microsoft.SemanticKernel;
+using Microsoft.SemanticKernel.Connectors.AzureCosmosDBMongoDB;
+using Microsoft.SemanticKernel.Data;
+using MongoDB.Driver;
+using Moq;
+using Xunit;
+
+namespace SemanticKernel.Connectors.AzureCosmosDBMongoDB.UnitTests;
+
+///
+/// Unit tests for class.
+///
+public sealed class AzureCosmosDBMongoDBServiceCollectionExtensionsTests
+{
+ private readonly IServiceCollection _serviceCollection = new ServiceCollection();
+
+ [Fact]
+ public void AddVectorStoreRegistersClass()
+ {
+ // Arrange
+ this._serviceCollection.AddSingleton(Mock.Of());
+
+ // Act
+ this._serviceCollection.AddAzureCosmosDBMongoDBVectorStore();
+
+ var serviceProvider = this._serviceCollection.BuildServiceProvider();
+ var vectorStore = serviceProvider.GetRequiredService();
+
+ // Assert
+ Assert.NotNull(vectorStore);
+ Assert.IsType(vectorStore);
+ }
+}
diff --git a/dotnet/src/Connectors/Connectors.AzureCosmosDBMongoDB.UnitTests/AzureCosmosDBMongoDBVectorStoreRecordCollectionTests.cs b/dotnet/src/Connectors/Connectors.AzureCosmosDBMongoDB.UnitTests/AzureCosmosDBMongoDBVectorStoreRecordCollectionTests.cs
new file mode 100644
index 000000000000..ee5f74d79ddd
--- /dev/null
+++ b/dotnet/src/Connectors/Connectors.AzureCosmosDBMongoDB.UnitTests/AzureCosmosDBMongoDBVectorStoreRecordCollectionTests.cs
@@ -0,0 +1,651 @@
+// Copyright (c) Microsoft. All rights reserved.
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading;
+using System.Threading.Tasks;
+using Microsoft.SemanticKernel.Connectors.AzureCosmosDBMongoDB;
+using Microsoft.SemanticKernel.Data;
+using MongoDB.Bson;
+using MongoDB.Bson.Serialization;
+using MongoDB.Bson.Serialization.Attributes;
+using MongoDB.Driver;
+using Moq;
+using Xunit;
+
+namespace SemanticKernel.Connectors.AzureCosmosDBMongoDB.UnitTests;
+
+///
+/// Unit tests for class.
+///
+public sealed class AzureCosmosDBMongoDBVectorStoreRecordCollectionTests
+{
+ private readonly Mock _mockMongoDatabase = new();
+ private readonly Mock> _mockMongoCollection = new();
+
+ public AzureCosmosDBMongoDBVectorStoreRecordCollectionTests()
+ {
+ this._mockMongoDatabase
+ .Setup(l => l.GetCollection(It.IsAny(), It.IsAny()))
+ .Returns(this._mockMongoCollection.Object);
+ }
+
+ [Fact]
+ public void ConstructorForModelWithoutKeyThrowsException()
+ {
+ // Act & Assert
+ var exception = Assert.Throws(() => new AzureCosmosDBMongoDBVectorStoreRecordCollection