diff --git a/homeassistant/components/anova/__init__.py b/homeassistant/components/anova/__init__.py
index 02c468c131983df38d9b772cac13431609e0c7c3..4ae4750b9a9ad559857fd33c2787447a321024ec 100644
--- a/homeassistant/components/anova/__init__.py
+++ b/homeassistant/components/anova/__init__.py
@@ -13,7 +13,7 @@ from anova_wifi import (
     WebsocketFailure,
 )
 
-from homeassistant.const import CONF_PASSWORD, CONF_USERNAME, Platform
+from homeassistant.const import CONF_DEVICES, CONF_PASSWORD, CONF_USERNAME, Platform
 from homeassistant.core import HomeAssistant
 from homeassistant.exceptions import ConfigEntryNotReady
 from homeassistant.helpers import aiohttp_client
@@ -71,3 +71,25 @@ async def async_unload_entry(hass: HomeAssistant, entry: AnovaConfigEntry) -> bo
         # Disconnect from WS
         await entry.runtime_data.api.disconnect_websocket()
     return unload_ok
+
+
+async def async_migrate_entry(hass: HomeAssistant, entry: AnovaConfigEntry) -> bool:
+    """Migrate entry."""
+    _LOGGER.debug("Migrating from version %s:%s", entry.version, entry.minor_version)
+
+    if entry.version > 1:
+        # This means the user has downgraded from a future version
+        return False
+
+    if entry.version == 1 and entry.minor_version == 1:
+        new_data = {**entry.data}
+        if CONF_DEVICES in new_data:
+            new_data.pop(CONF_DEVICES)
+
+        hass.config_entries.async_update_entry(entry, data=new_data, minor_version=2)
+
+    _LOGGER.debug(
+        "Migration to version %s:%s successful", entry.version, entry.minor_version
+    )
+
+    return True
diff --git a/homeassistant/components/anova/config_flow.py b/homeassistant/components/anova/config_flow.py
index 6e331ccf4a2763d72a4867bc64c746d71fceebcf..bc4723b1dbad315f2216b9f967d1e61c1ea02ad6 100644
--- a/homeassistant/components/anova/config_flow.py
+++ b/homeassistant/components/anova/config_flow.py
@@ -6,7 +6,7 @@ from anova_wifi import AnovaApi, InvalidLogin
 import voluptuous as vol
 
 from homeassistant.config_entries import ConfigFlow, ConfigFlowResult
-from homeassistant.const import CONF_DEVICES, CONF_PASSWORD, CONF_USERNAME
+from homeassistant.const import CONF_PASSWORD, CONF_USERNAME
 from homeassistant.helpers.aiohttp_client import async_get_clientsession
 
 from .const import DOMAIN
@@ -16,6 +16,7 @@ class AnovaConfligFlow(ConfigFlow, domain=DOMAIN):
     """Sets up a config flow for Anova."""
 
     VERSION = 1
+    MINOR_VERSION = 2
 
     async def async_step_user(
         self, user_input: dict[str, str] | None = None
@@ -42,8 +43,6 @@ class AnovaConfligFlow(ConfigFlow, domain=DOMAIN):
                     data={
                         CONF_USERNAME: user_input[CONF_USERNAME],
                         CONF_PASSWORD: user_input[CONF_PASSWORD],
-                        # this can be removed in a migration to 1.2 in 2024.11
-                        CONF_DEVICES: [],
                     },
                 )
 
diff --git a/tests/components/anova/__init__.py b/tests/components/anova/__init__.py
index 887f5b3b05b35fcc987fa674cad2b754e0475c42..903a11809800cc25a17e213ec85483a0724b364a 100644
--- a/tests/components/anova/__init__.py
+++ b/tests/components/anova/__init__.py
@@ -36,6 +36,7 @@ def create_entry(hass: HomeAssistant, device_id: str = DEVICE_UNIQUE_ID) -> Conf
         },
         unique_id="sample@gmail.com",
         version=1,
+        minor_version=2,
     )
     entry.add_to_hass(hass)
     return entry
diff --git a/tests/components/anova/test_config_flow.py b/tests/components/anova/test_config_flow.py
index 0f93b869296c26bea0cd7a0c5e6e9736b52b7b24..3b2afaa49c077c6530ab021552800c9b8b274e82 100644
--- a/tests/components/anova/test_config_flow.py
+++ b/tests/components/anova/test_config_flow.py
@@ -6,7 +6,7 @@ from anova_wifi import AnovaApi, InvalidLogin
 
 from homeassistant import config_entries
 from homeassistant.components.anova.const import DOMAIN
-from homeassistant.const import CONF_DEVICES, CONF_PASSWORD, CONF_USERNAME
+from homeassistant.const import CONF_PASSWORD, CONF_USERNAME
 from homeassistant.core import HomeAssistant
 from homeassistant.data_entry_flow import FlowResultType
 
@@ -27,7 +27,6 @@ async def test_flow_user(hass: HomeAssistant, anova_api: AnovaApi) -> None:
     assert result["data"] == {
         CONF_USERNAME: "sample@gmail.com",
         CONF_PASSWORD: "sample",
-        CONF_DEVICES: [],
     }
 
 
diff --git a/tests/components/anova/test_init.py b/tests/components/anova/test_init.py
index 66ea11fdaef5ff9e687c453d7a37710bee024872..2e3e2920abc3702b178e28d62f5cf35f462f3ceb 100644
--- a/tests/components/anova/test_init.py
+++ b/tests/components/anova/test_init.py
@@ -1,13 +1,18 @@
 """Test init for Anova."""
 
+from unittest.mock import patch
+
 from anova_wifi import AnovaApi
 
 from homeassistant.components.anova.const import DOMAIN
 from homeassistant.config_entries import ConfigEntryState
+from homeassistant.const import CONF_DEVICES, CONF_PASSWORD, CONF_USERNAME
 from homeassistant.core import HomeAssistant
 
 from . import async_init_integration, create_entry
 
+from tests.common import MockConfigEntry
+
 
 async def test_async_setup_entry(hass: HomeAssistant, anova_api: AnovaApi) -> None:
     """Test a successful setup entry."""
@@ -55,3 +60,34 @@ async def test_websocket_failure(
     """Test that we successfully handle a websocket failure on setup."""
     entry = await async_init_integration(hass)
     assert entry.state is ConfigEntryState.SETUP_RETRY
+
+
+async def test_migration_removing_devices_in_config_entry(
+    hass: HomeAssistant, anova_api: AnovaApi
+) -> None:
+    """Test a successful setup entry."""
+    entry = MockConfigEntry(
+        domain=DOMAIN,
+        title="Anova",
+        data={
+            CONF_USERNAME: "sample@gmail.com",
+            CONF_PASSWORD: "sample",
+            CONF_DEVICES: [],
+        },
+        unique_id="sample@gmail.com",
+        version=1,
+        minor_version=1,
+    )
+    entry.add_to_hass(hass)
+
+    with patch("homeassistant.components.anova.AnovaApi.authenticate"):
+        await hass.config_entries.async_setup(entry.entry_id)
+        await hass.async_block_till_done()
+
+    state = hass.states.get("sensor.anova_precision_cooker_mode")
+    assert state is not None
+    assert state.state == "idle"
+
+    assert entry.version == 1
+    assert entry.minor_version == 2
+    assert CONF_DEVICES not in entry.data