diff --git a/gso/translations/en-GB.json b/gso/translations/en-GB.json
index 845ad7320d7e87cdd38aa78a51eacc61f9270eec..a4ee0dfcac2820a0b39239c9a188b36e710750c6 100644
--- a/gso/translations/en-GB.json
+++ b/gso/translations/en-GB.json
@@ -29,7 +29,9 @@
             "iptrunk_sideB_ae_iface": "Aggregated Ethernet interface name",
             "iptrunk_sideB_ae_geant_a_sid": "GÉANT A-SID",
             "iptrunk_sideB_ae_members": "Aggregated Ethernet member interface names",
-            "iptrunk_sideB_ae_members_descriptions": "Aggregated Ethernet member interface descriptions"
+            "iptrunk_sideB_ae_members_descriptions": "Aggregated Ethernet member interface descriptions",
+            "remove_configuration": "Remove configuration from the device",
+            "clean_up_ipam": "Clean up related entries in IPAM"
         }
     },
     "workflow": {
diff --git a/gso/workflows/device/terminate_device.py b/gso/workflows/device/terminate_device.py
index b7564d2a197a652c8b77edc830a5e374488b4459..1ad4a487dab6920a0455ab99c02f8a5a30cc4542 100644
--- a/gso/workflows/device/terminate_device.py
+++ b/gso/workflows/device/terminate_device.py
@@ -5,7 +5,7 @@ from orchestrator.forms import FormPage
 from orchestrator.forms.validators import Label
 from orchestrator.targets import Target
 from orchestrator.types import FormGenerator, SubscriptionLifecycle, UUIDstr
-from orchestrator.workflow import StepList, done, init, step, workflow
+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
 
@@ -21,14 +21,15 @@ def initial_input_form_generator(subscription_id: UUIDstr) -> FormGenerator:
     subscription = Device.from_subscription(subscription_id)
 
     class TerminateForm(FormPage):
-        are_you_sure: Label = f"Are you sure you want to remove {subscription.description}?"  # type: ignore
+        termination_label: Label = (
+            f"Please confirm whether configuration should get removed from the {subscription.device_type}, and "
+            "whether IPAM resources should be released."  # type: ignore
+        )
+        remove_configuration: bool = True
+        clean_up_ipam: bool = True
 
-    return TerminateForm  # type: ignore
-
-
-def _deprovision_in_user_management_system(fqdn: str) -> None:
-    logger.debug(fqdn)
-    pass
+    user_input = yield TerminateForm
+    return user_input.dict()
 
 
 @step("Deprovision loopback IPs from IPAM/DNS")
@@ -74,19 +75,28 @@ def deprovision_lt_ips(subscription: Device) -> dict[str, V4ServiceNetwork | V6S
     }
 
 
+@step("Remove configuration from device")
+def remove_config_from_device() -> None:
+    pass
+
+
 @workflow(
     "Terminate device",
     initial_input_form=wrap_modify_initial_input_form(initial_input_form_generator),
     target=Target.TERMINATE,
 )
 def terminate_device() -> StepList:
+    run_ipam_steps = conditional(lambda state: state.get("clean_up_ipam", True))
+    run_config_steps = conditional(lambda state: state.get("remove_configuration", True))
+
+    ipam_steps = StepList([deprovision_loopback_ips, deprovision_si_ips, deprovision_lt_ips])
+
     return (
         init
         >> store_process_subscription(Target.TERMINATE)
         >> unsync
-        >> deprovision_loopback_ips
-        >> deprovision_si_ips
-        >> deprovision_lt_ips
+        >> run_ipam_steps(ipam_steps)
+        >> run_config_steps(remove_config_from_device)
         >> set_status(SubscriptionLifecycle.TERMINATED)
         >> resync
         >> done