diff --git a/lib/config/migration.js b/lib/config/migration.js
index feaeae93a239a64c34da31a2e6e8da46eae7d0d6..b6e53fa9ea72d766364de1cfb55fa073a37cf1b5 100644
--- a/lib/config/migration.js
+++ b/lib/config/migration.js
@@ -81,17 +81,24 @@ function migrateConfig(config) {
       typeof val === 'string' &&
       ['none', 'patch', 'minor', 'any'].indexOf(val) !== -1
     ) {
-      isMigrated = true;
       delete migratedConfig.automerge;
-      migratedConfig.extends = migratedConfig.extends || [];
+      isMigrated = true;
       if (val === 'none') {
-        migratedConfig.extends.push(':automergeDisabled');
+        migratedConfig.automerge = false;
       } else if (val === 'patch') {
-        migratedConfig.extends.push(':automergePatch');
+        migratedConfig.patch = migratedConfig.patch || {};
+        migratedConfig.patch.automerge = true;
+        migratedConfig.minor = migratedConfig.minor || {};
+        migratedConfig.minor.automerge = false;
+        migratedConfig.major = migratedConfig.major || {};
+        migratedConfig.major.automerge = false;
       } else if (val === 'minor') {
-        migratedConfig.extends.push(':automergeMinor');
+        migratedConfig.minor = migratedConfig.minor || {};
+        migratedConfig.minor.automerge = true;
+        migratedConfig.major = migratedConfig.major || {};
+        migratedConfig.major.automerge = false;
       } else if (val === 'any') {
-        migratedConfig.extends.push(':automergeAll');
+        migratedConfig.automerge = true;
       }
     } else if (key === 'packages') {
       isMigrated = true;
diff --git a/test/config/__snapshots__/migrate-validate.spec.js.snap b/test/config/__snapshots__/migrate-validate.spec.js.snap
index a71ec4256632c7dff47904af39f72bf93fcf3103..1ac51fbf44ea88d34e6a1d13867c1819d8c5ddbd 100644
--- a/test/config/__snapshots__/migrate-validate.spec.js.snap
+++ b/test/config/__snapshots__/migrate-validate.spec.js.snap
@@ -22,10 +22,8 @@ Object {
 
 exports[`config/migrate-validate migrateAndValidate() handles migration 1`] = `
 Object {
+  "automerge": false,
   "errors": Array [],
-  "extends": Array [
-    ":automergeDisabled",
-  ],
   "warnings": Array [],
 }
 `;
diff --git a/test/config/__snapshots__/migration.spec.js.snap b/test/config/__snapshots__/migration.spec.js.snap
index 3aa3a495430b4bdaab272c6bf1bbbe94ebc61ae1..7afd0def49684d713aaa290d156a86a09bf68a7e 100644
--- a/test/config/__snapshots__/migration.spec.js.snap
+++ b/test/config/__snapshots__/migration.spec.js.snap
@@ -9,29 +9,30 @@ Object {
 exports[`config/migration migrateConfig(config, parentConfig) it migrates config 1`] = `
 Object {
   "autodiscover": true,
+  "automerge": false,
   "baseBranches": Array [
     "next",
   ],
   "commitMessage": "some commit message",
   "devDependencies": Object {
-    "extends": Array [
-      ":automergeMinor",
-    ],
+    "major": Object {
+      "automerge": false,
+    },
+    "minor": Object {
+      "automerge": true,
+    },
     "schedule": Array [],
   },
   "enabled": true,
   "extends": Array [
     "config:js-app",
     "config:js-lib",
-    ":automergeDisabled",
   ],
   "ignorePaths": Array [
     "node_modules/",
   ],
   "lockFileMaintenance": Object {
-    "extends": Array [
-      ":automergeAll",
-    ],
+    "automerge": true,
     "schedule": "before 5am",
   },
   "major": Object {
@@ -45,9 +46,12 @@ Object {
   },
   "onboarding": false,
   "optionalDependencies": Object {
-    "extends": Array [
-      ":automergeMinor",
-    ],
+    "major": Object {
+      "automerge": false,
+    },
+    "minor": Object {
+      "automerge": true,
+    },
     "respectLatest": false,
     "schedule": "before 5am on Monday",
   },
@@ -89,9 +93,7 @@ Object {
 exports[`config/migration migrateConfig(config, parentConfig) it migrates node to travis 1`] = `
 Object {
   "node": Object {
-    "extends": Array [
-      ":automergeDisabled",
-    ],
+    "automerge": false,
     "supportPolicy": Array [
       "lts",
     ],
@@ -125,15 +127,24 @@ Object {
 
 exports[`config/migration migrateConfig(config, parentConfig) it overrides existing automerge setting 1`] = `
 Object {
-  "extends": Array [
-    ":automergeMinor",
-  ],
+  "major": Object {
+    "automerge": false,
+  },
+  "minor": Object {
+    "automerge": true,
+  },
   "packageRules": Array [
     Object {
-      "extends": Array [
-        ":automergePatch",
-      ],
+      "major": Object {
+        "automerge": false,
+      },
+      "minor": Object {
+        "automerge": false,
+      },
       "packagePatterns": "^(@angular|typescript)",
+      "patch": Object {
+        "automerge": true,
+      },
     },
   ],
 }
diff --git a/test/config/__snapshots__/presets.spec.js.snap b/test/config/__snapshots__/presets.spec.js.snap
index 376bc6a475a142d087b025a2de57f195281ad3e6..4eb4714d24a41776b1a68333b5092cbd49c37ff6 100644
--- a/test/config/__snapshots__/presets.spec.js.snap
+++ b/test/config/__snapshots__/presets.spec.js.snap
@@ -259,7 +259,6 @@ Object {
     "Use <code>renovate/</code> as prefix for all branch names",
     "If semantic commits detected, use <code>fix(deps):</code> for dependencies and <code>chore(deps):</code> for all others",
     "Require all status checks to pass before any automerging",
-    "Automerge patch or minor upgrades if they pass tests",
     "Pin dependency versions for <code>devDependencies</code> and retain semver ranges for others",
   ],
   "devDependencies": Object {
@@ -281,6 +280,9 @@ Object {
       "before 8am on Monday",
     ],
   },
+  "major": Object {
+    "automerge": false,
+  },
   "minor": Object {
     "automerge": true,
   },
diff --git a/test/config/migration.spec.js b/test/config/migration.spec.js
index dd77c9153f3562c36411612fbd2d4cc038665f54..076df2910e6f332e49ab6f1c5fc6c1a0197015e0 100644
--- a/test/config/migration.spec.js
+++ b/test/config/migration.spec.js
@@ -66,6 +66,7 @@ describe('config/migration', () => {
       expect(isMigrated).toBe(true);
       expect(migratedConfig.depTypes).not.toBeDefined();
       expect(migratedConfig.optionalDependencies.respectLatest).toBe(false);
+      expect(migratedConfig.automerge).toEqual(false);
       expect(migratedConfig).toMatchSnapshot();
     });
     it('migrates before and after schedules', () => {
@@ -191,6 +192,7 @@ describe('config/migration', () => {
       );
       expect(isMigrated).toBe(true);
       expect(migratedConfig).toMatchSnapshot();
+      expect(migratedConfig.packageRules[0].minor.automerge).toBe(false);
     });
     it('it does not migrate config', () => {
       const config = {