diff --git a/gso/migrations/versions/2023-08-07_7728b3ef410c_modify_sites_and_device_pb.py b/gso/migrations/versions/2023-08-07_7728b3ef410c_modify_sites_and_device_pb.py
new file mode 100644
index 0000000000000000000000000000000000000000..176403a5fb7e4ceb661e76b511f8a5dbd6cf4641
--- /dev/null
+++ b/gso/migrations/versions/2023-08-07_7728b3ef410c_modify_sites_and_device_pb.py
@@ -0,0 +1,111 @@
+"""Modify sites and device PB.
+
+Revision ID: 7728b3ef410c
+Revises: e57ebfade80b
+Create Date: 2023-08-07 12:53:31.090424
+
+"""
+import sqlalchemy as sa
+from alembic import op
+
+# revision identifiers, used by Alembic.
+revision = '7728b3ef410c'
+down_revision = 'e57ebfade80b'
+branch_labels = None
+depends_on = None
+
+
+def upgrade() -> None:
+    conn = op.get_bind()
+    conn.execute("""
+DELETE FROM product_block_resource_types WHERE product_block_resource_types.product_block_id IN (SELECT product_blocks.product_block_id FROM product_blocks WHERE product_blocks.name IN ('DeviceBlock')) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('device_ts_address'))
+    """)
+    conn.execute("""
+DELETE FROM subscription_instance_values USING product_block_resource_types WHERE subscription_instance_values.subscription_instance_id IN (SELECT subscription_instances.subscription_instance_id FROM subscription_instances WHERE subscription_instances.subscription_instance_id IN (SELECT product_blocks.product_block_id FROM product_blocks WHERE product_blocks.name IN ('DeviceBlock'))) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('device_ts_address'))
+    """)
+    conn.execute("""
+DELETE FROM subscription_instance_values WHERE subscription_instance_values.resource_type_id IN (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('device_ts_address'))
+    """)
+    conn.execute("""
+DELETE FROM resource_types WHERE resource_types.resource_type IN ('device_ts_address')
+    """)
+    conn.execute("""
+INSERT INTO resource_types (resource_type, description) VALUES ('device_is_ias_connected', 'device has lt to IAS') RETURNING resource_types.resource_type_id
+    """)
+    conn.execute("""
+INSERT INTO resource_types (resource_type, description) VALUES ('site_ts_address', 'Address of the terminal server') RETURNING resource_types.resource_type_id
+    """)
+    conn.execute("""
+INSERT INTO product_block_resource_types (product_block_id, resource_type_id) VALUES ((SELECT product_blocks.product_block_id FROM product_blocks WHERE product_blocks.name IN ('SiteBlock')), (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('site_ts_address')))
+    """)
+    conn.execute("""
+INSERT INTO product_block_resource_types (product_block_id, resource_type_id) VALUES ((SELECT product_blocks.product_block_id FROM product_blocks WHERE product_blocks.name IN ('DeviceBlock')), (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('device_is_ias_connected')))
+    """)
+    conn.execute("""
+
+                WITH subscription_instance_ids AS (
+                    SELECT subscription_instances.subscription_instance_id
+                    FROM   subscription_instances
+                    WHERE  subscription_instances.product_block_id IN (
+                        SELECT product_blocks.product_block_id
+                        FROM   product_blocks
+                        WHERE  product_blocks.name = 'SiteBlock'
+                    )
+                )
+
+                INSERT INTO
+                    subscription_instance_values (subscription_instance_id, resource_type_id, value)
+                SELECT
+                    subscription_instance_ids.subscription_instance_id,
+                    resource_types.resource_type_id,
+                    'Address of the terminal server'
+                FROM resource_types
+                CROSS JOIN subscription_instance_ids
+                WHERE resource_types.resource_type = 'site_ts_address'
+        
+    """)
+    conn.execute("""
+
+                WITH subscription_instance_ids AS (
+                    SELECT subscription_instances.subscription_instance_id
+                    FROM   subscription_instances
+                    WHERE  subscription_instances.product_block_id IN (
+                        SELECT product_blocks.product_block_id
+                        FROM   product_blocks
+                        WHERE  product_blocks.name = 'DeviceBlock'
+                    )
+                )
+
+                INSERT INTO
+                    subscription_instance_values (subscription_instance_id, resource_type_id, value)
+                SELECT
+                    subscription_instance_ids.subscription_instance_id,
+                    resource_types.resource_type_id,
+                    'true'
+                FROM resource_types
+                CROSS JOIN subscription_instance_ids
+                WHERE resource_types.resource_type = 'device_is_ias_connected'
+        
+    """)
+
+
+def downgrade() -> None:
+    conn = op.get_bind()
+    conn.execute("""
+DELETE FROM product_block_resource_types WHERE product_block_resource_types.product_block_id IN (SELECT product_blocks.product_block_id FROM product_blocks WHERE product_blocks.name IN ('SiteBlock')) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('site_ts_address'))
+    """)
+    conn.execute("""
+DELETE FROM subscription_instance_values USING product_block_resource_types WHERE subscription_instance_values.subscription_instance_id IN (SELECT subscription_instances.subscription_instance_id FROM subscription_instances WHERE subscription_instances.subscription_instance_id IN (SELECT product_blocks.product_block_id FROM product_blocks WHERE product_blocks.name IN ('SiteBlock'))) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('site_ts_address'))
+    """)
+    conn.execute("""
+DELETE FROM product_block_resource_types WHERE product_block_resource_types.product_block_id IN (SELECT product_blocks.product_block_id FROM product_blocks WHERE product_blocks.name IN ('DeviceBlock')) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('device_is_ias_connected'))
+    """)
+    conn.execute("""
+DELETE FROM subscription_instance_values USING product_block_resource_types WHERE subscription_instance_values.subscription_instance_id IN (SELECT subscription_instances.subscription_instance_id FROM subscription_instances WHERE subscription_instances.subscription_instance_id IN (SELECT product_blocks.product_block_id FROM product_blocks WHERE product_blocks.name IN ('DeviceBlock'))) AND product_block_resource_types.resource_type_id = (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('device_is_ias_connected'))
+    """)
+    conn.execute("""
+DELETE FROM subscription_instance_values WHERE subscription_instance_values.resource_type_id IN (SELECT resource_types.resource_type_id FROM resource_types WHERE resource_types.resource_type IN ('device_is_ias_connected', 'site_ts_address'))
+    """)
+    conn.execute("""
+DELETE FROM resource_types WHERE resource_types.resource_type IN ('device_is_ias_connected', 'site_ts_address')
+    """)
diff --git a/gso/products/product_blocks/device.py b/gso/products/product_blocks/device.py
index 301b51c79d36956f85414b2ac41a0978a9ad9e05..b3545e991cdaec21f66dd0cf85a0f3d2a06f8f3b 100644
--- a/gso/products/product_blocks/device.py
+++ b/gso/products/product_blocks/device.py
@@ -34,7 +34,6 @@ class DeviceBlockInactive(
     """A device that's being currently inactive. See {class}`DeviceBlock`."""
 
     device_fqdn: Optional[str] = None
-    device_ts_address: Optional[str] = None
     device_ts_port: Optional[int] = None
     device_access_via_ts: Optional[bool] = None
     device_lo_ipv4_address: Optional[ipaddress.IPv4Address] = None
@@ -46,13 +45,13 @@ class DeviceBlockInactive(
     device_vendor: Optional[DeviceVendor] = None
     device_role: Optional[DeviceRole] = None
     device_site: Optional[SiteBlockInactive]
+    device_is_ias_connected: Optional[bool] = None
 
 
 class DeviceBlockProvisioning(DeviceBlockInactive, lifecycle=[SubscriptionLifecycle.PROVISIONING]):
     """A device that's being provisioned. See {class}`DeviceBlock`."""
 
     device_fqdn: str
-    device_ts_address: str
     device_ts_port: int
     device_access_via_ts: Optional[bool] = None
     device_lo_ipv4_address: Optional[ipaddress.IPv4Address] = None
@@ -64,6 +63,7 @@ class DeviceBlockProvisioning(DeviceBlockInactive, lifecycle=[SubscriptionLifecy
     device_vendor: Optional[DeviceVendor] = None
     device_role: Optional[DeviceRole] = None
     device_site: Optional[SiteBlockProvisioning]
+    device_is_ias_connected: Optional[bool] = None
 
 
 class DeviceBlock(DeviceBlockProvisioning, lifecycle=[SubscriptionLifecycle.ACTIVE]):
@@ -71,10 +71,6 @@ class DeviceBlock(DeviceBlockProvisioning, lifecycle=[SubscriptionLifecycle.ACTI
 
     device_fqdn: str
     """{term}`FQDN` of a device."""
-    device_ts_address: str
-    """The address of the terminal server that this device is connected to. The terminal server provides out of band
-    access. This is required in case a link goes down, or when a device is initially added to the network and it does
-    not have any IP trunks connected to it yet."""
     device_ts_port: int
     """The port of the terminal server that this device is connected to. Used for the same reason as mentioned
     previously."""
@@ -86,11 +82,11 @@ class DeviceBlock(DeviceBlockProvisioning, lifecycle=[SubscriptionLifecycle.ACTI
     """The IPv6 loopback address of the device."""
     device_lo_iso_address: str
     """The {term}`ISO` {term}`NET` of the device, used for {term}`IS-IS` support."""
-    device_si_ipv4_network: ipaddress.IPv4Network
+    device_si_ipv4_network: Optional[ipaddress.IPv4Network]
     """The SI IPv4 network of the device."""
-    device_ias_lt_ipv4_network: ipaddress.IPv4Network
+    device_ias_lt_ipv4_network: Optional[ipaddress.IPv4Network]
     """The IAS LT IPv4 network of the device."""
-    device_ias_lt_ipv6_network: ipaddress.IPv6Network
+    device_ias_lt_ipv6_network: Optional[ipaddress.IPv6Network]
     """The IAS LT IPv6 network of the device."""
     device_vendor: DeviceVendor
     """The vendor of the device, can be any of the values defined in {class}`DeviceVendor`."""
@@ -98,3 +94,5 @@ class DeviceBlock(DeviceBlockProvisioning, lifecycle=[SubscriptionLifecycle.ACTI
     """The role of the device, which can be any of the values defined in {class}`DeviceRole`."""
     device_site: SiteBlock
     """The {class}`Site` that this device resides in. Both physically and computationally."""
+    device_is_ias_connected: bool
+    """The device is going to have a lt interface between inet0 and IAS"""
diff --git a/gso/products/product_blocks/site.py b/gso/products/product_blocks/site.py
index 6137b824f264b2e71d2c0fdcc03b031838f8e9d1..0364b094eae2aad9de9888219611b21159808613 100644
--- a/gso/products/product_blocks/site.py
+++ b/gso/products/product_blocks/site.py
@@ -31,6 +31,7 @@ class SiteBlockInactive(ProductBlockModel, lifecycle=[SubscriptionLifecycle.INIT
     site_internal_id: Optional[int] = None
     site_bgp_community_id: Optional[int] = None
     site_tier: Optional[SiteTier] = None
+    site_ts_address: Optional[str] = None
 
 
 class SiteBlockProvisioning(SiteBlockInactive, lifecycle=[SubscriptionLifecycle.PROVISIONING]):
@@ -45,6 +46,7 @@ class SiteBlockProvisioning(SiteBlockInactive, lifecycle=[SubscriptionLifecycle.
     site_internal_id: Optional[int] = None
     site_bgp_community_id: Optional[int] = None
     site_tier: Optional[SiteTier] = None
+    site_ts_address: Optional[str] = None
 
 
 class SiteBlock(SiteBlockProvisioning, lifecycle=[SubscriptionLifecycle.ACTIVE]):
@@ -70,3 +72,7 @@ class SiteBlock(SiteBlockProvisioning, lifecycle=[SubscriptionLifecycle.ACTIVE])
     """The {term}`BGP` community ID of a site, used to advertise routes learned at this site."""
     site_tier: SiteTier
     """The tier of a site, as described in {class}`SiteTier`."""
+    site_ts_address: Optional[str] = None
+    """The address of the terminal server that this device is connected to. The terminal server provides out of band
+    access. This is required in case a link goes down, or when a device is initially added to the network and it does
+    not have any IP trunks connected to it yet."""