diff --git a/lib/config/migration.js b/lib/config/migration.js
index 894f5dff2c5bdd20b37a903306e50abb4e554719..b65c8500a656b1df0fbeed1f7f40375619a29943 100644
--- a/lib/config/migration.js
+++ b/lib/config/migration.js
@@ -54,6 +54,16 @@ function migrateConfig(config, parentConfig) {
       isMigrated = true;
       migratedConfig.packagePatterns = [val];
       delete migratedConfig.packagePattern;
+    } else if (key === 'schedule') {
+      for (let i = 0; i < val.length; i += 1) {
+        if (val[i].indexOf('on the last day of the month') !== -1) {
+          isMigrated = true;
+          migratedConfig.schedule[i] = val[i].replace(
+            'on the last day of the month',
+            'on the first day of the month'
+          );
+        }
+      }
     } else if (
       typeof val === 'string' &&
       val.indexOf('{{semanticPrefix}}') === 0
diff --git a/lib/workers/branch/schedule.js b/lib/workers/branch/schedule.js
index 8ca82a82529353e769a8a9d88e9dbd566f65e0a6..8b93d9b3fd07d96dce6e30cdaa6427e423e0f1d0 100644
--- a/lib/workers/branch/schedule.js
+++ b/lib/workers/branch/schedule.js
@@ -32,7 +32,11 @@ function hasValidSchedule(schedule) {
       message = `Schedule "${scheduleText}" should not specify minutes`;
       return true;
     }
-    if (!parsedSchedule.schedules.some(s => s.d || s.t_a || s.t_b)) {
+    if (
+      !parsedSchedule.schedules.some(
+        s => s.d !== undefined || s.D || s.t_a !== undefined || s.t_b
+      )
+    ) {
       message = `Schedule "${scheduleText}" has no days of week or time of day`;
       return true;
     }
diff --git a/test/config/__snapshots__/migration.spec.js.snap b/test/config/__snapshots__/migration.spec.js.snap
index a705f286c3b2f7c43787936a2f15f7afe6d6b8de..6a70ff1546fdce3d469ba0eb81b35397088ae617 100644
--- a/test/config/__snapshots__/migration.spec.js.snap
+++ b/test/config/__snapshots__/migration.spec.js.snap
@@ -22,7 +22,9 @@ Object {
     },
   ],
   "prTitle": "some pr title",
-  "schedule": "after 5pm",
+  "schedule": Array [
+    "on the first day of the month",
+  ],
   "semanticPrefix": "fix(deps):",
 }
 `;
diff --git a/test/config/migration.spec.js b/test/config/migration.spec.js
index ec0fb6cf9e1a90e7776032f863ad7b85219a856e..6d9307dc370f8cec09bf891e2cf6f29147ef962f 100644
--- a/test/config/migration.spec.js
+++ b/test/config/migration.spec.js
@@ -10,7 +10,7 @@ describe('config/migration', () => {
         onboarding: 'false',
         automerge: false,
         autodiscover: 'true',
-        schedule: 'after 5pm',
+        schedule: ['on the last day of the month'],
         commitMessage: '{{semanticPrefix}}some commit message',
         prTitle: '{{semanticPrefix}}some pr title',
         semanticPrefix: 'fix(deps): ',
diff --git a/test/workers/branch/schedule.spec.js b/test/workers/branch/schedule.spec.js
index 3d42f32f62239b317c12a9877f21afe01c3d9ac9..8b09c38b1aa933d4d52e2ceca0e5069a9bd59684 100644
--- a/test/workers/branch/schedule.spec.js
+++ b/test/workers/branch/schedule.spec.js
@@ -41,6 +41,11 @@ describe('workers/branch/schedule', () => {
     it('returns true if schedule has a start time', () => {
       expect(schedule.hasValidSchedule(['after 8:00pm'])[0]).toBe(true);
     });
+    it('returns true for first day of the month', () => {
+      expect(
+        schedule.hasValidSchedule(['on the first day of the month'])[0]
+      ).toBe(true);
+    });
     it('returns true if schedule has an end time', () => {
       expect(schedule.hasValidSchedule(['before 6:00am'])[0]).toBe(true);
     });