diff --git a/docs/manual/fixtures/initial_data.json b/docs/manual/fixtures/initial_data.json
index 4ff30823cbe8003546bc9e470af6f6e3a1b101b8..63b55710fd43646950ce5a01281f01d469251fa6 100644
--- a/docs/manual/fixtures/initial_data.json
+++ b/docs/manual/fixtures/initial_data.json
@@ -3091,7 +3091,8 @@
         "path": "https://svn.riouxsvn.com/reviewboard/", 
         "extra_data": "{}", 
         "tool": 1, 
-        "users": []
+        "users": [], 
+	"scmtool_id": "subversion"
     }
 },
 {
@@ -3116,7 +3117,8 @@
         "path": "http://svn.navi.cx/misc", 
         "extra_data": "{}", 
         "tool": 1, 
-        "users": []
+        "users": [], 
+	"scmtool_id": "subversion"
     }
 },
 {
@@ -3141,7 +3143,8 @@
         "path": "/placeholder", 
         "extra_data": "{}", 
         "tool": 5, 
-        "users": []
+        "users": [], 
+	"scmtool_id": "git"
     }
 },
 {
diff --git a/reviewboard/scmtools/__init__.py b/reviewboard/scmtools/__init__.py
index b2f262d8b89da2049d2235007e8e8eb49c881c9f..fc0b03ba9201a84b68477faead4dad14cb345557 100644
--- a/reviewboard/scmtools/__init__.py
+++ b/reviewboard/scmtools/__init__.py
@@ -2,7 +2,31 @@
 
 from djblets.registries.importer import lazy_import_registry
 
+from reviewboard.signals import initializing
+
 
 scmtools_registry = lazy_import_registry(
     'reviewboard.scmtools.registry',
     'SCMToolRegistry')
+
+
+def _populate_registry(**kwargs):
+    """Populate the SCMTools registry.
+
+    Version Added:
+        5.0
+
+    Args:
+        **kwargs (dict, unused):
+            Keyword arguments sent by the signal.
+    """
+    # TODO: We do this here because we want the registry to be populated early
+    # in case we need to create any new entries for the Tool table. We can't do
+    # it in AppConfig.ready because that's not allowed to do database queries
+    # (and can break things like building docs as a result). Once we get rid of
+    # the Tool model, we can either move this into an AppConfig, or just let
+    # the registry populate itself the first time it's accessed.
+    scmtools_registry.populate()
+
+
+initializing.connect(_populate_registry)
diff --git a/reviewboard/scmtools/apps.py b/reviewboard/scmtools/apps.py
deleted file mode 100644
index 489589b0c0c6f1e897566bbd41c0d8100999a4f1..0000000000000000000000000000000000000000
--- a/reviewboard/scmtools/apps.py
+++ /dev/null
@@ -1,25 +0,0 @@
-"""App definition for reviewboard.scmtools.
-
-Version Added:
-    5.0
-"""
-
-from django.apps import AppConfig
-
-
-class SCMToolsAppConfig(AppConfig):
-    """App condfiguration for reviewboard.scmtools.
-
-    Version Added:
-        5.0
-    """
-
-    name = 'reviewboard.scmtools'
-
-    def ready(self):
-        """Configure the app once it's ready.
-
-        This will populate the SCMTools registry.
-        """
-        from reviewboard.scmtools import scmtools_registry
-        scmtools_registry.populate()
