diff --git a/ironic/drivers/utils.py b/ironic/drivers/utils.py
index 6247e1fb13..fe1a1c5f21 100644
--- a/ironic/drivers/utils.py
+++ b/ironic/drivers/utils.py
@@ -220,6 +220,7 @@ def force_persistent_boot(task, device, persistent):
     node = task.node
     driver_internal_info = node.driver_internal_info
     if persistent:
+        driver_internal_info.pop('is_next_boot_persistent', None)
         driver_internal_info['persistent_boot_device'] = device
     else:
         driver_internal_info['is_next_boot_persistent'] = False
diff --git a/ironic/tests/unit/drivers/test_utils.py b/ironic/tests/unit/drivers/test_utils.py
index 12361e503d..c0952bf078 100644
--- a/ironic/tests/unit/drivers/test_utils.py
+++ b/ironic/tests/unit/drivers/test_utils.py
@@ -158,8 +158,10 @@ class UtilsTestCase(db_base.DbTestCase):
             ret = driver_utils.force_persistent_boot(task, 'pxe', True)
             self.assertIsNone(ret)
             task.node.refresh()
-            self.assertIn('persistent_boot_device',
-                          task.node.driver_internal_info)
+            self.assertIn(('persistent_boot_device', 'pxe'),
+                          task.node.driver_internal_info.items())
+            self.assertNotIn('is_next_boot_persistent',
+                             task.node.driver_internal_info)
 
     def test_force_persistent_boot_false(self):
         with task_manager.acquire(self.context, self.node.uuid,
diff --git a/releasenotes/notes/bug-1626453-e8df46aa5db6dd5a.yaml b/releasenotes/notes/bug-1626453-e8df46aa5db6dd5a.yaml
new file mode 100644
index 0000000000..70ac590ae4
--- /dev/null
+++ b/releasenotes/notes/bug-1626453-e8df46aa5db6dd5a.yaml
@@ -0,0 +1,5 @@
+---
+fixes:
+  - This fixes the issue setting persistent boot device does not work
+    with ipmi_force_boot_device=True. For more information, see
+    https://bugs.launchpad.net/ironic/+bug/1626453