diff --git a/gso/workflows/device/create_device.py b/gso/workflows/device/create_device.py
index 7897465dd0b6ca13bc9998b2eb21723abaf06ebc..f501fe15317f0eb5a5d65ed75c45c562f6bbc552 100644
--- a/gso/workflows/device/create_device.py
+++ b/gso/workflows/device/create_device.py
@@ -48,7 +48,7 @@ def initial_input_form_generator(product_name: str) -> FormGenerator:
             title = product_name
 
         device_site: site_selector()
-        fqdn: str
+        hostname: str
         ts_address: ipaddress.IPv4Address
         ts_port: int
         device_vendor: device_pb.DeviceVendor
@@ -88,19 +88,23 @@ def get_info_from_ipam(subscription: device.DeviceInactive) -> State:
 @step("Initialize subscription")
 def initialize_subscription(
     subscription: device.DeviceInactive,
-    fqdn: str,
+    hostname: str,
     ts_address: ipaddress.IPv4Address,
     ts_port: str,
     device_vendor: device_pb.DeviceVendor,
     device_site: str,
     device_role: device_pb.DeviceRole
 ) -> State:
-    subscription.device.device_fqdn = fqdn
     subscription.device.device_ts_address = str(ts_address)
     subscription.device.device_ts_port = str(ts_port)
     subscription.device.device_vendor = device_vendor
     subscription.device.device_site \
         = Site.from_subscription(device_site[0]).site
+    fqdn = str(hostname + "." +
+               subscription.device.device_site.site_name.lower() + "." +
+               subscription.device.device_site.site_country_code.lower() +
+               ".geant.net")
+    subscription.device.device_fqdn = fqdn
     subscription.device.device_role = device_role
     subscription.description = f"Device {fqdn} type \
                                 ({subscription.device_type})"
@@ -108,45 +112,43 @@ def initialize_subscription(
         subscription, SubscriptionLifecycle.PROVISIONING
     )
 
-    return {"subscription": subscription}
+    return {"subscription": subscription, "fqdn": fqdn}
 
 
 @step("Provision device [DRY RUN]")
 def provision_device_dry(
-    subscription: device.DeviceProvisioning,
-    fqdn: str,
-    ts_address: str,
-    ts_port: str
+    subscription: device.DeviceProvisioning
 ) -> 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()
+     import ansible_runner
+    
+     snmp_location = subscription.device.device_site.site_country_code 
+     r = ansible_runner.run(
+         private_data_dir="/opt/geant-gap-ansible",
+         playbook="base_config.yaml",
+         inventory=subscription.device.device_fqdn,
+         extravars={
+             "lo_ipv4_address": str(subscription.device.device_lo_ipv4_address),
+             "lo_ipv6_address": str(subscription.device.device_lo_ipv6_address),
+             "lo_iso_address": subscription.device.device_lo_iso_address,
+             "snmp_location": snmp_location,
+             "si_ipv4_network": str(subscription.device.device_si_ipv4_network),
+             "lt_ipv4_network": str(subscription.device.device_ias_lt_ipv4_network),
+             "lt_ipv6_network": str(subscription.device.device_ias_lt_ipv6_network),
+             "site_country_code": subscription.device.device_site.site_country_code,
+             "verb": "deploy",
+         },
+     )
+     out = r.stdout.read()
+     out_splitted = out.splitlines()
     # # if r.rc != 0:
     # #    raise ValueError("Ansible has failed")
-    # return {"dry_run_output": out_splitted, "return_code": r.rc}
+     return {"dry_run_output": out_splitted, "return_code": r.rc}
     # provisioning_proxy.provision_node(
     #     node_subscription_params=subscription,
     #     dry_run=True)
     #  TODO: figure out what to return when we are suspending & waiting
     #        for the provisioning-proxy to call back
-    return {"return_code": 0}
+    #return {"return_code": 0}
 
 
 @inputstep("Confirm step", assignee="CHANGES")
@@ -161,39 +163,40 @@ def confirm_step() -> FormGenerator:
 
 @step("Provision device [FOR REAL]")
 def provision_device_real(
-    subscription: device.DeviceProvisioning,
-    fqdn: str,
-    ts_address: str,
-    ts_port: str
+    subscription: device.DeviceProvisioning
 ) -> 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 {"real_run_output": out_splitted, "return_code": r.rc}
+     import ansible_runner
+
+     snmp_location = subscription.device.device_site.site_country_code
+     r = ansible_runner.run(
+         private_data_dir="/opt/geant-gap-ansible",
+         playbook="base_config.yaml",
+         inventory=subscription.device.device_fqdn,
+         extravars={
+             "lo_ipv4_address": str(subscription.device.device_lo_ipv4_address),
+             "lo_ipv6_address": str(subscription.device.device_lo_ipv6_address),
+             "lo_iso_address": subscription.device.device_lo_iso_address,
+             "snmp_location": snmp_location,
+             "si_ipv4_network": str(subscription.device.device_si_ipv4_network),
+             "lt_ipv4_network": str(subscription.device.device_ias_lt_ipv4_network),
+             "lt_ipv6_network": str(subscription.device.device_ias_lt_ipv6_network),
+             "site_country_code": subscription.device.device_site.site_country_code,
+             "verb": "deploy",
+             "dryrun": "False",
+             "commit_comment": "Deployed with WFO and Ansible",
+         },
+     )
+     out = r.stdout.read()
+     out_splitted = out.splitlines()
+    # # if r.rc != 0:
+    # #    raise ValueError("Ansible has failed")
+     return {"dry_run_output": out_splitted, "return_code": r.rc}
     # provisioning_proxy.provision_node(
-    #    node_subscription_params=subscription)
-    # TODO: figure out what to return when we are suspending & waiting
-    #       for the provisioning-proxy to call back
-    return {"return_code": 0}
-
+    #     node_subscription_params=subscription,
+    #     dry_run=True)
+    #  TODO: figure out what to return when we are suspending & waiting
+    #        for the provisioning-proxy to call back
+    #return {"return_code": 0}
 
 @workflow(
     "Create Device",