diff --git a/gso/migrations/versions/2023-11-09_e4c89c23e358_split_off_ias_gateway_product_from_.py b/gso/migrations/versions/2023-11-09_e4c89c23e358_split_off_ias_gateway_product_from_.py
new file mode 100644
index 0000000000000000000000000000000000000000..c4d5cbe8862d5350224a7975f54b3dc3f77a075b
--- /dev/null
+++ b/gso/migrations/versions/2023-11-09_e4c89c23e358_split_off_ias_gateway_product_from_.py
@@ -0,0 +1,116 @@
+"""Split off IAS gateway product from router.
+
+Revision ID: e4c89c23e358
+Revises: 7f46df0f4f95
+Create Date: 2023-11-09 16:36:54.922231
+
+"""
+import sqlalchemy as sa
+from alembic import op
+
+# revision identifiers, used by Alembic.
+revision = 'e4c89c23e358'
+down_revision = '7f46df0f4f95'
+branch_labels = None
+depends_on = None
+
+
+def upgrade() -> None:
+    conn = op.get_bind()
+    conn.execute(sa.text("""
+DELETE FROM product_block_resource_types WHERE product_block_resource_types.product_block_id IN (SELECT product_blocks.product_block_id FROM product_blocks WHERE product_blocks.name IN ('RouterBlock')) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('router_si_ipv4_network'))
+    """))
+    conn.execute(sa.text("""
+DELETE FROM subscription_instance_values USING product_block_resource_types WHERE subscription_instance_values.subscription_instance_id IN (SELECT subscription_instances.subscription_instance_id FROM subscription_instances WHERE subscription_instances.subscription_instance_id IN (SELECT product_blocks.product_block_id FROM product_blocks WHERE product_blocks.name IN ('RouterBlock'))) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('router_si_ipv4_network'))
+    """))
+    conn.execute(sa.text("""
+DELETE FROM product_block_resource_types WHERE product_block_resource_types.product_block_id IN (SELECT product_blocks.product_block_id FROM product_blocks WHERE product_blocks.name IN ('RouterBlock')) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('router_is_ias_connected'))
+    """))
+    conn.execute(sa.text("""
+DELETE FROM subscription_instance_values USING product_block_resource_types WHERE subscription_instance_values.subscription_instance_id IN (SELECT subscription_instances.subscription_instance_id FROM subscription_instances WHERE subscription_instances.subscription_instance_id IN (SELECT product_blocks.product_block_id FROM product_blocks WHERE product_blocks.name IN ('RouterBlock'))) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('router_is_ias_connected'))
+    """))
+    conn.execute(sa.text("""
+DELETE FROM product_block_resource_types WHERE product_block_resource_types.product_block_id IN (SELECT product_blocks.product_block_id FROM product_blocks WHERE product_blocks.name IN ('RouterBlock')) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('router_ias_lt_ipv6_network'))
+    """))
+    conn.execute(sa.text("""
+DELETE FROM subscription_instance_values USING product_block_resource_types WHERE subscription_instance_values.subscription_instance_id IN (SELECT subscription_instances.subscription_instance_id FROM subscription_instances WHERE subscription_instances.subscription_instance_id IN (SELECT product_blocks.product_block_id FROM product_blocks WHERE product_blocks.name IN ('RouterBlock'))) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('router_ias_lt_ipv6_network'))
+    """))
+    conn.execute(sa.text("""
+DELETE FROM product_block_resource_types WHERE product_block_resource_types.product_block_id IN (SELECT product_blocks.product_block_id FROM product_blocks WHERE product_blocks.name IN ('RouterBlock')) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('router_ias_lt_ipv4_network'))
+    """))
+    conn.execute(sa.text("""
+DELETE FROM subscription_instance_values USING product_block_resource_types WHERE subscription_instance_values.subscription_instance_id IN (SELECT subscription_instances.subscription_instance_id FROM subscription_instances WHERE subscription_instances.subscription_instance_id IN (SELECT product_blocks.product_block_id FROM product_blocks WHERE product_blocks.name IN ('RouterBlock'))) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('router_ias_lt_ipv4_network'))
+    """))
+    conn.execute(sa.text("""
+DELETE FROM subscription_instance_values WHERE subscription_instance_values.resource_type_id IN (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('router_si_ipv4_network', 'router_ias_lt_ipv4_network', 'router_ias_lt_ipv6_network', 'router_is_ias_connected'))
+    """))
+    conn.execute(sa.text("""
+DELETE FROM resource_types WHERE resource_types.resource_type IN ('router_si_ipv4_network', 'router_ias_lt_ipv4_network', 'router_ias_lt_ipv6_network', 'router_is_ias_connected')
+    """))
+    conn.execute(sa.text("""
+INSERT INTO products (name, description, product_type, tag, status) VALUES ('IAS gateway', 'IAS gateway', 'IASGateway', 'IAS_GW', 'active') RETURNING products.product_id
+    """))
+    conn.execute(sa.text("""
+INSERT INTO product_blocks (name, description, tag, status) VALUES ('IASGatewayBlock', 'IAS gateway product block', 'IAS_GW_PB', 'active') RETURNING product_blocks.product_block_id
+    """))
+    conn.execute(sa.text("""
+INSERT INTO resource_types (resource_type, description) VALUES ('lt_ipv4_network', 'LT IPv4 network') RETURNING resource_types.resource_type_id
+    """))
+    conn.execute(sa.text("""
+INSERT INTO resource_types (resource_type, description) VALUES ('lt_ipv6_network', 'LT IPv6 network') RETURNING resource_types.resource_type_id
+    """))
+    conn.execute(sa.text("""
+INSERT INTO product_product_blocks (product_id, product_block_id) VALUES ((SELECT products.product_id FROM products WHERE products.name IN ('IAS gateway')), (SELECT product_blocks.product_block_id FROM product_blocks WHERE product_blocks.name IN ('IASGatewayBlock')))
+    """))
+    conn.execute(sa.text("""
+INSERT INTO product_block_resource_types (product_block_id, resource_type_id) VALUES ((SELECT product_blocks.product_block_id FROM product_blocks WHERE product_blocks.name IN ('IASGatewayBlock')), (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('lt_ipv4_network')))
+    """))
+    conn.execute(sa.text("""
+INSERT INTO product_block_resource_types (product_block_id, resource_type_id) VALUES ((SELECT product_blocks.product_block_id FROM product_blocks WHERE product_blocks.name IN ('IASGatewayBlock')), (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('lt_ipv6_network')))
+    """))
+
+
+def downgrade() -> None:
+    conn = op.get_bind()
+    conn.execute(sa.text("""
+DELETE FROM product_block_resource_types WHERE product_block_resource_types.product_block_id IN (SELECT product_blocks.product_block_id FROM product_blocks WHERE product_blocks.name IN ('IASGatewayBlock')) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('lt_ipv4_network'))
+    """))
+    conn.execute(sa.text("""
+DELETE FROM subscription_instance_values USING product_block_resource_types WHERE subscription_instance_values.subscription_instance_id IN (SELECT subscription_instances.subscription_instance_id FROM subscription_instances WHERE subscription_instances.subscription_instance_id IN (SELECT product_blocks.product_block_id FROM product_blocks WHERE product_blocks.name IN ('IASGatewayBlock'))) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('lt_ipv4_network'))
+    """))
+    conn.execute(sa.text("""
+DELETE FROM product_block_resource_types WHERE product_block_resource_types.product_block_id IN (SELECT product_blocks.product_block_id FROM product_blocks WHERE product_blocks.name IN ('IASGatewayBlock')) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('lt_ipv6_network'))
+    """))
+    conn.execute(sa.text("""
+DELETE FROM subscription_instance_values USING product_block_resource_types WHERE subscription_instance_values.subscription_instance_id IN (SELECT subscription_instances.subscription_instance_id FROM subscription_instances WHERE subscription_instances.subscription_instance_id IN (SELECT product_blocks.product_block_id FROM product_blocks WHERE product_blocks.name IN ('IASGatewayBlock'))) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('lt_ipv6_network'))
+    """))
+    conn.execute(sa.text("""
+DELETE FROM subscription_instance_values WHERE subscription_instance_values.resource_type_id IN (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('lt_ipv4_network', 'lt_ipv6_network'))
+    """))
+    conn.execute(sa.text("""
+DELETE FROM resource_types WHERE resource_types.resource_type IN ('lt_ipv4_network', 'lt_ipv6_network')
+    """))
+    conn.execute(sa.text("""
+DELETE FROM product_product_blocks WHERE product_product_blocks.product_id IN (SELECT products.product_id FROM products WHERE products.name IN ('IAS gateway')) AND product_product_blocks.product_block_id IN (SELECT product_blocks.product_block_id FROM product_blocks WHERE product_blocks.name IN ('IASGatewayBlock'))
+    """))
+    conn.execute(sa.text("""
+DELETE FROM subscription_instances WHERE subscription_instances.product_block_id IN (SELECT product_blocks.product_block_id FROM product_blocks WHERE product_blocks.name IN ('IASGatewayBlock'))
+    """))
+    conn.execute(sa.text("""
+DELETE FROM product_blocks WHERE product_blocks.name IN ('IASGatewayBlock')
+    """))
+    conn.execute(sa.text("""
+DELETE FROM processes WHERE processes.pid IN (SELECT processes_subscriptions.pid FROM processes_subscriptions WHERE processes_subscriptions.subscription_id IN (SELECT subscriptions.subscription_id FROM subscriptions WHERE subscriptions.product_id IN (SELECT products.product_id FROM products WHERE products.name IN ('IAS gateway'))))
+    """))
+    conn.execute(sa.text("""
+DELETE FROM processes_subscriptions WHERE processes_subscriptions.subscription_id IN (SELECT subscriptions.subscription_id FROM subscriptions WHERE subscriptions.product_id IN (SELECT products.product_id FROM products WHERE products.name IN ('IAS gateway')))
+    """))
+    conn.execute(sa.text("""
+DELETE FROM subscription_instances WHERE subscription_instances.subscription_id IN (SELECT subscriptions.subscription_id FROM subscriptions WHERE subscriptions.product_id IN (SELECT products.product_id FROM products WHERE products.name IN ('IAS gateway')))
+    """))
+    conn.execute(sa.text("""
+DELETE FROM subscriptions WHERE subscriptions.product_id IN (SELECT products.product_id FROM products WHERE products.name IN ('IAS gateway'))
+    """))
+    conn.execute(sa.text("""
+DELETE FROM products WHERE products.name IN ('IAS gateway')
+    """))
diff --git a/gso/products/__init__.py b/gso/products/__init__.py
index 37cf18d27ab60a433c391b02d47145e026f334d8..916bc92d4dac0063b91ed5b8f81f920a79b3f73e 100644
--- a/gso/products/__init__.py
+++ b/gso/products/__init__.py
@@ -8,6 +8,7 @@
 from orchestrator.domain import SUBSCRIPTION_MODEL_REGISTRY
 from pydantic_forms.types import strEnum
 
+from gso.products.product_types.ias_gateway import IASGateway
 from gso.products.product_types.iptrunk import Iptrunk
 from gso.products.product_types.router import Router
 from gso.products.product_types.site import Site
@@ -20,13 +21,15 @@ class ProductType(strEnum):
     NOKIA_ROUTER = "Nokia router"
     JUNIPER_ROUTER = "Juniper router"
     IP_TRUNK = "IP trunk"
+    IAS_GATEWAY = "IAS gateway"
 
 
 SUBSCRIPTION_MODEL_REGISTRY.update(
     {
-        "Site": Site,
-        "Nokia router": Router,
-        "Juniper router": Router,
+        "IAS gateway": IASGateway,
         "IP trunk": Iptrunk,
+        "Juniper router": Router,
+        "Nokia router": Router,
+        "Site": Site,
     },
 )
diff --git a/gso/products/product_blocks/ias_gateway.py b/gso/products/product_blocks/ias_gateway.py
new file mode 100644
index 0000000000000000000000000000000000000000..2a38f6b3686c0322df09de044901b5ee69b0d20c
--- /dev/null
+++ b/gso/products/product_blocks/ias_gateway.py
@@ -0,0 +1,21 @@
+from ipaddress import IPv4Network, IPv6Network
+
+from orchestrator.domain.base import ProductBlockModel
+from orchestrator.types import SubscriptionLifecycle
+
+
+class IASGatewayBlockInactive(
+    ProductBlockModel, lifecycle=[SubscriptionLifecycle.INITIAL], product_block_name="IASGatewayBlock"
+):
+    lt_ipv4_network: IPv4Network | None = None
+    lt_ipv6_network: IPv6Network | None = None
+
+
+class IASGatewayBlockProvisioning(IASGatewayBlockInactive, lifecycle=[SubscriptionLifecycle.PROVISIONING]):
+    lt_ipv4_network: IPv4Network | None = None
+    lt_ipv6_network: IPv6Network | None = None
+
+
+class IASGatewayBlock(IASGatewayBlockProvisioning, lifecycle=[SubscriptionLifecycle.ACTIVE]):
+    lt_ipv4_network: IPv4Network
+    lt_ipv6_network: IPv6Network
diff --git a/gso/products/product_blocks/router.py b/gso/products/product_blocks/router.py
index fb82480f43cd49de17959c646cfbe46dc0520e23..fa52b3a02ef61b0d076c7543572cb5533a0740fc 100644
--- a/gso/products/product_blocks/router.py
+++ b/gso/products/product_blocks/router.py
@@ -44,12 +44,8 @@ class RouterBlockInactive(
     router_lo_ipv4_address: ipaddress.IPv4Address | None = None
     router_lo_ipv6_address: ipaddress.IPv6Address | None = None
     router_lo_iso_address: str | None = None
-    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_role: RouterRole | None = None
     router_site: SiteBlockInactive | None
-    router_is_ias_connected: bool | None = None
 
 
 def generate_fqdn(hostname: str, site_name: str, country_code: str) -> str:
@@ -66,12 +62,8 @@ class RouterBlockProvisioning(RouterBlockInactive, lifecycle=[SubscriptionLifecy
     router_lo_ipv4_address: ipaddress.IPv4Address | None = None
     router_lo_ipv6_address: ipaddress.IPv6Address | None = None
     router_lo_iso_address: str | None = None
-    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_role: RouterRole | None = None
     router_site: SiteBlockProvisioning | None
-    router_is_ias_connected: bool | None = None
 
 
 class RouterBlock(RouterBlockProvisioning, lifecycle=[SubscriptionLifecycle.ACTIVE]):
@@ -89,15 +81,7 @@ class RouterBlock(RouterBlockProvisioning, lifecycle=[SubscriptionLifecycle.ACTI
     router_lo_ipv6_address: ipaddress.IPv6Address
     #:  The :term:`ISO` :term:`NET` of the router, used for :term:`ISIS` support.
     router_lo_iso_address: str
-    #:  The SI IPv4 network of the router.
-    router_si_ipv4_network: ipaddress.IPv4Network | None
-    #:  The :term:`IAS` LT IPv4 network of the router.
-    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 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.
     router_site: SiteBlock
-    #:  The router is going to have an LT interface between inet0 and :term:`IAS`.
-    router_is_ias_connected: bool
diff --git a/gso/products/product_types/ias_gateway.py b/gso/products/product_types/ias_gateway.py
new file mode 100644
index 0000000000000000000000000000000000000000..ba59c472da6ea3e1916319dfcd3ea74fe644b39e
--- /dev/null
+++ b/gso/products/product_types/ias_gateway.py
@@ -0,0 +1,20 @@
+from orchestrator.domain.base import SubscriptionModel
+from orchestrator.types import SubscriptionLifecycle
+
+from gso.products.product_blocks.ias_gateway import (
+    IASGatewayBlock,
+    IASGatewayBlockInactive,
+    IASGatewayBlockProvisioning,
+)
+
+
+class IASGatewayInactive(SubscriptionModel, is_base=True):
+    ias_gateway: IASGatewayBlockInactive
+
+
+class IASGatewayProvisioning(IASGatewayInactive, lifecycle=[SubscriptionLifecycle.PROVISIONING]):
+    ias_gateway: IASGatewayBlockProvisioning
+
+
+class IASGateway(IASGatewayProvisioning, lifecycle=[SubscriptionLifecycle.ACTIVE]):
+    ias_gateway: IASGatewayBlock
diff --git a/gso/workflows/iptrunk/modify_trunk_interface.py b/gso/workflows/iptrunk/modify_trunk_interface.py
index d568ba12f12a5e5e0906c84df03699f6f30cd4cf..d5ab094aa2042a6edfcec6b1d42991e076dada12 100644
--- a/gso/workflows/iptrunk/modify_trunk_interface.py
+++ b/gso/workflows/iptrunk/modify_trunk_interface.py
@@ -27,7 +27,8 @@ from gso.utils.helpers import (
     LAGMember,
     available_interfaces_choices,
     available_interfaces_choices_including_current_members,
-    validate_iptrunk_unique_interface, get_router_vendor,
+    get_router_vendor,
+    validate_iptrunk_unique_interface,
 )
 
 
diff --git a/gso/workflows/iptrunk/terminate_iptrunk.py b/gso/workflows/iptrunk/terminate_iptrunk.py
index b86d17cd5ef4978c17cfa2b34cac905f907df308..a380897dbc714bc8da4428212e7b8063a6f676f4 100644
--- a/gso/workflows/iptrunk/terminate_iptrunk.py
+++ b/gso/workflows/iptrunk/terminate_iptrunk.py
@@ -16,11 +16,11 @@ from orchestrator.workflows.steps import (
 from orchestrator.workflows.utils import wrap_modify_initial_input_form
 
 from gso.products.product_types.iptrunk import Iptrunk
-from gso.products.product_types.router import Router, RouterVendor
+from gso.products.product_types.router import RouterVendor
 from gso.services import infoblox, provisioning_proxy
 from gso.services.netbox_client import NetboxClient
 from gso.services.provisioning_proxy import pp_interaction
-from gso.utils.helpers import set_isis_to_90000, get_router_vendor
+from gso.utils.helpers import get_router_vendor, set_isis_to_90000
 
 
 def initial_input_form_generator() -> FormGenerator: