diff --git a/geant_service_orchestrator/workflows/device/create_device.py b/geant_service_orchestrator/workflows/device/create_device.py
index cd65fefb12198f43c25398f57f28022891c7b348..1a745762dd216eb4c870eb2db9e1901b3a509c50 100644
--- a/geant_service_orchestrator/workflows/device/create_device.py
+++ b/geant_service_orchestrator/workflows/device/create_device.py
@@ -5,6 +5,8 @@ from uuid import uuid4
 # from orchestrator.forms.validators import Choice, choice_list
 from orchestrator.forms import FormPage
 from orchestrator.targets import Target
+from orchestrator.workflow import inputstep
+from orchestrator.forms.validators import Accept
 from orchestrator.types import FormGenerator, State
 from orchestrator.types import SubscriptionLifecycle, UUIDstr
 from orchestrator.workflow import done, init, step, workflow
@@ -30,16 +32,6 @@ def initial_input_form_generator(product_name: str) -> FormGenerator:
 
     return user_input.dict()
 
-def confirmation_form() -> FormGenerator:
-    class ConfirmActionForm(FormPage):
-        class Config:
-            title = "Confirm your action"
-
-        choice: bool
-
-    user_input = yield ConfirmActionForm
-
-    return user_input.dict()
 
 @step("Create subscription")
 def create_subscription(product: UUIDstr) -> State:
@@ -126,11 +118,45 @@ def provision_device_dry(
     return {"output": out_splitted}
 
 
-@step("Confirm provisioning")
-def confirm_provisioning_step() -> State:
-    user_input = confirmation_form()
-    if not user_input.choice:
-        exit
+@inputstep("Confirm step", assignee ="CHANGES")
+def confirm_step() -> FormGenerator:
+    class ConfirmForm(FormPage):
+        class Config:
+            title = "confirm"
+
+        
+        confirm: "Accept"
+
+    user_input = yield ConfirmForm
+
+    return {"confirm": user_input.confirm}
+
+@step("Provision device [FOR REAL]")
+def provision_device_real(
+    subscription: DeviceProvisioning, fqdn: str, ts_address: str, ts_port: str
+) -> State:
+    import ansible_runner
+
+    r = ansible_runner.run(
+        private_data_dir="/opt/geant-gap-ansible",
+        playbook="base_config.yaml",
+        inventory=subscription.device.fqdn,
+        extravars={
+            "lo_ipv4_address": str(subscription.device.lo_ipv4_address),
+            "lo_ipv6_address": str(subscription.device.lo_ipv6_address),
+            "lo_iso_address": subscription.device.lo_iso_address,
+            "snmp_location": subscription.device.snmp_location,
+            "si_ipv4_network": str(subscription.device.si_ipv4_network),
+            "lt_ipv4_network": str(subscription.device.ias_lt_ipv4_network),
+            "lt_ipv6_network": str(subscription.device.ias_lt_ipv6_network),
+            "site_country_code": subscription.device.site_country_code,
+            "verb": "deploy",
+        },
+    )
+    out = r.stdout.read()
+    out_splitted = out.splitlines()
+
+    return {"output": out_splitted}
 
 @workflow(
     "Create Device",
@@ -147,7 +173,8 @@ def create_device():
         >> get_snmp_info
         >> initialize_subscription
         >> provision_device_dry
-        >> confirm_provisioning_step
+        >> confirm_step
+        >> provision_device_real
         >> set_status(SubscriptionLifecycle.ACTIVE)
         >> resync
         >> done