diff --git a/lib/cylc/task_events_mgr.py b/lib/cylc/task_events_mgr.py
index c5fbf16d1f0..301f0f4f432 100644
--- a/lib/cylc/task_events_mgr.py
+++ b/lib/cylc/task_events_mgr.py
@@ -105,7 +105,7 @@ class TaskEventsManager(object):
NN = "NN"
POLLED_INDICATOR = "(polled)"
RE_MESSAGE_TIME = re.compile(
- '\A(.+) at (' + RE_DATE_TIME_FORMAT_EXTENDED + ')\Z')
+ '\A(.+) at (' + RE_DATE_TIME_FORMAT_EXTENDED + ')\Z', re.DOTALL)
def __init__(self, suite, proc_pool, suite_db_mgr, broadcast_mgr=None):
self.suite = suite
diff --git a/tests/cylc-message/01-newline.t b/tests/cylc-message/01-newline.t
new file mode 100755
index 00000000000..093c5a0b46d
--- /dev/null
+++ b/tests/cylc-message/01-newline.t
@@ -0,0 +1,44 @@
+#!/bin/bash
+# THIS FILE IS PART OF THE CYLC SUITE ENGINE.
+# Copyright (C) 2008-2017 NIWA
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
+
+#------------------------------------------------------------------------------
+# Test "cylc message" with multi-line messages. The RE to strip 'at