diff --git a/test/fixtures/__init__.py b/test/fixtures/__init__.py
index 8ecda8a79c736087df8c77019e7814ff72c3b2bf..8118b583393f649a4b7c1a17cf03b4870ed51f65 100644
--- a/test/fixtures/__init__.py
+++ b/test/fixtures/__init__.py
@@ -15,6 +15,7 @@ from test.fixtures.router_fixtures import router_subscription_factory
 from test.fixtures.site_fixtures import site_subscription_factory
 from test.fixtures.super_pop_switch_fixtures import super_pop_switch_subscription_factory
 from test.fixtures.switch_fixtures import switch_subscription_factory
+from test.fixtures.vrf_fixtures import vrf_subscription_factory
 
 __all__ = [
     "access_port_factory",
@@ -33,4 +34,5 @@ __all__ = [
     "site_subscription_factory",
     "super_pop_switch_subscription_factory",
     "switch_subscription_factory",
+    "vrf_subscription_factory",
 ]
diff --git a/test/fixtures/vrf_fixtures.py b/test/fixtures/vrf_fixtures.py
new file mode 100644
index 0000000000000000000000000000000000000000..ec1354fff75c9e675868b15f30dcf4406077fae9
--- /dev/null
+++ b/test/fixtures/vrf_fixtures.py
@@ -0,0 +1,45 @@
+import pytest
+from orchestrator.db import db
+from orchestrator.domain import SubscriptionModel
+from orchestrator.types import SubscriptionLifecycle
+from pydantic_forms.types import UUIDstr
+
+from gso.products import ProductName
+from gso.products.product_types.vrf import VRFInactive
+from gso.services.subscriptions import get_product_id_by_name
+
+
+@pytest.fixture()
+def vrf_subscription_factory(faker, geant_partner):
+    def subscription_create(
+        partner: dict | None = None,
+        description: str | None = None,
+        start_date: str | None = "2024-01-01T10:20:30+01:02",
+        vrf_name: str | None = None,
+        route_distinguisher: str | None = None,
+        route_target: str | None = None,
+        vrf_as_number: int | None = None,
+        status: SubscriptionLifecycle | None = None,
+    ) -> UUIDstr:
+        if partner is None:
+            partner = geant_partner
+        product_id = get_product_id_by_name(ProductName.VRF)
+        vrf_subscription = VRFInactive.from_product_id(product_id, customer_id=partner["partner_id"], insync=True)
+        vrf_subscription.vrf.vrf_name = vrf_name or faker.pystr()
+        vrf_subscription.vrf.route_distinguisher = route_distinguisher or faker.pystr()
+        vrf_subscription.vrf.route_target = route_target or faker.pystr()
+        vrf_subscription.vrf.vrf_as_number = vrf_as_number or faker.pyint()
+
+        vrf_subscription = SubscriptionModel.from_other_lifecycle(vrf_subscription, SubscriptionLifecycle.ACTIVE)
+        vrf_subscription.description = description or f"VRF {vrf_subscription.vrf.vrf_name}"
+        vrf_subscription.start_date = start_date
+
+        if status:
+            vrf_subscription.status = status
+
+        vrf_subscription.save()
+        db.session.commit()
+
+        return str(vrf_subscription.subscription_id)
+
+    return subscription_create
diff --git a/test/workflows/vrf/test_modify_vrf_router_list.py b/test/workflows/vrf/test_modify_vrf_router_list.py
new file mode 100644
index 0000000000000000000000000000000000000000..c66e5ad3930863ca5e93f4c5154779d56dd9dba8
--- /dev/null
+++ b/test/workflows/vrf/test_modify_vrf_router_list.py
@@ -0,0 +1,40 @@
+import uuid
+
+import pytest
+from pydantic_forms.exceptions import FormValidationError
+
+from gso.products.product_types.vrf import VRF
+from test.workflows import assert_complete, extract_state, run_workflow
+
+
+@pytest.mark.workflow()
+def test_modify_vrf_router_list(vrf_subscription_factory, router_subscription_factory, faker):
+    subscription_id = vrf_subscription_factory()
+    initial_vrf_data = [
+        {"subscription_id": subscription_id},
+        {
+            "router_list": [{"router_id": router_subscription_factory()}, {"router_id": router_subscription_factory()}],
+        },
+    ]
+    result, _, _ = run_workflow("modify_vrf_router_list", initial_vrf_data)
+    assert_complete(result)
+
+    state = extract_state(result)
+    subscription_id = state["subscription_id"]
+    subscription = VRF.from_subscription(subscription_id)
+    assert subscription.status == "active"
+    assert len(subscription.vrf.vrf_router_list) == 2
+
+
+@pytest.mark.workflow()
+def test_modify_vrf_router_list_with_invalid_router_id(vrf_subscription_factory, router_subscription_factory, faker):
+    subscription_id = vrf_subscription_factory()
+    initial_vrf_data = [
+        {"subscription_id": subscription_id},
+        {
+            "router_list": [{"router_id": uuid.uuid4()}],
+        },
+    ]
+
+    with pytest.raises(FormValidationError, match="Input should be an instance of Select a router"):
+        run_workflow("modify_vrf_router_list", initial_vrf_data)