diff --git a/gso/oss-params-example.json b/gso/oss-params-example.json
index 4f4bca6c8c29ea38ef67272251fe21409685296b..5f533ef63b3ef1e319a8a49cbc294077a5614733 100644
--- a/gso/oss-params-example.json
+++ b/gso/oss-params-example.json
@@ -12,18 +12,86 @@
       "password": "robot-user-password"
     },
     "LO": {
-      "V4": {"containers": ["1.1.0.0/24"], "networks": [], "mask": 32},
-      "V6": {"containers": ["dead:beef::/64"], "networks": [], "mask": 128},
+      "V4": {
+        "containers": [
+          "1.1.0.0/24"
+        ],
+        "networks": [],
+        "mask": 32
+      },
+      "V6": {
+        "containers": [
+          "dead:beef::/64"
+        ],
+        "networks": [],
+        "mask": 128
+      },
       "domain_name": ".lo"
     },
     "TRUNK": {
-      "V4": {"containers": ["1.1.1.0/24"], "networks": [], "mask": 31},
-      "V6": {"containers": ["dead:beef::/64"], "networks": [], "mask": 126},
+      "V4": {
+        "containers": [
+          "1.1.1.0/24"
+        ],
+        "networks": [],
+        "mask": 31
+      },
+      "V6": {
+        "containers": [
+          "dead:beef::/64"
+        ],
+        "networks": [],
+        "mask": 126
+      },
       "domain_name": ".trunk"
     },
     "GEANT_IP": {
-      "V4": {"containers": ["1.1.2.0/24"], "networks": [], "mask": 31},
-      "V6": {"containers": ["dead:beef::/64"], "networks": [], "mask": 126},
+      "V4": {
+        "containers": [
+          "1.1.2.0/24"
+        ],
+        "networks": [],
+        "mask": 31
+      },
+      "V6": {
+        "containers": [
+          "dead:beef::/64"
+        ],
+        "networks": [],
+        "mask": 126
+      },
+      "domain_name": ".geantip"
+    },
+    "SI": {
+      "V4": {
+        "containers": [
+          "10.255.253.128/25"
+        ],
+        "networks": [],
+        "mask": 31
+      },
+      "V6": {
+        "containers": [],
+        "networks": [],
+        "mask": 126
+      },
+      "domain_name": ".geantip"
+    },
+    "LT_IAS": {
+      "V4": {
+        "containers": [
+          "10.255.255.0/24"
+        ],
+        "networks": [],
+        "mask": 31
+      },
+      "V6": {
+        "containers": [
+          "dead:beef:cc::/48"
+        ],
+        "networks": [],
+        "mask": 126
+      },
       "domain_name": ".geantip"
     }
   },
diff --git a/gso/settings.py b/gso/settings.py
index 8e8ad08f44ec1efdd8c3860e4e602e9e4d23e7cd..016b571b95218218cad8039445042d967965e85d 100644
--- a/gso/settings.py
+++ b/gso/settings.py
@@ -63,6 +63,8 @@ class IPAMParams(BaseSettings):
     LO: ServiceNetworkParams
     TRUNK: ServiceNetworkParams
     GEANT_IP: ServiceNetworkParams
+    SI: ServiceNetworkParams
+    LT_IAS: ServiceNetworkParams
 
 
 class ProvisioningProxyParams(BaseSettings):
diff --git a/gso/workflows/device/create_device.py b/gso/workflows/device/create_device.py
index d7646e5da5b0ff2f484372266abf905d5302206e..8168f0cf285646084ceebac9b67ccd6b403286e7 100644
--- a/gso/workflows/device/create_device.py
+++ b/gso/workflows/device/create_device.py
@@ -19,6 +19,7 @@ from gso.products.product_types import device
 from gso.products.product_types.device import DeviceInactive, \
     DeviceProvisioning
 from gso.products.product_types.site import Site
+# noinspection PyProtectedMember
 from gso.services import _ipam
 from gso.services import provisioning_proxy
 from gso.services.provisioning_proxy import await_pp_results, \
@@ -95,9 +96,15 @@ def get_info_from_ipam(subscription: DeviceProvisioning) -> State:
     subscription.device.device_lo_ipv6_address = lo0_addr.v6
     subscription.device.device_lo_iso_address \
         = iso_from_ipv4(str(subscription.device.device_lo_ipv4_address))
-    subscription.device.device_si_ipv4_network = '192.168.0.0/31'
-    subscription.device.device_ias_lt_ipv4_network = '192.168.1.0/31'
-    subscription.device.device_ias_lt_ipv6_network = 'fc00:798:1::150/126'
+    subscription.device.device_si_ipv4_network \
+        = _ipam.allocate_service_ipv4_network(service_type='SI',
+                                              comment=f'SI for {lo0_name}').v4
+    subscription.device.device_ias_lt_ipv4_network \
+        = _ipam.allocate_service_ipv4_network(service_type='LT_IAS',
+                                              comment=f'LT for {lo0_name}').v4
+    subscription.device.device_ias_lt_ipv6_network \
+        = _ipam.allocate_service_ipv6_network(service_type='LT_IAS',
+                                              comment=f'LT for {lo0_name}').v6
     return {'subscription': subscription}
 
 
diff --git a/gso/workflows/iptrunk/create_iptrunk.py b/gso/workflows/iptrunk/create_iptrunk.py
index 1c096575bb674c9e879c22c147fbc664fac8f352..bf7934bbcb54479e9272bb0d2733ad5897eee00a 100644
--- a/gso/workflows/iptrunk/create_iptrunk.py
+++ b/gso/workflows/iptrunk/create_iptrunk.py
@@ -17,7 +17,8 @@ from gso.products.product_blocks.iptrunk import IptrunkType
 from gso.products.product_types.device import Device
 from gso.products.product_types.iptrunk import IptrunkInactive, \
     IptrunkProvisioning
-from gso.services import provisioning_proxy
+# noinspection PyProtectedMember
+from gso.services import provisioning_proxy, _ipam
 from gso.services.provisioning_proxy import confirm_pp_results, \
     await_pp_results
 
@@ -91,12 +92,17 @@ def create_subscription(product: UUIDstr) -> State:
 
 
 @step('Get information from IPAM')
-def get_info_from_ipam(subscription: IptrunkInactive) -> State:
-    # TODO: get info about how these should be generated
+def get_info_from_ipam(subscription: IptrunkProvisioning) -> State:
     subscription.iptrunk.iptrunk_ipv4_network \
-        = ipaddress.ip_network('192.168.255.0/31')
+        = _ipam.allocate_service_ipv4_network(
+            service_type='TRUNK',
+            comment=subscription.iptrunk.iptrunk_description
+        ).v4
     subscription.iptrunk.iptrunk_ipv6_network \
-        = ipaddress.ip_network('fc00:798:255::150/126')
+        = _ipam.allocate_service_ipv6_network(
+            service_type='TRUNK',
+            comment=subscription.iptrunk.iptrunk_description
+        ).v6
     return {'subscription': subscription}
 
 
@@ -235,8 +241,8 @@ def create_iptrunk():
             init
             >> create_subscription
             >> store_process_subscription(Target.CREATE)
-            >> get_info_from_ipam
             >> initialize_subscription
+            >> get_info_from_ipam
             >> provision_ip_trunk_iface_dry
             >> await_pp_results
             >> confirm_pp_results
diff --git a/test/conftest.py b/test/conftest.py
index e714bf98ee8be66741b220731ba07ae1693ab16b..0edc5f13f9a40f199fe3e2d696b16d4d17b0c603 100644
--- a/test/conftest.py
+++ b/test/conftest.py
@@ -58,6 +58,32 @@ def configuration_data():
                         "mask": 126
                     },
                     "domain_name": ".geantip"
+                },
+                "SI": {
+                    "V4": {
+                        "containers": ["10.255.253.128/25"],
+                        "networks": [],
+                        "mask": 31
+                        },
+                    "V6": {
+                        "containers": [],
+                        "networks": [],
+                        "mask": 126
+                        },
+                    "domain_name": ".geantip"
+                },
+                "LT_IAS": {
+                    "V4": {
+                        "containers": ["10.255.255.0/24"],
+                        "networks": [],
+                        "mask": 31
+                        },
+                    "V6": {
+                        "containers": ["dead:beef:cc::/48"],
+                        "networks": [],
+                        "mask": 126
+                        },
+                    "domain_name": ".geantip"
                 }
             },
             "PROVISIONING_PROXY": {