diff --git a/smash/web/migrations/0072_auto_20171201_1013.py b/smash/web/migrations/0072_auto_20171201_1013.py
new file mode 100644
index 0000000000000000000000000000000000000000..c90da294dd1ceb61ac58b09bbdc8b1eff9588641
--- /dev/null
+++ b/smash/web/migrations/0072_auto_20171201_1013.py
@@ -0,0 +1,55 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.10.7 on 2017-12-01 10:13
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+# noinspection PyUnusedLocal
+# noinspection PyPep8Naming
+def create_default_study_columns(apps, schema_editor):
+    # We can't import the Study model directly as it may be a newer
+    # version than this migration expects. We use the historical version.
+    StudyColumns = apps.get_model("web", "StudyColumns")
+    study_columns = StudyColumns.objects.create()
+    study_columns.save()
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('web', '0071_auto_20171130_1607'),
+    ]
+
+    operations = [
+        migrations.CreateModel(
+            name='StudyColumns',
+            fields=[
+                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+                ('postponed', models.BooleanField(choices=[(True, b'Yes'), (False, b'No')], default=True, verbose_name=b'Postponed')),
+                ('datetime_contact_reminder', models.BooleanField(choices=[(True, b'Yes'), (False, b'No')], default=True, verbose_name=b'Please make a contact on')),
+                ('type', models.BooleanField(choices=[(True, b'Yes'), (False, b'No')], default=True, verbose_name=b'Type')),
+                ('default_location', models.BooleanField(choices=[(True, b'Yes'), (False, b'No')], default=True, verbose_name=b'Default appointment location')),
+                ('flying_team', models.BooleanField(choices=[(True, b'Yes'), (False, b'No')], default=True, verbose_name=b'Default flying team location (if applicable)')),
+                ('screening_number', models.BooleanField(choices=[(True, b'Yes'), (False, b'No')], default=True, verbose_name=b'Screening number')),
+                ('nd_number', models.BooleanField(choices=[(True, b'Yes'), (False, b'No')], default=True, verbose_name=b'ND number')),
+                ('mpower_id', models.BooleanField(choices=[(True, b'Yes'), (False, b'No')], default=True, verbose_name=b'MPower ID')),
+                ('comments', models.BooleanField(choices=[(True, b'Yes'), (False, b'No')], default=True, verbose_name=b'Comments')),
+                ('referral', models.BooleanField(choices=[(True, b'Yes'), (False, b'No')], default=True, verbose_name=b'Referred by')),
+                ('diagnosis', models.BooleanField(choices=[(True, b'Yes'), (False, b'No')], default=True, verbose_name=b'Diagnosis')),
+                ('year_of_diagnosis', models.BooleanField(choices=[(True, b'Yes'), (False, b'No')], default=True, verbose_name=b'Year of diagnosis (YYYY)')),
+                ('information_sent', models.BooleanField(choices=[(True, b'Yes'), (False, b'No')], default=True, verbose_name=b'Information sent')),
+                ('pd_in_family', models.BooleanField(choices=[(True, b'Yes'), (False, b'No')], default=True, verbose_name=b'PD in family')),
+                ('resigned', models.BooleanField(choices=[(True, b'Yes'), (False, b'No')], default=True, verbose_name=b'Resigned')),
+                ('resign_reason', models.BooleanField(choices=[(True, b'Yes'), (False, b'No')], default=True, verbose_name=b'Resign reason')),
+            ],
+        ),
+        migrations.RunPython(create_default_study_columns),
+        migrations.AddField(
+            model_name='study',
+            name='columns',
+            field=models.OneToOneField(default=1, on_delete=django.db.models.deletion.CASCADE, to='web.StudyColumns'),
+            preserve_default=False,
+        ),
+    ]
diff --git a/smash/web/models/__init__.py b/smash/web/models/__init__.py
index de19e31d99316eea3864bec1fa3fd598ca48d04f..08ec523105707084f8ac8dddc064095a0efce271 100644
--- a/smash/web/models/__init__.py
+++ b/smash/web/models/__init__.py
@@ -8,6 +8,7 @@ from flying_team import FlyingTeam
 from location import Location
 from appointment_type_link import AppointmentTypeLink
 from country import Country
+from study_columns import StudyColumns
 from study import Study
 from room import Room
 from visit import Visit
@@ -28,4 +29,4 @@ from inconsistent_subject import InconsistentSubject, InconsistentField
 
 __all__ = [Study, FlyingTeam, Appointment, AppointmentType, Availability, Holiday, Item, Language, Location, Room, Subject, StudySubject,
            Visit, Worker, ContactAttempt, ConfigurationItem, MailTemplate, AppointmentTypeLink, MissingSubject,
-           InconsistentSubject, InconsistentField, Country]
+           InconsistentSubject, InconsistentField, Country, StudyColumns]
diff --git a/smash/web/models/study.py b/smash/web/models/study.py
index 469c5f4ebaa1ff0485499a04ce4f9f6bd7ee9834..d3b4090d33f589d100ce6c723f5af783597903bf 100644
--- a/smash/web/models/study.py
+++ b/smash/web/models/study.py
@@ -1,6 +1,8 @@
 # coding=utf-8
 from django.db import models
 
+from web.models.study_columns import StudyColumns
+
 
 class Study(models.Model):
     class Meta:
@@ -8,6 +10,11 @@ class Study(models.Model):
 
     name = models.CharField(max_length=255, verbose_name='Name')
 
+    columns = models.OneToOneField(
+        StudyColumns,
+        on_delete=models.CASCADE,
+    )
+
     def __str__(self):
         return "%s" % self.name
 
diff --git a/smash/web/models/study_columns.py b/smash/web/models/study_columns.py
new file mode 100644
index 0000000000000000000000000000000000000000..0eea13393160ee9c93954c3f3d44302ce536daba
--- /dev/null
+++ b/smash/web/models/study_columns.py
@@ -0,0 +1,85 @@
+# coding=utf-8
+from django.db import models
+
+from web.models.constants import BOOL_CHOICES
+
+
+class StudyColumns(models.Model):
+    class Meta:
+        app_label = 'web'
+
+    postponed = models.BooleanField(choices=BOOL_CHOICES,
+                                    verbose_name='Postponed',
+                                    default=True
+                                    )
+
+    datetime_contact_reminder = models.BooleanField(choices=BOOL_CHOICES,
+                                                    default=True,
+                                                    verbose_name='Please make a contact on'
+                                                    )
+    type = models.BooleanField(choices=BOOL_CHOICES,
+                               default=True,
+                               verbose_name='Type'
+                               )
+
+    default_location = models.BooleanField(choices=BOOL_CHOICES,
+                                           default=True,
+                                           verbose_name='Default appointment location',
+                                           )
+
+    flying_team = models.BooleanField(choices=BOOL_CHOICES,
+                                      default=True,
+                                      verbose_name='Default flying team location (if applicable)',
+                                      )
+
+    screening_number = models.BooleanField(choices=BOOL_CHOICES,
+                                           default=True,
+                                           verbose_name='Screening number',
+                                           )
+    nd_number = models.BooleanField(choices=BOOL_CHOICES,
+                                    default=True,
+                                    verbose_name='ND number',
+                                    )
+    mpower_id = models.BooleanField(choices=BOOL_CHOICES,
+                                    default=True,
+                                    verbose_name='MPower ID'
+                                    )
+    comments = models.BooleanField(choices=BOOL_CHOICES,
+                                   default=True,
+                                   verbose_name='Comments'
+                                   )
+    referral = models.BooleanField(choices=BOOL_CHOICES,
+                                   default=True,
+                                   verbose_name='Referred by'
+                                   )
+    diagnosis = models.BooleanField(choices=BOOL_CHOICES,
+                                    default=True,
+                                    verbose_name='Diagnosis'
+                                    )
+    year_of_diagnosis = models.BooleanField(choices=BOOL_CHOICES,
+                                            default=True,
+                                            verbose_name='Year of diagnosis (YYYY)'
+                                            )
+
+    information_sent = models.BooleanField(choices=BOOL_CHOICES,
+                                           default=True,
+                                           verbose_name='Information sent',
+                                           )
+    pd_in_family = models.BooleanField(choices=BOOL_CHOICES,
+                                       default=True,
+                                       verbose_name='PD in family',
+                                       )
+    resigned = models.BooleanField(choices=BOOL_CHOICES,
+                                   default=True,
+                                   verbose_name='Resigned',
+                                   )
+    resign_reason = models.BooleanField(choices=BOOL_CHOICES,
+                                        default=True,
+                                        verbose_name='Resign reason'
+                                        )
+
+    def __str__(self):
+        return "%s" % self.study
+
+    def __unicode__(self):
+        return "%s" % self.study
diff --git a/smash/web/tests/functions.py b/smash/web/tests/functions.py
index be71820bdffef0bfb153445509324462c1315be1..34401ae54e7827fd5cdef302e487ea9db8e07134 100644
--- a/smash/web/tests/functions.py
+++ b/smash/web/tests/functions.py
@@ -4,7 +4,7 @@ import os
 from django.contrib.auth.models import User
 
 from web.models import Location, AppointmentType, StudySubject, Worker, Visit, Appointment, ConfigurationItem, Language, \
-    ContactAttempt, FlyingTeam, Availability, Subject, Study
+    ContactAttempt, FlyingTeam, Availability, Subject, Study, StudyColumns
 from web.models.constants import REDCAP_TOKEN_CONFIGURATION_TYPE, REDCAP_BASE_URL_CONFIGURATION_TYPE, \
     SEX_CHOICES_MALE, SUBJECT_TYPE_CHOICES_CONTROL, CONTACT_TYPES_PHONE, \
     MONDAY_AS_DAY_OF_WEEK, COUNTRY_AFGHANISTAN_ID
@@ -24,7 +24,8 @@ def create_location(name="test"):
 
 
 def create_study(name="test"):
-    return Study.objects.create(name=name)
+    study_columns = StudyColumns.objects.create()
+    return Study.objects.create(name=name, columns=study_columns)
 
 
 def get_test_location():