diff --git a/roles/ipabackup/tasks/main.yml b/roles/ipabackup/tasks/main.yml
index 148913f7edcde4550c97bd3ced8164429b2c1fc2..1ae6b28141ed034534e4ff500969babcca279197 100644
--- a/roles/ipabackup/tasks/main.yml
+++ b/roles/ipabackup/tasks/main.yml
@@ -26,6 +26,12 @@
   fail: msg="ipabackup_from_controller and ipabackup_to_controller are set"
   when: ipabackup_from_controller | bool and ipabackup_to_controller | bool
 
+- name: Fail for given ipabackup_name if state is not copied, restored or absent
+  fail: msg="ipabackup_name is given and state is not copied, restored or absent"
+  when: state is not defined or
+        (state != "copied" and state != "restored" and state != "absent") and
+        ipabackup_name is defined
+
 - name: Get ipabackup_dir from IPA installation
   include_tasks: "{{ role_path }}/tasks/get_ipabackup_dir.yml"
 
@@ -33,12 +39,6 @@
   include_tasks: "{{ role_path }}/tasks/backup.yml"
   when: state|default("present") == "present"
 
-- name: Fail for given ipabackup_name if state is not copied, restored or absent
-  fail: msg="ipabackup_name is given and state is not copied, restored or absent"
-  when: state is not defined or
-        (state != "copied" and state != "restored" and state != "absent") and
-        ipabackup_name is defined
-
 - name: Fail on missing ipabackup_name
   fail: msg="ipabackup_name is not set"
   when: (ipabackup_name is not defined or not ipabackup_name) and
diff --git a/tests/backup_role/test_backup.yml b/tests/backup_role/test_backup.yml
index 5060e8024f0a16b8b995e4c59fd6456373b57601..9f68656f0948ff5ebadcc43387dd3dcb4b1b30e3 100644
--- a/tests/backup_role/test_backup.yml
+++ b/tests/backup_role/test_backup.yml
@@ -383,6 +383,31 @@
       loop_var: server_backup_data
       label: server_backup_data.path
 
+  # Test issue #900
+  - name: Remove all backup from server.
+    ansible.builtin.include_role:
+      name: ipabackup
+    vars:
+      state: absent
+      ipabackup_name: all
+
+  - name: Test issue 900 fix.
+    block:
+      - name: Invalid role configuration that should not produce a backup on the server.
+        ansible.builtin.include_role:
+          name: ipabackup
+        vars:
+          state: present
+          ipabackup_name: this_must_fail
+    rescue:
+      - name: List all existing backups on server
+        ansible.builtin.find:
+          path: /var/lib/ipa/backup
+          recurse: no
+          file_type: directory
+        register: server_backups
+        failed_when: server_backups.files
+
   # CLEANUP
 
   - name: List all existing backups on controller