diff --git a/misc-scripts/xref_mapping/XrefMapper/ChecksumMapper.pm b/misc-scripts/xref_mapping/XrefMapper/ChecksumMapper.pm
index d6a01d7a57e4d479528ffe8712cc8da2a2a71580..3760f99753401f07eeabc1812a9cadf6ee734720 100644
--- a/misc-scripts/xref_mapping/XrefMapper/ChecksumMapper.pm
+++ b/misc-scripts/xref_mapping/XrefMapper/ChecksumMapper.pm
@@ -23,6 +23,7 @@ use strict;
 use warnings;
 
 use Bio::EnsEMBL::Utils::Exception qw(throw);
+use Bio::EnsEMBL::DBSQL::DBConnection;
 
 use base qw(XrefMapper::BasicMapper);
 
@@ -77,7 +78,7 @@ sub process {
   my $target = $self->target();
   my $object_type = $self->object_type;
 
-  if($self->_map_checksums()) {
+  if($self->_map_checksums($db_url)) {
     my $method = $self->get_method();
     my $results = $method->run($target, $source_id, $object_type, $db_url);
     $self->log_progress('Starting upload');
@@ -219,9 +220,21 @@ sub _update_status {
 }
 
 sub _map_checksums {
-  my ($self) = @_;
+  my ($self, $db_url) = @_;
   my $source_id = $self->source_id();
-  my $count = $self->_xref_helper()->execute_single_result(-SQL => 'select count(*) from checksum_xref where source_id = ' . $source_id);
+  my $dbc = $self->mapper->xref->dbc;
+  if (defined $db_url) { 
+    $source_id = 1;
+    my ($dbconn_part, $driver, $user, $pass, $host, $port, $dbname, $table_name, $tparam_name, $tparam_value, $conn_param_string) =
+            $db_url =~ m{^((\w*)://(?:(\w+)(?:\:([^/\@]*))?\@)?(?:([\w\-\.]+)(?:\:(\d*))?)?/([\w\-\.]*))(?:/(\w+)(?:\?(\w+)=([\w\[\]\{\}]*))?)?((?:;(\w+)=(\w+))*)$};
+    $dbc = Bio::EnsEMBL::DBSQL::DBConnection->new(
+      -dbname => $dbname,
+      -user => $user,
+      -pass => $pass,
+      -host => $host,
+      -port => $port);
+  }
+  my $count = $dbc->sql_helper()->execute_single_result(-SQL => 'select count(*) from checksum_xref where source_id = ' . $source_id);
   return $count;
 }
 
diff --git a/misc-scripts/xref_mapping/XrefMapper/Methods/MySQLChecksum.pm b/misc-scripts/xref_mapping/XrefMapper/Methods/MySQLChecksum.pm
index 4d4722e6896c07641fecb81885f19a06b9d1719f..2473c831925b51797f892e7e5a425f2924f99cba 100644
--- a/misc-scripts/xref_mapping/XrefMapper/Methods/MySQLChecksum.pm
+++ b/misc-scripts/xref_mapping/XrefMapper/Methods/MySQLChecksum.pm
@@ -21,6 +21,7 @@ package XrefMapper::Methods::MySQLChecksum;
 
 use strict;
 use warnings;
+use Bio::EnsEMBL::DBSQL::DBConnection;
 
 use base qw/XrefMapper::Methods::ChecksumBasic/;
 
@@ -39,13 +40,10 @@ sub perform_mapping {
   my @final_results;
   my $dbc;
   if (defined $db_url) {
-    my $parsed_url = Bio::EnsEMBL::Hive::Utils::URL::parse($db_url);
-    my $user      = $parsed_url->{'user'};
-    my $pass      = $parsed_url->{'pass'};
-    my $host      = $parsed_url->{'host'};
-    my $port      = $parsed_url->{'port'};
-    my $dbname    = $parsed_url->{'dbname'};
-    $dbc = Bio::EnSEMBL::DBSQL::DBConnection->new(
+    $source_id = 1;
+    my ($dbconn_part, $driver, $user, $pass, $host, $port, $dbname, $table_name, $tparam_name, $tparam_value, $conn_param_string) =
+            $db_url =~ m{^((\w*)://(?:(\w+)(?:\:([^/\@]*))?\@)?(?:([\w\-\.]+)(?:\:(\d*))?)?/([\w\-\.]*))(?:/(\w+)(?:\?(\w+)=([\w\[\]\{\}]*))?)?((?:;(\w+)=(\w+))*)$};
+    $dbc = Bio::EnsEMBL::DBSQL::DBConnection->new(
       -dbname => $dbname,
       -user => $user,
       -pass => $pass,