diff --git a/CRM/Core/BAO/Dashboard.php b/CRM/Core/BAO/Dashboard.php
index 8cb4aa52ab6ecb82b1121089d6adbbe71f5b9507..c421f9f810e8eaee498e63faa93bf621fedb2b57 100644
--- a/CRM/Core/BAO/Dashboard.php
+++ b/CRM/Core/BAO/Dashboard.php
@@ -357,6 +357,7 @@ class CRM_Core_BAO_Dashboard extends CRM_Core_DAO_Dashboard {
       // check url is same as exiting entries, if yes just update existing
       $dashlet->url = CRM_Utils_Array::value('url', $params);
       $dashlet->find(TRUE);
+      $dashlet->name = self::getDashletName(CRM_Utils_Array::value('instanceURL', $params));
     }
     else {
       $dashlet->id = $dashboardID;
@@ -377,6 +378,16 @@ class CRM_Core_BAO_Dashboard extends CRM_Core_DAO_Dashboard {
     return $dashlet;
   }
 
+  static function getDashletName($url) {
+    $urlElements = explode('/', $url);
+    if ($urlElements[1] == 'dashlet') {
+      return $urlElements[2];
+    }
+    elseif ($urlElements[1] == 'report') {
+      return 'report/' . $urlElements[3];
+    }
+    return $url;
+  }
   /**
    * Update contact dashboard with new dashlet
    *
diff --git a/CRM/Upgrade/Incremental/php/FourFour.php b/CRM/Upgrade/Incremental/php/FourFour.php
index 042629c254ef880b8da94b6d7a14494280948d74..ca7665724ce1b28bbc709c6bf543d24c4f0e347e 100644
--- a/CRM/Upgrade/Incremental/php/FourFour.php
+++ b/CRM/Upgrade/Incremental/php/FourFour.php
@@ -214,6 +214,50 @@ VALUES {$insertStatus}";
     $this->addTask('Patch word-replacement schema', 'wordReplacements_patch', $rev);
   }
 
+  function upgrade_4_4_4($rev) {
+    // task to process sql
+    $this->addTask(ts('Upgrade DB to %1: SQL', array(1 => '4.4.4')), 'task_4_4_x_runSql', $rev);
+
+    // Consolidate activity contacts CRM-12274.
+    $this->addTask('Dashboard schema', 'dashboard');
+
+    return TRUE;
+  }
+
+  static function dashboard(CRM_Queue_TaskContext $ctx) {
+    $upgrade = new CRM_Upgrade_Form();
+    $query = "
+ALTER TABLE civicrm_dashboard
+    ADD name varchar(64) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'Internal name of dashlet.' AFTER domain_id ";
+    CRM_Core_DAO::executeQuery($query);
+
+    $dashboard = new CRM_Core_DAO_Dashboard();
+    $dashboard->find();
+    while ($dashboard->fetch()) {
+      $urlElements = explode('/', $dashboard->url);
+      if ($urlElements[1] == 'dashlet') {
+        $url = explode('&', $urlElements[2]);
+        $name = $url[0];
+      }
+      elseif ($urlElements[1] == 'report') {
+        $url = explode('&', $urlElements[3]);
+        $name = 'report/' .$url[0];
+      }
+      $values .= "
+      WHEN {$dashboard->id} THEN '{$name}'
+      ";
+    }
+
+    $query = "
+     UPDATE civicrm_dashboard
+  SET name = CASE id
+  {$values}
+  END;
+    ";
+
+    CRM_Core_DAO::executeQuery($query);
+  }
+
   /**
    * Update activity contacts CRM-12274
    *
diff --git a/xml/schema/Core/Dashboard.xml b/xml/schema/Core/Dashboard.xml
index 3ff64f902e8a07c3bd6a71885348e9ec443dbf80..2c04c1a4643d2df55b832009135b52259852861c 100644
--- a/xml/schema/Core/Dashboard.xml
+++ b/xml/schema/Core/Dashboard.xml
@@ -29,6 +29,14 @@
         <key>id</key>
         <add>3.1</add>
     </foreignKey>
+    <field>
+      <name>name</name>
+      <type>varchar</type>
+      <title>Dashlet Name</title>
+      <length>64</length>
+      <comment>Internal name of dashlet.</comment>
+      <add>4.4</add>
+    </field>
     <field>
         <name>label</name>
         <type>varchar</type>
diff --git a/xml/templates/civicrm_navigation.tpl b/xml/templates/civicrm_navigation.tpl
index c77bd53fe98667cdd949dc72ea58367123e610da..c5bfa7e6651773c9b5dbac909ad7f9943c92e307 100644
--- a/xml/templates/civicrm_navigation.tpl
+++ b/xml/templates/civicrm_navigation.tpl
@@ -96,13 +96,13 @@ INSERT INTO civicrm_mail_settings (domain_id, name, is_default, domain) VALUES (
 -- activity and case dashlets
 
 INSERT INTO `civicrm_dashboard`
-    ( `domain_id`, `label`, `url`, `permission`, `permission_operator`, `column_no`, `is_minimized`, `is_active`, `weight`, `fullscreen_url`, `is_fullscreen`, `is_reserved`)
+    ( `domain_id`, `name`, `label`, `url`, `permission`, `permission_operator`, `column_no`, `is_minimized`, `is_active`, `weight`, `fullscreen_url`, `is_fullscreen`, `is_reserved`)
     VALUES
-    ( @domainID, '{ts escape="sql"}CiviCRM News{/ts}', 'civicrm/dashlet/blog&reset=1&snippet=5', 'access CiviCRM', NULL, 0, 0, 1, 0, 'civicrm/dashlet/blog&reset=1&snippet=5&context=dashletFullscreen', 1, 1),
-    ( @domainID, '{ts escape="sql"}Activities{/ts}', 'civicrm/dashlet/activity&reset=1&snippet=5', 'access CiviCRM', NULL, 0, 0, 1, 1, 'civicrm/dashlet/activity&reset=1&snippet=5&context=dashletFullscreen', 1, 1),
-    ( @domainID, '{ts escape="sql"}My Cases{/ts}', 'civicrm/dashlet/myCases&reset=1&snippet=5', 'access my cases and activities', NULL , 0, 0, 1, 2, 'civicrm/dashlet/myCases&reset=1&snippet=5&context=dashletFullscreen', 1, 1),
-    ( @domainID, '{ts escape="sql"}All Cases{/ts}', 'civicrm/dashlet/allCases&reset=1&snippet=5', 'access all cases and activities', NULL , 0, 0, 1, 3, 'civicrm/dashlet/allCases&reset=1&snippet=5&context=dashletFullscreen', 1, 1),
-    ( @domainID, '{ts escape="sql"}Case Dashboard Dashlet{/ts}', 'civicrm/dashlet/casedashboard&reset=1&snippet=5', 'access CiviCase', NULL , 0, 0, 1, 4, 'civicrm/dashlet/casedashboard&reset=1&snippet=5&context=dashletFullscreen', 1, 1);
+    ( @domainID, 'blog', '{ts escape="sql"}CiviCRM News{/ts}', 'civicrm/dashlet/blog&reset=1&snippet=5', 'access CiviCRM', NULL, 0, 0, 1, 0, 'civicrm/dashlet/blog&reset=1&snippet=5&context=dashletFullscreen', 1, 1),
+    ( @domainID, 'activity', '{ts escape="sql"}Activities{/ts}', 'civicrm/dashlet/activity&reset=1&snippet=5', 'access CiviCRM', NULL, 0, 0, 1, 1, 'civicrm/dashlet/activity&reset=1&snippet=5&context=dashletFullscreen', 1, 1),
+    ( @domainID, 'myCases', '{ts escape="sql"}My Cases{/ts}', 'civicrm/dashlet/myCases&reset=1&snippet=5', 'access my cases and activities', NULL , 0, 0, 1, 2, 'civicrm/dashlet/myCases&reset=1&snippet=5&context=dashletFullscreen', 1, 1),
+    ( @domainID, 'allCases', '{ts escape="sql"}All Cases{/ts}', 'civicrm/dashlet/allCases&reset=1&snippet=5', 'access all cases and activities', NULL , 0, 0, 1, 3, 'civicrm/dashlet/allCases&reset=1&snippet=5&context=dashletFullscreen', 1, 1),
+    ( @domainID, 'casedashboard', '{ts escape="sql"}Case Dashboard Dashlet{/ts}', 'civicrm/dashlet/casedashboard&reset=1&snippet=5', 'access CiviCase', NULL , 0, 0, 1, 4, 'civicrm/dashlet/casedashboard&reset=1&snippet=5&context=dashletFullscreen', 1, 1);
 
 -- event badge
 INSERT INTO civicrm_print_label (title, name, description, label_format_name, label_type_id, is_default, is_reserved, is_active, data)
diff --git a/xml/templates/civicrm_sample.tpl b/xml/templates/civicrm_sample.tpl
index 6fad51cccc4c952b6d80800ddc09a06a00fd7fe6..3179303092d377570c4c2f384e72dcbb0ea449cf 100644
--- a/xml/templates/civicrm_sample.tpl
+++ b/xml/templates/civicrm_sample.tpl
@@ -135,12 +135,12 @@ INSERT INTO `civicrm_contact_type`
 -- Add sample dashlets
 
 INSERT INTO `civicrm_dashboard`
-    ( `domain_id`, `label`, `url`, `permission`, `permission_operator`, `column_no`, `is_minimized`, `is_active`, `weight`, `is_fullscreen`, `fullscreen_url`)
+    ( `domain_id`, `name`, `label`, `url`, `permission`, `permission_operator`, `column_no`, `is_minimized`, `is_active`, `weight`, `is_fullscreen`, `fullscreen_url`)
     VALUES
-    ( @domain_id, '{ts escape="sql"}Donor Summary{/ts}'       , 'civicrm/report/instance/6&reset=1&section=1&snippet=5&charts=barChart',  'access CiviContribute', 'AND', 0, 0,'1', 4, '1', 'civicrm/report/instance/6&reset=1&section=1&snippet=5&charts=barChart&context=dashletFullscreen'),
-    ( @domain_id, '{ts escape="sql"}Top Donors{/ts}'            , 'civicrm/report/instance/13&reset=1&section=2&snippet=5',                 'access CiviContribute', 'AND', 0, 0,'1', 5, '1', 'civicrm/report/instance/13&reset=1&section=2&snippet=5&context=dashletFullscreen'),
-    ( @domain_id, '{ts escape="sql"}Event Income Summary{/ts}', 'civicrm/report/instance/25&reset=1&section=1&snippet=5&charts=pieChart', 'access CiviEvent'     , 'AND', 0, 0,'1', 6, '1', 'civicrm/report/instance/25&reset=1&section=1&snippet=5&charts=pieChart&context=dashletFullscreen'),
-    ( @domain_id, '{ts escape="sql"}Membership Summary{/ts}'  , 'civicrm/report/instance/20&reset=1&section=2&snippet=5',                 'access CiviMember'    , 'AND', 0, 0,'1', 7, '1', 'civicrm/report/instance/20&reset=1&section=2&snippet=5&context=dashletFullscreen');
+    ( @domain_id, 'report/6', '{ts escape="sql"}Donor Summary{/ts}'       , 'civicrm/report/instance/6&reset=1&section=1&snippet=5&charts=barChart',  'access CiviContribute', 'AND', 0, 0,'1', 4, '1', 'civicrm/report/instance/6&reset=1&section=1&snippet=5&charts=barChart&context=dashletFullscreen'),
+    ( @domain_id, 'report/13', '{ts escape="sql"}Top Donors{/ts}'            , 'civicrm/report/instance/13&reset=1&section=2&snippet=5',                 'access CiviContribute', 'AND', 0, 0,'1', 5, '1', 'civicrm/report/instance/13&reset=1&section=2&snippet=5&context=dashletFullscreen'),
+    ( @domain_id, 'report/25', '{ts escape="sql"}Event Income Summary{/ts}', 'civicrm/report/instance/25&reset=1&section=1&snippet=5&charts=pieChart', 'access CiviEvent'     , 'AND', 0, 0,'1', 6, '1', 'civicrm/report/instance/25&reset=1&section=1&snippet=5&charts=pieChart&context=dashletFullscreen'),
+    ( @domain_id, 'report/20', '{ts escape="sql"}Membership Summary{/ts}'  , 'civicrm/report/instance/20&reset=1&section=2&snippet=5',                 'access CiviMember'    , 'AND', 0, 0,'1', 7, '1', 'civicrm/report/instance/20&reset=1&section=2&snippet=5&context=dashletFullscreen');
 
 -- INSERT sample data for membership