diff --git a/changelog.d/4974.misc b/changelog.d/4974.misc
new file mode 100644
index 0000000000..672a18923a
--- /dev/null
+++ b/changelog.d/4974.misc
@@ -0,0 +1 @@
+Add `config.signing_key_path` that can be read by `synapse.config` utility.
diff --git a/changelog.d/4990.bugfix b/changelog.d/4990.bugfix
new file mode 100644
index 0000000000..1b69d058f6
--- /dev/null
+++ b/changelog.d/4990.bugfix
@@ -0,0 +1 @@
+Transfer related groups on room upgrade.
\ No newline at end of file
diff --git a/synapse/api/constants.py b/synapse/api/constants.py
index dc913feeee..dd373fa4b8 100644
--- a/synapse/api/constants.py
+++ b/synapse/api/constants.py
@@ -69,6 +69,7 @@ class EventTypes(object):
Redaction = "m.room.redaction"
ThirdPartyInvite = "m.room.third_party_invite"
Encryption = "m.room.encryption"
+ RelatedGroups = "m.room.related_groups"
RoomHistoryVisibility = "m.room.history_visibility"
CanonicalAlias = "m.room.canonical_alias"
diff --git a/synapse/config/key.py b/synapse/config/key.py
index 933928885a..eb10259818 100644
--- a/synapse/config/key.py
+++ b/synapse/config/key.py
@@ -42,7 +42,8 @@ class KeyConfig(Config):
if "signing_key" in config:
self.signing_key = read_signing_keys([config["signing_key"]])
else:
- self.signing_key = self.read_signing_key(config["signing_key_path"])
+ self.signing_key_path = config["signing_key_path"]
+ self.signing_key = self.read_signing_key(self.signing_key_path)
self.old_signing_keys = self.read_old_signing_keys(
config.get("old_signing_keys", {})
diff --git a/synapse/handlers/room.py b/synapse/handlers/room.py
index c3dcfec247..17628e2684 100644
--- a/synapse/handlers/room.py
+++ b/synapse/handlers/room.py
@@ -280,6 +280,7 @@ class RoomCreationHandler(BaseHandler):
(EventTypes.RoomAvatar, ""),
(EventTypes.Encryption, ""),
(EventTypes.ServerACL, ""),
+ (EventTypes.RelatedGroups, ""),
)
old_room_state_ids = yield self.store.get_filtered_current_state_ids(
|