diff --git a/gso/oss-params-example.json b/gso/oss-params-example.json
index 86e65d7f4309d2729d08bbcd7ada03b12ec0955f..a13415dd26ddb0a58ad7eb65abcfd191c2e40de2 100644
--- a/gso/oss-params-example.json
+++ b/gso/oss-params-example.json
@@ -21,7 +21,8 @@
     }
   },
   "PROVISIONING_PROXY": {
-    "api_base": "http://localhost:44444",
+    "scheme": "https",
+    "api_base": "localhost:44444",
     "auth": "Bearer <token>",
     "api_version": 1123
   }
diff --git a/gso/services/provisioning_proxy.py b/gso/services/provisioning_proxy.py
index 5bdf205d461287b74ed21fc572c0d5b723de7da0..7dc9c6f08bbd6bb5f007b081dcb003662338ade3 100644
--- a/gso/services/provisioning_proxy.py
+++ b/gso/services/provisioning_proxy.py
@@ -4,28 +4,51 @@ from gso.products.product_blocks.device import DeviceBlockProvisioning
 from gso import settings
 import requests
 
+from gso.products.product_types.device import DeviceProvisioning
+
 logger = logging.getLogger(__name__)
 
 
 def provision_node(
-        node_subscription_params: DeviceBlockProvisioning,
+        node_subscription_params: DeviceProvisioning,
         callback_url: str,
         dry_run: bool = True):
     oss = settings.load_oss_params()
     pp_params = oss.PROVISIONING_PROXY
     assert pp_params
 
-    logger.debug(f'[disabled] provisioning node {node_subscription_params}')
+    device_params = node_subscription_params.device
+    logger.debug(f'[disabled] provisioning node {device_params}')
 
     parameters = {
         'callback': callback_url,
         'dry_run': dry_run,
-        'device': node_subscription_params.dict()
+        'device': {
+            'fqdn': device_params.fqdn,
+            'lo_address': {
+                'v4': str(device_params.lo_ipv4_address),
+                'v6': str(device_params.lo_ipv6_address)
+            },
+            'lo_iso_address': device_params.lo_iso_address,
+            'si_ipv4_network': str(device_params.si_ipv4_network),
+            'ias_lt_network': {
+                'v4': str(device_params.ias_lt_ipv4_network),
+                'v6': str(device_params.ias_lt_ipv6_network)
+            },
+            'site_country_code': device_params.site_country_code,
+            'site_city': device_params.site_city,
+            'site_latitude': device_params.site_latitude,
+            'site_longitude': device_params.site_longitude,
+            'snmp_location': device_params.snmp_location,
+            'device_type': node_subscription_params.device_type,
+            'device_vendor': node_subscription_params.device_vendor,
+            'ts_address': device_params.ts_address,
+            'ts_port': device_params.ts_port
+        }
     }
 
-    r = requests.post(
-        f'https://{pp_params.api_base}'
+    post_request = requests.post(
+        f'{pp_params.scheme}://{pp_params.api_base}'
         f'/api/device',
         json=parameters)
-    r.raise_for_status()
-    requests.post()
\ No newline at end of file
+    post_request.raise_for_status()
diff --git a/gso/settings.py b/gso/settings.py
index ef78633201a788bbca4c3e70fe4bc9fb8d06dfe9..11cebf9d63dcf14633cae189df201ab295d31532 100644
--- a/gso/settings.py
+++ b/gso/settings.py
@@ -38,6 +38,7 @@ class IPAMParams(BaseSettings):
 
 
 class ProvisioningProxyParams(BaseSettings):
+    scheme: str
     api_base: str
     auth: str  # FIXME: unfinished
     api_version: int
diff --git a/gso/workflows/device/create_device.py b/gso/workflows/device/create_device.py
index 2a492c392fd1988411b8ea79383914cf56ecb18f..1d39fcdbe0bd9d28054c681dccd5c887d2521e0c 100644
--- a/gso/workflows/device/create_device.py
+++ b/gso/workflows/device/create_device.py
@@ -1,6 +1,7 @@
 import ipaddress
 from uuid import uuid4
 
+from orchestrator.config.assignee import Assignee
 from orchestrator.forms import FormPage
 from orchestrator.targets import Target
 from orchestrator.workflow import inputstep
@@ -14,7 +15,8 @@ from orchestrator.workflows.utils import wrap_create_initial_input_form
 
 from gso import settings
 from gso.services import provisioning_proxy
-from gso.products.product_types import device
+from gso.products.product_types.device import DeviceVendor, DeviceInactive, \
+    DeviceProvisioning
 
 
 def initial_input_form_generator(product_name: str) -> FormGenerator:
@@ -25,7 +27,7 @@ def initial_input_form_generator(product_name: str) -> FormGenerator:
         fqdn: str
         ts_address: ipaddress.IPv4Address
         ts_port: int
-        device_vendor: device.DeviceVendor
+        device_vendor: DeviceVendor
 
     user_input = yield CreateDeviceForm
 
@@ -34,7 +36,7 @@ def initial_input_form_generator(product_name: str) -> FormGenerator:
 
 @step("Create subscription")
 def create_subscription(product: UUIDstr) -> State:
-    subscription = device.DeviceInactive.from_product_id(product, uuid4())
+    subscription = DeviceInactive.from_product_id(product, uuid4())
 
     return {
         "subscription": subscription,
@@ -43,7 +45,7 @@ def create_subscription(product: UUIDstr) -> State:
 
 
 @step("Get information from IPAM ")
-def get_info_from_ipam(subscription: device.DeviceInactive) -> State:
+def get_info_from_ipam(subscription: DeviceInactive) -> State:
     # lo = ipam.new_device_lo_address()
     # subscription.device.lo_ipv4_address = lo.v4
     # subscription.device.lo_ipv6_address = lo.v6
@@ -58,7 +60,7 @@ def get_info_from_ipam(subscription: device.DeviceInactive) -> State:
 
 
 @step("get information about SNMP")
-def get_snmp_info(subscription: device.DeviceInactive) -> State:
+def get_snmp_info(subscription: DeviceInactive) -> State:
     country = 'Spain'
     city = 'Barcelona'
     country_code = 'ES'
@@ -78,11 +80,11 @@ def get_snmp_info(subscription: device.DeviceInactive) -> State:
 
 @step("Initialize subscription")
 def initialize_subscription(
-    subscription: device.DeviceInactive,
+    subscription: DeviceInactive,
     fqdn: str,
     ts_address: ipaddress.IPv4Address,
     ts_port: str,
-    device_vendor: device.DeviceVendor
+    device_vendor: DeviceVendor
 ) -> State:
     subscription.device.fqdn = fqdn
     subscription.device.ts_address = str(ts_address)
@@ -90,7 +92,7 @@ def initialize_subscription(
     subscription.device_vendor = device_vendor
     subscription.description = f"Device {fqdn} type \
                                 ({subscription.device_type})"
-    subscription = device.DeviceProvisioning.from_other_lifecycle(
+    subscription = DeviceProvisioning.from_other_lifecycle(
         subscription, SubscriptionLifecycle.PROVISIONING
     )
 
@@ -98,13 +100,13 @@ def initialize_subscription(
 
 
 @step("Provision device [DRY RUN]")
-def provision_device_dry(subscription: device.DeviceProvisioning) -> State:
+def provision_device_dry(subscription: DeviceProvisioning) -> State:
     # TODO: verify this URL
     callback_url = f'{settings.load_oss_params().GENERAL.public_hostname}' \
                    f'/api/process/{subscription.product.product_id}/resume'
 
-    proxy_result = provisioning_proxy.provision_node(
-        subscription.device,
+    provisioning_proxy.provision_node(
+        subscription,
         callback_url
     )
 
@@ -136,32 +138,28 @@ def provision_device_dry(subscription: device.DeviceProvisioning) -> State:
     #     dry_run=True)
     #  TODO: figure out what to return when we are suspending & waiting
     #        for the provisioning-proxy to call back
-    return {"subscription": proxy_result}
+
+    return {'subscription': subscription}
 
 
-@inputstep("Confirm step", assignee="CHANGES")
-def confirm_step() -> FormGenerator:
+@inputstep("Confirm step", assignee=Assignee('SYSTEM'))
+def confirm_step(subscription: DeviceProvisioning) -> State:
     class ConfirmForm(FormPage):
         confirm: Accept
 
     user_input = yield ConfirmForm
 
-    return {"confirm": user_input.confirm}
+    return {'subscription': subscription, 'confirm': user_input}
 
 
 @step("Provision device [FOR REAL]")
-def provision_device_real(
-    subscription: device.DeviceProvisioning,
-    fqdn: str,
-    ts_address: str,
-    ts_port: str
-) -> State:
+def provision_device_real(subscription: DeviceProvisioning) -> State:
 
     # TODO: generate actual callback URL
     callback_url = settings.load_oss_params().GENERAL.public_hostname
 
     provisioning_proxy.provision_node(
-        subscription.device,
+        subscription,
         callback_url,
         False
     )