diff --git a/CRM/Contact/Form/Search/Custom/ActivitySearch.php b/CRM/Contact/Form/Search/Custom/ActivitySearch.php
index cc804c7ec46031aa7068da9167f809751e8e5c06..f652a93e6225a08a4ecc6cd03fa98aab24bc3202 100644
--- a/CRM/Contact/Form/Search/Custom/ActivitySearch.php
+++ b/CRM/Contact/Form/Search/Custom/ActivitySearch.php
@@ -236,10 +236,10 @@ class CRM_Contact_Form_Search_Custom_ActivitySearch implements CRM_Contact_Form_
                  ON activity.source_contact_id = contact_b.id
             LEFT JOIN civicrm_case_activity cca
                  ON activity.id = cca.activity_id
-            LEFT JOIN civicrm_activity_assignment assignment
-                 ON activity.id = assignment.activity_id
+            LEFT JOIN civicrm_activity_contact assignment
+                 ON activity.id = assignment.activity_id AND assignment.record_type = 'Assignee'
             LEFT JOIN civicrm_contact contact_c
-                 ON assignment.assignee_contact_id = contact_c.id ";
+                 ON assignment.contact_id = contact_c.id ";
   }
 
   /*
diff --git a/CRM/Report/Form/Activity.php b/CRM/Report/Form/Activity.php
index f94c923edad02130be3fe44c569de7472519ff78..3c2c1b1cbd756f47bbb8a224812a9d377ba6218b 100644
--- a/CRM/Report/Form/Activity.php
+++ b/CRM/Report/Form/Activity.php
@@ -231,10 +231,10 @@ class CRM_Report_Form_Activity extends CRM_Report_Form {
       ),
       'civicrm_activity_assignment' =>
       array(
-        'dao' => 'CRM_Activity_DAO_ActivityAssignment',
+        'dao' => 'CRM_Activity_DAO_ActivityContact',
         'fields' =>
         array(
-          'assignee_contact_id' =>
+          'contact_id' =>
           array(
             'no_display' => TRUE,
             'required' => TRUE,
@@ -244,10 +244,10 @@ class CRM_Report_Form_Activity extends CRM_Report_Form {
       ),
       'civicrm_activity_target' =>
       array(
-        'dao' => 'CRM_Activity_DAO_ActivityTarget',
+        'dao' => 'CRM_Activity_DAO_ActivityContact',
         'fields' =>
         array(
-          'target_contact_id' =>
+          'contact_id' =>
           array(
             'no_display' => TRUE,
             'required' => TRUE,
@@ -348,20 +348,21 @@ class CRM_Report_Form_Activity extends CRM_Report_Form {
   }
 
   function from() {
-
     $this->_from = "
         FROM civicrm_activity {$this->_aliases['civicrm_activity']}
 
-             LEFT JOIN civicrm_activity_target  {$this->_aliases['civicrm_activity_target']}
-                    ON {$this->_aliases['civicrm_activity']}.id = {$this->_aliases['civicrm_activity_target']}.activity_id
-             LEFT JOIN civicrm_activity_assignment {$this->_aliases['civicrm_activity_assignment']}
-                    ON {$this->_aliases['civicrm_activity']}.id = {$this->_aliases['civicrm_activity_assignment']}.activity_id
+             LEFT JOIN civicrm_activity_contact  {$this->_aliases['civicrm_activity_target']}
+                    ON {$this->_aliases['civicrm_activity']}.id = {$this->_aliases['civicrm_activity_target']}.activity_id AND 
+                       {$this->_aliases['civicrm_activity_target']}.record_type = 'Target'
+             LEFT JOIN civicrm_activity_contact {$this->_aliases['civicrm_activity_assignment']}
+                    ON {$this->_aliases['civicrm_activity']}.id = {$this->_aliases['civicrm_activity_assignment']}.activity_id AND 
+                       {$this->_aliases['civicrm_activity_assignment']}.record_type = 'Assignee' 
              LEFT JOIN civicrm_contact civicrm_contact_source
                     ON {$this->_aliases['civicrm_activity']}.source_contact_id = civicrm_contact_source.id
              LEFT JOIN civicrm_contact contact_civireport
-                    ON {$this->_aliases['civicrm_activity_target']}.target_contact_id = contact_civireport.id
+                    ON {$this->_aliases['civicrm_activity_target']}.contact_id = contact_civireport.id
              LEFT JOIN civicrm_contact civicrm_contact_assignee
-                    ON {$this->_aliases['civicrm_activity_assignment']}.assignee_contact_id = civicrm_contact_assignee.id
+                    ON {$this->_aliases['civicrm_activity_assignment']}.contact_id = civicrm_contact_assignee.id
 
              {$this->_aclFrom}
              LEFT JOIN civicrm_option_value
@@ -508,10 +509,10 @@ class CRM_Report_Form_Activity extends CRM_Report_Form {
       $onHover    = ts('View Contact Summary for this Contact');
       $onHoverAct = ts('View Activity Record');
     }
-    foreach ($rows as $rowNum => $row) {
 
+    foreach ($rows as $rowNum => $row) {
       if (array_key_exists('civicrm_contact_contact_source', $row)) {
-        if ($value = $row['civicrm_activity_source_contact_id']) {
+        if ($value = $row['civicrm_activity_assignment_contact_id']) {
           if ($viewLinks) {
             $url = CRM_Utils_System::url("civicrm/contact/view",
               'reset=1&cid=' . $value,
@@ -526,7 +527,7 @@ class CRM_Report_Form_Activity extends CRM_Report_Form {
 
       if (array_key_exists('civicrm_contact_contact_assignee', $row)) {
         $assigneeNames = explode($seperator, $row['civicrm_contact_contact_assignee']);
-        if ($value = $row['civicrm_activity_assignment_assignee_contact_id']) {
+        if ($value = $row['civicrm_activity_assignment_contact_id']) {
           $assigneeContactIds = explode($seperator, $value);
           $link = array();
           if ($viewLinks) {
@@ -545,7 +546,7 @@ class CRM_Report_Form_Activity extends CRM_Report_Form {
 
       if (array_key_exists('civicrm_contact_contact_target', $row)) {
         $targetNames = explode($seperator, $row['civicrm_contact_contact_target']);
-        if ($value = $row['civicrm_activity_target_target_contact_id']) {
+        if ($value = $row['civicrm_activity_target_contact_id']) {
           $targetContactIds = explode($seperator, $value);
           $link = array();
           if ($viewLinks) {