diff --git a/geant/gap_ansible/playbooks/l3_core_service.yaml b/geant/gap_ansible/playbooks/l3_core_service.yaml
index 67139f81ab809941dfe0a2b786b3c34921ac06b9..6a3b921c493adfc2c3bd36b2c7ca172da9c5f572 100644
--- a/geant/gap_ansible/playbooks/l3_core_service.yaml
+++ b/geant/gap_ansible/playbooks/l3_core_service.yaml
@@ -75,6 +75,38 @@
     - name: Compile BGP-related config
       when: object == "bgp"
       block:
+        - name: Set BGP V4 session object to check for custom policies
+          ansible.builtin.set_fact:
+            bgp_session_v4: "{{ ap.sbp | json_query(query) }}"
+          vars:
+            query: "bgp_session_list[?ip_type == 'ipv4'] | [0]"
+          loop:
+            "{{ subscription.l3_core_service.ap_list }}"
+          loop_control:
+            loop_var: ap
+
+        - name: Set BGP V6 session object to check for custom policies
+          ansible.builtin.set_fact:
+            bgp_session_v6: "{{ ap.sbp | json_query(query) }}"
+          vars:
+            query: "bgp_session_list[?ip_type == 'ipv6'] | [0]"
+          loop:
+            "{{ subscription.l3_core_service.ap_list }}"
+          loop_control:
+            loop_var: ap
+
+        - name: Include PIM role if V4 multicast is enabled
+          when: >
+            bgp_session_v4.families is contains('mcast-ipv4') or bgp_session_v6 is contains('mcast-ipv6')
+            and
+            subscription.l3_core_service_type in ["GÉANT IP", "GEANT IP", "GEANT_IP"]
+          ansible.builtin.include_role:
+            name: pim
+          loop:
+            "{{ subscription.l3_core_service.ap_list }}"
+          loop_control:
+            loop_var: ap
+
         - name: Include Prefix-list role
           when: subscription.l3_core_service_type in ["GÉANT IP", "GEANT IP", "GEANT_IP"]
           ansible.builtin.include_role: