check in migrations for the other apps
diff --git a/planetstack/cassandra/migrations/0001_initial.py b/planetstack/cassandra/migrations/0001_initial.py
new file mode 100644
index 0000000..358c5dc
--- /dev/null
+++ b/planetstack/cassandra/migrations/0001_initial.py
@@ -0,0 +1,26 @@
+# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
+from django.db import models, migrations
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('core', '0002_omf_friendly_default_false'),
+    ]
+
+    operations = [
+        migrations.CreateModel(
+            name='CassandraService',
+            fields=[
+                ('service_ptr', models.OneToOneField(parent_link=True, auto_created=True, primary_key=True, serialize=False, to='core.Service')),
+                ('clusterSize', models.PositiveIntegerField(default=1)),
+                ('replicationFactor', models.PositiveIntegerField(default=1)),
+            ],
+            options={
+                'verbose_name': 'Cassandra Service',
+            },
+            bases=('core.service', models.Model),
+        ),
+    ]
diff --git a/planetstack/cassandra/migrations/__init__.py b/planetstack/cassandra/migrations/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/planetstack/cassandra/migrations/__init__.py
diff --git a/planetstack/hpc/migrations/0001_initial.py b/planetstack/hpc/migrations/0001_initial.py
new file mode 100644
index 0000000..fc2bc4f
--- /dev/null
+++ b/planetstack/hpc/migrations/0001_initial.py
@@ -0,0 +1,159 @@
+# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
+from django.db import models, migrations
+import datetime
+from django.conf import settings
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('core', '0002_omf_friendly_default_false'),
+        migrations.swappable_dependency(settings.AUTH_USER_MODEL),
+    ]
+
+    operations = [
+        migrations.CreateModel(
+            name='AccessMap',
+            fields=[
+                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+                ('name', models.CharField(help_text=b'Name of the Access Map', max_length=64)),
+                ('description', models.TextField(max_length=130, null=True, blank=True)),
+                ('map', models.FileField(help_text=b'specifies which client requests are allowed', upload_to=b'maps/')),
+            ],
+            options={
+            },
+            bases=(models.Model,),
+        ),
+        migrations.CreateModel(
+            name='CDNPrefix',
+            fields=[
+                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+                ('created', models.DateTimeField(default=datetime.datetime.now, auto_now_add=True)),
+                ('updated', models.DateTimeField(default=datetime.datetime.now, auto_now=True)),
+                ('enacted', models.DateTimeField(default=None, null=True)),
+                ('backend_status', models.CharField(default=b'Provisioning in progress', max_length=140)),
+                ('deleted', models.BooleanField(default=False)),
+                ('cdn_prefix_id', models.IntegerField(null=True, blank=True)),
+                ('prefix', models.CharField(help_text=b'Registered Prefix for Domain', max_length=200)),
+                ('description', models.TextField(help_text=b'Description of Content Provider', max_length=254, null=True, blank=True)),
+                ('enabled', models.BooleanField(default=True)),
+            ],
+            options={
+            },
+            bases=(models.Model,),
+        ),
+        migrations.CreateModel(
+            name='ContentProvider',
+            fields=[
+                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+                ('created', models.DateTimeField(default=datetime.datetime.now, auto_now_add=True)),
+                ('updated', models.DateTimeField(default=datetime.datetime.now, auto_now=True)),
+                ('enacted', models.DateTimeField(default=None, null=True)),
+                ('backend_status', models.CharField(default=b'Provisioning in progress', max_length=140)),
+                ('deleted', models.BooleanField(default=False)),
+                ('content_provider_id', models.IntegerField(null=True, blank=True)),
+                ('name', models.CharField(max_length=254)),
+                ('enabled', models.BooleanField(default=True)),
+                ('description', models.TextField(help_text=b'Description of Content Provider', max_length=254, null=True, blank=True)),
+            ],
+            options={
+            },
+            bases=(models.Model,),
+        ),
+        migrations.CreateModel(
+            name='HpcService',
+            fields=[
+                ('service_ptr', models.OneToOneField(parent_link=True, auto_created=True, primary_key=True, serialize=False, to='core.Service')),
+            ],
+            options={
+                'verbose_name': 'HPC Service',
+            },
+            bases=('core.service', models.Model),
+        ),
+        migrations.CreateModel(
+            name='OriginServer',
+            fields=[
+                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+                ('created', models.DateTimeField(default=datetime.datetime.now, auto_now_add=True)),
+                ('updated', models.DateTimeField(default=datetime.datetime.now, auto_now=True)),
+                ('enacted', models.DateTimeField(default=None, null=True)),
+                ('backend_status', models.CharField(default=b'Provisioning in progress', max_length=140)),
+                ('deleted', models.BooleanField(default=False)),
+                ('origin_server_id', models.IntegerField(null=True, blank=True)),
+                ('url', models.URLField()),
+                ('authenticated', models.BooleanField(default=False, help_text=b'Status for this Site')),
+                ('enabled', models.BooleanField(default=True, help_text=b'Status for this Site')),
+                ('protocol', models.CharField(default=b'HTTP', max_length=12, choices=[(b'http', b'HTTP'), (b'rtmp', b'RTMP'), (b'rtp', b'RTP'), (b'shout', b'SHOUTcast')])),
+                ('redirects', models.BooleanField(default=True, help_text=b'Indicates whether Origin Server redirects should be used for this Origin Server')),
+                ('description', models.TextField(max_length=255, null=True, blank=True)),
+                ('contentProvider', models.ForeignKey(to='hpc.ContentProvider')),
+            ],
+            options={
+            },
+            bases=(models.Model,),
+        ),
+        migrations.CreateModel(
+            name='ServiceProvider',
+            fields=[
+                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+                ('created', models.DateTimeField(default=datetime.datetime.now, auto_now_add=True)),
+                ('updated', models.DateTimeField(default=datetime.datetime.now, auto_now=True)),
+                ('enacted', models.DateTimeField(default=None, null=True)),
+                ('backend_status', models.CharField(default=b'Provisioning in progress', max_length=140)),
+                ('deleted', models.BooleanField(default=False)),
+                ('service_provider_id', models.IntegerField(null=True, blank=True)),
+                ('name', models.CharField(help_text=b'Service Provider Name', max_length=254)),
+                ('description', models.TextField(help_text=b'Description of Service Provider', max_length=254, null=True, blank=True)),
+                ('enabled', models.BooleanField(default=True)),
+            ],
+            options={
+            },
+            bases=(models.Model,),
+        ),
+        migrations.CreateModel(
+            name='SiteMap',
+            fields=[
+                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+                ('name', models.CharField(help_text=b'Name of the Site Map', max_length=64)),
+                ('description', models.TextField(max_length=130, null=True, blank=True)),
+                ('map', models.FileField(help_text=b'specifies how to map requests to hpc instances', upload_to=b'maps/')),
+                ('contentProvider', models.ForeignKey(blank=True, to='hpc.ContentProvider', null=True)),
+                ('serviceProvider', models.ForeignKey(blank=True, to='hpc.ServiceProvider', null=True)),
+            ],
+            options={
+            },
+            bases=(models.Model,),
+        ),
+        migrations.AddField(
+            model_name='contentprovider',
+            name='serviceProvider',
+            field=models.ForeignKey(to='hpc.ServiceProvider'),
+            preserve_default=True,
+        ),
+        migrations.AddField(
+            model_name='contentprovider',
+            name='users',
+            field=models.ManyToManyField(to=settings.AUTH_USER_MODEL),
+            preserve_default=True,
+        ),
+        migrations.AddField(
+            model_name='cdnprefix',
+            name='contentProvider',
+            field=models.ForeignKey(to='hpc.ContentProvider'),
+            preserve_default=True,
+        ),
+        migrations.AddField(
+            model_name='cdnprefix',
+            name='defaultOriginServer',
+            field=models.ForeignKey(blank=True, to='hpc.OriginServer', null=True),
+            preserve_default=True,
+        ),
+        migrations.AddField(
+            model_name='accessmap',
+            name='contentProvider',
+            field=models.ForeignKey(to='hpc.ContentProvider'),
+            preserve_default=True,
+        ),
+    ]
diff --git a/planetstack/hpc/migrations/__init__.py b/planetstack/hpc/migrations/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/planetstack/hpc/migrations/__init__.py
diff --git a/planetstack/kairos/migrations/0001_initial.py b/planetstack/kairos/migrations/0001_initial.py
new file mode 100644
index 0000000..0586462
--- /dev/null
+++ b/planetstack/kairos/migrations/0001_initial.py
@@ -0,0 +1,24 @@
+# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
+from django.db import models, migrations
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('core', '0002_omf_friendly_default_false'),
+    ]
+
+    operations = [
+        migrations.CreateModel(
+            name='KairosDBService',
+            fields=[
+                ('service_ptr', models.OneToOneField(parent_link=True, auto_created=True, primary_key=True, serialize=False, to='core.Service')),
+            ],
+            options={
+                'verbose_name': 'KairosDB Service',
+            },
+            bases=('core.service', models.Model),
+        ),
+    ]
diff --git a/planetstack/kairos/migrations/__init__.py b/planetstack/kairos/migrations/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/planetstack/kairos/migrations/__init__.py
diff --git a/planetstack/nagios/migrations/0001_initial.py b/planetstack/nagios/migrations/0001_initial.py
new file mode 100644
index 0000000..06b2f48
--- /dev/null
+++ b/planetstack/nagios/migrations/0001_initial.py
@@ -0,0 +1,24 @@
+# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
+from django.db import models, migrations
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('core', '0002_omf_friendly_default_false'),
+    ]
+
+    operations = [
+        migrations.CreateModel(
+            name='NagiosService',
+            fields=[
+                ('service_ptr', models.OneToOneField(parent_link=True, auto_created=True, primary_key=True, serialize=False, to='core.Service')),
+            ],
+            options={
+                'verbose_name': 'Nagios Service',
+            },
+            bases=('core.service', models.Model),
+        ),
+    ]
diff --git a/planetstack/nagios/migrations/__init__.py b/planetstack/nagios/migrations/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/planetstack/nagios/migrations/__init__.py
diff --git a/planetstack/requestrouter/migrations/0001_initial.py b/planetstack/requestrouter/migrations/0001_initial.py
new file mode 100644
index 0000000..6fd7912
--- /dev/null
+++ b/planetstack/requestrouter/migrations/0001_initial.py
@@ -0,0 +1,50 @@
+# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
+from django.db import models, migrations
+import datetime
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('core', '0002_omf_friendly_default_false'),
+    ]
+
+    operations = [
+        migrations.CreateModel(
+            name='RequestRouterService',
+            fields=[
+                ('service_ptr', models.OneToOneField(parent_link=True, auto_created=True, primary_key=True, serialize=False, to='core.Service')),
+                ('behindNat', models.BooleanField(default=False, help_text=b"Enables 'Behind NAT' mode.")),
+                ('defaultTTL', models.PositiveIntegerField(default=30, help_text=b'DNS response time-to-live(TTL)')),
+                ('defaultAction', models.CharField(default=b'best', help_text=b'Review if this should be enum', max_length=30)),
+                ('lastResortAction', models.CharField(default=b'random', help_text=b'Review if this should be enum', max_length=30)),
+                ('maxAnswers', models.PositiveIntegerField(default=3, help_text=b'Maximum number of answers in DNS response.')),
+            ],
+            options={
+                'verbose_name': 'Request Router Service',
+            },
+            bases=('core.service', models.Model),
+        ),
+        migrations.CreateModel(
+            name='ServiceMap',
+            fields=[
+                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+                ('created', models.DateTimeField(default=datetime.datetime.now, auto_now_add=True)),
+                ('updated', models.DateTimeField(default=datetime.datetime.now, auto_now=True)),
+                ('enacted', models.DateTimeField(default=None, null=True)),
+                ('backend_status', models.CharField(default=b'Provisioning in progress', max_length=140)),
+                ('deleted', models.BooleanField(default=False)),
+                ('name', models.SlugField(help_text=b'name of this service map', unique=True)),
+                ('prefix', models.CharField(help_text=b'FQDN of the region of URI space managed by RR on behalf of this service', max_length=256)),
+                ('siteMap', models.FileField(help_text=b'maps client requests to service instances', upload_to=b'maps/', blank=True)),
+                ('accessMap', models.FileField(help_text=b'specifies which client requests are allowed', upload_to=b'maps/', blank=True)),
+                ('owner', models.ForeignKey(help_text=b'service which owns this map', to='core.Service')),
+                ('slice', models.ForeignKey(help_text=b'slice that implements this service', to='core.Slice')),
+            ],
+            options={
+            },
+            bases=(models.Model,),
+        ),
+    ]
diff --git a/planetstack/requestrouter/migrations/__init__.py b/planetstack/requestrouter/migrations/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/planetstack/requestrouter/migrations/__init__.py
diff --git a/planetstack/syndicate_storage/migrations/0001_initial.py b/planetstack/syndicate_storage/migrations/0001_initial.py
new file mode 100644
index 0000000..96a1a0c
--- /dev/null
+++ b/planetstack/syndicate_storage/migrations/0001_initial.py
@@ -0,0 +1,127 @@
+# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
+from django.db import models, migrations
+import datetime
+import syndicate_storage.models
+from django.conf import settings
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('core', '0002_omf_friendly_default_false'),
+        migrations.swappable_dependency(settings.AUTH_USER_MODEL),
+    ]
+
+    operations = [
+        migrations.CreateModel(
+            name='SliceSecret',
+            fields=[
+                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+                ('secret', syndicate_storage.models.ObserverSecretValue(help_text=b"Shared secret between OpenCloud and this slice's Syndicate daemons.", blank=True)),
+                ('slice_id', models.ForeignKey(to='core.Slice')),
+            ],
+            options={
+            },
+            bases=(models.Model,),
+        ),
+        migrations.CreateModel(
+            name='SyndicatePrincipal',
+            fields=[
+                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+                ('created', models.DateTimeField(default=datetime.datetime.now, auto_now_add=True)),
+                ('updated', models.DateTimeField(default=datetime.datetime.now, auto_now=True)),
+                ('enacted', models.DateTimeField(default=None, null=True)),
+                ('backend_status', models.CharField(default=b'Provisioning in progress', max_length=140)),
+                ('deleted', models.BooleanField(default=False)),
+                ('principal_id', models.TextField(unique=True)),
+                ('public_key_pem', models.TextField()),
+                ('sealed_private_key', models.TextField()),
+            ],
+            options={
+            },
+            bases=(models.Model,),
+        ),
+        migrations.CreateModel(
+            name='SyndicateService',
+            fields=[
+                ('service_ptr', models.OneToOneField(parent_link=True, auto_created=True, primary_key=True, serialize=False, to='core.Service')),
+            ],
+            options={
+                'verbose_name': 'Syndicate Service',
+                'verbose_name_plural': 'Syndicate Service',
+            },
+            bases=('core.service', models.Model),
+        ),
+        migrations.CreateModel(
+            name='Volume',
+            fields=[
+                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+                ('created', models.DateTimeField(default=datetime.datetime.now, auto_now_add=True)),
+                ('updated', models.DateTimeField(default=datetime.datetime.now, auto_now=True)),
+                ('enacted', models.DateTimeField(default=None, null=True)),
+                ('backend_status', models.CharField(default=b'Provisioning in progress', max_length=140)),
+                ('deleted', models.BooleanField(default=False)),
+                ('name', models.CharField(help_text=b'Human-readable, searchable name of the Volume', max_length=64)),
+                ('description', models.TextField(help_text=b'Human-readable description of what this Volume is used for.', max_length=130, null=True, blank=True)),
+                ('blocksize', models.PositiveIntegerField(help_text=b'Number of bytes per block.')),
+                ('private', models.BooleanField(default=True, help_text=b'Indicates if the Volume is visible to users other than the Volume Owner and Syndicate Administrators.')),
+                ('archive', models.BooleanField(default=False, help_text=b'Indicates if this Volume is read-only, and only an Aquisition Gateway owned by the Volume owner (or Syndicate admin) can write to it.')),
+                ('cap_read_data', models.BooleanField(default=True, help_text=b'VM can read Volume data')),
+                ('cap_write_data', models.BooleanField(default=True, help_text=b'VM can write Volume data')),
+                ('cap_host_data', models.BooleanField(default=True, help_text=b'VM can host Volume data')),
+                ('owner_id', models.ForeignKey(verbose_name=b'Owner', to=settings.AUTH_USER_MODEL)),
+            ],
+            options={
+            },
+            bases=(models.Model,),
+        ),
+        migrations.CreateModel(
+            name='VolumeAccessRight',
+            fields=[
+                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+                ('created', models.DateTimeField(default=datetime.datetime.now, auto_now_add=True)),
+                ('updated', models.DateTimeField(default=datetime.datetime.now, auto_now=True)),
+                ('enacted', models.DateTimeField(default=None, null=True)),
+                ('backend_status', models.CharField(default=b'Provisioning in progress', max_length=140)),
+                ('deleted', models.BooleanField(default=False)),
+                ('cap_read_data', models.BooleanField(default=True, help_text=b'VM can read Volume data')),
+                ('cap_write_data', models.BooleanField(default=True, help_text=b'VM can write Volume data')),
+                ('cap_host_data', models.BooleanField(default=True, help_text=b'VM can host Volume data')),
+                ('owner_id', models.ForeignKey(verbose_name=b'user', to=settings.AUTH_USER_MODEL)),
+                ('volume', models.ForeignKey(to='syndicate_storage.Volume')),
+            ],
+            options={
+            },
+            bases=(models.Model,),
+        ),
+        migrations.CreateModel(
+            name='VolumeSlice',
+            fields=[
+                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+                ('created', models.DateTimeField(default=datetime.datetime.now, auto_now_add=True)),
+                ('updated', models.DateTimeField(default=datetime.datetime.now, auto_now=True)),
+                ('enacted', models.DateTimeField(default=None, null=True)),
+                ('backend_status', models.CharField(default=b'Provisioning in progress', max_length=140)),
+                ('deleted', models.BooleanField(default=False)),
+                ('cap_read_data', models.BooleanField(default=True, help_text=b'VM can read Volume data')),
+                ('cap_write_data', models.BooleanField(default=True, help_text=b'VM can write Volume data')),
+                ('cap_host_data', models.BooleanField(default=True, help_text=b'VM can host Volume data')),
+                ('UG_portnum', models.PositiveIntegerField(help_text=b'User Gateway port.  Any port above 1024 will work, but it must be available slice-wide.', verbose_name=b'UG port')),
+                ('RG_portnum', models.PositiveIntegerField(help_text=b'Replica Gateway port.  Any port above 1024 will work, but it must be available slice-wide.', verbose_name=b'RG port')),
+                ('credentials_blob', models.TextField(help_text=b'Encrypted slice credentials, sealed with the slice secret.', null=True, blank=True)),
+                ('slice_id', models.ForeignKey(verbose_name=b'Slice', to='core.Slice')),
+                ('volume_id', models.ForeignKey(verbose_name=b'Volume', to='syndicate_storage.Volume')),
+            ],
+            options={
+            },
+            bases=(models.Model,),
+        ),
+        migrations.AddField(
+            model_name='volume',
+            name='slice_id',
+            field=models.ManyToManyField(to='core.Slice', through='syndicate_storage.VolumeSlice'),
+            preserve_default=True,
+        ),
+    ]
diff --git a/planetstack/syndicate_storage/migrations/__init__.py b/planetstack/syndicate_storage/migrations/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/planetstack/syndicate_storage/migrations/__init__.py