diff --git a/gso/workflows/iptrunk/terminate_iptrunk.py b/gso/workflows/iptrunk/terminate_iptrunk.py
index c0a0da62cd549962164e6d9cc6afb787a7f63f79..16e6d7b05075361bd0b2caed6d1631e347998e49 100644
--- a/gso/workflows/iptrunk/terminate_iptrunk.py
+++ b/gso/workflows/iptrunk/terminate_iptrunk.py
@@ -10,6 +10,7 @@ from orchestrator.workflows.utils import wrap_modify_initial_input_form
 
 from gso.products.product_types.iptrunk import Iptrunk
 from gso.services import infoblox, provisioning_proxy
+from gso.services.netbox_client import NetBoxClient
 from gso.services.provisioning_proxy import pp_interaction
 from gso.utils.helpers import set_isis_to_90000
 
@@ -58,6 +59,56 @@ def deprovision_ip_trunk_real(subscription: Iptrunk, process_id: UUIDstr, tt_num
     }
 
 
+@step("Unreserve involved physical interfaces")
+def unreserve_physical_interfaces(subscription: Iptrunk) -> State:
+    router_sideA = NetBoxClient().get_device_by_name(subscription.iptrunk.iptrunk_sides[0].iptrunk_side_node)
+    router_sideB = NetBoxClient().get_device_by_name(subscription.iptrunk.iptrunk_sides[1].iptrunk_side_node)
+    sideA_members = subscription.iptrunk.iptrunk_sides[0].iptrunk_side_ae_members
+    sideB_members = subscription.iptrunk.iptrunk_sides[1].iptrunk_side_ae_members
+    for sideA_member in sideA_members:
+        NetBoxClient().unreserve_interface(router_sideA, sideA_member)
+    for sideB_member in sideB_members:
+        NetBoxClient().unreserve_interface(router_sideB, sideB_member)
+    return {"subscription": subscription}
+
+
+@step("Deallocate involved physical interfaces")
+def deallocate_physical_interfaces(subscription: Iptrunk) -> State:
+    router_sideA = NetBoxClient().get_device_by_name(subscription.iptrunk.iptrunk_sides[0].iptrunk_side_node)
+    router_sideB = NetBoxClient().get_device_by_name(subscription.iptrunk.iptrunk_sides[1].iptrunk_side_node)
+    sideA_members = subscription.iptrunk.iptrunk_sides[0].iptrunk_side_ae_members
+    sideB_members = subscription.iptrunk.iptrunk_sides[1].iptrunk_side_ae_members
+    for sideA_member in sideA_members:
+        NetBoxClient().deallocate_interface(router_sideA, sideA_member)
+    for sideB_member in sideB_members:
+        NetBoxClient().deallocate_interface(router_sideB, sideB_member)
+    return {"subscription": subscription}
+
+
+@step("Unattach physical interfaces from respective LAG")
+def unattach_physical_interfaces(subscription: Iptrunk) -> State:
+    router_sideA = NetBoxClient().get_device_by_name(subscription.iptrunk.iptrunk_sides[0].iptrunk_side_node)
+    router_sideB = NetBoxClient().get_device_by_name(subscription.iptrunk.iptrunk_sides[1].iptrunk_side_node)
+    sideA_members = subscription.iptrunk.iptrunk_sides[0].iptrunk_side_ae_members
+    sideB_members = subscription.iptrunk.iptrunk_sides[1].iptrunk_side_ae_members
+    sideA_ae_iface = subscription.iptrunk.iptrunk_sides[0].iptrunk_side_ae_iface
+    sideB_ae_iface = subscription.iptrunk.iptrunk_sides[1].iptrunk_side_ae_iface
+    for sideA_member in sideA_members:
+        NetBoxClient().unattach_interface_from_lag(router_sideA, sideA_ae_iface, sideA_member)
+    for sideB_member in sideB_members:
+        NetBoxClient().unattach_interface_from_lag(router_sideB, sideB_ae_iface, sideB_member)
+    return {"subscription": subscription}
+
+
+@step("Delete involved LAGs")
+def delete_lags(subscription: Iptrunk) -> State:
+    sideA_ae_iface = subscription.iptrunk.iptrunk_sides[0].iptrunk_side_ae_iface
+    sideB_ae_iface = subscription.iptrunk.iptrunk_sides[1].iptrunk_side_ae_iface
+    NetBoxClient().delete_device(sideA_ae_iface)
+    NetBoxClient().delete_device(sideB_ae_iface)
+    return {"subscription": subscription}
+
+
 @step("Deprovision IPv4 networks")
 def deprovision_ip_trunk_ipv4(subscription: Iptrunk) -> dict:
     infoblox.delete_network(ipaddress.IPv4Network(subscription.iptrunk.iptrunk_ipv4_network))
diff --git a/utils/netboxcli.py b/utils/netboxcli.py
index 6b69c5b15cda35ef23bfd3f2071e9169b2861604..18b0b1d3e046d1ae7edc5b89b4318edf26711f00 100644
--- a/utils/netboxcli.py
+++ b/utils/netboxcli.py
@@ -179,7 +179,6 @@ def free_interface(fqdn: str, iface: str) -> None:
     freed_iface = NetboxClient().free_interface(fqdn, iface)
     click.echo(freed_iface)
 
-
 @action.command()
 @click.option("--fqdn", help="Device name from where to get interface to edit")
 @click.option("--iface", help="Interface name to edit")