diff --git a/synapse/federation/replication.py b/synapse/federation/replication.py
index 2346d5504530ddbfa5c80ed88d6afaf8a38ff782..9363ac73006a086775e1be825c9e1b96bdc73ddd 100644
--- a/synapse/federation/replication.py
+++ b/synapse/federation/replication.py
@@ -319,7 +319,7 @@ class ReplicationLayer(object):
 
         if hasattr(transaction, "edus"):
             for edu in [Edu(**x) for x in transaction.edus]:
-                self.received_edu(edu.origin, edu.edu_type, edu.content)
+                self.received_edu(transaction.origin, edu.edu_type, edu.content)
 
         results = yield defer.DeferredList(dl)
 
diff --git a/synapse/federation/units.py b/synapse/federation/units.py
index ecca35ac4341a9afa61693d3316b55bde752ce1c..d97aeb698eb88127016ddf9adab00f13e19ea1bf 100644
--- a/synapse/federation/units.py
+++ b/synapse/federation/units.py
@@ -156,11 +156,15 @@ class Edu(JsonEncodedObject):
     ]
 
     required_keys = [
-        "origin",
-        "destination",
         "edu_type",
     ]
 
+#    TODO: SYN-103: Remove "origin" and "destination" keys.
+#    internal_keys = [
+#        "origin",
+#        "destination",
+#    ]
+
 
 class Transaction(JsonEncodedObject):
     """ A transaction is a list of Pdus and Edus to be sent to a remote home
diff --git a/tests/federation/test_federation.py b/tests/federation/test_federation.py
index 8d277d6612a5f42ef016b3fb62acc8fdfdcd21c3..d86ce83b28e25a0e7a7a61cbe2cd4b0a8c3b059f 100644
--- a/tests/federation/test_federation.py
+++ b/tests/federation/test_federation.py
@@ -211,6 +211,7 @@ class FederationTestCase(unittest.TestCase):
                     "pdus": [],
                     "edus": [
                         {
+                            # TODO: SYN-103: Remove "origin" and "destination"
                             "origin": "test",
                             "destination": "remote",
                             "edu_type": "m.test",
diff --git a/tests/handlers/test_presence.py b/tests/handlers/test_presence.py
index 15022b8d05aa841b4fe3d2b407ee3c54c714f4ed..84985a806676cdba6db3d971423e8f5d4d44754d 100644
--- a/tests/handlers/test_presence.py
+++ b/tests/handlers/test_presence.py
@@ -43,6 +43,7 @@ def _expect_edu(destination, edu_type, content, origin="test"):
         "pdus": [],
         "edus": [
             {
+                # TODO: SYN-103: Remove "origin" and "destination" keys.
                 "origin": origin,
                 "destination": destination,
                 "edu_type": edu_type,
diff --git a/tests/handlers/test_typing.py b/tests/handlers/test_typing.py
index 064b04c2173fea9d24a7e1191e66b7be943383e4..b685373deb1fba1fd6f3f812445f742747c58f88 100644
--- a/tests/handlers/test_typing.py
+++ b/tests/handlers/test_typing.py
@@ -33,6 +33,7 @@ def _expect_edu(destination, edu_type, content, origin="test"):
         "pdus": [],
         "edus": [
             {
+                # TODO: SYN-103: Remove "origin" and "destination" keys.
                 "origin": origin,
                 "destination": destination,
                 "edu_type": edu_type,