diff --git a/geant/gap_ansible/roles/edge_port/tasks/compile.yaml b/geant/gap_ansible/roles/edge_port/tasks/compile.yaml
index 0cdaff1aaa784e4c48778753bd9be200075ef2ea..3b47ff326682de61108c17d0c311d763703f0038 100644
--- a/geant/gap_ansible/roles/edge_port/tasks/compile.yaml
+++ b/geant/gap_ansible/roles/edge_port/tasks/compile.yaml
@@ -7,7 +7,7 @@
     ansible_connection: local
 
 - name: Print the template in "{{ play_storage_path }}/edge_port_{{ verb }}.conf"
-  when: verb == "create"
+  when: verb in verbs
   ansible.builtin.template:
     src: "{{ router.vendor }}/edge_port_{{ verb }}.j2"
     dest: "{{ play_storage_path }}/edge_port_{{ verb }}.conf"
diff --git a/geant/gap_ansible/roles/edge_port/tasks/deploy.yaml b/geant/gap_ansible/roles/edge_port/tasks/deploy.yaml
index f6e3ee638440f299fcaefbfd7fa9c747bb6fc1e5..57cc6aa2ea419ccb361c4ab21d1dfaed40a962a1 100644
--- a/geant/gap_ansible/roles/edge_port/tasks/deploy.yaml
+++ b/geant/gap_ansible/roles/edge_port/tasks/deploy.yaml
@@ -2,6 +2,8 @@
 - name: Perform "{{ verb }}" Edge port on  "{{ inventory_hostname }}" [CHECK ONLY][NOKIA]
   when: >-
       dry_run | ansible.builtin.bool
+      and
+      router.vendor == "nokia"
   geant.gap_ansible.nokia_netconf_config:
     format: xml
     default_operation: merge
@@ -13,6 +15,18 @@
   register: output
   check_mode: true
 
+- name: Config deploy [CHECK ONLY][JUNIPER]
+  when: >
+    dry_run | ansible.builtin.bool
+    and
+    router.vendor == "juniper"
+  junipernetworks.junos.junos_config:
+    update: 'replace'
+    src: "{{ play_storage_path }}/edge_port_{{ verb }}.conf"
+    src_format: set
+    check_commit: true
+  diff: true
+  register: output
 
 - name: Fail if there is any diff
   ansible.builtin.fail:
@@ -26,6 +40,8 @@
 - name: Perform "{{ verb }}" Edge port on  "{{ inventory_hostname }}" [FOR REAL][NOKIA]
   when: >-
       not (dry_run | ansible.builtin.bool)
+      and
+      router.vendor == "nokia"
   geant.gap_ansible.nokia_netconf_config:
     format: xml
     default_operation: merge
@@ -36,3 +52,16 @@
   diff: true
   register: output
   check_mode: false
+
+
+- name: Config deploy [AND COMMIT][JUNIPER]
+  when: >
+    not dry_run | ansible.builtin.bool
+    and
+    router.vendor == "juniper"
+  junipernetworks.junos.junos_config:
+    update: 'replace'
+    src: "{{ play_storage_path }}/edge_port_{{ verb }}.conf"
+    src_format: set
+    comment: "{{ commit_comment }}"
+  diff: true
diff --git a/geant/gap_ansible/roles/edge_port/tasks/main.yml b/geant/gap_ansible/roles/edge_port/tasks/main.yml
index 2381bf691acb66f348966795bb9b8ac739e08c74..3e69831abb4bb1a51eefce780e7c381972f20260 100644
--- a/geant/gap_ansible/roles/edge_port/tasks/main.yml
+++ b/geant/gap_ansible/roles/edge_port/tasks/main.yml
@@ -16,12 +16,10 @@
 - name: Include deploy tasks
   when: >
     verb in verbs
-    and
-    router.vendor == 'nokia'
   ansible.builtin.include_tasks: deploy.yaml
 
-- name: Skip all for Juniper
-  when: >
-    router.vendor == 'juniper'
-  ansible.builtin.debug:
-    msg: "Juniper tasks skipped"
+# - name: Skip all for Juniper
+#   when: >
+#     router.vendor == 'juniper'
+#   ansible.builtin.debug:
+#     msg: "Juniper tasks skipped"
diff --git a/geant/gap_ansible/roles/edge_port/templates/juniper/edge_port_create.j2 b/geant/gap_ansible/roles/edge_port/templates/juniper/edge_port_create.j2
new file mode 100644
index 0000000000000000000000000000000000000000..e9be6984024a9fb6824221402dbd50a53363a39a
--- /dev/null
+++ b/geant/gap_ansible/roles/edge_port/templates/juniper/edge_port_create.j2
@@ -0,0 +1,18 @@
+{% set gaid_prefix = '$' %}
+{% set csn_prefix = '#' %}
+
+
+{% for member in  ep.edge_port_ae_members %}
+set interfaces {{ member.interface_name }} description "PHY CUSTOMER {{ partner_name }} P_{{ ep.edge_port_name }}{{ ' | '+member.interface_description if member.interface_description is string }}"
+set interfaces {{ member.interface_name }} gigether-options 802.3ad {{ ep.edge_port_name }}
+{% endfor %}
+
+set interfaces {{ ep.edge_port_name }} description "LAG {{ ep.edge_port_type }} {{ partner_name }}{{ ' | '+gaid_prefix+ep.ga_id if ep.ga_id is string }}{{ ' | '+csn_prefix+(ep.custom_service_name | replace("#","")) if ep.custom_service_name is string }}{{ ' | '+ep.edge_port_description if ep.edge_port_description is string }}"
+set interfaces {{ ep.edge_port_name }} {{ 'flexible-vlan-tagging' if ep.encapsulation == 'qinq' else 'vlan-tagging' }}
+set interfaces {{ ep.edge_port_name }} mtu 9192
+set interfaces {{ ep.edge_port_name }} encapsulation flexible-ethernet-services
+set interfaces {{ ep.edge_port_name }} aggregated-ether-options minimum-links {{ ep.minimum_links }}
+set interfaces {{ ep.edge_port_name }} aggregated-ether-options link-speed {{ ep.member_speed | lower }}
+{% if ep.enable_lacp %}
+set interfaces {{ ep.edge_port_name }} aggregated-ether-options lacp active
+{% endif %}
diff --git a/geant/gap_ansible/roles/edge_port/templates/juniper/edge_port_terminate.j2 b/geant/gap_ansible/roles/edge_port/templates/juniper/edge_port_terminate.j2
new file mode 100644
index 0000000000000000000000000000000000000000..68f1293d59d37afbb73eb787f4d27e9c821f5caf
--- /dev/null
+++ b/geant/gap_ansible/roles/edge_port/templates/juniper/edge_port_terminate.j2
@@ -0,0 +1,5 @@
+{% for member in  ep.edge_port_ae_members %}
+delete interfaces {{ member.interface_name }}
+{% endfor %}
+
+delete interfaces {{ ep.edge_port_name }}
diff --git a/geant/gap_ansible/roles/edge_port/templates/juniper/edge_port_update.j2 b/geant/gap_ansible/roles/edge_port/templates/juniper/edge_port_update.j2
new file mode 100644
index 0000000000000000000000000000000000000000..da7dcd307ad36bd6833f75a9e7d7edea33024d38
--- /dev/null
+++ b/geant/gap_ansible/roles/edge_port/templates/juniper/edge_port_update.j2
@@ -0,0 +1,23 @@
+{% set gaid_prefix = '$' %}
+{% set csn_prefix = '#' %}
+
+
+{% for member in  ep.edge_port_ae_members %}
+set interfaces {{ member.interface_name }} description "PHY CUSTOMER {{ partner_name }} P_{{ ep.edge_port_name }}{{ ' | '+member.interface_description if member.interface_description is string }}"
+set interfaces {{ member.interface_name }} gigether-options 802.3ad {{ ep.edge_port_name }}
+{% endfor %}
+{% if removed_ae_members is defined and removed_ae_members|length > 0 %}
+  {% for member in removed_ae_members %}
+delete interfaces {{ member.interface_name }}
+  {% endfor %}
+{% endif %}
+
+set interfaces {{ ep.edge_port_name }} description "LAG {{ ep.edge_port_type }} {{ partner_name }}{{ ' | '+gaid_prefix+ep.ga_id if ep.ga_id is string }}{{ ' | '+csn_prefix+(ep.custom_service_name | replace("#","")) if ep.custom_service_name is string }}{{ ' | '+ep.edge_port_description if ep.edge_port_description is string }}"
+set interfaces {{ ep.edge_port_name }} {{ 'flexible-vlan-tagging' if ep.encapsulation == 'qinq' else 'vlan-tagging' }}
+set interfaces {{ ep.edge_port_name }} mtu 9192
+set interfaces {{ ep.edge_port_name }} encapsulation flexible-ethernet-services
+set interfaces {{ ep.edge_port_name }} aggregated-ether-options minimum-links {{ ep.minimum_links }}
+set interfaces {{ ep.edge_port_name }} aggregated-ether-options link-speed {{ ep.member_speed | lower }}
+{% if ep.enable_lacp %}
+set interfaces {{ ep.edge_port_name }} aggregated-ether-options lacp active
+{% endif %}