diff --git a/ironic_tempest_plugin/config.py b/ironic_tempest_plugin/config.py
index acf2542..d5c1ebf 100644
--- a/ironic_tempest_plugin/config.py
+++ b/ironic_tempest_plugin/config.py
@@ -1,6 +1,8 @@
 # Copyright 2015 NEC Corporation
 # All Rights Reserved.
 #
+# Copyright (c) 2022 Dell Inc. or its subsidiaries.
+#
 #    Licensed under the Apache License, Version 2.0 (the "License"); you may
 #    not use this file except in compliance with the License. You may obtain
 #    a copy of the License at
@@ -153,6 +155,12 @@
     cfg.ListOpt('enabled_raid_interfaces',
                 default=['no-raid', 'agent'],
                 help="List of Ironic enabled RAID interfaces."),
+    cfg.ListOpt('enabled_management_interfaces',
+                default=['fake', 'ipmitool', 'noop'],
+                help="List of Ironic enabled management interfaces."),
+    cfg.ListOpt('enabled_power_interfaces',
+                default=['fake', 'ipmitool'],
+                help="List of Ironic enabled power interfaces."),
     cfg.StrOpt('default_rescue_interface',
                help="Ironic default rescue interface."),
     cfg.IntOpt('adjusted_root_disk_size_gb',
diff --git a/ironic_tempest_plugin/tests/scenario/baremetal_standalone_manager.py b/ironic_tempest_plugin/tests/scenario/baremetal_standalone_manager.py
index 176f912..da7db4c 100644
--- a/ironic_tempest_plugin/tests/scenario/baremetal_standalone_manager.py
+++ b/ironic_tempest_plugin/tests/scenario/baremetal_standalone_manager.py
@@ -1,6 +1,8 @@
 #
 #    Copyright 2017 Mirantis Inc.
 #
+#    Copyright (c) 2022 Dell Inc. or its subsidiaries.
+#
 #    Licensed under the Apache License, Version 2.0 (the "License"); you may
 #    not use this file except in compliance with the License. You may obtain
 #    a copy of the License at
@@ -451,6 +453,18 @@
     # set via a different test).
     raid_interface = None
 
+    # The management interface to use by the HW type. The management interface
+    # of the node used in the test will be set to this value. If set to None,
+    # the node will retain its existing management_interface value (which may
+    # have been set via a different test).
+    management_interface = None
+
+    # The power interface to use by the HW type. The power interface of the
+    # node used in the test will be set to this value. If set to None, the
+    # node will retain its existing power_interface value (which may have been
+    # set via a different test).
+    power_interface = None
+
     # Boolean value specify if image is wholedisk or not.
     wholedisk_image = None
 
@@ -510,6 +524,20 @@
                 "in the list of enabled RAID interfaces %(enabled)s" % {
                     'iface': cls.raid_interface,
                     'enabled': CONF.baremetal.enabled_raid_interfaces})
+        if (cls.management_interface and cls.management_interface not in
+                CONF.baremetal.enabled_management_interfaces):
+            raise cls.skipException(
+                "Management interface %(iface)s required by test is not "
+                "in the list of enabled management interfaces %(enabled)s" % {
+                    'iface': cls.management_interface,
+                    'enabled': CONF.baremetal.enabled_management_interfaces})
+        if (cls.power_interface and cls.power_interface not in
+                CONF.baremetal.enabled_power_interfaces):
+            raise cls.skipException(
+                "Power interface %(iface)s required by test is not "
+                "in the list of enabled power interfaces %(enabled)s" % {
+                    'iface': cls.power_interface,
+                    'enabled': CONF.baremetal.enabled_power_interfaces})
         if not cls.wholedisk_image and CONF.baremetal.use_provision_network:
             raise cls.skipException(
                 'Partitioned images are not supported with multitenancy.')
@@ -548,6 +576,10 @@
             boot_kwargs['boot_interface'] = cls.boot_interface
         if cls.raid_interface:
             boot_kwargs['raid_interface'] = cls.raid_interface
+        if cls.management_interface:
+            boot_kwargs['management_interface'] = cls.management_interface
+        if cls.power_interface:
+            boot_kwargs['power_interface'] = cls.power_interface
 
         # just get an available node
         cls.node = cls.get_and_reserve_node()
diff --git a/ironic_tempest_plugin/tests/scenario/ironic_standalone/test_cleaning.py b/ironic_tempest_plugin/tests/scenario/ironic_standalone/test_cleaning.py
index 08abcfa..13fcd9b 100644
--- a/ironic_tempest_plugin/tests/scenario/ironic_standalone/test_cleaning.py
+++ b/ironic_tempest_plugin/tests/scenario/ironic_standalone/test_cleaning.py
@@ -1,6 +1,8 @@
 #
 # Copyright 2017 Mirantis Inc.
 #
+# Copyright (c) 2022 Dell Inc. or its subsidiaries.
+#
 # Licensed under the Apache License, Version 2.0 (the "License"); you may
 # not use this file except in compliance with the License. You may obtain
 # a copy of the License at
@@ -166,3 +168,62 @@
         # and remove it before exiting the test.
         self.remove_root_device_hint()
         self.terminate_node(self.node['uuid'], force_delete=True)
+
+
+class BaremetalIdracManagementCleaning(
+        bsm.BaremetalStandaloneScenarioTest):
+
+    mandatory_attr = ['driver', 'management_interface',
+                      'power_interface']
+
+    driver = 'idrac'
+    delete_node = False
+    # Minimum version for manual cleaning is 1.15 (# v1.15: Add ability to
+    # do manual cleaning of nodes). The test cases clean up at the end by
+    # detaching the VIF. Support for VIFs was introduced by version 1.28
+    # (# v1.28: Add vifs subcontroller to node).
+    api_microversion = '1.28'
+
+    @decorators.idempotent_id('d085ff72-abef-4931-a5b0-06efd5f9a037')
+    def test_reset_idrac(self):
+        clean_steps = [
+            {
+                "interface": "management",
+                "step": "reset_idrac"
+            }
+        ]
+        self.manual_cleaning(self.node, clean_steps=clean_steps)
+
+    @decorators.idempotent_id('9252ec6f-6b5b-447e-a323-c52775b88b4e')
+    def test_clear_job_queue(self):
+        clean_steps = [
+            {
+                "interface": "management",
+                "step": "clear_job_queue"
+            }
+        ]
+        self.manual_cleaning(self.node, clean_steps=clean_steps)
+
+    @decorators.idempotent_id('7baeff52-7d6e-4dea-a48f-a85a6bfc9f62')
+    def test_known_good_state(self):
+        clean_steps = [
+            {
+                "interface": "management",
+                "step": "known_good_state"
+            }
+        ]
+        self.manual_cleaning(self.node, clean_steps=clean_steps)
+
+
+class BaremetalIdracRedfishManagementCleaning(
+        BaremetalIdracManagementCleaning):
+
+    management_interface = 'idrac-redfish'
+    power_interface = 'idrac-redfish'
+
+
+class BaremetalIdracWSManManagementCleaning(
+        BaremetalIdracManagementCleaning):
+
+    management_interface = 'idrac-wsman'
+    power_interface = 'idrac-wsman'
