diff --git a/xos/synchronizer/migrations/0010_bandwidth_profile_values.py b/xos/synchronizer/migrations/0010_bandwidth_profile_values.py
new file mode 100644
index 0000000..364cbf3
--- /dev/null
+++ b/xos/synchronizer/migrations/0010_bandwidth_profile_values.py
@@ -0,0 +1,44 @@
+# Copyright 2017-present Open Networking Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# -*- coding: utf-8 -*-
+# Generated by Django 1.11.11 on 2019-03-14 22:35
+from __future__ import unicode_literals
+
+import core.models.xosbase_header
+from django.db import migrations, models
+import django.db.models.deletion
+import django.utils.timezone
+
+
+class Migration(migrations.Migration):
+
+    def forwards(apps, schema_editor):
+        # Set reasonable values for the default bandwidth profile
+        bp = apps.get_model('rcord', 'BandwidthProfile')
+        default = bp.objects.get(name="Default")
+        default.cbs = 0
+        default.ebs = 30
+        default.eir = 400
+        default.air = 0
+        default.cir = 600
+        default.save()
+
+    dependencies = [
+        ('rcord', '0009_rcordsubscriber_decl_tech_profile_id'),
+    ]
+
+    operations = [
+        migrations.RunPython(forwards),
+    ]
