diff --git a/modules/Bio/EnsEMBL/Registry.pm b/modules/Bio/EnsEMBL/Registry.pm
index d95606bae2114a83fb82806a7bed037f8d864887..e07e7ac6df204201ea2b8478ff4ef9f62deb9adf 100644
--- a/modules/Bio/EnsEMBL/Registry.pm
+++ b/modules/Bio/EnsEMBL/Registry.pm
@@ -1567,12 +1567,12 @@ sub load_registry_from_db {
 
   my ( $host,         $port,     $user,
        $pass,         $verbose,  $db_version,
-       $wait_timeout, $no_cache, $species, $species_suffix )
+       $wait_timeout, $no_cache, $species, $species_suffix, $db_prefix )
     = rearrange( [ 'HOST',         'PORT',
                    'USER',         'PASS',
                    'VERBOSE',      'DB_VERSION',
                    'WAIT_TIMEOUT', 'NO_CACHE',
-                   'SPECIES', 'SPECIES_SUFFIX' ],
+                   'SPECIES', 'SPECIES_SUFFIX', 'DB_PREFIX' ],
                  @args );
 
   if ( defined($species) ) {
@@ -1582,6 +1582,9 @@ sub load_registry_from_db {
   if (!defined($species_suffix)) {
     $species_suffix = "";
   }
+  if (defined($db_prefix)) {
+    $db_prefix = $db_prefix . '_';
+  }
 
   if(! defined $db_version) {
     # Do checking for the -DB_VERSION flag which can be mis-spelt. Regex assembled using:
@@ -1689,7 +1692,7 @@ sub load_registry_from_db {
       }
 
     } elsif (
-      $db =~ /^([a-z]+_[a-z0-9]+(?:_[a-z0-9]+)? # species name e.g. homo_sapiens or canis_lupus_familiaris
+      $db =~ /^(?:$db_prefix)([a-z]+_[a-z0-9]+(?:_[a-z0-9]+)? # species name e.g. homo_sapiens or canis_lupus_familiaris
            _
            [a-z]+            # db type
            (?:_\d+)?)        # optional end bit for ensembl genomes databases