diff --git a/smash/web/migrations/0046_subject_flying_team.py b/smash/web/migrations/0046_subject_flying_team.py
new file mode 100644
index 0000000000000000000000000000000000000000..3101c686d80256eb03b7d5e27e76f30ea5f65ff7
--- /dev/null
+++ b/smash/web/migrations/0046_subject_flying_team.py
@@ -0,0 +1,21 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.10.7 on 2017-09-11 10:07
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('web', '0045_holiday_info'),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name='subject',
+            name='flying_team',
+            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='web.FlyingTeam', verbose_name=b'Flying team (if applicable)'),
+        ),
+    ]
diff --git a/smash/web/migrations/0047_subject_flying_team_from_annotation.py b/smash/web/migrations/0047_subject_flying_team_from_annotation.py
new file mode 100644
index 0000000000000000000000000000000000000000..7b514e537ecdda24e2882e9a6b1557abf317a375
--- /dev/null
+++ b/smash/web/migrations/0047_subject_flying_team_from_annotation.py
@@ -0,0 +1,22 @@
+# -*- coding: utf-8 -*-
+# assigns default flying team location for subjects that had in the past finished appointment at flying team location
+
+from __future__ import unicode_literals
+
+from django.db import migrations
+
+
+class Migration(migrations.Migration):
+    dependencies = [
+        ('web', '0046_subject_flying_team'),
+    ]
+
+    operations = [
+        migrations.RunSQL(
+            "update web_subject set flying_team_id = web_appointment.flying_team_id from web_visit, web_appointment " +
+            "where web_subject.id=web_visit.subject_id and " +
+            "web_subject.flying_team_id is null and " +
+            "web_visit.id = web_appointment.visit_id and " +
+            "web_appointment.flying_team_id is not null and status = 'FINISHED';"
+        ),
+    ]
diff --git a/smash/web/models/subject.py b/smash/web/models/subject.py
index b28ef59c2de1e34eff123afee3a8c3ac5d033594..38c7470047c8202dd6d80def640c27dd6d95e578 100644
--- a/smash/web/models/subject.py
+++ b/smash/web/models/subject.py
@@ -52,6 +52,12 @@ class Subject(models.Model):
     default_location = models.ForeignKey(Location,
                                          verbose_name='Default appointment location',
                                          )
+
+    flying_team = models.ForeignKey("web.FlyingTeam",
+                                    verbose_name='Default flying team location (if applicable)',
+                                    null=True, blank=True
+                                    )
+
     first_name = models.CharField(max_length=50,
                                   verbose_name='First name'
                                   )
diff --git a/smash/web/tests/functions.py b/smash/web/tests/functions.py
index a492a1e69c4b9ae8f0493165f3c6132e031e3bd6..3f616e355472d30b1668f3ef5e42e2f627086db5 100644
--- a/smash/web/tests/functions.py
+++ b/smash/web/tests/functions.py
@@ -3,7 +3,8 @@ import datetime
 import os
 from django.contrib.auth.models import User
 
-from web.models import Location, AppointmentType, Subject, Worker, Visit, Appointment, ConfigurationItem, Language
+from web.models import Location, AppointmentType, Subject, Worker, Visit, Appointment, ConfigurationItem, Language, \
+    FlyingTeam
 from web.models.constants import SEX_CHOICES_MALE, SUBJECT_TYPE_CHOICES_CONTROL
 from web.views.notifications import get_today_midnight_date
 
@@ -104,6 +105,11 @@ def create_configuration_item():
     return item
 
 
+def create_flying_team():
+    result = FlyingTeam.objects.create()
+    return result
+
+
 def create_language(name="French", locale="fr_FR"):
     language = Language(name=name, locale=locale)
     language.save()
diff --git a/smash/web/tests/test_view_appointments.py b/smash/web/tests/test_view_appointments.py
index 8caa43d8487a125a9956f044d522e9b4f40dbc0f..5ea5c23a2029df526cc8beb3619bee59e59597eb 100644
--- a/smash/web/tests/test_view_appointments.py
+++ b/smash/web/tests/test_view_appointments.py
@@ -2,7 +2,7 @@ import datetime
 
 from django.urls import reverse
 
-from functions import create_subject, create_visit, create_appointment, create_worker
+from functions import create_subject, create_visit, create_appointment, create_worker, create_flying_team
 from web.forms import AppointmentEditForm, SubjectEditForm
 from web.models import Appointment, Subject
 from web.views.notifications import get_today_midnight_date
@@ -10,6 +10,10 @@ from . import LoggedInTestCase
 
 
 class AppointmentsViewTests(LoggedInTestCase):
+    def setUp(self):
+        super(AppointmentsViewTests, self).setUp()
+        create_worker(self.user, True)
+
     def test_appointments_list_request(self):
         response = self.client.get(reverse('web.views.appointments'))
         self.assertEqual(response.status_code, 200)
@@ -18,7 +22,6 @@ class AppointmentsViewTests(LoggedInTestCase):
         subject = create_subject()
         visit = create_visit(subject)
         appointment = create_appointment(visit, when=datetime.datetime.now())
-        create_worker(self.user, True)
         new_comment = 'new comment'
         new_status = appointment.APPOINTMENT_STATUS_NO_SHOW
         new_last_name = "new last name"
@@ -44,8 +47,6 @@ class AppointmentsViewTests(LoggedInTestCase):
         self.assertEqual(new_last_name, updated_subject.last_name)
 
     def test_appointments_edit_without_visit(self):
-        create_worker(self.user)
-
         appointment = create_appointment()
         appointment.visit = None
         appointment.save()
@@ -55,8 +56,6 @@ class AppointmentsViewTests(LoggedInTestCase):
         self.assertEqual(response.status_code, 200)
 
     def test_save_appointments_edit_without_visit(self):
-        create_worker(self.user)
-
         appointment = create_appointment()
         appointment.visit = None
         appointment.save()
@@ -73,10 +72,21 @@ class AppointmentsViewTests(LoggedInTestCase):
 
     def test_save_appointments_edit(self):
         subject = create_subject()
-        create_worker(self.user, True)
         visit = create_visit(subject)
         appointment = create_appointment(visit, get_today_midnight_date())
 
+        form_data = self.prepare_form(appointment, subject)
+        form_data["appointment-status"] = Appointment.APPOINTMENT_STATUS_FINISHED
+
+        response = self.client.post(
+            reverse('web.views.appointment_edit', kwargs={'id': appointment.id}), data=form_data)
+
+        self.assertEqual(response.status_code, 302)
+
+        updated_subject = Subject.objects.get(id=subject.id)
+        self.assertTrue(updated_subject.information_sent)
+
+    def prepare_form(self, appointment, subject):
         form_appointment = AppointmentEditForm(user=self.user, instance=appointment, prefix="appointment")
         form_subject = SubjectEditForm(instance=subject, prefix="subject")
         form_data = {}
@@ -90,12 +100,20 @@ class AppointmentsViewTests(LoggedInTestCase):
                 form_data['subject-{}'.format(key)] = value.strftime('%Y-%m-%d %H:%M')
             elif value is not None:
                 form_data['subject-{}'.format(key)] = value
+        return form_data
+
+    def test_subject_flying_team_location(self):
+        subject = create_subject()
+        visit = create_visit(subject)
+        appointment = create_appointment(visit, get_today_midnight_date())
+
+        form_data = self.prepare_form(appointment, subject)
         form_data["appointment-status"] = Appointment.APPOINTMENT_STATUS_FINISHED
+        form_data["appointment-flying_team"] = create_flying_team().id
+        form_data['appointment-status'] = Appointment.APPOINTMENT_STATUS_FINISHED
 
         response = self.client.post(
             reverse('web.views.appointment_edit', kwargs={'id': appointment.id}), data=form_data)
 
-        self.assertEqual(response.status_code, 302)
-
         updated_subject = Subject.objects.get(id=subject.id)
-        self.assertTrue(updated_subject.information_sent)
+        self.assertIsNotNone(updated_subject.flying_team)
diff --git a/smash/web/views/appointment.py b/smash/web/views/appointment.py
index b4712eb74e607fbaa9621b43b1279b52b8364374..a13e149e3c161a960b22c95ba4e1d3612840f40d 100644
--- a/smash/web/views/appointment.py
+++ b/smash/web/views/appointment.py
@@ -81,6 +81,8 @@ def appointment_edit(request, id):
             if the_appointment.status == Appointment.APPOINTMENT_STATUS_FINISHED:
                 subject = Subject.objects.get(id=the_appointment.visit.subject.id)
                 subject.information_sent = True
+                if the_appointment.flying_team is not None and subject.flying_team is None:
+                    subject.flying_team = the_appointment.flying_team
                 subject.save()
 
             messages.success(request, "Modifications saved")