diff --git a/.gitignore b/.gitignore
index 20969d16f10cfe87950112c3dfb1a3a00e4ef5fb..6f706bf96b555012f29447cf06e44530ac2393f1 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,4 +3,5 @@ __pycache__/
 .coverage
 coverage.xml
 .tox/device_vendor
-.vscode
\ No newline at end of file
+.vscode
+venv
\ No newline at end of file
diff --git a/gso/products/product_blocks/iptrunk.py b/gso/products/product_blocks/iptrunk.py
new file mode 100644
index 0000000000000000000000000000000000000000..07d9a31e5116ca8ed7f00d0b875baf93be38bad7
--- /dev/null
+++ b/gso/products/product_blocks/iptrunk.py
@@ -0,0 +1,88 @@
+from typing import Optional
+
+from orchestrator.domain.base import ProductBlockModel
+from orchestrator.types import SubscriptionLifecycle
+import ipaddress
+
+#  - id: GS-00012
+#    name: AMS2-LON-IPTRUNK-100G
+#    config:
+#      common:
+#        speed: '100'
+#        is_leased_line: false
+#        isis_metric: '9000'
+#        minimum_links: 1
+#      nodeA:
+#        name: rt2.ams.nl.geant.net
+#        ae_name: ae2
+#        ipv4_address: 62.40.98.164/31
+#        ipv6_address: 2001:798:cc::5/126
+#        members:
+#          - et-0/0/0
+#        port_id: GA-02036
+#      nodeB:
+#        name: mx1.lon.uk.geant.net
+#        ae_name: ae8
+#        ipv4_address: 62.40.98.165/31
+#        ipv6_address: 2001:798:cc::6/126
+#        members:
+#          - et-4/0/2
+#        port_id: GA-01834
+
+
+class DeviceBlockInactive(ProductBlockModel,
+                          lifecycle=[SubscriptionLifecycle.INITIAL],
+                          product_block_name="DeviceBlock"):
+    geant_s_sid: Optional[str] = None
+    iptrunk_speed: Optional[str] = None
+    iptrunk_minimum_links: Optional[int] = None
+    iptrunk_ipv4_network: Optional[ipaddress.IPv4Network] = None
+    iptrunk_ipv6_network: Optional[ipaddress.IPv6Network] = None
+    #
+    iptrunk_sideA_fqdn: Optional[str] = None
+    iptrunk_sideA_ae_iface: Optional[str] = None
+    iptrunk_sideA_ae_geant_a_sid: Optional[str] = None
+    iptrunk_sideA_ae_members: Optional[list] = None
+    #
+    iptrunk_sideB_fqdn: Optional[str] = None
+    iptrunk_sideB_ae_iface: Optional[str] = None
+    iptrunk_sideB_ae_geant_a_sid: Optional[str] = None
+    iptrunk_sideB_ae_members: Optional[list] = None
+
+
+class DeviceBlockProvisioning(DeviceBlockInactive,
+                              lifecycle=[SubscriptionLifecycle.PROVISIONING]):
+    geant_s_sid: Optional[str] = None
+    iptrunk_speed: Optional[str] = None
+    iptrunk_minimum_links: Optional[int] = None
+    iptrunk_ipv4_network: Optional[ipaddress.IPv4Network] = None
+    iptrunk_ipv6_network: Optional[ipaddress.IPv6Network] = None
+    #
+    iptrunk_sideA_fqdn: Optional[str] = None
+    iptrunk_sideA_ae_iface: Optional[str] = None
+    iptrunk_sideA_ae_geant_a_sid: Optional[str] = None
+    iptrunk_sideA_ae_members: Optional[list] = None
+    #
+    iptrunk_sideB_fqdn: Optional[str] = None
+    iptrunk_sideB_ae_iface: Optional[str] = None
+    iptrunk_sideB_ae_geant_a_sid: Optional[str] = None
+    iptrunk_sideB_ae_members: Optional[list] = None
+
+
+class DeviceBlock(DeviceBlockProvisioning,
+                  lifecycle=[SubscriptionLifecycle.ACTIVE]):
+    geant_s_sid: str
+    iptrunk_speed: str
+    iptrunk_minimum_links: int
+    iptrunk_ipv4_network: ipaddress.IPv4Network
+    iptrunk_ipv6_network: ipaddress.IPv6Network
+    #
+    iptrunk_sideA_fqdn: str
+    iptrunk_sideA_ae_iface: str
+    iptrunk_sideA_ae_geant_a_sid: str
+    iptrunk_sideA_ae_members: list
+    #
+    iptrunk_sideB_fqdn: str
+    iptrunk_sideB_ae_iface: str
+    iptrunk_sideB_ae_geant_a_sid: str
+    iptrunk_sideB_ae_members: list
diff --git a/gso/products/product_blocks/iptrunks.py b/gso/products/product_blocks/iptrunks.py
deleted file mode 100644
index 37a26c171997bdbff823535274feec332d7a71ec..0000000000000000000000000000000000000000
--- a/gso/products/product_blocks/iptrunks.py
+++ /dev/null
@@ -1,88 +0,0 @@
-from typing import Optional
-
-from orchestrator.domain.base import ProductBlockModel
-from orchestrator.types import SubscriptionLifecycle
-import ipaddress
-
-#  - id: GS-00012
-#    name: AMS2-LON-IPTRUNK-100G
-#    config:
-#      common:
-#        speed: '100'
-#        is_leased_line: false
-#        isis_metric: '9000'
-#        minimum_links: 1
-#      nodeA:
-#        name: rt2.ams.nl.geant.net
-#        ae_name: ae2
-#        ipv4_address: 62.40.98.164/31
-#        ipv6_address: 2001:798:cc::5/126
-#        members:
-#          - et-0/0/0
-#        port_id: GA-02036
-#      nodeB:
-#        name: mx1.lon.uk.geant.net
-#        ae_name: ae8
-#        ipv4_address: 62.40.98.165/31
-#        ipv6_address: 2001:798:cc::6/126
-#        members:
-#          - et-4/0/2
-#        port_id: GA-01834
-
-
-class DeviceBlockInactive(ProductBlockModel,
-                          lifecycle=[SubscriptionLifecycle.INITIAL],
-                          product_block_name="DeviceBlock"):
-    geant_s_sid: Optional[str] = None
-    iptrunk_speed: Optional[str] = None
-    iptrunk_minimum_links: Optional[int] = None
-    iptrunk_ipv4_network: Optional[ipaddress.IPv4Network] = None
-    iptrunk_ipv6_network: Optional[ipaddress.IPv6Network] = None
-    #
-    iptrunk_sideA_fqdn: Optional[str] = None 
-    iptrunk_sideA_ae_iface: Optional[str] = None 
-    iptrunk_sideA_ae_geant_a_sid: Optional[str] = None 
-    iptrunk_sideA_ae_members: Optional[list] = None 
-    #
-    iptrunk_sideB_fqdn: Optional[str] = None 
-    iptrunk_sideB_ae_iface: Optional[str] = None 
-    iptrunk_sideB_ae_geant_a_sid: Optional[str] = None 
-    iptrunk_sideB_ae_members: Optional[list] = None 
-
-
-class DeviceBlockProvisioning(DeviceBlockInactive,
-                              lifecycle=[SubscriptionLifecycle.PROVISIONING]):
-    fqdn: str
-    ts_address: str
-    ts_port: str
-    lo_ipv4_address: Optional[ipaddress.IPv4Address] = None
-    lo_ipv6_address: Optional[ipaddress.IPv6Address] = None
-    lo_iso_address: Optional[str] = None
-    si_ipv4_network: Optional[ipaddress.IPv4Network] = None
-    ias_lt_ipv4_network: Optional[ipaddress.IPv4Network] = None
-    ias_lt_ipv6_network: Optional[ipaddress.IPv6Network] = None
-    site_city: Optional[str] = None
-    site_country: Optional[str] = None
-    site_country_code: Optional[str] = None
-    site_latitude: Optional[str] = None
-    site_longitude: Optional[str] = None
-    snmp_location: Optional[str] = None
-
-
-class DeviceBlock(DeviceBlockProvisioning,
-                  lifecycle=[SubscriptionLifecycle.ACTIVE]):
-    fqdn: str
-    ts_address: str
-    ts_port: str
-    lo_ipv4_address: ipaddress.IPv4Address
-    lo_ipv6_address: ipaddress.IPv6Address
-    lo_iso_address: str
-    si_ipv4_network: ipaddress.IPv4Network
-    ias_lt_ipv4_network: ipaddress.IPv4Network
-    ias_lt_ipv6_network: ipaddress.IPv6Network
-    site_city: str
-    site_country: str
-    site_country_code: str
-    site_latitude: str
-    site_longitude: str
-    snmp_location: str