diff --git a/gso/services/provisioning_proxy.py b/gso/services/provisioning_proxy.py
index 1ca12a0b95d8a03da406491f2c4fbcf1af4bc5ca..17a386662d758f214eba5b22cad26995edff3c14 100644
--- a/gso/services/provisioning_proxy.py
+++ b/gso/services/provisioning_proxy.py
@@ -80,7 +80,9 @@ def _send_request(endpoint: str, parameters: dict, process_id: UUIDstr, operatio
         raise AssertionError(request.content)
 
 
-def provision_router(subscription: RouterProvisioning, process_id: UUIDstr, dry_run: bool = True) -> None:
+def provision_router(
+    subscription: RouterProvisioning, process_id: UUIDstr, tt_number: str, dry_run: bool = True
+) -> None:
     """Provision a new router using {term}`LSO`.
 
     :param subscription: The subscription object that's to be provisioned.
@@ -91,13 +93,18 @@ def provision_router(subscription: RouterProvisioning, process_id: UUIDstr, dry_
     :type dry_run: bool
     :rtype: None
     """
-    parameters = {"dry_run": dry_run, "subscription": json.loads(json_dumps(subscription))}
+    parameters = {
+        "process_id": process_id,
+        "tt_number": tt_number,
+        "dry_run": dry_run,
+        "subscription": json.loads(json_dumps(subscription)),
+    }
 
     _send_request("router", parameters, process_id, CUDOperation.POST)
 
 
 def provision_ip_trunk(
-    subscription: IptrunkProvisioning, process_id: UUIDstr, config_object: str, dry_run: bool = True
+    subscription: IptrunkProvisioning, process_id: UUIDstr, tt_number: str, config_object: str, dry_run: bool = True
 ) -> None:
     """Provision an IP trunk service using {term}`LSO`.
 
@@ -115,13 +122,15 @@ def provision_ip_trunk(
         "subscription": json.loads(json_dumps(subscription)),
         "dry_run": dry_run,
         "verb": "deploy",
+        "tt_number": tt_number,
+        "process_id": process_id,
         "object": config_object,
     }
 
     _send_request("ip_trunk", parameters, process_id, CUDOperation.POST)
 
 
-def check_ip_trunk(subscription: IptrunkProvisioning, process_id: UUIDstr, check_name: str) -> None:
+def check_ip_trunk(subscription: IptrunkProvisioning, process_id: UUIDstr, tt_number: str, check_name: str) -> None:
     """Provision an IP trunk service using {term}`LSO`.
 
     :param subscription: The subscription object that's to be provisioned.
@@ -133,13 +142,15 @@ def check_ip_trunk(subscription: IptrunkProvisioning, process_id: UUIDstr, check
     """
     parameters = {
         "subscription": json.loads(json_dumps(subscription)),
+        "tt_number": tt_number,
+        "process_id": process_id,
         "check_name": check_name,
     }
 
     _send_request("ip_trunk/perform_check", parameters, process_id, CUDOperation.POST)
 
 
-def deprovision_ip_trunk(subscription: Iptrunk, process_id: UUIDstr, dry_run: bool = True) -> None:
+def deprovision_ip_trunk(subscription: Iptrunk, process_id: UUIDstr, tt_number: str, dry_run: bool = True) -> None:
     """Deprovision an IP trunk service using {term}`LSO`.
 
     :param subscription: The subscription object that's to be provisioned.
@@ -150,7 +161,13 @@ def deprovision_ip_trunk(subscription: Iptrunk, process_id: UUIDstr, dry_run: bo
     :type dry_run: bool
     :rtype: None
     """
-    parameters = {"subscription": json.loads(json_dumps(subscription)), "dry_run": dry_run, "verb": "terminate"}
+    parameters = {
+        "subscription": json.loads(json_dumps(subscription)),
+        "tt_number": tt_number,
+        "process_id": process_id,
+        "dry_run": dry_run,
+        "verb": "terminate",
+    }
 
     _send_request("ip_trunk", parameters, process_id, CUDOperation.DELETE)
 
@@ -162,7 +179,9 @@ def migrate_ip_trunk(
     new_lag_member_interfaces: list[str],
     replace_index: int,
     process_id: UUIDstr,
+    tt_number: str,
     verb: str,
+    config_object: str,
     dry_run: bool = True,
 ) -> None:
     """Migrate an IP trunk service using {term}`LSO`.
@@ -188,6 +207,8 @@ def migrate_ip_trunk(
     """
     parameters = {
         "subscription": json.loads(json_dumps(subscription)),
+        "tt_number": tt_number,
+        "process_id": process_id,
         "new_side": {
             "new_node": json.loads(json_dumps(new_node)),
             "new_lag_interface": new_lag_interface,
@@ -195,6 +216,7 @@ def migrate_ip_trunk(
             "replace_index": replace_index,
         },
         "verb": verb,
+        "config_object": config_object,
         "dry_run": dry_run,
     }
 
diff --git a/gso/translations/en-GB.json b/gso/translations/en-GB.json
index d28386d7ef0f3ba3b2c5e7f40abb9c054dee4e74..39f43b0c556286d7bf292439f93b17cef3775c17 100644
--- a/gso/translations/en-GB.json
+++ b/gso/translations/en-GB.json
@@ -1,6 +1,8 @@
 {
     "forms": {
         "fields": {
+            "tt_number": "Insert the Ticket number that covers this activity",
+
             "confirm": "Confirm",
             "confirm_info": "Please verify this form looks correct.",
 
diff --git a/gso/workflows/iptrunk/__init__.py b/gso/workflows/iptrunk/__init__.py
index 091846365a88bdaab93d02632d6a8b6eac0c1e0a..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644
--- a/gso/workflows/iptrunk/__init__.py
+++ b/gso/workflows/iptrunk/__init__.py
@@ -1,25 +0,0 @@
-from logging import getLogger
-
-from orchestrator import step
-from orchestrator.types import State
-
-from gso.products.product_types.iptrunk import Iptrunk
-
-logger = getLogger(__name__)
-
-
-@step("Set ISIS metric to 9000")
-def set_isis_to_9000(subscription: Iptrunk) -> State:
-    old_isis_metric = subscription.iptrunk.iptrunk_isis_metric
-    subscription.iptrunk.iptrunk_isis_metric = 90000
-    logger.warning("ISIS metric is only updated in the subscription, not in the real world.")
-
-    return {"subscription": subscription, "old_isis_metric": old_isis_metric}
-
-
-@step("Restore ISIS metric to original value")
-def restore_isis_metric(subscription: Iptrunk, old_isis_metric: int) -> State:
-    subscription.iptrunk.iptrunk_isis_metric = old_isis_metric
-    logger.warning("ISIS metric is only updated in the subscription, not in the real world.")
-
-    return {"subscription": subscription}
diff --git a/gso/workflows/iptrunk/create_iptrunk.py b/gso/workflows/iptrunk/create_iptrunk.py
index bf70d821fb0d01f3222f4ef807512ec80f9bed71..0471d8f90a650fe4d79af54680780eae16739de3 100644
--- a/gso/workflows/iptrunk/create_iptrunk.py
+++ b/gso/workflows/iptrunk/create_iptrunk.py
@@ -29,6 +29,7 @@ def initial_input_form_generator(product_name: str) -> FormGenerator:
         class Config:
             title = product_name
 
+        tt_number: str
         customer: customer_selector()  # type: ignore
         geant_s_sid: str
         iptrunk_description: str
@@ -147,8 +148,8 @@ def initialize_subscription(
 
 
 @step("Provision IP trunk interface [DRY RUN]")
-def provision_ip_trunk_iface_dry(subscription: IptrunkProvisioning, process_id: UUIDstr) -> State:
-    provisioning_proxy.provision_ip_trunk(subscription, process_id, "trunk_interface")
+def provision_ip_trunk_iface_dry(subscription: IptrunkProvisioning, process_id: UUIDstr, tt_number: str) -> State:
+    provisioning_proxy.provision_ip_trunk(subscription, process_id, tt_number, "trunk_interface")
 
     return {
         "subscription": subscription,
@@ -157,28 +158,28 @@ def provision_ip_trunk_iface_dry(subscription: IptrunkProvisioning, process_id:
 
 
 @step("Provision IP trunk interface [FOR REAL]")
-def provision_ip_trunk_iface_real(subscription: IptrunkProvisioning, process_id: UUIDstr) -> State:
-    provisioning_proxy.provision_ip_trunk(subscription, process_id, "trunk_interface", False)
+def provision_ip_trunk_iface_real(subscription: IptrunkProvisioning, process_id: UUIDstr, tt_number: str) -> State:
+    provisioning_proxy.provision_ip_trunk(subscription, process_id, tt_number, "trunk_interface", False)
 
     return {
         "subscription": subscription,
-        "label_text": "Provisioning a trunk interface, please refresh to get the results of the playbook.",
+        "label_text": "[COMMIT] Provisioning a trunk interface, please refresh to get the results of the playbook.",
     }
 
 
 @step("Check IP connectivity of the trunk")
-def check_ip_trunk_connectivity(subscription: IptrunkProvisioning, process_id: UUIDstr) -> State:
-    provisioning_proxy.check_ip_trunk(subscription, process_id, "ping")
+def check_ip_trunk_connectivity(subscription: IptrunkProvisioning, process_id: UUIDstr, tt_number: str) -> State:
+    provisioning_proxy.check_ip_trunk(subscription, process_id, tt_number, "ping")
 
     return {
         "subscription": subscription,
-        "label_text": "Checking IP traffic flow on the trunk, to get the results of the playbook.",
+        "label_text": "[CHECK] Checking IP traffic flow on the trunk, to get the results of the playbook.",
     }
 
 
 @step("Provision IP trunk ISIS interface [DRY RUN]")
-def provision_ip_trunk_isis_iface_dry(subscription: IptrunkProvisioning, process_id: UUIDstr) -> State:
-    provisioning_proxy.provision_ip_trunk(subscription, process_id, "isis_interface")
+def provision_ip_trunk_isis_iface_dry(subscription: IptrunkProvisioning, process_id: UUIDstr, tt_number: str) -> State:
+    provisioning_proxy.provision_ip_trunk(subscription, process_id, tt_number, "isis_interface")
 
     return {
         "subscription": subscription,
@@ -187,42 +188,22 @@ def provision_ip_trunk_isis_iface_dry(subscription: IptrunkProvisioning, process
 
 
 @step("Provision IP trunk ISIS interface [FOR REAL]")
-def provision_ip_trunk_isis_iface_real(subscription: IptrunkProvisioning, process_id: UUIDstr) -> State:
-    provisioning_proxy.provision_ip_trunk(subscription, process_id, "isis_interface", False)
+def provision_ip_trunk_isis_iface_real(subscription: IptrunkProvisioning, process_id: UUIDstr, tt_number: str) -> State:
+    provisioning_proxy.provision_ip_trunk(subscription, process_id, tt_number, "isis_interface", False)
 
     return {
         "subscription": subscription,
-        "label_text": "Provisioning ISIS interfaces, please refresh to get the results of the playbook.",
+        "label_text": "[COMMIT] Provisioning ISIS interfaces, please refresh to get the results of the playbook.",
     }
 
 
 @step("Check ISIS adjacency")
-def check_ip_trunk_isis(subscription: IptrunkProvisioning, process_id: UUIDstr) -> State:
-    provisioning_proxy.check_ip_trunk(subscription, process_id, "isis")
+def check_ip_trunk_isis(subscription: IptrunkProvisioning, process_id: UUIDstr, tt_number: str) -> State:
+    provisioning_proxy.check_ip_trunk(subscription, process_id, tt_number, "isis")
 
     return {
         "subscription": subscription,
-        "label_text": "Checking ISIS adjacency, please refresh to get the results of the playbook.",
-    }
-
-
-@step("Provision IP trunk LDP interface [DRY RUN]")
-def provision_ip_trunk_ldp_iface_dry(subscription: IptrunkProvisioning, process_id: UUIDstr) -> State:
-    provisioning_proxy.provision_ip_trunk(subscription, process_id, "ldp_interface")
-
-    return {
-        "subscription": subscription,
-        "label_text": "[DRY RUN] Provisioning LDP interface, please refresh to get the results of the playbook.",
-    }
-
-
-@step("Provision IP trunk LDP interface [FOR REAL]")
-def provision_ip_trunk_ldp_iface_real(subscription: IptrunkProvisioning, process_id: UUIDstr) -> State:
-    provisioning_proxy.provision_ip_trunk(subscription, process_id, "ldp_interface", False)
-
-    return {
-        "subscription": subscription,
-        "label_text": "Provisioning LDP interface, please refresh to get the results of the playbook.",
+        "label_text": "[CHECK] Checking ISIS adjacency, please refresh to get the results of the playbook.",
     }
 
 
diff --git a/gso/workflows/iptrunk/migrate_iptrunk.py b/gso/workflows/iptrunk/migrate_iptrunk.py
index f87b625d77e8d89b0d95b50865e6d6ef0d0f10e6..948e9070e5475532054391f95b4c0ec5edcd7676 100644
--- a/gso/workflows/iptrunk/migrate_iptrunk.py
+++ b/gso/workflows/iptrunk/migrate_iptrunk.py
@@ -18,7 +18,6 @@ from gso.products.product_types.iptrunk import Iptrunk
 from gso.products.product_types.router import Router
 from gso.services import provisioning_proxy
 from gso.services.provisioning_proxy import pp_interaction
-from gso.workflows.iptrunk import restore_isis_metric, set_isis_to_9000
 
 logger = getLogger(__name__)
 
@@ -38,10 +37,12 @@ def initial_input_form_generator(subscription_id: UUIDstr) -> FormGenerator:
         class Config:
             title = (
                 f"Subscription {subscription.iptrunk.geant_s_sid} from "
-                f"{subscription.iptrunk.iptrunk_sides[0].iptrunk_side_node.router_fqdn} to "
+                f"{subscription.iptrunk.iptrunk_sides[0].iptrunk_side_node.router_fqdn}"
+                f" to "
                 f"{subscription.iptrunk.iptrunk_sides[1].iptrunk_side_node.router_fqdn}"
             )
 
+        tt_number: str
         replace_side: ReplacedSide  # type: ignore
         warning_label: Label = "Are we moving to a different Site?"  # type: ignore
         migrate_to_different_site: Optional[bool] = False
@@ -114,19 +115,17 @@ def initial_input_form_generator(subscription_id: UUIDstr) -> FormGenerator:
     return old_side_input.dict() | new_side_input.dict() | {"replace_index": replace_index}
 
 
-@inputstep("Wait for confirmation", assignee=Assignee.SYSTEM)
-def confirm_continue() -> FormGenerator:
-    class ProvisioningResultPage(FormPage):
-        class Config:
-            title = "Please confirm before continuing"
+@step("[COMMIT] Set ISIS metric to 90000")
+def set_isis_to_9000(subscription: Iptrunk, process_id: UUIDstr, tt_number: str) -> State:
+    old_isis_metric = subscription.iptrunk.iptrunk_isis_metric
+    subscription.iptrunk.iptrunk_isis_metric = 90000
+    provisioning_proxy.provision_ip_trunk(subscription, process_id, tt_number, "isis_interface", False)
 
-        info_label: Label = (
-            "ISIS metric has been set to 9000, please confirm to continue the workflow when ready."  # type: ignore
-        )
-
-    yield ProvisioningResultPage
-
-    return {}
+    return {
+        "subscription": subscription,
+        "old_isis_metric": old_isis_metric,
+        "label_text": "ISIS is being set to 90K by the provisioning proxy, please wait for the results",
+    }
 
 
 @step("[DRY RUN] Disable configuration on old router")
@@ -137,6 +136,7 @@ def disable_old_config_dry(
     new_lag_member_interfaces: list[str],
     replace_index: int,
     process_id: UUIDstr,
+    tt_number: str,
 ) -> State:
     provisioning_proxy.migrate_ip_trunk(
         subscription,
@@ -145,12 +145,14 @@ def disable_old_config_dry(
         new_lag_member_interfaces,
         replace_index,
         process_id,
-        "VERB NEEDS TO BE UPDATED",
+        tt_number,
+        "deactivate",
+        "deactivate",
     )
 
     return {
         "subscription": subscription,
-        "label_text": "[DRY RUN] Migrating old trunk interface, please refresh to get the results of the playbook.",
+        "label_text": "[DRY RUN] Disable config on old node, please refresh to get the results of the playbook.",
     }
 
 
@@ -162,6 +164,7 @@ def disable_old_config_real(
     new_lag_member_interfaces: list[str],
     replace_index: int,
     process_id: UUIDstr,
+    tt_number: str,
 ) -> State:
     provisioning_proxy.migrate_ip_trunk(
         subscription,
@@ -170,15 +173,15 @@ def disable_old_config_real(
         new_lag_member_interfaces,
         replace_index,
         process_id,
-        "VERB NEEDS TO BE UPDATED",
+        tt_number,
+        "deactivate",
+        "deactivate",
         False,
     )
 
-    logger.warning("Playbook verb is not yet properly set.")
-
     return {
         "subscription": subscription,
-        "label_text": "Migrating old trunk interface, please refresh to get the results of the playbook.",
+        "label_text": "Disable config on the old node, please refresh to get the results of the playbook.",
     }
 
 
@@ -190,6 +193,7 @@ def deploy_new_config_dry(
     new_lag_member_interfaces: list[str],
     replace_index: int,
     process_id: UUIDstr,
+    tt_number: str,
 ) -> State:
     provisioning_proxy.migrate_ip_trunk(
         subscription,
@@ -198,7 +202,9 @@ def deploy_new_config_dry(
         new_lag_member_interfaces,
         replace_index,
         process_id,
-        "VERB NEEDS TO BE UPDATED",
+        tt_number,
+        "deploy",
+        "trunk_interface",
     )
 
     logger.warning("Playbook verb is not yet properly set.")
@@ -217,6 +223,7 @@ def deploy_new_config_real(
     new_lag_member_interfaces: list[str],
     replace_index: int,
     process_id: UUIDstr,
+    tt_number: str,
 ) -> State:
     provisioning_proxy.migrate_ip_trunk(
         subscription,
@@ -225,7 +232,9 @@ def deploy_new_config_real(
         new_lag_member_interfaces,
         replace_index,
         process_id,
-        "VERB NEEDS TO BE UPDATED",
+        tt_number,
+        "deploy",
+        "trunk_interface",
         False,
     )
 
@@ -233,38 +242,29 @@ def deploy_new_config_real(
 
     return {
         "subscription": subscription,
-        "label_text": "Deploying new trunk interface, please refresh to get the results of the playbook.",
+        "label_text": "[COMMIT] Deploying new trunk interface, please refresh to get the results of the playbook.",
     }
 
 
-@step("Run interface checks")
-def run_interface_checks(
-    subscription: Iptrunk,
-    new_node: Router,
-    new_lag_interface: str,
-    new_lag_member_interfaces: list[str],
-    replace_index: int,
-    process_id: UUIDstr,
-) -> State:
-    provisioning_proxy.migrate_ip_trunk(
-        subscription,
-        new_node,
-        new_lag_interface,
-        new_lag_member_interfaces,
-        replace_index,
-        process_id,
-        "MIGRATION_INTERFACE_CHECK",
-    )
+@inputstep("Wait for confirmation", assignee=Assignee.SYSTEM)
+def confirm_continue_move_fiber() -> FormGenerator:
+    class ProvisioningResultPage(FormPage):
+        class Config:
+            title = "Please confirm before continuing"
 
-    logger.warning("Playbook verb is not yet properly set.")
+        info_label: Label = (
+            "New Trunk interface has been deployed, wait for the physical connection to be moved"  # type: ignore
+        )
 
-    return {
-        "subscription": subscription,
-        "label_text": "Running checks on the new trunk interface, please refresh to get the results of the playbook.",
-    }
+    yield ProvisioningResultPage
 
+    return {}
 
-@step("Deploy configuration on new router")
+
+# Interface checks go here
+
+
+@step("Deploy ISIS configuration on new router")
 def deploy_new_isis(
     subscription: Iptrunk,
     new_node: Router,
@@ -272,6 +272,7 @@ def deploy_new_isis(
     new_lag_member_interfaces: list[str],
     replace_index: int,
     process_id: UUIDstr,
+    tt_number: str,
 ) -> State:
     provisioning_proxy.migrate_ip_trunk(
         subscription,
@@ -280,7 +281,9 @@ def deploy_new_isis(
         new_lag_member_interfaces,
         replace_index,
         process_id,
-        "VERB NEEDS TO BE UPDATED",
+        tt_number,
+        "deploy",
+        "isis_interface",
         False,
     )
 
@@ -288,20 +291,44 @@ def deploy_new_isis(
 
     return {
         "subscription": subscription,
-        "label_text": "Updating new ISIS metric, please refresh to get the results of the playbook.",
+        "label_text": "Deploy ISIS config on the new router, please refresh to get the results of the playbook.",
     }
 
 
-@step("Check ISIS metric")
-def check_isis(subscription: Iptrunk, process_id: UUIDstr) -> State:
-    provisioning_proxy.check_ip_trunk(subscription, process_id, "VERB NEEDS TO BE UPDATED")
+# Leaving it like this as a placeholder
+# @step("Check ISIS metric")
+# def check_isis(subscription: Iptrunk, process_id: UUIDstr) -> State:
+#    provisioning_proxy.check_ip_trunk(subscription, process_id, "VERB NEEDS TO BE UPDATED")
+#
+#    logger.warning("Playbook verb is not yet properly set.")
+#
+#    return {
+#        "subscription": subscription,
+#        "label_text": "Checking ISIS functionality, please refresh to get the results of the playbook.",
+#    }
 
-    logger.warning("Playbook verb is not yet properly set.")
 
-    return {
-        "subscription": subscription,
-        "label_text": "Checking ISIS functionality, please refresh to get the results of the playbook.",
-    }
+@inputstep("Wait for confirmation", assignee=Assignee.SYSTEM)
+def confirm_continue_restore_isis() -> FormGenerator:
+    class ProvisioningResultPage(FormPage):
+        class Config:
+            title = "Please confirm before continuing"
+
+        info_label: Label = (
+            "ISIS config has been deployed, confirm if you want to restore the old metric"  # type: ignore
+        )
+
+    yield ProvisioningResultPage
+
+    return {}
+
+
+@step("Restore ISIS metric to original value")
+def restore_isis_metric(subscription: Iptrunk, process_id: UUIDstr, tt_number: str, old_isis_metric: int) -> State:
+    subscription.iptrunk.iptrunk_isis_metric = old_isis_metric
+    provisioning_proxy.provision_ip_trunk(subscription, process_id, tt_number, "isis_interface", False)
+
+    return {"subscription": subscription}
 
 
 @step("[DRY RUN] Delete configuration on old router")
@@ -312,6 +339,7 @@ def delete_old_config_dry(
     new_lag_member_interfaces: list[str],
     replace_index: int,
     process_id: UUIDstr,
+    tt_number: str,
 ) -> State:
     provisioning_proxy.migrate_ip_trunk(
         subscription,
@@ -320,7 +348,9 @@ def delete_old_config_dry(
         new_lag_member_interfaces,
         replace_index,
         process_id,
-        "VERB NEEDS TO BE UPDATED",
+        tt_number,
+        "delete",
+        "delete",
     )
 
     logger.warning("Playbook verb is not yet properly set.")
@@ -340,6 +370,7 @@ def delete_old_config_real(
     new_lag_member_interfaces: list[str],
     replace_index: int,
     process_id: UUIDstr,
+    tt_number: str,
 ) -> State:
     provisioning_proxy.migrate_ip_trunk(
         subscription,
@@ -348,7 +379,9 @@ def delete_old_config_real(
         new_lag_member_interfaces,
         replace_index,
         process_id,
-        "VERB NEEDS TO BE UPDATED",
+        tt_number,
+        "delete",
+        "delete",
         False,
     )
 
@@ -392,18 +425,17 @@ def migrate_iptrunk() -> StepList:
         init
         >> store_process_subscription(Target.MODIFY)
         >> unsync
-        >> set_isis_to_9000
-        >> confirm_continue
+        >> pp_interaction(set_isis_to_9000, 3)
         >> pp_interaction(disable_old_config_dry, 3)
         >> pp_interaction(disable_old_config_real, 3)
         >> pp_interaction(deploy_new_config_dry, 3)
         >> pp_interaction(deploy_new_config_real, 3)
-        >> confirm_continue
-        >> pp_interaction(run_interface_checks, 3, False)
+        >> confirm_continue_move_fiber
+        # >> pp_interaction(run_interface_checks, 3, False)
         >> pp_interaction(deploy_new_isis, 3)
-        >> pp_interaction(check_isis, 3, False)
-        >> confirm_continue
-        >> restore_isis_metric
+        # >> pp_interaction(check_isis, 3, False)
+        >> confirm_continue_restore_isis
+        >> pp_interaction(restore_isis_metric, 3)
         >> pp_interaction(delete_old_config_dry, 3)
         >> pp_interaction(delete_old_config_real, 3)
         >> update_ipam
diff --git a/gso/workflows/iptrunk/modify_isis_metric.py b/gso/workflows/iptrunk/modify_isis_metric.py
index 6edaf8a46f372cd80651df54e441b94495b5b5f8..f43447c806c88597fc87eabe22ce4a721f4e0590 100644
--- a/gso/workflows/iptrunk/modify_isis_metric.py
+++ b/gso/workflows/iptrunk/modify_isis_metric.py
@@ -14,6 +14,7 @@ def initial_input_form_generator(subscription_id: UUIDstr) -> FormGenerator:
     subscription = Iptrunk.from_subscription(subscription_id)
 
     class ModifyIptrunkForm(FormPage):
+        tt_number: str
         isis_metric: int = subscription.iptrunk.iptrunk_isis_metric
 
     user_input = yield ModifyIptrunkForm
@@ -29,8 +30,8 @@ def modify_iptrunk_subscription(subscription: Iptrunk, isis_metric: int) -> Stat
 
 
 @step("Provision IP trunk ISIS interface [DRY RUN]")
-def provision_ip_trunk_isis_iface_dry(subscription: Iptrunk, process_id: UUIDstr) -> State:
-    provisioning_proxy.provision_ip_trunk(subscription, process_id, "isis_interface")
+def provision_ip_trunk_isis_iface_dry(subscription: Iptrunk, process_id: UUIDstr, tt_number: str) -> State:
+    provisioning_proxy.provision_ip_trunk(subscription, process_id, tt_number, "isis_interface")
 
     return {
         "subscription": subscription,
@@ -40,8 +41,8 @@ def provision_ip_trunk_isis_iface_dry(subscription: Iptrunk, process_id: UUIDstr
 
 
 @step("Provision IP trunk ISIS interface [FOR REAL]")
-def provision_ip_trunk_isis_iface_real(subscription: Iptrunk, process_id: UUIDstr) -> State:
-    provisioning_proxy.provision_ip_trunk(subscription, process_id, "isis_interface", False)
+def provision_ip_trunk_isis_iface_real(subscription: Iptrunk, process_id: UUIDstr, tt_number: str) -> State:
+    provisioning_proxy.provision_ip_trunk(subscription, process_id, tt_number, "isis_interface", False)
 
     return {
         "subscription": subscription,
diff --git a/gso/workflows/iptrunk/modify_trunk_interface.py b/gso/workflows/iptrunk/modify_trunk_interface.py
index 565e652f9e78862249e763188c31bd000c526ca6..5e588c0c300651f6fe9d83b1b6b824800828037e 100644
--- a/gso/workflows/iptrunk/modify_trunk_interface.py
+++ b/gso/workflows/iptrunk/modify_trunk_interface.py
@@ -19,6 +19,7 @@ def initial_input_form_generator(subscription_id: UUIDstr) -> FormGenerator:
     subscription = Iptrunk.from_subscription(subscription_id)
 
     class ModifyIptrunkForm(FormPage):
+        tt_number: str
         geant_s_sid: str = subscription.iptrunk.geant_s_sid
         iptrunk_description: str = subscription.iptrunk.iptrunk_description
         iptrunk_type: IptrunkType = subscription.iptrunk.iptrunk_type
@@ -38,9 +39,9 @@ def initial_input_form_generator(subscription_id: UUIDstr) -> FormGenerator:
             title = "Provide subscription details for side A of the trunk."
 
         iptrunk_sideA_node: str = ReadOnlyField(subscription.iptrunk.iptrunk_sides[0].iptrunk_side_node.router_fqdn)
-        iptrunk_sideA_ae_iface: str = ReadOnlyField(subscription.iptrunk.iptrunk_sides[0].iptrunk_ae_iface)
+        iptrunk_sideA_ae_iface: str = ReadOnlyField(subscription.iptrunk.iptrunk_sides[0].iptrunk_side_ae_iface)
         iptrunk_sideA_ae_geant_a_sid: str = subscription.iptrunk.iptrunk_sides[0].iptrunk_side_ae_geant_a_sid
-        iptrunk_sideA_ae_members: AeMembersListA = subscription.iptrunk.iptrunk_sideA_ae_members  # type: ignore
+        iptrunk_sideA_ae_members: AeMembersListA = subscription.iptrunk.iptrunk_sides[0].iptrunk_side_ae_members
         iptrunk_sideA_ae_members_descriptions: AeMembersListA = subscription.iptrunk.iptrunk_sides[
             0
         ].iptrunk_side_ae_members_description
@@ -58,7 +59,7 @@ def initial_input_form_generator(subscription_id: UUIDstr) -> FormGenerator:
         iptrunk_sideB_node: str = ReadOnlyField(subscription.iptrunk.iptrunk_sides[1].iptrunk_side_node.router_fqdn)
         iptrunk_sideB_ae_iface: str = ReadOnlyField(subscription.iptrunk.iptrunk_sides[1].iptrunk_side_ae_iface)
         iptrunk_sideB_ae_geant_a_sid: str = subscription.iptrunk.iptrunk_sides[1].iptrunk_side_ae_geant_a_sid
-        iptrunk_sideB_ae_members: AeMembersListB = subscription.iptrunk.iptrunk_sideB_ae_members  # type: ignore
+        iptrunk_sideB_ae_members: AeMembersListB = subscription.iptrunk.iptrunk_sides[1].iptrunk_side_ae_members
         iptrunk_sideB_ae_members_descriptions: AeMembersListB = subscription.iptrunk.iptrunk_sides[
             1
         ].iptrunk_side_ae_members_description
@@ -103,8 +104,8 @@ def modify_iptrunk_subscription(
 
 
 @step("Provision IP trunk interface [DRY RUN]")
-def provision_ip_trunk_iface_dry(subscription: Iptrunk, process_id: UUIDstr) -> State:
-    provisioning_proxy.provision_ip_trunk(subscription, process_id, "trunk_interface")
+def provision_ip_trunk_iface_dry(subscription: Iptrunk, process_id: UUIDstr, tt_number: str) -> State:
+    provisioning_proxy.provision_ip_trunk(subscription, process_id, tt_number, "trunk_interface")
 
     return {
         "subscription": subscription,
@@ -113,8 +114,8 @@ def provision_ip_trunk_iface_dry(subscription: Iptrunk, process_id: UUIDstr) ->
 
 
 @step("Provision IP trunk interface [FOR REAL]")
-def provision_ip_trunk_iface_real(subscription: Iptrunk, process_id: UUIDstr) -> State:
-    provisioning_proxy.provision_ip_trunk(subscription, process_id, "trunk_interface", False)
+def provision_ip_trunk_iface_real(subscription: Iptrunk, process_id: UUIDstr, tt_number: str) -> State:
+    provisioning_proxy.provision_ip_trunk(subscription, process_id, tt_number, "trunk_interface", False)
 
     return {
         "subscription": subscription,
@@ -122,26 +123,6 @@ def provision_ip_trunk_iface_real(subscription: Iptrunk, process_id: UUIDstr) ->
     }
 
 
-@step("Provision IP trunk LLDP interface [DRY RUN]")
-def provision_ip_trunk_lldp_iface_dry(subscription: Iptrunk, process_id: UUIDstr) -> State:
-    provisioning_proxy.provision_ip_trunk(subscription, process_id, "lldp_interface")
-
-    return {
-        "subscription": subscription,
-        "label_text": "[DRY RUN] Provisioning LLDP interface, please refresh to get the results of the playbook.",
-    }
-
-
-@step("Provision IP trunk LLDP interface [FOR REAL]")
-def provision_ip_trunk_lldp_iface_real(subscription: Iptrunk, process_id: UUIDstr) -> State:
-    provisioning_proxy.provision_ip_trunk(subscription, process_id, "lldp_interface", False)
-
-    return {
-        "subscription": subscription,
-        "label_text": "Provisioning LLDP interface, please refresh to get the results of the playbook.",
-    }
-
-
 @workflow(
     "Modify IP Trunk interface",
     initial_input_form=wrap_modify_initial_input_form(initial_input_form_generator),
@@ -155,8 +136,6 @@ def modify_trunk_interface() -> StepList:
         >> modify_iptrunk_subscription
         >> pp_interaction(provision_ip_trunk_iface_dry, 3)
         >> pp_interaction(provision_ip_trunk_iface_real, 3)
-        >> pp_interaction(provision_ip_trunk_lldp_iface_dry, 3)
-        >> pp_interaction(provision_ip_trunk_lldp_iface_real, 3)
         >> resync
         >> done
     )
diff --git a/gso/workflows/iptrunk/terminate_iptrunk.py b/gso/workflows/iptrunk/terminate_iptrunk.py
index 4572bb650bd93d628d329844d9d816411daeb3a1..bb638a33739941271b264c886e715acf3b2141bb 100644
--- a/gso/workflows/iptrunk/terminate_iptrunk.py
+++ b/gso/workflows/iptrunk/terminate_iptrunk.py
@@ -7,7 +7,6 @@ from orchestrator.types import FormGenerator, State, SubscriptionLifecycle, UUID
 from orchestrator.workflow import StepList, conditional, done, init, step, workflow
 from orchestrator.workflows.steps import resync, set_status, store_process_subscription, unsync
 from orchestrator.workflows.utils import wrap_modify_initial_input_form
-from workflows.iptrunk import set_isis_to_9000
 
 from gso.products.product_types.iptrunk import Iptrunk
 from gso.services import ipam, provisioning_proxy
@@ -21,6 +20,7 @@ def initial_input_form_generator() -> FormGenerator:
             "Please confirm whether configuration should get removed from the A and B sides of the trunk, and whether "
             "IPAM resources should be released."  # type: ignore
         )
+        tt_number: str
         remove_configuration: bool = True
         clean_up_ipam: bool = True
 
@@ -28,9 +28,22 @@ def initial_input_form_generator() -> FormGenerator:
     return user_input.dict()
 
 
+@step("[COMMIT] Set ISIS metric to 90000")
+def set_isis_to_9000(subscription: Iptrunk, process_id: UUIDstr, tt_number: str) -> State:
+    old_isis_metric = subscription.iptrunk.iptrunk_isis_metric
+    subscription.iptrunk.iptrunk_isis_metric = 90000
+    provisioning_proxy.provision_ip_trunk(subscription, process_id, tt_number, "isis_interface", False)
+
+    return {
+        "subscription": subscription,
+        "old_isis_metric": old_isis_metric,
+        "label_text": "ISIS is being set to 90K by the provisioning proxy, please wait for the results",
+    }
+
+
 @step("Drain traffic from trunk")
-def drain_traffic_from_ip_trunk(subscription: Iptrunk, process_id: UUIDstr) -> State:
-    provisioning_proxy.provision_ip_trunk(subscription, process_id, "isis_interface", False)
+def drain_traffic_from_ip_trunk(subscription: Iptrunk, process_id: UUIDstr, tt_number: str) -> State:
+    provisioning_proxy.provision_ip_trunk(subscription, process_id, tt_number, "isis_interface", False)
     return {
         "subscription": subscription,
         "label_text": "This is setting the ISIS metric of the trunk to 9000. Press refresh to get the results."
@@ -39,8 +52,8 @@ def drain_traffic_from_ip_trunk(subscription: Iptrunk, process_id: UUIDstr) -> S
 
 
 @step("Deprovision IP trunk [DRY RUN]")
-def deprovision_ip_trunk_dry(subscription: Iptrunk, process_id: UUIDstr) -> State:
-    provisioning_proxy.deprovision_ip_trunk(subscription, process_id, True)
+def deprovision_ip_trunk_dry(subscription: Iptrunk, process_id: UUIDstr, tt_number: str) -> State:
+    provisioning_proxy.deprovision_ip_trunk(subscription, process_id, tt_number, True)
 
     return {
         "subscription": subscription,
@@ -49,12 +62,12 @@ def deprovision_ip_trunk_dry(subscription: Iptrunk, process_id: UUIDstr) -> Stat
 
 
 @step("Deprovision IP trunk [FOR REAL]")
-def deprovision_ip_trunk_real(subscription: Iptrunk, process_id: UUIDstr) -> State:
-    provisioning_proxy.deprovision_ip_trunk(subscription, process_id, False)
+def deprovision_ip_trunk_real(subscription: Iptrunk, process_id: UUIDstr, tt_number: str) -> State:
+    provisioning_proxy.deprovision_ip_trunk(subscription, process_id, tt_number, False)
 
     return {
         "subscription": subscription,
-        "label_text": "Terminating IP trunk, please refresh to get the results of the playbook.",
+        "label_text": "[COMMIT] Terminating IP trunk, please refresh to get the results of the playbook.",
     }
 
 
@@ -86,8 +99,9 @@ def terminate_iptrunk() -> StepList:
     run_ipam_steps = conditional(lambda state: state.get("clean_up_ipam", True))
 
     config_steps = (
-        StepList([set_isis_to_9000])
-        >> pp_interaction(drain_traffic_from_ip_trunk, 3)
+        # StepList([set_isis_to_9000])
+        StepList()
+        >> pp_interaction(set_isis_to_9000, 3)
         >> pp_interaction(deprovision_ip_trunk_dry, 3)
         >> pp_interaction(deprovision_ip_trunk_real, 3)
     )
diff --git a/gso/workflows/router/create_router.py b/gso/workflows/router/create_router.py
index c94826f286cb49e44d5c77fb10a7f5888b6ff309..3322ca551b7e47155160f91c741f075feee1a0ed 100644
--- a/gso/workflows/router/create_router.py
+++ b/gso/workflows/router/create_router.py
@@ -36,13 +36,14 @@ def initial_input_form_generator(product_name: str) -> FormGenerator:
         class Config:
             title = product_name
 
+        tt_number: str
         customer: customer_selector()  # type: ignore
         router_site: _site_selector()  # type: ignore
         hostname: str
         ts_port: PortNumber
         router_vendor: router_pb.RouterVendor
         router_role: router_pb.RouterRole
-        is_ias_connected: Optional[bool]
+        is_ias_connected: Optional[bool] = False
 
     user_input = yield CreateRouterForm
 
@@ -111,8 +112,8 @@ def initialize_subscription(
 
 
 @step("Provision router [DRY RUN]")
-def provision_router_dry(subscription: RouterProvisioning, process_id: UUIDstr) -> State:
-    provisioning_proxy.provision_router(subscription, process_id)
+def provision_router_dry(subscription: RouterProvisioning, process_id: UUIDstr, tt_number: str) -> State:
+    provisioning_proxy.provision_router(subscription, process_id, tt_number)
 
     return {
         "subscription": subscription,
@@ -124,8 +125,8 @@ def provision_router_dry(subscription: RouterProvisioning, process_id: UUIDstr)
 
 
 @step("Provision router [FOR REAL]")
-def provision_router_real(subscription: RouterProvisioning, process_id: UUIDstr) -> State:
-    provisioning_proxy.provision_router(subscription, process_id, False)
+def provision_router_real(subscription: RouterProvisioning, process_id: UUIDstr, tt_number: str) -> State:
+    provisioning_proxy.provision_router(subscription, process_id, tt_number, False)
 
     return {
         "subscription": subscription,
diff --git a/gso/workflows/router/terminate_router.py b/gso/workflows/router/terminate_router.py
index 3276a8fb31f8ae053b25edfe137c55260b432885..e190bc47db1870fb5911ee6062f50fabfee7bcac 100644
--- a/gso/workflows/router/terminate_router.py
+++ b/gso/workflows/router/terminate_router.py
@@ -24,6 +24,7 @@ def initial_input_form_generator(subscription_id: UUIDstr) -> FormGenerator:
             "Please confirm whether configuration should get removed from the router, and whether IPAM resources should"
             " be released."  # type: ignore
         )
+        tt_number: str
         remove_configuration: bool = True
         clean_up_ipam: bool = True