diff --git a/smash/web/migrations/0079_auto_20171204_1235.py b/smash/web/migrations/0079_auto_20171204_1235.py
new file mode 100644
index 0000000000000000000000000000000000000000..b81fd3f647eeadee94cd778a83e2d07ed004aeff
--- /dev/null
+++ b/smash/web/migrations/0079_auto_20171204_1235.py
@@ -0,0 +1,56 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.10.7 on 2017-12-04 12:35
+from __future__ import unicode_literals
+
+import django.db.models.deletion
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+    dependencies = [
+        ('web', '0078_auto_20171204_1040'),
+    ]
+
+    operations = [
+        migrations.CreateModel(
+            name='StudyNotificationParameters',
+            fields=[
+                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+                ('exceeded_visits_visible', models.BooleanField(default=True, verbose_name=b'exceeded visit time')),
+                ('missing_redcap_subject_visible',
+                 models.BooleanField(default=True, verbose_name=b'missing RED Cap subject')),
+                ('inconsistent_redcap_subject_visible',
+                 models.BooleanField(default=True, verbose_name=b'inconsistent RED Cap subject')),
+                ('subject_require_contact_visible',
+                 models.BooleanField(default=True, verbose_name=b'subject required contact')),
+                ('subject_no_visits_visible', models.BooleanField(default=True, verbose_name=b'subject without visit')),
+                ('unfinished_visits_visible', models.BooleanField(default=True, verbose_name=b'unfinished visits')),
+                ('visits_with_missing_appointments_visible',
+                 models.BooleanField(default=True, verbose_name=b'visits with missing appointments')),
+                ('approaching_visits_without_appointments_visible',
+                 models.BooleanField(default=True, verbose_name=b'approaching visits')),
+                ('approaching_visits_for_mail_contact_visible',
+                 models.BooleanField(default=True, verbose_name=b'post mail for approaching visits')),
+                ('unfinished_appointments_visible',
+                 models.BooleanField(default=True, verbose_name=b'unfinished appointments')),
+            ],
+        ),
+        migrations.RunSQL('insert into web_studynotificationparameters (exceeded_visits_visible,' +
+                          'missing_redcap_subject_visible,' +
+                          'inconsistent_redcap_subject_visible,' +
+                          'subject_require_contact_visible,' +
+                          'subject_no_visits_visible,' +
+                          'unfinished_visits_visible,' +
+                          'visits_with_missing_appointments_visible,' +
+                          'approaching_visits_without_appointments_visible,' +
+                          'approaching_visits_for_mail_contact_visible,' +
+                          'unfinished_appointments_visible' +
+                          ') values(true, true, true, true, true, true, true, true, true, true)'),
+        migrations.AddField(
+            model_name='study',
+            name='notification_parameters',
+            field=models.OneToOneField(default=1, on_delete=django.db.models.deletion.CASCADE,
+                                       to='web.StudyNotificationParameters'),
+            preserve_default=False,
+        ),
+    ]
diff --git a/smash/web/models/__init__.py b/smash/web/models/__init__.py
index 5226d98e619ba915c24b935149c896c839ea5d34..7d37f387ad3dd5da911ecc29472cb4687d0c2fb6 100644
--- a/smash/web/models/__init__.py
+++ b/smash/web/models/__init__.py
@@ -10,6 +10,7 @@ from appointment_type_link import AppointmentTypeLink
 from country import Country
 from subject_columns import SubjectColumns
 from study_columns import StudyColumns
+from notification_columns import StudyNotificationParameters
 from study import Study
 from room import Room
 from visit import Visit
@@ -29,6 +30,6 @@ from missing_subject import MissingSubject
 from inconsistent_subject import InconsistentSubject, InconsistentField
 
 __all__ = [Study, FlyingTeam, Appointment, AppointmentType, Availability, Holiday, Item, Language, Location, Room,
-           Subject, StudySubject, StudySubjectList, SubjectColumns,
+           Subject, StudySubject, StudySubjectList, SubjectColumns, StudyNotificationParameters,
            Visit, Worker, ContactAttempt, ConfigurationItem, MailTemplate, AppointmentTypeLink, MissingSubject,
            InconsistentSubject, InconsistentField, Country, StudyColumns]
diff --git a/smash/web/models/notification_columns.py b/smash/web/models/notification_columns.py
new file mode 100644
index 0000000000000000000000000000000000000000..aa1141734ad6b861dd3780bc39f923533c19c520
--- /dev/null
+++ b/smash/web/models/notification_columns.py
@@ -0,0 +1,57 @@
+# coding=utf-8
+from django.db import models
+
+
+class StudyNotificationParameters(models.Model):
+    class Meta:
+        app_label = 'web'
+
+    exceeded_visits_visible = models.BooleanField(
+        default=True,
+        verbose_name='exceeded visit time',
+    )
+
+    missing_redcap_subject_visible = models.BooleanField(
+        default=True,
+        verbose_name='missing RED Cap subject',
+    )
+
+    inconsistent_redcap_subject_visible = models.BooleanField(
+        default=True,
+        verbose_name='inconsistent RED Cap subject',
+    )
+
+    subject_require_contact_visible = models.BooleanField(
+        default=True,
+        verbose_name='subject required contact',
+    )
+
+    subject_no_visits_visible = models.BooleanField(
+        default=True,
+        verbose_name='subject without visit',
+    )
+
+    unfinished_visits_visible = models.BooleanField(
+        default=True,
+        verbose_name='unfinished visits',
+    )
+
+    visits_with_missing_appointments_visible = models.BooleanField(
+        default=True,
+        verbose_name='visits with missing appointments',
+    )
+
+    approaching_visits_without_appointments_visible = models.BooleanField(
+        default=True,
+        verbose_name='approaching visits',
+    )
+
+    approaching_visits_for_mail_contact_visible = models.BooleanField(
+        default=True,
+        verbose_name='post mail for approaching visits',
+    )
+
+    unfinished_appointments_visible = models.BooleanField(
+        default=True,
+        verbose_name='unfinished appointments',
+    )
diff --git a/smash/web/models/study.py b/smash/web/models/study.py
index d3b4090d33f589d100ce6c723f5af783597903bf..04a8e68e01cc32d1d6b5e12be22112e720137793 100644
--- a/smash/web/models/study.py
+++ b/smash/web/models/study.py
@@ -1,7 +1,7 @@
 # coding=utf-8
 from django.db import models
 
-from web.models.study_columns import StudyColumns
+from web.models import StudyColumns, StudyNotificationParameters
 
 
 class Study(models.Model):
@@ -14,6 +14,10 @@ class Study(models.Model):
         StudyColumns,
         on_delete=models.CASCADE,
     )
+    notification_parameters = models.OneToOneField(
+        StudyNotificationParameters,
+        on_delete=models.CASCADE,
+    )
 
     def __str__(self):
         return "%s" % self.name
diff --git a/smash/web/tests/functions.py b/smash/web/tests/functions.py
index 6994935f76045a59b011f429d58b408386c7152d..b9cd6189814fe60d3e56fb9bf2255f9f36e34359 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, StudyColumns
+    Language, ContactAttempt, FlyingTeam, Availability, Subject, Study, StudyColumns, StudyNotificationParameters
 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
@@ -48,7 +48,8 @@ def create_empty_study_columns():
 
 def create_study(name="test"):
     study_columns = StudyColumns.objects.create()
-    return Study.objects.create(name=name, columns=study_columns)
+    notification_parameters = StudyNotificationParameters.objects.create()
+    return Study.objects.create(name=name, columns=study_columns, notification_parameters=notification_parameters)
 
 
 def create_empty_study(name="test"):
@@ -70,7 +71,10 @@ def create_empty_study(name="test"):
         resigned=False,
         resign_reason=False
     )
-    return Study.objects.create(name=name, columns=study_columns)
+    result = create_study()
+    result.columns = study_columns
+    result.save()
+    return result
 
 
 def get_test_location():
diff --git a/smash/web/views/notifications.py b/smash/web/views/notifications.py
index 3829d3ebebc09360004a2730fad67c52dd0df520..53680ebc08c7953123dfdbf25b5b7bc037f26020 100644
--- a/smash/web/views/notifications.py
+++ b/smash/web/views/notifications.py
@@ -68,7 +68,7 @@ def get_subject_with_no_visit_notifications_count(user):
 
 def get_visits_without_appointments_count(user):
     notification = NotificationCount(
-        title="unfinished visits ",
+        title="unfinished visits",
         count=len(get_unfinished_visits(user)),
         style="fa fa-user-times text-yellow",
         type='web.views.unfinished_visits')
@@ -86,7 +86,7 @@ def get_visits_with_missing_appointments_count(user):
 
 def get_approaching_visits_without_appointments_count(user):
     notification = NotificationCount(
-        title="approaching visits ",
+        title="approaching visits",
         count=get_approaching_visits_without_appointments(user).count(),
         style="fa fa-users text-aqua",
         type='web.views.approaching_visits_without_appointments')
@@ -104,7 +104,7 @@ def get_approaching_visits_for_mail_contact_count(user):
 
 def get_unfinished_appointments_count(user):
     return NotificationCount(
-        title="unfinished appointments ",
+        title="unfinished appointments",
         count=get_unfinished_appointments(user).count(),
         style="fa fa-history text-yellow",
         type='web.views.unfinished_appointments')