diff --git a/gso/cli/imports.py b/gso/cli/imports.py
index 27dae014c18fe9a0f1b59f686f5721d4509fb679..6973b49626868bec88b95645576e721e2c58ff7e 100644
--- a/gso/cli/imports.py
+++ b/gso/cli/imports.py
@@ -90,7 +90,7 @@ class IptrunkImportModel(BaseModel):
     partner: str
     geant_s_sid: str | None
     iptrunk_type: IptrunkType
-    iptrunk_description: str
+    iptrunk_description: str | None
     iptrunk_speed: PhysicalPortCapacity
     iptrunk_minimum_links: int
     iptrunk_isis_metric: int
diff --git a/gso/products/product_blocks/iptrunk.py b/gso/products/product_blocks/iptrunk.py
index dd65242b30b9e6277699921df1403a8230d6de17..f2c6cea63786a206b4ed03ed74543622617a7f62 100644
--- a/gso/products/product_blocks/iptrunk.py
+++ b/gso/products/product_blocks/iptrunk.py
@@ -141,7 +141,7 @@ class IptrunkBlock(IptrunkBlockProvisioning, lifecycle=[SubscriptionLifecycle.AC
     #:  GÉANT service ID associated with this trunk.
     geant_s_sid: str | None = None
     #:  A human-readable description of this trunk.
-    iptrunk_description: str
+    iptrunk_description: str | None = None
     #:  The type of trunk, can be either dark fibre or leased capacity.
     iptrunk_type: IptrunkType
     #:  The speed of the trunk, measured per interface associated with it.
diff --git a/gso/products/product_blocks/pop_vlan.py b/gso/products/product_blocks/pop_vlan.py
index eb54241e4e727bb6c23ea2aa024fbc556b1e7a2e..191e7255951f24f9514a592989546774d17f2185 100644
--- a/gso/products/product_blocks/pop_vlan.py
+++ b/gso/products/product_blocks/pop_vlan.py
@@ -75,7 +75,7 @@ class PopVlanBlockProvisioning(PopVlanBlockInactive, lifecycle=[SubscriptionLife
     """A Pop VLAN that's currently being provisioned, see :class:`PopVlanBlock`."""
 
     vlan_id: int
-    pop_vlan_description: str | None
+    pop_vlan_description: str | None = None
     lan_switch_interconnect: LanSwitchInterconnectBlockProvisioning
     ports: PortList[PopVlanPortBlockProvisioning]
     layer_preference: LayerPreference
diff --git a/gso/products/product_blocks/switch.py b/gso/products/product_blocks/switch.py
index 660cfd81320fc0739713a649a780b20265871d11..f0aa0414e11409b58341fc2648f3066fa91c5aee 100644
--- a/gso/products/product_blocks/switch.py
+++ b/gso/products/product_blocks/switch.py
@@ -27,8 +27,8 @@ class SwitchBlockInactive(
 
     switch_hostname: str | None = None
     switch_ts_port: PortNumber | None = None
-    switch_site: SiteBlockInactive | None
-    switch_vendor: Vendor | None
+    switch_site: SiteBlockInactive | None = None
+    switch_vendor: Vendor | None = None
     switch_model: SwitchModel | None = None
 
 
diff --git a/gso/settings.py b/gso/settings.py
index 641854e4a699915a4522559933705fe03c6c8193..4c653798e543db84891370eb5f8de7913e6efad0 100644
--- a/gso/settings.py
+++ b/gso/settings.py
@@ -121,7 +121,7 @@ class SNMPParams(BaseSettings):
     v2c: MonitoringSNMPV2Params
     #: .. versionadded :: 2.0
     #:    Support for :term:`SNMP` v3 will get added in a later version of :term:`GSO`. Parameters are optional for now.
-    v3: MonitoringSNMPV3Params | None
+    v3: MonitoringSNMPV3Params | None = None
 
 
 class MonitoringParams(BaseSettings):
@@ -136,6 +136,9 @@ class ProvisioningProxyParams(BaseSettings):
 
     scheme: str
     api_base: str
+    #:  .. deprecated:: 0.1
+    #:     Not used anymore, may be left out from config file.
+    auth: str | None = None
     api_version: int
 
 
diff --git a/gso/utils/helpers.py b/gso/utils/helpers.py
index b7fe52ac0dccccbaabdf9e49b0a82fa36ba82c32..f7ca91dd0428aa88a0ca79737d7842465d6dcaf0 100644
--- a/gso/utils/helpers.py
+++ b/gso/utils/helpers.py
@@ -24,7 +24,7 @@ class LAGMember(BaseModel):
     """A :term:`LAG` member interface that consists of a name and description."""
 
     interface_name: str
-    interface_description: str | None
+    interface_description: str | None = None
 
     def __hash__(self) -> int:
         """Calculate the hash based on the interface name and description, so that uniqueness can be determined."""
diff --git a/gso/workflows/iptrunk/create_imported_iptrunk.py b/gso/workflows/iptrunk/create_imported_iptrunk.py
index 5087209cb1697f0abc77de0a9e495f09815cd26d..bd2ea9876dfd943ea089257be71f41dd7985ec51 100644
--- a/gso/workflows/iptrunk/create_imported_iptrunk.py
+++ b/gso/workflows/iptrunk/create_imported_iptrunk.py
@@ -44,8 +44,8 @@ def initial_input_form_generator() -> FormGenerator:
         model_config = ConfigDict(title="Import Iptrunk")
 
         partner: str
-        geant_s_sid: str | None
-        iptrunk_description: str
+        geant_s_sid: str | None = None
+        iptrunk_description: str | None = None
         iptrunk_type: IptrunkType
         iptrunk_speed: PhysicalPortCapacity
         iptrunk_minimum_links: int
@@ -53,12 +53,12 @@ def initial_input_form_generator() -> FormGenerator:
 
         side_a_node_id: router_enum  # type: ignore[valid-type]
         side_a_ae_iface: str
-        side_a_ae_geant_a_sid: str | None
+        side_a_ae_geant_a_sid: str | None = None
         side_a_ae_members: LAGMemberList
 
         side_b_node_id: router_enum  # type: ignore[valid-type]
         side_b_ae_iface: str
-        side_b_ae_geant_a_sid: str | None
+        side_b_ae_geant_a_sid: str | None = None
         side_b_ae_members: LAGMemberList
 
         iptrunk_ipv4_network: ipaddress.IPv4Network
@@ -123,8 +123,11 @@ def initialize_subscription(
         subscription.iptrunk.iptrunk_sides[1].iptrunk_side_ae_members.append(
             IptrunkInterfaceBlockInactive.new(subscription_id=uuid4(), **member),
         )
-
-    subscription.description = f"IP trunk, geant_s_sid:{geant_s_sid}"
+    side_names = sorted([
+        subscription.iptrunk.iptrunk_sides[0].iptrunk_side_node.router_site.site_name,
+        subscription.iptrunk.iptrunk_sides[1].iptrunk_side_node.router_site.site_name,
+    ])
+    subscription.description = f"IP trunk {side_names[0]} {side_names[1]}, geant_s_sid:{geant_s_sid}"
     return {"subscription": subscription}
 
 
diff --git a/gso/workflows/iptrunk/create_iptrunk.py b/gso/workflows/iptrunk/create_iptrunk.py
index 99e9f24879ea22c2261ac0fe369859269994710e..b1fc64c564e4b364d68bb667bfca1d43e0a66724 100644
--- a/gso/workflows/iptrunk/create_iptrunk.py
+++ b/gso/workflows/iptrunk/create_iptrunk.py
@@ -58,8 +58,8 @@ def initial_input_form_generator(product_name: str) -> FormGenerator:
 
         tt_number: str
         partner: ReadOnlyField("GEANT", default_type=str)  # type: ignore[valid-type]
-        geant_s_sid: str | None
-        iptrunk_description: str
+        geant_s_sid: str | None = None
+        iptrunk_description: str | None = None
         iptrunk_type: IptrunkType
         iptrunk_speed: PhysicalPortCapacity
         iptrunk_number_of_members: int
@@ -74,9 +74,10 @@ def initial_input_form_generator(product_name: str) -> FormGenerator:
         info_label: Label = (
             f"This is the calculated minimum-links for this LAG: " f"{initial_user_input.iptrunk_number_of_members - 1}"
         )
+        iptrunk_minimum_links: int = initial_user_input.iptrunk_number_of_members - 1
         info_label2: Label = "Please confirm or modify."
 
-    yield VerifyMinimumLinksForm
+    verify_minimum_links = yield VerifyMinimumLinksForm
     router_enum_a = Choice("Select a router", zip(routers.keys(), routers.items(), strict=True))  # type: ignore[arg-type]
 
     class SelectRouterSideA(FormPage):
@@ -188,6 +189,7 @@ def initial_input_form_generator(product_name: str) -> FormGenerator:
 
     return (
         initial_user_input.dict()
+        | verify_minimum_links.dict()
         | user_input_router_side_a.dict()
         | user_input_side_a.dict()
         | user_input_router_side_b.dict()
@@ -226,9 +228,9 @@ def initialize_subscription(
     subscription: IptrunkInactive,
     geant_s_sid: str | None,
     iptrunk_type: IptrunkType,
-    iptrunk_description: str,
+    iptrunk_description: str | None,
     iptrunk_speed: PhysicalPortCapacity,
-    iptrunk_number_of_members: int,
+    iptrunk_minimum_links: int,
     side_a_node_id: str,
     side_a_ae_iface: str,
     side_a_ae_geant_a_sid: str | None,
@@ -247,7 +249,7 @@ def initialize_subscription(
     subscription.iptrunk.iptrunk_type = iptrunk_type
     subscription.iptrunk.iptrunk_speed = iptrunk_speed
     subscription.iptrunk.iptrunk_isis_metric = oss_params.GENERAL.isis_high_metric
-    subscription.iptrunk.iptrunk_minimum_links = iptrunk_number_of_members - 1
+    subscription.iptrunk.iptrunk_minimum_links = iptrunk_minimum_links
 
     subscription.iptrunk.iptrunk_sides[0].iptrunk_side_node = side_a
     subscription.iptrunk.iptrunk_sides[0].iptrunk_side_ae_iface = side_a_ae_iface
diff --git a/gso/workflows/iptrunk/modify_trunk_interface.py b/gso/workflows/iptrunk/modify_trunk_interface.py
index 234a9dfc22f5f8ca56e70022eba234517ef6a861..92f71d6df5d7c8dde4f34fdb04925857f27e7512 100644
--- a/gso/workflows/iptrunk/modify_trunk_interface.py
+++ b/gso/workflows/iptrunk/modify_trunk_interface.py
@@ -84,7 +84,7 @@ def initial_input_form_generator(subscription_id: UUIDstr) -> FormGenerator:
     class ModifyIptrunkForm(FormPage):
         tt_number: str
         geant_s_sid: str | None = subscription.iptrunk.geant_s_sid
-        iptrunk_description: str = subscription.iptrunk.iptrunk_description
+        iptrunk_description: str | None = subscription.iptrunk.iptrunk_description
         iptrunk_type: IptrunkType = subscription.iptrunk.iptrunk_type
         warning_label: Label = (
             "Changing the PhyPortCapacity will result in the deletion of all AE members. "
@@ -110,9 +110,10 @@ def initial_input_form_generator(subscription_id: UUIDstr) -> FormGenerator:
         info_label: Label = (
             f"This is the calculated minimum-links for this LAG: " f"{initial_user_input.iptrunk_number_of_members - 1}"
         )
+        iptrunk_minimum_links: int = initial_user_input.iptrunk_number_of_members - 1
         info_label2: Label = "Please confirm or modify."
 
-    yield VerifyMinimumLinksForm
+    verify_minimum_links = yield VerifyMinimumLinksForm
     ae_members_side_a = initialize_ae_members(subscription, initial_user_input.dict(), 0)
 
     class ModifyIptrunkSideAForm(FormPage):
@@ -166,7 +167,7 @@ def initial_input_form_generator(subscription_id: UUIDstr) -> FormGenerator:
 
     user_input_side_b = yield ModifyIptrunkSideBForm
 
-    return initial_user_input.dict() | user_input_side_a.dict() | user_input_side_b.dict()
+    return initial_user_input.dict() | user_input_side_a.dict() | user_input_side_b.dict() | verify_minimum_links.dict()
 
 
 @step("Update subscription")
@@ -174,9 +175,9 @@ def modify_iptrunk_subscription(
     subscription: Iptrunk,
     geant_s_sid: str | None,
     iptrunk_type: IptrunkType,
-    iptrunk_description: str,
+    iptrunk_description: str | None,
     iptrunk_speed: PhysicalPortCapacity,
-    iptrunk_number_of_members: int,
+    iptrunk_minimum_links: int,
     side_a_ae_geant_a_sid: str | None,
     side_a_ae_members: list[dict],
     side_b_ae_geant_a_sid: str | None,
@@ -205,7 +206,7 @@ def modify_iptrunk_subscription(
     subscription.iptrunk.iptrunk_description = iptrunk_description
     subscription.iptrunk.iptrunk_type = iptrunk_type
     subscription.iptrunk.iptrunk_speed = iptrunk_speed
-    subscription.iptrunk.iptrunk_minimum_links = iptrunk_number_of_members - 1
+    subscription.iptrunk.iptrunk_minimum_links = iptrunk_minimum_links
 
     subscription.iptrunk.iptrunk_sides[0].iptrunk_side_ae_geant_a_sid = side_a_ae_geant_a_sid
     #  Flush the old list of member interfaces
@@ -223,7 +224,11 @@ def modify_iptrunk_subscription(
             IptrunkInterfaceBlock.new(subscription_id=uuid4(), **member),
         )
 
-    subscription.description = f"IP trunk, geant_s_sid:{geant_s_sid}"
+    side_names = sorted([
+        subscription.iptrunk.iptrunk_sides[0].iptrunk_side_node.router_site.site_name,
+        subscription.iptrunk.iptrunk_sides[1].iptrunk_side_node.router_site.site_name,
+    ])
+    subscription.description = f"IP trunk {side_names[0]} {side_names[1]}, geant_s_sid:{geant_s_sid}"
 
     return {
         "subscription": subscription,
diff --git a/test/workflows/iptrunk/test_create_iptrunk.py b/test/workflows/iptrunk/test_create_iptrunk.py
index 84039f326f35de5ef08591fb07d686b03bc8d35a..35afaf9b3eb5e669a641989027d1a4d47c35e273 100644
--- a/test/workflows/iptrunk/test_create_iptrunk.py
+++ b/test/workflows/iptrunk/test_create_iptrunk.py
@@ -67,7 +67,7 @@ def input_form_wizard_data(request, juniper_router_subscription_factory, nokia_r
         "iptrunk_speed": PhysicalPortCapacity.HUNDRED_GIGABIT_PER_SECOND,
         "iptrunk_number_of_members": 2,
     }
-    create_ip_trunk_confirm_step = {}
+    create_ip_trunk_confirm_step = {"iptrunk_minimum_links": 1}
     create_ip_trunk_side_a_router_name = {"side_a_node_id": router_side_a}
     create_ip_trunk_side_a_step = {
         "side_a_ae_iface": "lag-1",
diff --git a/test/workflows/iptrunk/test_modify_trunk_interface.py b/test/workflows/iptrunk/test_modify_trunk_interface.py
index 18524cfd70ba8a61a12db319ff4cd1af921c64fe..2a95cc90fc6428dd19c7e9a2b0a0f77a58ef3a2b 100644
--- a/test/workflows/iptrunk/test_modify_trunk_interface.py
+++ b/test/workflows/iptrunk/test_modify_trunk_interface.py
@@ -158,7 +158,11 @@ def test_iptrunk_modify_trunk_interface_success(
     assert mocked_detach_interfaces_from_lag.call_count == num_lag_ifaces  # 1 time per nokia side
 
     # Assert all subscription properties have been updated correctly
-    assert subscription.description == f"IP trunk, geant_s_sid:{new_sid}"
+    side_names = sorted([
+        subscription.iptrunk.iptrunk_sides[0].iptrunk_side_node.router_site.site_name,
+        subscription.iptrunk.iptrunk_sides[1].iptrunk_side_node.router_site.site_name,
+    ])
+    assert subscription.description == f"IP trunk {side_names[0]} {side_names[1]}, geant_s_sid:{new_sid}"
     assert subscription.iptrunk.geant_s_sid == input_form_iptrunk_data[1]["geant_s_sid"]
     assert subscription.iptrunk.iptrunk_description == input_form_iptrunk_data[1]["iptrunk_description"]
     assert subscription.iptrunk.iptrunk_type == input_form_iptrunk_data[1]["iptrunk_type"]