diff --git a/.ansible-lint b/.ansible-lint
index 00671fe2bf45a12d86eec2c8a4e1fe85c3abb9b8..2f674e4732b9c3c7c911054d16515e7359f470b0 100644
--- a/.ansible-lint
+++ b/.ansible-lint
@@ -3,3 +3,4 @@ skip_list:
   - 'role-name[path]' # Avoid using paths when importing roles.
   - 'meta-runtime[unsupported-version]' # requires_ansible key must be set to a supported version.
   - 'meta-unsupported-ansible'  # Required ansible version in meta/runtime.yml must be a supported version.
+  - 'var-naming[no-role-prefix]'
diff --git a/geant/ops_ansible/CHANGELOG.md b/geant/ops_ansible/CHANGELOG.md
index 935129e946caa210919a70a24523fdd5f90e6b74..4d7ddebcaad665941d6240b7517aa26b79bd4a30 100644
--- a/geant/ops_ansible/CHANGELOG.md
+++ b/geant/ops_ansible/CHANGELOG.md
@@ -1,9 +1,24 @@
-# Changelog
-## 1.0.4 2023-08-04
-- Changes in the role 'cic_generic':
-    - Added support for fixing a stanza: a new verb 'fix' to work with the fix_template.
-    - Added support for Junos 'system_login' stanza.
-## 1.0.3 2023-08-02
-- Added cic_generic role to manage the test of arbitrary templates against the network.
-- Config push strategy is now template-dependant: you should decide if you want a replace or a merge
-- Added email generation for test runs that generates differences
+Changelog
+=========
+1.0.5 2023-10-13
+
+Changes in the role 'cic_generic':
+
+- system_login stanza is in the 'replace' mode.
+- Added support for system_dns stanza
+
+
+1.0.4 2023-08-04
+
+Changes in the role 'cic_generic':
+
+Added support for fixing a stanza: a new verb 'fix' to work with the fix_template.
+Added support for Junos 'system_login' stanza.
+
+
+
+1.0.3 2023-08-02
+
+Added cic_generic role to manage the test of arbitrary templates against the network.
+Config push strategy is now template-dependant: you should decide if you want a replace or a merge
+Added email generation for test runs that generates differences
diff --git a/geant/ops_ansible/roles/cic_generic/tasks/main.yml b/geant/ops_ansible/roles/cic_generic/tasks/main.yml
index 3c862bce8c33fd14b2a19954cb2235af947c66d5..7c26c1ef0d61ebb4b00924c44a3e2a6121c6fc43 100644
--- a/geant/ops_ansible/roles/cic_generic/tasks/main.yml
+++ b/geant/ops_ansible/roles/cic_generic/tasks/main.yml
@@ -21,6 +21,30 @@
   ansible.builtin.debug:
     msg: "{{ opid }}"
 
+- name: Merge system login user vars
+  merge_vars:
+    suffix_to_merge: users__to_merge
+    merged_var_name: system_login_users
+    expected_type: 'list'
+
+- name: Merge system login classes vars
+  merge_vars:
+    suffix_to_merge: classes__to_merge
+    merged_var_name: system_login_classes
+    expected_type: 'list'
+
+- name: Merge snmp communities vars
+  merge_vars:
+    suffix_to_merge: snmp_communities__to_merge
+    merged_var_name: snmp_communities
+    expected_type: 'list'
+
+- name: Merge prefix lists
+  merge_vars:
+    suffix_to_merge: prefix_lists__to_merge
+    merged_var_name: po_prefixlists
+    expected_type: 'list'
+
 - name: Include compiling the template
   ansible.builtin.include_tasks: compile_template.yaml
   when: (verb in verbs)
@@ -28,3 +52,7 @@
 - name: Include the test tasks if specified
   ansible.builtin.include_tasks: test_template.yaml
   when: verb == "test"
+
+- name: Include the test tasks if specified
+  ansible.builtin.include_tasks: fix_template.yaml
+  when: verb == "fix"
diff --git a/geant/ops_ansible/roles/cic_generic/tasks/test_template.yaml b/geant/ops_ansible/roles/cic_generic/tasks/test_template.yaml
index 4125f2bdb47426b725d3535393d0622447c66b3e..ed7f42373cc9b1993c205b0cbae8e561bf60d6b7 100644
--- a/geant/ops_ansible/roles/cic_generic/tasks/test_template.yaml
+++ b/geant/ops_ansible/roles/cic_generic/tasks/test_template.yaml
@@ -1,5 +1,6 @@
 ---
-- name: Verify "{{ config_object }}" [CHECK ONLY]
+### This task will fail if commit-check fails
+- name: Test "{{ config_object }}" [CHECK ONLY]
   juniper_junos_config:
     load: "{{ config_objects[config_object].strategy }}"
     src: "/var/tmp/ansible_run_{{ opid }}/{{ config_object }}.conf"
@@ -8,15 +9,23 @@
     check: true
     commit: false
   register: response
-  when: verb == "test" and (dry_run | ansible.builtin.bool)
+  when: verb == "test" and dry_run | ansible.builtin.bool
 
+### This task never fails. It only shows differences if ther are any
+### but commit-check in the previous task should succeed
 - name: Show DRY diff of "{{ config_object }}"
   ansible.builtin.debug:
     msg: "{{ response }}"
   when: verb == "test" and (dry_run | ansible.builtin.bool) and (response.changed | ansible.builtin.bool)
 
+# ### This task will artificially fail if there is config that needs to be added or removed
+# - name: Fail if there are diffs
+#   ansible.builtin.fail:
+#     msg: "Running configuration is not the same as the intended"
+#   when: response.changed == true
+
 - name: Send an e-mail using Geant SMTP servers
-  community.general.notification.mail:
+  community.general.mail:
     host: "{{ cic_alerts_mail_host }}"
     port: "{{ cic_alerts_smtp_port }}"
     sender: "{{ cic_alerts_sender }}"
diff --git a/geant/ops_ansible/roles/cic_generic/templates/system_dns.j2 b/geant/ops_ansible/roles/cic_generic/templates/system_dns.j2
new file mode 100644
index 0000000000000000000000000000000000000000..55251f64d76d96a03e52b48ee8991d17f678e5ce
--- /dev/null
+++ b/geant/ops_ansible/roles/cic_generic/templates/system_dns.j2
@@ -0,0 +1,15 @@
+system {
+{% if system_name_servers is defined %}
+  {% if system_name_servers|length > 1 %}
+  replace: name-server {
+  {%- for name_server in system_name_servers %}
+    {{ name_server }};
+    {%- endfor %}
+  }
+{% else %}
+  {%- for name_server in system_name_servers %}
+  replace: name-server {{ name_server }};
+  {% endfor %}
+  {% endif %}
+ {% endif %}
+}
diff --git a/geant/ops_ansible/roles/cic_generic/templates/system_login.j2 b/geant/ops_ansible/roles/cic_generic/templates/system_login.j2
index e76db0d7795567c97a30056b017647ee11613e78..e7cbade1c5b9633cf36843147d74955eb56ed587 100644
--- a/geant/ops_ansible/roles/cic_generic/templates/system_login.j2
+++ b/geant/ops_ansible/roles/cic_generic/templates/system_login.j2
@@ -70,6 +70,7 @@ replace: login {
       {% endfor %}
       }
     {% endif %}
+    message "----------------------------------------------------------------\n\n This is {{ inventory_hostname }} a GEANT Router in {{ site_city }}, {{ site_country }}.\n Warning: Unauthorized access to this equipment is strictly forbidden and will lead to prosecution \n\n-------------------------------------------------------------\n";
  }
 }
 
diff --git a/geant/ops_ansible/roles/cic_generic/vars/main.yml b/geant/ops_ansible/roles/cic_generic/vars/main.yml
index b6cfa481802d0ac175020c7a3ee2d465077e612d..52d7c1b1a69e31001cf85add531d6ebafe57f536 100644
--- a/geant/ops_ansible/roles/cic_generic/vars/main.yml
+++ b/geant/ops_ansible/roles/cic_generic/vars/main.yml
@@ -25,4 +25,6 @@ config_objects:
   system_ntp:
     strategy: replace
   system_login:
-    strategy: merge
+    strategy: replace
+  system_dns:
+    strategy: replace
diff --git a/geant/ops_ansible/roles/manage_global_prefix_lists/tasks/main.yml b/geant/ops_ansible/roles/manage_global_prefix_lists/tasks/main.yml
index 4191e3b5705dd262acf6217be8c76c96c1f024da..de3f336d5a91f7577b26533b20842d8d4a759e40 100644
--- a/geant/ops_ansible/roles/manage_global_prefix_lists/tasks/main.yml
+++ b/geant/ops_ansible/roles/manage_global_prefix_lists/tasks/main.yml
@@ -49,7 +49,7 @@
   when: verb == "deploy" and ( dry_run | ansible.builtin.bool )
 
 - name: Send an e-mail using Geant SMTP servers
-  community.general.notification.mail:
+  community.general.mail:
     host: "{{ cic_alerts_mail_host }}"
     port: "{{ cic_alerts_smtp_port }}"
     sender: "{{ cic_alerts_sender }}"