diff --git a/orchestra/apps/miscellaneous/migrations/0001_initial.py b/orchestra/apps/miscellaneous/migrations/0001_initial.py
new file mode 100644
index 00000000..b9dbcf8b
--- /dev/null
+++ b/orchestra/apps/miscellaneous/migrations/0001_initial.py
@@ -0,0 +1,50 @@
+# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
+from django.db import models, migrations
+import orchestra.core.validators
+from django.conf import settings
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ migrations.swappable_dependency(settings.AUTH_USER_MODEL),
+ ]
+
+ operations = [
+ migrations.CreateModel(
+ name='Miscellaneous',
+ fields=[
+ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+ ('description', models.TextField(verbose_name='description', blank=True)),
+ ('amount', models.PositiveIntegerField(default=1, verbose_name='amount')),
+ ('is_active', models.BooleanField(default=True, help_text='Designates whether this service should be treated as active. Unselect this instead of deleting services.', verbose_name='active')),
+ ('account', models.ForeignKey(related_name='miscellaneous', verbose_name='account', to=settings.AUTH_USER_MODEL)),
+ ],
+ options={
+ 'verbose_name_plural': 'miscellaneous',
+ },
+ bases=(models.Model,),
+ ),
+ migrations.CreateModel(
+ name='MiscService',
+ fields=[
+ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+ ('name', models.CharField(help_text='Raw name used for internal referenciation, i.e. service match definition', unique=True, max_length=32, verbose_name='name', validators=[orchestra.core.validators.validate_name])),
+ ('verbose_name', models.CharField(help_text='Human readable name', max_length=256, verbose_name='verbose name', blank=True)),
+ ('description', models.TextField(help_text='Optional description', verbose_name='description', blank=True)),
+ ('has_amount', models.BooleanField(default=False, help_text='Designates whether this service has amount property or not.', verbose_name='has amount')),
+ ('is_active', models.BooleanField(default=True, help_text='Whether new instances of this service can be created or not. Unselect this instead of deleting services.', verbose_name='active')),
+ ],
+ options={
+ },
+ bases=(models.Model,),
+ ),
+ migrations.AddField(
+ model_name='miscellaneous',
+ name='service',
+ field=models.ForeignKey(related_name='instances', verbose_name='service', to='miscellaneous.MiscService'),
+ preserve_default=True,
+ ),
+ ]
diff --git a/orchestra/apps/miscellaneous/migrations/0002_auto_20141112_1853.py b/orchestra/apps/miscellaneous/migrations/0002_auto_20141112_1853.py
new file mode 100644
index 00000000..aac1cc9c
--- /dev/null
+++ b/orchestra/apps/miscellaneous/migrations/0002_auto_20141112_1853.py
@@ -0,0 +1,27 @@
+# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
+from django.db import models, migrations
+import orchestra.models.fields
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('miscellaneous', '0001_initial'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='miscellaneous',
+ name='identifier',
+ field=orchestra.models.fields.NullableCharField(help_text='A unique identifier for this service.', max_length=256, unique=True, null=True, verbose_name='identifier'),
+ preserve_default=True,
+ ),
+ migrations.AddField(
+ model_name='miscservice',
+ name='has_identifier',
+ field=models.BooleanField(default=True, help_text='Designates if this service has a unique text field that identifies it or not.', verbose_name='has identifier'),
+ preserve_default=True,
+ ),
+ ]
diff --git a/orchestra/apps/miscellaneous/migrations/__init__.py b/orchestra/apps/miscellaneous/migrations/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/orchestra/static/orchestra/icons/Preferences-system.svg b/orchestra/static/orchestra/icons/Preferences-system.svg
new file mode 100644
index 00000000..a6183e8b
--- /dev/null
+++ b/orchestra/static/orchestra/icons/Preferences-system.svg
@@ -0,0 +1,396 @@
+
+
+