diff --git a/.gitattributes b/.gitattributes
index e73c634d7905be12bbb4eef3c116edb070a1efab..0a06d1036b25cd6b1dd52aea19ca2b0ff614553b 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -5308,7 +5308,7 @@ SAS/TriggerEmailService/Common/config.py -text
 SAS/TriggerEmailService/Server/CMakeLists.txt -text
 SAS/TriggerEmailService/Server/bin/CMakeLists.txt -text
 SAS/TriggerEmailService/Server/bin/TriggerEmailService -text
-SAS/TriggerEmailService/Server/bin/TriggerEmailService.ini_stopped -text
+SAS/TriggerEmailService/Server/bin/TriggerEmailService.ini -text
 SAS/TriggerEmailService/Server/lib/CMakeLists.txt -text
 SAS/TriggerEmailService/Server/lib/Templates.py -text
 SAS/TriggerEmailService/Server/lib/TriggerEmailService.py -text
diff --git a/SAS/TriggerEmailService/Server/bin/TriggerEmailService.ini_stopped b/SAS/TriggerEmailService/Server/bin/TriggerEmailService.ini
similarity index 100%
rename from SAS/TriggerEmailService/Server/bin/TriggerEmailService.ini_stopped
rename to SAS/TriggerEmailService/Server/bin/TriggerEmailService.ini
diff --git a/SAS/TriggerEmailService/Server/lib/TriggerEmailService.py b/SAS/TriggerEmailService/Server/lib/TriggerEmailService.py
index fc682c44a389ef2de64614336d175af2b2a4f377..bc47dfd8c34033a85eae2de9123c095a781545c3 100644
--- a/SAS/TriggerEmailService/Server/lib/TriggerEmailService.py
+++ b/SAS/TriggerEmailService/Server/lib/TriggerEmailService.py
@@ -31,6 +31,7 @@ from email.mime.text import MIMEText
 from email.mime.multipart import MIMEMultipart
 
 from datetime import timedelta, datetime
+import time
 from lofar.sas.otdb.OTDBBusListener import OTDBBusListener
 from lofar.common.util import waitForInterrupt
 from lofar.messaging.messagebus import AbstractBusListener
@@ -75,6 +76,10 @@ def email(recipients, subject, body, attachment, attachment_name):
     s.quit()
 
 
+class MoMIdError(Exception):
+    pass
+
+
 class OTDBTriggerListener(OTDBBusListener):
     def __init__(self, momquery_rpc=MoMQueryRPC(), busname=DEFAULT_OTDB_NOTIFICATION_BUSNAME,
                  subject=DEFAULT_OTDB_NOTIFICATION_SUBJECT, broker=None, **kwargs):
@@ -106,19 +111,39 @@ class OTDBTriggerListener(OTDBBusListener):
         self.when_trigger_send_email(otdb_id, REJECTED_TEMPLATE_SUBJECT, REJECTED_TEMPLATE_BODY)
 
     def when_trigger_send_email(self, otdb_id, template_subject, template_body):
-        mom_id = None
+        try:
+            mom_id, trigger_id = self._get_mom_and_trigger_id(otdb_id)
 
-        while not mom_id:  # we are sometimes to fast for MOM
-            mom_id = self.mom_rpc_client.getMoMIdsForOTDBIds(otdb_id)[otdb_id]
+            if trigger_id:
+                self._send_email(otdb_id, mom_id, trigger_id, template_subject, template_body)
+
+        except MoMIdError:
+            logger.error("Could not retrieve a mom_id for otdb_id: %s", otdb_id)
+
+    def _get_mom_and_trigger_id(self, otdb_id):
+        mom_id = self._try_get_mom_id(otdb_id)
+
+        if not mom_id:
+            raise MoMIdError
 
         trigger_id = self.mom_rpc_client.get_trigger_id(mom_id)['trigger_id']
 
-        if trigger_id:
-            logger.info("Emailing otdb_id: %s, mom_id: %s, trigger_id: %s, template_subject: %s, template_body: %s",
-                        otdb_id, mom_id, trigger_id, template_subject, template_body)
-            self._send_email(otdb_id, mom_id, trigger_id, template_subject, template_body)
+        return mom_id, trigger_id
+
+    def _try_get_mom_id(self, otdb_id):
+        # sometimes we are too fast for MoM so we need to retry
+        mom_id = None
+        for _ in xrange(10):
+            mom_id = self.mom_rpc_client.getMoMIdsForOTDBIds(otdb_id)[otdb_id]
+            if mom_id:
+                break
+            time.sleep(3)
+        return mom_id
 
     def _send_email(self, otdb_id, mom_id, trigger_id, template_subject, template_body):
+        logger.info("Emailing otdb_id: %s, mom_id: %s, trigger_id: %s, template_subject: %s, template_body: %s",
+                    otdb_id, mom_id, trigger_id, template_subject, template_body)
+
         subject, body = self._fill_template(otdb_id, mom_id, trigger_id, template_subject, template_body)
         recipients = self._get_recipients(mom_id)
 
diff --git a/SAS/TriggerEmailService/Server/test/t_TriggerEmailService.py b/SAS/TriggerEmailService/Server/test/t_TriggerEmailService.py
index d8461cc6b405a3e580aec6a8a246d7d68e4e6e65..1d6b6a452046c0dfb1aa4b95c21773dcd8d1e680 100755
--- a/SAS/TriggerEmailService/Server/test/t_TriggerEmailService.py
+++ b/SAS/TriggerEmailService/Server/test/t_TriggerEmailService.py
@@ -73,6 +73,10 @@ class TestOTDBTriggerListener(unittest.TestCase):
         self.addCleanup(email_patcher.stop)
         self.email_mock = email_patcher.start()
 
+        logger_patcher = mock.patch('lofar.sas.TriggerEmailService.TriggerEmailService.logger')
+        self.addCleanup(logger_patcher.stop)
+        self.logger_mock = logger_patcher.start()
+
     @mock.patch('lofar.sas.otdb.OTDBBusListener.OTDBBusListener.start_listening')
     def test_start_listening_should_open_momquery_rpc(self, super_mock):
         listener = OTDBTriggerListener(self.momqueryrpc_mock)
@@ -236,6 +240,48 @@ class TestOTDBTriggerListener(unittest.TestCase):
         self.assertIn(str(self.trigger_id), self.email_mock.call_args[0][2])
         self.assertIn(self.project_name, self.email_mock.call_args[0][2])
 
+    # when_trigger_send_email tests
+
+    @mock.patch('time.sleep', return_value=None)
+    def test_when_trigger_send_email_should_limit_the_amount_of_requests(self, _):
+        self.momqueryrpc_mock.getMoMIdsForOTDBIds.return_value = {self.obs_sas_id: None}
+
+        listener = OTDBTriggerListener(self.momqueryrpc_mock)
+
+        listener.onObservationAborted(self.obs_sas_id, None)
+
+        self.assertEqual(10, self.momqueryrpc_mock.getMoMIdsForOTDBIds.call_count)
+
+    @mock.patch('time.sleep', return_value=None)
+    def test_when_trigger_send_email_should_log_when_no_mom_id_can_be_found(self, _):
+        self.momqueryrpc_mock.getMoMIdsForOTDBIds.return_value = {self.obs_sas_id: None}
+
+        listener = OTDBTriggerListener(self.momqueryrpc_mock)
+
+        listener.onObservationAborted(self.obs_sas_id, None)
+
+        self.logger_mock.error.assert_any_call("Could not retrieve a mom_id for otdb_id: %s", self.obs_sas_id)
+
+    @mock.patch('time.sleep', return_value=None)
+    def test_when_trigger_send_email_should_wait_three_seconds_between_retries(self, sleep_mock):
+        self.momqueryrpc_mock.getMoMIdsForOTDBIds.return_value = {self.obs_sas_id: None}
+
+        listener = OTDBTriggerListener(self.momqueryrpc_mock)
+
+        listener.onObservationAborted(self.obs_sas_id, None)
+
+        sleep_mock.assert_called_with(3)
+        self.assertEqual(10, sleep_mock.call_count)
+
+    def test_when_trigger_send_email_should_log_when_sending_email(self):
+        listener = OTDBTriggerListener(self.momqueryrpc_mock)
+
+        listener.when_trigger_send_email(self.obs_sas_id, "", "")
+
+        self.logger_mock.info.assert_any_call(
+            "Emailing otdb_id: %s, mom_id: %s, trigger_id: %s, template_subject: %s, template_body: %s",
+            self.obs_sas_id, self.obs_mom_id, self.trigger_id, "", "")
+
 
 class TestTriggerNotificationListener(unittest.TestCase):
     project_name = "test_lofar"