diff --git a/gso/services/provisioning_proxy.py b/gso/services/provisioning_proxy.py
index 56a0b807d6ea46cf2270a6d3f0c787abee82714a..5e3fe962e154969617ca9e26c27225b187715d48 100644
--- a/gso/services/provisioning_proxy.py
+++ b/gso/services/provisioning_proxy.py
@@ -124,6 +124,24 @@ def provision_ip_trunk(
 
     _send_request("ip_trunk", parameters, process_id, CUDOperation.POST)
 
+def check_ip_trunk(
+    subscription: IptrunkProvisioning, process_id: UUIDstr, check_name: str
+) -> None:
+    """Provision an IP trunk service using {term}`LSO`.
+
+    :param subscription: The subscription object that's to be provisioned.
+    :type subscription: {class}`IptrunkProvisioning`
+    :param process_id: The related process ID, used for callback.
+    :type process_id: UUIDstr
+    :param check_name: The name of the check to execute
+    :rtype: None
+    """
+    parameters = {
+        "subscription": json.loads(json_dumps(subscription)),
+        "check_name": check_name,
+    }
+
+    _send_request("ip_trunk/perform_check", parameters, process_id, CUDOperation.POST)
 
 def deprovision_ip_trunk(subscription: Iptrunk, process_id: UUIDstr, dry_run: bool = True) -> None:
     """Deprovision an IP trunk service using {term}`LSO`.
diff --git a/gso/workflows/device/insert_in_ibgp.py b/gso/workflows/device/insert_in_ibgp.py
new file mode 100644
index 0000000000000000000000000000000000000000..3383cf3b856a60f8e5a1bfaeea1e23f93cde325a
--- /dev/null
+++ b/gso/workflows/device/insert_in_ibgp.py
@@ -0,0 +1,84 @@
+import ipaddress
+import re
+from uuid import uuid4
+
+from orchestrator.db.models import ProductTable, SubscriptionTable
+
+# noinspection PyProtectedMember
+from orchestrator.forms import FormPage
+from orchestrator.forms.validators import Choice
+from orchestrator.targets import Target
+from orchestrator.types import FormGenerator, State
+from orchestrator.types import SubscriptionLifecycle, UUIDstr
+from orchestrator.workflow import done, init, step, workflow
+from orchestrator.workflows.steps import resync, store_process_subscription, unsync
+
+from orchestrator.workflows.utils import wrap_modify_initial_input_form
+from gso.products.product_blocks import device as device_pb
+from gso.products.product_types import device
+from gso.products.product_types.device import (
+    Device,
+)
+from gso.products.product_types.site import Site
+from gso.services import _ipam
+
+def initial_input_form_generator(subscription_id: UUIDstr) -> FormGenerator:
+    subscription = Device.from_subscription(subscription_id)
+
+    class SimoneDeviceForm(FormPage):
+        class Config:
+            random_input: str
+
+    user_input = yield SimoneDeviceForm
+
+    return user_input.dict()
+
+@step("Show the devices")
+def display_devices() -> State:
+    devices = []
+    for subscription_id in (
+        SubscriptionTable.query.join(ProductTable)
+        .filter(
+            ProductTable.product_type == "Device",
+            SubscriptionTable.status == "active",
+        )
+        .with_entities(
+            SubscriptionTable.subscription_id,
+        )
+        .all()
+    ):
+        devices.append(Device.from_subscription(subscription_id))
+
+    pe_devices = []
+    p_devices = []
+
+    for device in devices :
+        if device.device.device_access_via_ts == False :
+            if device.device.device_role == "p":
+               p_devices.append(device)
+            if device.device.device_role == "pe":
+               pe_devices.append(device)
+
+    return {
+        "pe_devices": pe_devices,
+        "p_devices": p_devices,
+    }
+
+
+@workflow(
+    "Add node to iBGP",
+    initial_input_form=wrap_modify_initial_input_form(
+        initial_input_form_generator
+    ),
+    target=Target.MODIFY,
+)
+
+def insert_in_ibgp():
+    return (
+        init
+        >> store_process_subscription(Target.MODIFY)
+        >> unsync
+        >> display_devices
+        >> resync
+        >> done
+    )
\ No newline at end of file
diff --git a/gso/workflows/iptrunk/create_iptrunk.py b/gso/workflows/iptrunk/create_iptrunk.py
index 222d8a9795d410d763686afda793bf4cc8fa3631..f0c4b2cb2be39013ae163396a56515a7d16a9f09 100644
--- a/gso/workflows/iptrunk/create_iptrunk.py
+++ b/gso/workflows/iptrunk/create_iptrunk.py
@@ -172,6 +172,14 @@ def provision_ip_trunk_iface_real(subscription: IptrunkProvisioning, process_id:
         "label_text": "Provisioning a trunk interface, please refresh to get the results of the playbook.",
     }
 
+@step("Check IP connectivity of the trunk")
+def check_ip_trunk_connectivity(subscription: IptrunkProvisioning, process_id: UUIDstr) -> State:
+    provisioning_proxy.check_ip_trunk(subscription, process_id, "ping")
+
+    return {
+        "subscription": subscription,
+        "label_text": "Checking IP traffic flow on the trunk, to get the results of the playbook.",
+    }
 
 @step("Provision IP trunk ISIS interface [DRY RUN]")
 def provision_ip_trunk_isis_iface_dry(subscription: IptrunkProvisioning, process_id: UUIDstr) -> State:
@@ -193,6 +201,15 @@ def provision_ip_trunk_isis_iface_real(subscription: IptrunkProvisioning, proces
     }
 
 
+@step("Check ISIS adjacency")
+def check_ip_trunk_isis(subscription: IptrunkProvisioning, process_id: UUIDstr) -> State:
+    provisioning_proxy.check_ip_trunk(subscription, process_id, "isis")
+
+    return {
+        "subscription": subscription,
+        "label_text": "Checking ISIS adjacencies, please refresh to get the results of the playbook.",
+    }
+
 @step("Provision IP trunk LDP interface [DRY RUN]")
 def provision_ip_trunk_ldp_iface_dry(subscription: IptrunkProvisioning, process_id: UUIDstr) -> State:
     provisioning_proxy.provision_ip_trunk(subscription, process_id, "ldp_interface")
@@ -247,10 +264,10 @@ def create_iptrunk() -> StepList:
         >> get_info_from_ipam
         >> pp_interaction(provision_ip_trunk_iface_dry, 3)
         >> pp_interaction(provision_ip_trunk_iface_real, 3)
+        >> check_ip_trunk_connectivity
         >> pp_interaction(provision_ip_trunk_isis_iface_dry, 3)
         >> pp_interaction(provision_ip_trunk_isis_iface_real, 3)
-        >> pp_interaction(provision_ip_trunk_ldp_iface_dry, 3)
-        >> pp_interaction(provision_ip_trunk_ldp_iface_real, 3)
+        >> check_ip_trunk_isis
         >> pp_interaction(provision_ip_trunk_lldp_iface_dry, 3)
         >> pp_interaction(provision_ip_trunk_lldp_iface_real, 3)
         >> set_status(SubscriptionLifecycle.ACTIVE)