diff --git a/lib/config/migration.ts b/lib/config/migration.ts
index f1c7834e9dab1aef5bc82eb4dd5e040840ab9f26..28c4249cc17467e1e9a9490b3cbc02d1dbd7624d 100644
--- a/lib/config/migration.ts
+++ b/lib/config/migration.ts
@@ -198,12 +198,6 @@ export function migrateConfig(
           }
         }
         delete migratedConfig.unpublishSafe;
-      } else if (
-        key === 'automergeType' &&
-        is.string(val) &&
-        val.startsWith('branch-')
-      ) {
-        migratedConfig.automergeType = 'branch';
       } else if (key === 'automergeMinor') {
         migratedConfig.minor = migratedConfig.minor || {};
         migratedConfig.minor.automerge = !!val;
diff --git a/lib/config/migrations/custom/automerge-type-migration.spec.ts b/lib/config/migrations/custom/automerge-type-migration.spec.ts
new file mode 100644
index 0000000000000000000000000000000000000000..14c96dd73e409803280e0358f414ca3e710b39a3
--- /dev/null
+++ b/lib/config/migrations/custom/automerge-type-migration.spec.ts
@@ -0,0 +1,38 @@
+import { AutomergeTypeMigration } from './automerge-type-migration';
+
+describe('config/migrations/custom/automerge-type-migration', () => {
+  it('should migrate string like "branch-" to "branch"', () => {
+    expect(AutomergeTypeMigration).toMigrate(
+      {
+        automergeType: 'branch-test',
+      },
+      {
+        automergeType: 'branch',
+      }
+    );
+  });
+
+  it('should not migrate another string value', () => {
+    expect(AutomergeTypeMigration).toMigrate(
+      {
+        automergeType: 'test',
+      },
+      {
+        automergeType: 'test',
+      },
+      false
+    );
+  });
+
+  it('should not migrate non string value', () => {
+    expect(AutomergeTypeMigration).toMigrate(
+      {
+        automergeType: true,
+      },
+      {
+        automergeType: true,
+      },
+      false
+    );
+  });
+});
diff --git a/lib/config/migrations/custom/automerge-type-migration.ts b/lib/config/migrations/custom/automerge-type-migration.ts
new file mode 100644
index 0000000000000000000000000000000000000000..1956824a82d9f9648edd77511dd5c3622ca599cd
--- /dev/null
+++ b/lib/config/migrations/custom/automerge-type-migration.ts
@@ -0,0 +1,12 @@
+import is from '@sindresorhus/is';
+import { AbstractMigration } from '../base/abstract-migration';
+
+export class AutomergeTypeMigration extends AbstractMigration {
+  override readonly propertyName = 'automergeType';
+
+  override run(value: unknown): void {
+    if (is.string(value) && value.startsWith('branch-')) {
+      this.rewrite('branch');
+    }
+  }
+}
diff --git a/lib/config/migrations/migrations-service.ts b/lib/config/migrations/migrations-service.ts
index 072383bdf861b4cbc519c9d5787f006f995dc27e..d24c4e2f7eb3a1a86f77848a78236ba69b403f43 100644
--- a/lib/config/migrations/migrations-service.ts
+++ b/lib/config/migrations/migrations-service.ts
@@ -2,6 +2,7 @@ import { dequal } from 'dequal';
 import type { RenovateConfig } from '../types';
 import { RemovePropertyMigration } from './base/remove-property-migration';
 import { RenamePropertyMigration } from './base/rename-property-migration';
+import { AutomergeTypeMigration } from './custom/automerge-type-migration';
 import { BinarySourceMigration } from './custom/binary-source-migration';
 import { CompatibilityMigration } from './custom/compatibility-migration';
 import { ComposerIgnorePlatformReqsMigration } from './custom/composer-ignore-platform-reqs-migration';
@@ -54,6 +55,7 @@ export class MigrationsService {
   ]);
 
   static readonly customMigrations: ReadonlyArray<MigrationConstructor> = [
+    AutomergeTypeMigration,
     BinarySourceMigration,
     CompatibilityMigration,
     ComposerIgnorePlatformReqsMigration,