diff --git a/gso/migrations/versions/2025-05-28_90547df711c3_backfill_iptrunk_config_version.py b/gso/migrations/versions/2025-05-28_90547df711c3_backfill_iptrunk_config_version.py
new file mode 100644
index 0000000000000000000000000000000000000000..4915aadf90b847b0479f80afdc47a62f548fa81b
--- /dev/null
+++ b/gso/migrations/versions/2025-05-28_90547df711c3_backfill_iptrunk_config_version.py
@@ -0,0 +1,48 @@
+"""empty message.
+
+Revision ID: 90547df711c3
+Revises: 54477431c9ef
+Create Date: 2025-05-28 10:15:07.579188
+
+"""
+import sqlalchemy as sa
+from alembic import op
+
+# revision identifiers, used by Alembic.
+revision = '90547df711c3'
+down_revision = '54477431c9ef'
+branch_labels = None
+depends_on = None
+
+
+def upgrade() -> None:
+    conn = op.get_bind()
+    conn.execute(sa.text("""
+WITH rt_id AS (
+    SELECT resource_type_id FROM resource_types WHERE resource_type = 'iptrunk_config_version'
+)
+INSERT INTO subscription_instance_values (subscription_instance_id, resource_type_id, value)
+SELECT si.subscription_instance_id, rt_id.resource_type_id, '1.0'
+FROM rt_id, subscription_instances si
+WHERE si.product_block_id = (
+    SELECT product_block_id FROM product_blocks WHERE name = 'IptrunkBlock'
+);
+    """))
+
+
+def downgrade() -> None:
+    conn = op.get_bind()
+    conn.execute(sa.text("""
+WITH rt_id AS (
+    SELECT resource_type_id FROM resource_types WHERE resource_type = 'iptrunk_config_version'
+)
+DELETE FROM subscription_instance_values
+WHERE resource_type_id = (SELECT resource_type_id FROM rt_id)
+  AND value = '1.0'
+  AND subscription_instance_id IN (
+      SELECT subscription_instance_id FROM subscription_instances
+      WHERE product_block_id = (
+          SELECT product_block_id FROM product_blocks WHERE name = 'IptrunkBlock'
+      )
+  );
+    """))
diff --git a/gso/oss-params-example.json b/gso/oss-params-example.json
index 2b60d84c809b1911bd081782821f83f0670d2d73..98e41280d1f1d47480b64702d2d587452d846d08 100644
--- a/gso/oss-params-example.json
+++ b/gso/oss-params-example.json
@@ -134,15 +134,15 @@
   "SERVICE_VERSIONS": {
     "IP_TRUNK": {
       "version": {
-        "1.0": "Base Version",
-        "1.1": "Minor Upgrade"
+        "1.0": "1.0 - Base Version",
+        "2.0": "2.0 - Minor Upgrade"
       },
       "default_version": "1.0"
     },
     "GEANT_IP": {
       "version": {
-        "1.0": "Base Version",
-        "2.0": "Major Upgrade"
+        "1.0": "1.0 - Base Version",
+        "2.0": "2.0 - Minor Upgrade"
       },
       "default_version": "1.0"
     }
diff --git a/gso/utils/helpers.py b/gso/utils/helpers.py
index 9a73d9c78581666645961ff08b70944446c6b8b7..fc4c5dee2c279d9007965a488f721ea78f32e9f7 100644
--- a/gso/utils/helpers.py
+++ b/gso/utils/helpers.py
@@ -283,16 +283,13 @@ def active_edge_port_selector(*, partner_id: UUIDstr | None = None) -> TypeAlias
     )
 
 
-def ip_trunk_service_version_selector() -> TypeAlias:
+def ip_trunk_service_version_selector() -> Choice:
     """Generate a dropdown selector for choosing a service version."""
     iptrunk_versions = load_oss_params().SERVICE_VERSIONS.IP_TRUNK.version
 
-    return cast(
-        type[Choice],
-        Choice.__call__(
-            "Select an IP trunk service version.",
-            [(k, f"Version {k} - {iptrunk_versions[k]}") for k in iptrunk_versions],
-        ),
+    return Choice(
+        "Select an IP trunk service version.",
+        zip(iptrunk_versions.keys(), iptrunk_versions.items(), strict=True),  # type: ignore[arg-type]
     )
 
 
diff --git a/test/workflows/iptrunk/test_create_iptrunk.py b/test/workflows/iptrunk/test_create_iptrunk.py
index 851c3e3081ebc021457d052af8525c63a58cbee0..9e3b297efd94b62581859a7a767d5adaae1dee5d 100644
--- a/test/workflows/iptrunk/test_create_iptrunk.py
+++ b/test/workflows/iptrunk/test_create_iptrunk.py
@@ -74,7 +74,7 @@ def input_form_wizard_data(request, router_subscription_factory, faker):
         "iptrunk_speed": PhysicalPortCapacity.HUNDRED_GIGABIT_PER_SECOND,
         "iptrunk_number_of_members": 2,
         "iptrunk_description_suffix": faker.word(),
-        "iptrunk_config_version": "Version 1.0 - Base Version",
+        "iptrunk_config_version": "1.0",
     }
     create_ip_trunk_confirm_step = {"iptrunk_minimum_links": 1}
     create_ip_trunk_side_a_router_name = {"side_a_node_id": router_side_a}
@@ -158,6 +158,7 @@ def test_successful_iptrunk_creation_with_standard_lso_result(
         f"{input_form_wizard_data[0]["iptrunk_description_suffix"]}, "
         f"{subscription.iptrunk.gs_id}"
     )
+    assert subscription.iptrunk.iptrunk_config_version == input_form_wizard_data[0]["iptrunk_config_version"]
 
     #  We search for 6 hosts in total, 2 in a /31 and 4 in a /126
     assert mock_find_host_by_ip.call_count == 6
diff --git a/test/workflows/iptrunk/test_modify_trunk_interface.py b/test/workflows/iptrunk/test_modify_trunk_interface.py
index 7c11c95518cf002c25c5178966b5f1706028cdfb..b6117a8c3161a2c19d822f1b5acf026b265b36db 100644
--- a/test/workflows/iptrunk/test_modify_trunk_interface.py
+++ b/test/workflows/iptrunk/test_modify_trunk_interface.py
@@ -222,6 +222,7 @@ def test_iptrunk_modify_trunk_interface_success(
     assert subscription.iptrunk.iptrunk_minimum_links == input_form_iptrunk_data[1]["iptrunk_number_of_members"] - 1
     assert subscription.iptrunk.iptrunk_sides[0].ga_id == new_side_a_gid
     assert subscription.iptrunk.iptrunk_description_suffix == input_form_iptrunk_data[1]["iptrunk_description_suffix"]
+    assert subscription.iptrunk.iptrunk_config_version == input_form_iptrunk_data[1]["iptrunk_config_version"]
 
     def _find_interface_by_name(interfaces: list[dict], name: str):
         for interface in interfaces: