diff --git a/test/workflows/vrf/__init__.py b/test/workflows/vrf/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/test/workflows/vrf/test_create_vrf.py b/test/workflows/vrf/test_create_vrf.py
new file mode 100644
index 0000000000000000000000000000000000000000..6ba190cb02ce5fa296e19f3c421b7025ea587d85
--- /dev/null
+++ b/test/workflows/vrf/test_create_vrf.py
@@ -0,0 +1,42 @@
+import pytest
+from orchestrator.types import SubscriptionLifecycle
+
+from gso.products import ProductName
+from gso.products.product_types.vrf import VRF
+from gso.services.subscriptions import get_product_id_by_name
+from test.workflows import assert_complete, extract_state, run_workflow
+
+
+@pytest.fixture()
+def vrf_input(faker):
+    product_id = get_product_id_by_name(ProductName.VRF)
+    return [
+        {"product": product_id},
+        {
+            "tt_number": faker.tt_number(),
+            "partner": "GEANT",
+            "vrf_name": faker.pystr(),
+            "route_distinguisher": faker.pystr(),
+            "route_target": faker.pystr(),
+            "vrf_as_number": faker.pyint(),
+        },
+        {},
+    ]
+
+
+@pytest.mark.workflow()
+def test_create_vrf_success(
+    vrf_input,
+    faker,
+    data_config_filename,
+):
+    result, _, _ = run_workflow("create_vrf", vrf_input)
+    assert_complete(result)
+    state = extract_state(result)
+    subscription = VRF.from_subscription(state["subscription_id"])
+    assert subscription.status == SubscriptionLifecycle.ACTIVE
+    assert subscription.vrf.vrf_name == vrf_input[1]["vrf_name"]
+    assert subscription.vrf.route_distinguisher == vrf_input[1]["route_distinguisher"]
+    assert subscription.vrf.route_target == vrf_input[1]["route_target"]
+    assert subscription.vrf.vrf_as_number == vrf_input[1]["vrf_as_number"]
+    assert subscription.description == f"VRF {vrf_input[1]["vrf_name"]}"