diff --git a/src/Core/AdminConsole/OrganizationFeatures/Policies/IOrganizationPolicyRequirementQuery.cs b/src/Core/AdminConsole/OrganizationFeatures/Policies/IOrganizationPolicyRequirementQuery.cs
new file mode 100644
index 0000000000..8b1889280f
--- /dev/null
+++ b/src/Core/AdminConsole/OrganizationFeatures/Policies/IOrganizationPolicyRequirementQuery.cs
@@ -0,0 +1,19 @@
+#nullable enable
+
+using Bit.Core.AdminConsole.OrganizationFeatures.Policies.PolicyRequirements;
+
+namespace Bit.Core.AdminConsole.OrganizationFeatures.Policies;
+
+///
+/// Query interface for retrieving policy requirements based on organization ID
+///
+public interface IOrganizationPolicyRequirementQuery
+{
+ ///
+ /// Gets a policy requirement of type T for an organization
+ ///
+ /// The type of policy requirement to retrieve
+ /// The organization ID to get policy requirements for
+ /// The policy requirement of type T
+ Task GetAsync(Guid organizationId) where T : IPolicyRequirement;
+}
diff --git a/src/Core/AdminConsole/OrganizationFeatures/Policies/PolicyRequirements/IOrganizationPolicyRequirementFactory.cs b/src/Core/AdminConsole/OrganizationFeatures/Policies/PolicyRequirements/IOrganizationPolicyRequirementFactory.cs
new file mode 100644
index 0000000000..d9ca24f6b2
--- /dev/null
+++ b/src/Core/AdminConsole/OrganizationFeatures/Policies/PolicyRequirements/IOrganizationPolicyRequirementFactory.cs
@@ -0,0 +1,24 @@
+#nullable enable
+
+using Bit.Core.AdminConsole.Entities;
+using Bit.Core.AdminConsole.Enums;
+
+namespace Bit.Core.AdminConsole.OrganizationFeatures.Policies.PolicyRequirements;
+
+///
+/// An interface that defines how to create a single from a Policy.
+///
+/// The that the factory produces.
+public interface IOrganizationPolicyRequirementFactory where T : IPolicyRequirement
+{
+ ///
+ /// The that the requirement relates to.
+ ///
+ PolicyType PolicyType { get; }
+
+ ///
+ /// A reducer method that creates a from a Policy.
+ ///
+ /// The policy for the specified PolicyType.
+ T Create(Policy? policy);
+}