diff --git a/gso/products/product_blocks/router.py b/gso/products/product_blocks/router.py
index 290ca41f11853bbf57f1c83c4407045211ff9cb3..fb82480f43cd49de17959c646cfbe46dc0520e23 100644
--- a/gso/products/product_blocks/router.py
+++ b/gso/products/product_blocks/router.py
@@ -13,13 +13,6 @@ from gso.products.product_blocks.site import (
 )
 
 
-class RouterVendor(strEnum):
-    """Enumerator for the different product vendors that are supported."""
-
-    JUNIPER = "juniper"
-    NOKIA = "nokia"
-
-
 class RouterRole(strEnum):
     """Enumerator for the different types of routers."""
 
@@ -54,7 +47,6 @@ class RouterBlockInactive(
     router_si_ipv4_network: ipaddress.IPv4Network | None = None
     router_ias_lt_ipv4_network: ipaddress.IPv4Network | None = None
     router_ias_lt_ipv6_network: ipaddress.IPv6Network | None = None
-    router_vendor: RouterVendor | None = None
     router_role: RouterRole | None = None
     router_site: SiteBlockInactive | None
     router_is_ias_connected: bool | None = None
@@ -77,7 +69,6 @@ class RouterBlockProvisioning(RouterBlockInactive, lifecycle=[SubscriptionLifecy
     router_si_ipv4_network: ipaddress.IPv4Network | None = None
     router_ias_lt_ipv4_network: ipaddress.IPv4Network | None = None
     router_ias_lt_ipv6_network: ipaddress.IPv6Network | None = None
-    router_vendor: RouterVendor | None = None
     router_role: RouterRole | None = None
     router_site: SiteBlockProvisioning | None
     router_is_ias_connected: bool | None = None
@@ -104,8 +95,6 @@ class RouterBlock(RouterBlockProvisioning, lifecycle=[SubscriptionLifecycle.ACTI
     router_ias_lt_ipv4_network: ipaddress.IPv4Network | None
     #:  The :term:`IAS` LT IPv6 network of the router.
     router_ias_lt_ipv6_network: ipaddress.IPv6Network | None
-    #:  The vendor of the router, can be any of the values defined in :class:`RouterVendor`.
-    router_vendor: RouterVendor
     #:  The role of the router, which can be any of the values defined in :class:`RouterRole`.
     router_role: RouterRole
     #:  The :class:`Site` that this router resides in. Both physically and computationally.
diff --git a/gso/products/product_types/router.py b/gso/products/product_types/router.py
index d6a59c12ccd14dea0dac8852a7748810359718b7..dfcf8ba5d52babcedc9b17be24f79552cf9d1689 100644
--- a/gso/products/product_types/router.py
+++ b/gso/products/product_types/router.py
@@ -2,6 +2,7 @@
 
 from orchestrator.domain.base import SubscriptionModel
 from orchestrator.types import SubscriptionLifecycle
+from pydantic_forms.types import strEnum
 
 from gso.products.product_blocks.router import (
     RouterBlock,
@@ -10,19 +11,29 @@ from gso.products.product_blocks.router import (
 )
 
 
+class RouterVendor(strEnum):
+    """Enumerator for the different product vendors that are supported."""
+
+    JUNIPER = "juniper"
+    NOKIA = "nokia"
+
+
 class RouterInactive(SubscriptionModel, is_base=True):
     """An inactive router."""
 
+    vendor: RouterVendor
     router: RouterBlockInactive
 
 
 class RouterProvisioning(RouterInactive, lifecycle=[SubscriptionLifecycle.PROVISIONING]):
     """A router that is being provisioned."""
 
+    vendor: RouterVendor
     router: RouterBlockProvisioning
 
 
 class Router(RouterProvisioning, lifecycle=[SubscriptionLifecycle.ACTIVE]):
     """A router that is currently active."""
 
+    vendor: RouterVendor
     router: RouterBlock