From a873bbd5d8d9efd6d3d713db2999484c5c90846c Mon Sep 17 00:00:00 2001
From: Fran Garcia-Linares <fjgarlin@gmail.com>
Date: Thu, 27 Mar 2025 17:45:59 +0100
Subject: [PATCH 1/2] Replicate MR273.

---
 drupalorg/drupalorg.drush.inc                 |  157 +-
 drupalorg/drupalorg.module                    |  941 +++++++-
 drupalorg/drupalorg.pages.inc                 |  578 ++++-
 drupalorg_metrics/drupalorg_metrics.module    |   77 +-
 drupalorg_project/drupalorg_project.module    |   14 +
 .../drupalorg_user.views_default.inc          | 2025 ++---------------
 6 files changed, 1869 insertions(+), 1923 deletions(-)

diff --git a/drupalorg/drupalorg.drush.inc b/drupalorg/drupalorg.drush.inc
index 6fe6024a3..c03297b88 100644
--- a/drupalorg/drupalorg.drush.inc
+++ b/drupalorg/drupalorg.drush.inc
@@ -31,6 +31,14 @@ function drupalorg_drush_command() {
       'arguments' => [
         'event_nid' => 'Event node ID.',
         'csv_file' => 'CSV file containing the list.',
+      ]
+    ],
+    'drupalorg-contribution-records-sync' => [
+      'description' => 'Sync data from the current credits to the new system',
+      'options' => [
+        'days-ago' => 'Number of days since the record was updated or created. Empty to process them all',
+        'nids' => 'Comma separated list of nids to process',
+        'raw-import' => 'Use the raw import functionality from the new system, which does not query back to this site. 0 = No raw import // 1 = Direct raw import // 2 = Queued raw import',
       ],
     ],
     'drupalorg-integrity' => [
@@ -299,6 +307,102 @@ function drush_drupalorg_uid_salesforce_push() {
   }
 }
 
+/**
+ * Callback function to create/update contribution records from this site to
+ * the new system. The new site will make a query to this site to get the
+ * issue metadata and get additional information about the contributors.
+ */
+function drush_drupalorg_contribution_records_sync() {
+  $validate_ids = FALSE;
+  $raw_import = (int) drush_get_option('raw-import', 0);
+  $nids = drush_get_option('nids', '');
+  if (!empty($nids)) {
+    $nids = explode(',', $nids);
+
+    // We need to validate nids here as they are entered as a param.
+    _drush_drupalorg_sync_contribution_records($nids, TRUE, $raw_import);
+  }
+  else {
+    // IMPORTANT: If we query all records, it could potentially be +1 million.
+    $days_ago = (int) drush_get_option('days-ago', 0);
+
+    $query = new EntityFieldQuery();
+    $query->entityCondition('entity_type', 'node')
+      ->entityCondition('bundle', 'project_issue')
+      ->propertyCondition('status', NODE_PUBLISHED)
+      ->addMetaData('account', user_load(1))
+      ->propertyOrderBy('nid', 'DESC');
+    if ($days_ago > 0) {
+      $query->propertyCondition('changed', strtotime($days_ago . ' days ago'), '>');
+    }
+
+    $count_query = clone $query;
+    $total = $count_query->count()->execute();
+    $offset = 0;
+    $limit = 50;
+    $results_found = TRUE;
+    while ($results_found) {
+      $range_query = clone $query;
+      $range_query->range($offset, $limit);
+
+      $result = $range_query->execute();
+      if (!empty($result['node'])) {
+        $nids = array_keys($result['node']);
+
+        // We don't need to revalidate the nid's as they come from the DB query.
+        _drush_drupalorg_sync_contribution_records($nids, FALSE, $raw_import, FALSE);
+        $offset += $limit;
+        drush_print('* Queued: ' . $offset . '/' . $total);
+      }
+      else {
+        $results_found = FALSE;
+      }
+    }
+  }
+}
+
+/**
+ * Helper function to send a chunk of nids to the new contrib records system.
+ */
+function _drush_drupalorg_sync_contribution_records($nids, $validate_ids, $raw_import, $output = TRUE) {
+  $max = count($nids);
+  if (!$max) {
+    return;
+  }
+
+  $progress = 0;
+  foreach ($nids as $nid) {
+    $valid = !$validate_ids;
+    if (
+      $validate_ids &&
+      ($node = node_load($nid)) &&
+      project_issue_node_is_issue($node)
+    ) {
+      $valid = TRUE;
+    }
+
+    if ($valid) {
+      $data = [
+        'event_type' => 'issue',
+        'url' => url('node/' . $nid, ['absolute' => TRUE, 'alias' => TRUE]),
+        // Triggering an update will create the record in the new system if it
+        // doesn't exist or update the info if it does.
+        'action' => 'update'
+      ];
+      if ($raw_import) {
+        $data['raw-import'] = $raw_import;
+      }
+
+      DrupalQueue::get('drupalorg_issue_events')->createItem($data);
+    }
+
+    $progress++;
+    if ($output) {
+      drush_print("* " . $progress . "/" . $max . " queued... " . ($valid ? '' : '(invalid issue)'));
+    }
+  }
+}
+
 /**
  * @param $origin_organization_nid
  * @param $target_organization_nid
@@ -344,7 +448,6 @@ function drush_drupalorg_migrate_org_credits($origin_organization_nid, $target_o
  */
 function drush_drupalorg_org_credit() {
   $weights = variable_get('drupalorg_org_credit_weights');
-  $credits = [];
   $usage_weights = [];
   $contrib_roles_weighted_score = 0;
   //field_drupalorg_rank_components list
@@ -425,31 +528,6 @@ function drush_drupalorg_org_credit() {
     }
   }
 
-  // Organization attribution.
-  $result = db_query("SELECT fdfact.field_attribute_contribution_to_target_id AS organization, n.nid, fdf_p.field_project_target_id AS project, fdf_ilsc.field_issue_last_status_change_value > UNIX_TIMESTAMP(NOW() - INTERVAL 3 MONTH) AS recent FROM {node} n INNER JOIN {field_data_field_issue_credit} fdfic ON fdfic.entity_id = n.nid INNER JOIN {comment} c ON c.cid = fdfic.field_issue_credit_target_id AND c.status = 1 INNER JOIN {field_data_field_issue_status} fdfis ON fdfis.entity_id = n.nid AND fdfis.field_issue_status_value IN (:credited_issue_statuses) INNER JOIN {field_data_field_attribute_as_volunteer} fdf_av ON fdf_av.entity_id = c.cid AND fdf_av.field_attribute_as_volunteer_value = 0 INNER JOIN {field_data_field_attribute_contribution_to} fdfact ON fdfact.entity_id = c.cid INNER JOIN {field_data_field_project} fdf_p ON fdf_p.entity_id = n.nid LEFT JOIN {field_data_field_project_type} fdf_pt ON fdf_pt.entity_id = fdf_p.field_project_target_id INNER JOIN {field_data_field_issue_last_status_change} fdf_ilsc ON fdf_ilsc.entity_id = n.nid WHERE n.type IN (:project_issue_types) AND n.status = 1 AND (fdf_pt.field_project_type_value = 'full' OR fdf_pt.field_project_type_value IS NULL) AND fdf_ilsc.field_issue_last_status_change_value > UNIX_TIMESTAMP(NOW() - INTERVAL 1 YEAR)", [
-    ':credited_issue_statuses' => drupalorg_credited_issue_statuses(),
-    ':project_issue_types' => project_issue_issue_node_types(),
-  ]);
-  foreach ($result as $row) {
-    if ($row->recent){
-      $credits[$row->organization][$row->nid] = $row->project;
-    }
-    $year_credits[$row->organization][$row->nid] = $row->project;
-  }
-
-  // Customer attribution.
-  $result = db_query("SELECT fdf_fc.field_for_customer_target_id AS organization, n.nid, fdf_p.field_project_target_id AS project, fdf_ilsc.field_issue_last_status_change_value > UNIX_TIMESTAMP(NOW() - INTERVAL 3 MONTH) AS recent FROM {node} n INNER JOIN {field_data_field_issue_credit} fdfic ON fdfic.entity_id = n.nid INNER JOIN {comment} c ON c.cid = fdfic.field_issue_credit_target_id AND c.status = 1 INNER JOIN {field_data_field_issue_status} fdfis ON fdfis.entity_id = n.nid AND fdfis.field_issue_status_value IN (:credited_issue_statuses) INNER JOIN {field_data_field_attribute_as_volunteer} fdf_av ON fdf_av.entity_id = c.cid AND fdf_av.field_attribute_as_volunteer_value = 0 INNER JOIN {field_data_field_for_customer} fdf_fc ON fdf_fc.entity_id = c.cid INNER JOIN {field_data_field_project} fdf_p ON fdf_p.entity_id = n.nid LEFT JOIN {field_data_field_project_type} fdf_pt ON fdf_pt.entity_id = fdf_p.field_project_target_id INNER JOIN {field_data_field_issue_last_status_change} fdf_ilsc ON fdf_ilsc.entity_id = n.nid WHERE n.type IN (:project_issue_types) AND n.status = 1 AND (fdf_pt.field_project_type_value = 'full' OR fdf_pt.field_project_type_value IS NULL) AND fdf_ilsc.field_issue_last_status_change_value > UNIX_TIMESTAMP(NOW() - INTERVAL 1 YEAR)", [
-    ':credited_issue_statuses' => drupalorg_credited_issue_statuses(),
-    ':project_issue_types' => project_issue_issue_node_types(),
-  ]);
-  // De-dupe by issue nid.
-  foreach ($result as $row) {
-    if ($row->recent) {
-      $credits[$row->organization][$row->nid] = $row->project;
-    }
-    $year_credits[$row->organization][$row->nid] = $row->project;
-  }
-
   $maxval = array_fill(0, 8, 0) + ['total' => 0];
   // Update all organizations.
   $query = new EntityFieldQuery();
@@ -457,35 +535,42 @@ function drush_drupalorg_org_credit() {
     ->propertyCondition('type', 'organization')
     ->execute();
   $org_nodes = node_load_multiple(array_keys($result['node']));
+  $nodes = [];
   foreach ($org_nodes as $keyed) {
     $nodes[$keyed->title] = $keyed;
   }
   ksort($nodes);
+
+  $months = (int) variable_get('drupalorg_contribution_records_marketplace_interval_months', 12);
+  $recent_months = (int) variable_get('drupalorg_contribution_records_marketplace_recent_months', 3);
   foreach ($nodes as $node) {
     $contribution_rank = 0;
     $wrapper = entity_metadata_wrapper('node', $node);
     $updated = FALSE;
+    $interval_credits_data = drupalorg_get_contribution_record_organization_credits($node, $months);
+    $recent_credits_data = drupalorg_filter_recent_contribution_record_organization($interval_credits_data, $recent_months);
 
-    $issue_credits = isset($credits[$node->nid]) ? count($credits[$node->nid]) : 0;
+    $issue_credits = $recent_credits_data['total'];
     if ($wrapper->field_org_issue_credit_count->value() != $issue_credits) {
       $wrapper->field_org_issue_credit_count = $issue_credits;
       $updated = TRUE;
     }
 
-    if (array_key_exists($node->nid, $year_credits) && ($wrapper->field_org_issue_credit_year->value() != count($year_credits[$node->nid]))) {
-      drush_log('Updating year credit: ' . $node->title . ' from ' . $wrapper->field_org_issue_credit_year->value() . ' to ' . count($year_credits[$node->nid]));
-      $wrapper->field_org_issue_credit_year = count($year_credits[$node->nid]);
+    $year_issue_credits = $interval_credits_data['total'];
+    if (($wrapper->field_org_issue_credit_year->value() != $year_issue_credits)) {
+      drush_log('Updating year credit: ' . $node->title . ' from ' . $wrapper->field_org_issue_credit_year->value() . ' to ' . $year_issue_credits);
+      $wrapper->field_org_issue_credit_year = $year_issue_credits;
       $updated = TRUE;
     }
 
     // Add issue credit, weighted by project usage for 12 months worth of credits.
     $year_issue_credit_weighted = 0;
-    if (isset($year_credits[$node->nid])) {
-      foreach ($year_credits[$node->nid] as $project_nid) {
+    if (!empty($interval_credits_data['data'])) {
+      foreach ($interval_credits_data['data'] as $project_nid => $info) {
         if (!isset($usage_weights[$project_nid])) {
           $usage_weights[$project_nid] = _drupalorg_weight_project($project_nid);
         }
-        $year_issue_credit_weighted += $usage_weights[$project_nid];
+        $year_issue_credit_weighted += ( $usage_weights[$project_nid] * count($info['issues']) );
       }
       $updated = TRUE;
     }
@@ -493,12 +578,12 @@ function drush_drupalorg_org_credit() {
 
     // Add issue credit, weighted by project usage.
     $issue_credit_weighted = 0;
-    if (isset($credits[$node->nid])) {
-      foreach ($credits[$node->nid] as $project_nid) {
+    if (!empty($recent_credits_data['data'])) {
+      foreach ($recent_credits_data['data'] as $project_nid => $info) {
         if (!isset($usage_weights[$project_nid])) {
           $usage_weights[$project_nid] = _drupalorg_weight_project($project_nid);
         }
-        $issue_credit_weighted += $usage_weights[$project_nid];
+        $issue_credit_weighted += ( $usage_weights[$project_nid] * count($info['issues']));
       }
     }
     $wrapper->field_drupalorg_rank_components[0] = $weights['issue credit'] * $issue_credit_weighted;
diff --git a/drupalorg/drupalorg.module b/drupalorg/drupalorg.module
index 19c5b5677..c0903360a 100644
--- a/drupalorg/drupalorg.module
+++ b/drupalorg/drupalorg.module
@@ -500,6 +500,54 @@ function drupalorg_menu() {
     'page arguments' => array('drupalorg_notice_settings_form'),
   );
 
+  $items['u/%/issue-credits/%'] = [
+    'page callback' => '_drupalorg_user_contribution_records_by_project',
+    'page arguments' => [1, 3],
+    'access callback' => TRUE,
+    'type' => MENU_CALLBACK,
+    'file' => 'drupalorg.pages.inc',
+  ];
+
+  $items['u/%/issue-credits'] = [
+    'page callback' => '_drupalorg_user_contribution_records',
+    'page arguments' => [1],
+    'access callback' => TRUE,
+    'type' => MENU_CALLBACK,
+    'file' => 'drupalorg.pages.inc',
+  ];
+
+  $items['node/%node/issue-credits/%'] = [
+    'page callback' => '_drupalorg_organization_contribution_records_by_project',
+    'page arguments' => [1, 3],
+    'access callback' => TRUE,
+    'type' => MENU_CALLBACK,
+    'file' => 'drupalorg.pages.inc',
+  ];
+
+  $items['node/%node/issue-credits'] = [
+    'page callback' => '_drupalorg_organization_contribution_records',
+    'page arguments' => [1],
+    'access callback' => TRUE,
+    'type' => MENU_CALLBACK,
+    'file' => 'drupalorg.pages.inc',
+  ];
+
+  $items['node/%node/org-issue-credit-user'] = [
+    'page callback' => '_drupalorg_organization_contribution_records_by_user',
+    'page arguments' => [1],
+    'access callback' => TRUE,
+    'type' => MENU_CALLBACK,
+    'file' => 'drupalorg.pages.inc',
+  ];
+
+  $items['node/%node/org-issue-credit-user-export'] = [
+    'page callback' => '_drupalorg_organization_contribution_records_by_user_export',
+    'page arguments' => [1],
+    'access callback' => TRUE,
+    'type' => MENU_CALLBACK,
+    'file' => 'drupalorg.pages.inc',
+  ];
+
   $items['drupalorg-issue-fork-tugboat-previews/%drupalorg_issue_fork'] = [
     'page callback' => 'drupalorg_issue_fork_tugboat_previews',
     'page arguments' => [1],
@@ -3872,7 +3920,7 @@ function _drupalorg_gitlab_markdown_to_html($project, $branch) {
 
   // Remove whitespace between tags.
   $html = preg_replace('~>\s+<~', '><', $html);
-  
+
   // This code block replaces remaining linebreaks with spaces, except within
   // code or pre elements, where we need to keep the linebreaks.
   $html = str_replace("\n", '###TEMP###', $html);
@@ -5139,6 +5187,17 @@ function drupalorg_node_view($node, $view_mode = 'full') {
           '#markup' => '<div class="description">' . l('About issue forks', 'node/3172805') . '</div>',
         ];
       }
+
+      // Show link after the last comment on the page.
+      if (!empty($node->comment_count) && $node->comment_count > 1) {
+        $node->content['comments']['comments'][] = [
+          '#markup' => '<div id="contribution_record_link">' .
+            '<hr>' .
+            drupalorg_get_contribution_record_credits() .
+            drupalorg_get_link_to_contribution_record() .
+          '</div>'
+        ];
+      }
     }
   }
   elseif ($node->type === 'event') {
@@ -5219,21 +5278,12 @@ function _drupalorg_organization_credit_summary(stdClass $node) {
     $output['sa']['#prefix'] = '<div class="view accordion"><h3 id="org-page-sa-credit">' . format_plural($issues, 'Credited on 1 security advisory in the past @time', 'Credited on @count security advisories in the past @time', ['@time' => ltrim($filter['value']['value'], '-')]) . '</h3>';
     $output['sa']['#suffix'] = '</div>';
   }
-  // Issue credits.
-  $cloned = $view->clone_view();
-  $cloned->set_item_option('organization_recent', 'filter', 'field_attribute_contribution_to_target_id', 'value', ['value' => $node->nid]);
-  $cloned->set_item_option('organization_recent', 'filter', 'field_for_customer_target_id', 'value', ['value' => $node->nid]);
-  $output['issue'] = [
-    '#markup' => $cloned->preview('organization_recent'),
-  ];
-  $issues = 0;
-  foreach ($cloned->result as $row) {
-    $issues += $row->nid;
-  }
-  if ($issues > 0) {
-    $filter = $cloned->get_item('organization_recent', 'filter', 'field_issue_last_status_change_value');
-    $output['issue']['#prefix'] = '<div class="accordion"><h3 id="org-page-issue-credit">' . format_plural($issues, 'Credited on 1 issue in the past @time', 'Credited on @count issues in the past @time', ['@time' => ltrim($filter['value']['value'], '-')]) . '</h3>';
-    $output['issue']['#suffix'] = '</div>';
+  // Issue credits from the new system.
+  $organization_credits = drupalorg_get_recent_contribution_record_organization_credits($node);
+  if ($organization_credits) {
+    $output['issue'] = [
+      '#markup' => $organization_credits,
+    ];
   }
 
   cache_set('drupalorg_org_issues:' . $node->nid, $output, 'cache', REQUEST_TIME + variable_get('drupalorg_organization_credit_summary_cache', 24 * 60 * 60));
@@ -5569,6 +5619,14 @@ function drupalorg_node_insert($node) {
     if (empty($node->skip_comment_for_credit)) {
       // Save initial issue comment.
       drupalorg_post_issue_comment_for_credit($node->nid, $GLOBALS['user'], '!name created an issue.');
+
+      // Queue job to post to the contribution credits system when the issue
+      // is created.
+      DrupalQueue::get('drupalorg_issue_events')->createItem([
+        'event_type' => 'issue',
+        'url' => url('node/' . $node->nid, ['absolute' => TRUE]),
+        'action' => 'open'
+      ]);
     }
   }
   elseif (project_release_node_is_release($node)) {
@@ -5686,24 +5744,67 @@ function drupalorg_node_update($node) {
     drupal_register_shutdown_function('drupalorg_create_packaging_job_for_project', $node->nid);
     drupal_register_shutdown_function('project_release_download_table', $node->nid, TRUE);
   }
-  elseif (project_issue_node_is_issue($node) && isset($node->nodechanges_cid) && isset($node->nodechanges_comment->uid)) {
-    // Check if the commenter has previously received credit.
-    foreach ($wrapper->field_issue_credit as $comment) {
-      if ($comment->value()->uid == $node->nodechanges_comment->uid) {
-        // Add credit for their new comment, in case there is new attribution.
+  elseif (project_issue_node_is_issue($node)) {
+    if (isset($node->nodechanges_cid) && isset($node->nodechanges_comment->uid)) {
+      // Check if the commenter has previously received credit.
+      foreach ($wrapper->field_issue_credit as $comment) {
+        if ($comment->value()->uid == $node->nodechanges_comment->uid) {
+          // Add credit for their new comment, in case there is new attribution.
+          $wrapper->field_issue_credit[] = $node->nodechanges_cid;
+          field_attach_presave('node', $node);
+          field_attach_update('node', $node);
+          break;
+        }
+      }
+
+      // Commenting user is being credited for the first time, save that credit.
+      if (!empty($node->drupalorg_credit_self)) {
         $wrapper->field_issue_credit[] = $node->nodechanges_cid;
         field_attach_presave('node', $node);
         field_attach_update('node', $node);
-        break;
       }
     }
 
-    // Commenting user is being credited for the first time, save that credit.
-    if (!empty($node->drupalorg_credit_self)) {
-      $wrapper->field_issue_credit[] = $node->nodechanges_cid;
-      field_attach_presave('node', $node);
-      field_attach_update('node', $node);
+    // Queue job to post to the contribution credits system if the issue
+    // was closed or re-opened.
+    $action = 'update';
+    $original_status = $node->original->field_issue_status[LANGUAGE_NONE][0]['value'];
+    $current_status = $node->field_issue_status[LANGUAGE_NONE][0]['value'];
+    $fixed_status = variable_get('project_issue_state_fixed', PROJECT_ISSUE_STATE_FIXED);
+    if ($original_status !== $current_status) {
+      if (
+        in_array($original_status, project_issue_open_states()) &&
+        in_array($current_status, project_issue_closed_states())
+      ) {
+        $action = 'close';
+      }
+      elseif (
+        in_array($original_status, project_issue_closed_states()) &&
+        in_array($current_status, project_issue_open_states())
+      ) {
+        $action = 'reopen';
+      }
+
+      // Special case for "Fixed".
+      if (
+        $fixed_status == $original_status &&
+        in_array($current_status, project_issue_open_states())
+      ) {
+        $action = 'reopen';
+      }
+      elseif (
+        $fixed_status == $current_status &&
+        in_array($original_status, project_issue_open_states())
+      ) {
+        $action = 'close';
+      }
     }
+
+    DrupalQueue::get('drupalorg_issue_events')->createItem([
+      'event_type' => 'issue',
+      'url' => url('node/' . $node->nid, ['absolute' => TRUE, 'alias' => TRUE]),
+      'action' => $action
+    ]);
   }
 
   // Keep OG Menu titles matching the node title.
@@ -5953,6 +6054,14 @@ function drupalorg_comment_insert($comment) {
     }
   }
 
+  // Queue job to post to the contribution credits system every time there is a comment.
+  if ($comment->node_type === 'comment_node_project_issue') {
+    DrupalQueue::get('drupalorg_issue_events')->createItem([
+      'event_type' => 'comment',
+      'url' => url('node/' . $comment->nid, ['absolute' => TRUE, 'alias' => TRUE])
+    ]);
+  }
+
   if ($comment->status === COMMENT_NOT_PUBLISHED && $comment->uid === $GLOBALS['user']->uid) {
     _drupalorg_spam_message();
   }
@@ -6492,17 +6601,13 @@ function drupalorg_user_view($account, $view_mode) {
     $filter = $view->get_item('user_sa_recent', 'filter', 'field_issue_last_status_change_value');
     $account->content['drupalorg_user_issue_credit']['sa']['#prefix'] = '<h4>' . format_plural($issues, 'Credited on 1 security advisory', 'Credited on @count security advisories') . '</h4>';
   }
-  // Issue credits.
-  $cloned = $view->clone_view();
-  $account->content['drupalorg_user_issue_credit']['issue'] = array(
-    '#markup' => $cloned->preview('user_recent', array($account->uid)),
-  );
-  $issues = 0;
-  foreach ($cloned->result as $row) {
-    $issues += $row->nid;
-  }
-  if ($issues > 0) {
-    $account->content['drupalorg_user_issue_credit']['issue']['#prefix'] = '<h4>' . format_plural($issues, 'Credited on 1 issue', 'Credited on @count issues') . '</h4>';
+  // Issue credits from the new system.
+  $user_credits = drupalorg_get_contribution_record_user_credits($account);
+  if ($user_credits) {
+    $view_all_link = l(t('View all credits'), 'u/' . $account->name . '/issue-credits');
+    $account->content['drupalorg_user_issue_credit']['issue'] = [
+      '#markup' => $user_credits . $view_all_link,
+    ];
   }
 
   // User's maintained projects
@@ -6750,7 +6855,188 @@ function drupalorg_cron_queue_info() {
       'worker callback' => 'drupalorg_commits_comments_process',
       'skip on cron' => TRUE,
     ],
+    'drupalorg_issue_events' => [
+      'worker callback' => 'drupalorg_issue_events_process',
+      'skip on cron' => TRUE,
+    ],
+  ];
+}
+
+/**
+ * Queue worker callback.
+ */
+function drupalorg_issue_events_process($item) {
+  if (
+    empty($item['event_type']) ||
+    empty($item['url'])
+  ) {
+    return FALSE;
+  }
+
+  // We are using the drupalorg token on both systems for communication.
+  $token = variable_get('drupalorg_token');
+  if (!$token) {
+    watchdog('drupalorg', 'DrupalOrg token (drupalorg_token) needs to be set up to process issue events.', [], WATCHDOG_ERROR);
+    return FALSE;
+  }
+
+  $item['url'] = _drupalorg_format_url($item['url']);
+
+  $data = $item;
+  $post_url_path = '/drupalorg/webhook/contribution-activity';
+
+  // Special case for importing contribution records from the D7 system.
+  if (!empty($item['raw-import']) && in_array($item['raw-import'], [1, 2])) {
+    $post_url_path = '/contribution-record-import';
+
+    // We need to include all credits information as well as all direct information.
+    $data = _drupalorg_get_contribution_record_data_from_issue($item['url']);
+    if (empty($data)) {
+      watchdog('drupalorg', 'Could not get the issue data from @url.', [
+        '@url' => $item['url'],
+      ], WATCHDOG_ERROR);
+      return FALSE;
+    }
+
+    if ($item['raw-import'] === 2) {
+      $data['queue'] = TRUE;
+    }
+  }
+
+  // Send a post request to the contribution records webhook.
+  $contribution_records_base_url = variable_get('contribution_records_base_url', 'https://www.drupal.org');
+  // @todo Remove below. Try to avoid "429: Too Many Requests".
+  if (strpos($contribution_records_base_url, 'ngrok') !== FALSE) {
+    sleep(1);
+  }
+
+  try {
+    $client = new GuzzleHttp\Client([
+      'base_uri' => $contribution_records_base_url,
+      'timeout' => 30.0,
+      'headers' => [
+        'Drupalorg-Webhook-Token' => $token,
+        'Content-Type' => 'application/x-www-form-urlencoded'
+      ],
+    ]);
+    $response = $client->request('POST', $post_url_path, [
+      'form_params' => $data,
+    ]);
+    $data = json_decode($response->getBody()->getContents(), TRUE);
+    if ($data['status'] !== 'success') {
+      // Most likely duplicated or invalid url. We should not re-queue in either case.
+      watchdog('drupalorg', 'Error after sending webhook to contribution record system. @error', [
+        '@error' => $data['message'],
+      ], ($data['status'] === 'warning' ? WATCHDOG_WARNING : WATCHDOG_ERROR));
+    }
+  }
+  catch (Exception $e) {
+    watchdog('drupalorg', 'Request @url returned code "@code" and message: @message.', [
+      '@url' => $contribution_records_base_url . $post_url_path,
+      '@code' => $e->getCode(),
+      '@message' => $e->getMessage(),
+    ], WATCHDOG_ERROR);
+
+    $item['attempts'] = isset($item['attempts']) ? $item['attempts'] + 1 : 0;
+    if ($item['attempts'] < 3) {
+      $queue = DrupalQueue::get('drupalorg_issue_events');
+      if ($queue instanceof BeanstalkdQueue) {
+        $queue->beanstalkd_params['delay'] = 60;
+      }
+      $queue->createItem($item);
+    }
+  }
+}
+
+/**
+ * Populates an array with the information needed to create a contribution record.
+ */
+function _drupalorg_get_contribution_record_data_from_issue($url) {
+  $url_info = parse_url($url);
+  $path = trim($url_info['path'], '/');
+  if (strpos($path, 'node/') === FALSE) {
+    $path = drupal_lookup_path('source', $path);
+  }
+  $issue = menu_get_object('node', 1, $path);
+  if (!$issue || !project_issue_node_is_issue($issue)) {
+    return FALSE;
+  }
+
+  $status_value = $issue->field_issue_status[LANGUAGE_NONE][0]['value'];
+  $closed = (int) in_array($status_value, project_issue_closed_states());
+  if ($status_value == variable_get('project_issue_state_fixed', PROJECT_ISSUE_STATE_FIXED)) {
+    $closed = 1;
+  }
+  $comments = drupalorg_get_comments($issue);
+  $credits = $issue->field_issue_credit;
+  if ($credits) {
+    // Flatten array.
+    $cids = [];
+    foreach ($credits[LANGUAGE_NONE] as $credit) {
+      $cids[] = (int) $credit['target_id'];
+    }
+    $credits = $cids;
+  }
+
+  $project = !empty($issue->field_project) ? node_load($issue->field_project[LANGUAGE_NONE][0]['target_id']) : NULL;
+  $machine_name = !empty($project) ? $project->field_project_machine_name[LANGUAGE_NONE][0]['value'] : NULL;
+  // We need to include all credits information as well as all direct information.
+  $data = [
+    'title' => $issue->title,
+    'url' => $url,
+    'closed' => $closed,
+    'machine_name' => $machine_name,
+    'credits' => [],
+    'created' => $issue->created,
+    'changed' => $issue->changed,
+    'status_last_changed' => !empty($issue->field_issue_last_status_change) ? $issue->field_issue_last_status_change[LANGUAGE_NONE][0]['value'] : $issue->changed,
   ];
+  foreach ($comments as $cid => $comment) {
+    // Calculate values.
+    $volunteer = 0;
+    if (
+      (!empty($comment->field_attribute_as_volunteer[LANGUAGE_NONE][0]) && $comment->field_attribute_as_volunteer[LANGUAGE_NONE][0]['value'] == 1) ||
+      (!empty($comment->field_attribute_as_volunteer[LANGUAGE_NONE][1]) && $comment->field_attribute_as_volunteer[LANGUAGE_NONE][1]['value'] == 1)
+    ) {
+      $volunteer = 1;
+    }
+
+    $organizations = NULL;
+    $customers = NULL;
+    if (
+      (!empty($comment->field_attribute_as_volunteer[LANGUAGE_NONE][0]) && $comment->field_attribute_as_volunteer[LANGUAGE_NONE][0]['value'] == 0) ||
+      (!empty($comment->field_attribute_as_volunteer[LANGUAGE_NONE][1]) && $comment->field_attribute_as_volunteer[LANGUAGE_NONE][1]['value'] == 0)
+    ) {
+      if (!empty($comment->field_attribute_contribution_to[LANGUAGE_NONE])) {
+        $companies = [];
+        foreach ($comment->field_attribute_contribution_to[LANGUAGE_NONE] as $company) {
+          $company_node = node_load($company['target_id']);
+          $companies[] = $company_node->title;
+        }
+        $organizations = !empty($companies) ? implode(',', $companies) : NULL;
+      }
+
+      if (!empty($comment->field_for_customer[LANGUAGE_NONE])) {
+        $companies = [];
+        foreach ($comment->field_for_customer[LANGUAGE_NONE] as $company) {
+          $company_node = node_load($company['target_id']);
+          $companies[] = $company_node->title;
+        }
+        $customers = !empty($companies) ? implode(',', $companies) : NULL;
+      }
+    }
+
+    // And add them to the credit information.
+    $data['credits'][$comment->name] = [
+      'volunteer' => $volunteer,
+      'credit' => (int) in_array($cid, $credits),
+      'username' => $comment->name,
+      'organizations' => $organizations,
+      'customers' => $customers,
+    ];
+  }
+
+  return $data;
 }
 
 /**
@@ -7141,6 +7427,570 @@ function drupalorg_preprocess_comment_author(&$v) {
   $v['author'] .= $author_fields[$v['comment']->uid];
 }
 
+/**
+ * Add basic auth to the URL.
+ */
+function _drupalorg_format_url($url) {
+  // Include the basic auth in the URL for dev copies.
+  if (variable_get('drupalorg_site_status', FALSE)) {
+    $username = variable_get('drupalorg_devsite_username', 'drupal');
+    $password = variable_get('drupalorg_devsite_password', 'drupal');
+    $user_pass = '';
+    if ($username && $password) {
+      $user_pass = $username . ':' . $password . '@';
+    }
+    $url_info = parse_url($url);
+    $url = $url_info['scheme'] . '://' . $user_pass . $url_info['host'] . $url_info['path'];
+  }
+
+  return $url;
+}
+
+/**
+ * Get the project that a contribution record belongs to.
+ */
+function _drupalorg_get_project_from_contribution_record_source($source) {
+  $project = NULL;
+  $this_server = parse_url($GLOBALS['base_url']);
+
+  // Retrieve project. Source could be a d.o link or a gitlab link.
+  $url_info = parse_url($source);
+  if (in_array($url_info['host'], [$this_server['host'], 'www.drupal.org'])) {
+    $path = trim($url_info['path'], '/');
+    if (strpos($path, 'node/') === FALSE) {
+      $path = drupal_lookup_path('source', $path);
+    }
+    $issue = menu_get_object('node', 1, $path);
+    if ($issue && project_issue_node_is_issue($issue)) {
+      $project = node_load($issue->field_project[LANGUAGE_NONE][0]['target_id']);
+    }
+  }
+  elseif (in_array($url_info['host'], ['git.drupalcode.org', 'gitlab1.code-dev.devdrupal.org'])) {
+    $path_parts = explode('/', trim($url_info['path'], '/'));
+    if (!empty($path_parts[1])) {
+      $namespace = $path_parts[0] . '/' . $path_parts[1];
+      $gitlab_project = FALSE;
+
+      $cache_id = 'drupalorg_contribution_record_gitdrupalcode_namespace:' . md5($namespace);
+      if (($cache = cache_get($cache_id))) {
+        $project = $cache->data;
+      }
+      else {
+        try {
+          $gitlab_project = versioncontrol_gitlab_get_client()->projects()->show($namespace);
+          if ($gitlab_project && !empty($gitlab_project['id'])) {
+            $project = versioncontrol_project_project_load($gitlab_project['id']);
+          }
+
+          // Last attempt by machine_name.
+          if (!$project) {
+            $project = project_load($path_parts[1]);
+          }
+        }
+        catch (Exception $e) {
+          watchdog('drupalorg', '@namespace project was not found in Gitlab.', ['@namespace' => $namespace], 'error');
+        }
+        $cache_minutes = variable_get('drupalorg_contribution_record_credits_cache_minutes', 60);
+        cache_set($cache_id, $project, 'cache', REQUEST_TIME + $cache_minutes * 60);
+      }
+    }
+  }
+
+  return $project;
+}
+
+/**
+ * Basic get request to the contribution records endpoint.
+ */
+function drupalorg_contribution_records_api_request($url, $key = 'data') {
+  $contribution_records_base_url = variable_get('contribution_records_base_url', 'https://www.drupal.org');
+  try {
+    $client = new GuzzleHttp\Client([
+      'base_uri' => $contribution_records_base_url,
+      'timeout' => 30.0
+    ]);
+    $response = $client->request('GET', $url);
+    $output = json_decode($response->getBody()->getContents(), TRUE);
+  }
+  catch (Exception $e) {
+    $output = NULL;
+    watchdog('drupalorg', 'Exception for @url with message @message.', [
+      '@url' => $contribution_records_base_url . $url,
+      '@message' => $e->getMessage()
+    ], WATCHDOG_ERROR);
+  }
+
+  if (is_null($output)) {
+    watchdog('drupalorg', 'Could not get data from @url.', ['@url' => $contribution_records_base_url . $url], WATCHDOG_ERROR);
+  }
+  elseif (!empty($output['status']) && $output['status'] !== 'success') {
+    watchdog('drupalorg', 'Unsucessful request to @url: @message.', [
+      '@url' => $contribution_records_base_url . $url,
+      '@message' => !empty($output['message']) ? $output['message'] : 'Unknown'
+    ], $output['status']);
+  }
+
+  return isset($output[$key]) ? $output[$key] : $output;
+}
+
+/**
+ * Make a jsonapi request to the contribution records system.
+ */
+function drupalorg_make_contribution_records_jsonapi_request($url, $full_data = FALSE) {
+  $client = new GuzzleHttp\Client();
+  // Failsafe to avoid timeouts or memory issues.
+  // 50 results per page x 10 iterations = 500 results.
+  $iteration_limit = variable_get('contribution_records_jsonapi_iteration_limit', 10);
+  $data = [];
+  $included = [];
+  $total = 0;
+  $message = '';
+
+  $contribution_records_base_url = variable_get('contribution_records_base_url', 'https://www.drupal.org');
+  $jsonapi_url = $contribution_records_base_url . $url;
+
+  // @todo Remove below. Try to avoid "429: Too Many Requests".
+  if (strpos($contribution_records_base_url, 'ngrok') !== FALSE) {
+    sleep(1);
+  }
+
+  try {
+    $response = $client->request('GET', $jsonapi_url);
+    $jsonapi_output = json_decode($response->getBody()->getContents(), TRUE);
+    $data = !empty($jsonapi_output['data']) ? $jsonapi_output['data'] : NULL;
+    $included = !empty($jsonapi_output['included']) ? $jsonapi_output['included'] : NULL;
+    $total = !empty($jsonapi_output['meta']['count']) ? $jsonapi_output['meta']['count'] : 0;
+
+    if ($full_data) {
+      // Start querying the "next" pages until there are no more of them, or
+      // we reach the iteration max limit.
+      $iterations = 0;
+      while (!empty($jsonapi_output['links']['next']) && $iterations < $iteration_limit) {
+        // Params are already in the URL for the "next" request.
+        $url = $jsonapi_output['links']['next']['href'];
+
+        $response = $client->request('GET', $url);
+        $jsonapi_output = json_decode($response->getBody()->getContents(), TRUE);
+        if ($jsonapi_output && !empty($jsonapi_output['data'])) {
+          $data = array_merge($data, $jsonapi_output['data']);
+          if (!empty($jsonapi_output['included'])) {
+            $included = array_merge($included, $jsonapi_output['included']);
+          }
+        }
+
+        $iterations++;
+      }
+
+      if ($iterations >= $iteration_limit) {
+        $message = t('Max limit reached: Result data has been truncated to %limit records.', [
+          '%limit' => ($iteration_limit * 50) + 50,
+        ]);
+      }
+    }
+
+    if (!empty($included)) {
+      // Organize included data.
+      $included_by_type = [];
+      foreach ($included as $item) {
+        $included_by_type[$item['type']][$item['id']] = $item;
+      }
+
+      $included = $included_by_type;
+    }
+  }
+  catch (Exception $e) {
+    $message = t('Could not get data from @url.', [
+      '@url' => $jsonapi_url,
+    ]);
+    watchdog('drupalorg', '[Contribution Records] Could not get data from @url. Message: @message.', [
+      '@url' => $jsonapi_url,
+      '@message' => $e->getMessage(),
+    ], WATCHDOG_ERROR);
+  }
+
+  return [
+    'total' => $total ? $total : count($data),
+    'data' => $data,
+    'included' => $included,
+    'message' => $message,
+  ];
+}
+
+/**
+ * Organize contribution records by user.
+ */
+function _drupalorg_contribution_records_organized_by_user($data) {
+  $contribution_records = $data['data'];
+
+  $contributors_map = [];
+  $contributors_data = !empty($data['included']['paragraph--contributor']) ? $data['included']['paragraph--contributor'] : [];
+  if (!empty($contributors_data)) {
+    foreach ($contributors_data as $contributor) {
+      $contributors_map[$contributor['id']] = [];
+      if (!empty($contributor['relationships']['field_contributor_user'])) {
+        $contributors_map[$contributor['id']]['user_id'] = $contributor['relationships']['field_contributor_user']['data']['meta']['drupal_internal__target_id'];
+      }
+    }
+  }
+
+  $contribution_records_base_url = variable_get('contribution_records_base_url', 'https://www.drupal.org');
+  $rows = [];
+  foreach ($contribution_records as $contribution_record) {
+    $source = $contribution_record['attributes']['field_source_link']['uri'];
+    $project = _drupalorg_get_project_from_contribution_record_source($source);
+
+    // Many users can be credited in a contribution record.
+    $contributors = !empty($contribution_record['relationships']['field_contributors']['data']) ?
+      $contribution_record['relationships']['field_contributors']['data'] :
+      NULL;
+    if (!is_null($contributors)) {
+      foreach ($contributors as $contributor_paragraph) {
+
+        if (isset($contributors_map[$contributor_paragraph['id']])) {
+          $user_id = $contributors_map[$contributor_paragraph['id']]['user_id'];
+          $rows[$user_id][] = [
+            'title' => $contribution_record['attributes']['title'],
+            'url' => $contribution_records_base_url . $contribution_record['attributes']['path']['alias'],
+            'source' => $source,
+            'datetime' => $contribution_record['attributes']['changed'],
+            'project_name' => $project ? $project->field_project_machine_name[LANGUAGE_NONE][0]['value'] : '',
+            'project_link' => $project ? url('node/' . $project->nid, ['absolute' => TRUE]) : '',
+          ];
+        }
+      }
+    }
+  }
+
+  return $rows;
+}
+
+/**
+ * Organize contribution records by project.
+ */
+function _drupalorg_contribution_records_organized_by_project($data) {
+  $contribution_records_base_url = variable_get('contribution_records_base_url', 'https://www.drupal.org');
+  $rows = [];
+  foreach ($data as $contribution_record) {
+    $source = $contribution_record['attributes']['field_source_link']['uri'];
+
+    $project = _drupalorg_get_project_from_contribution_record_source($source);
+    if ($project) {
+      if (empty($rows[$project->nid])) {
+        $rows[$project->nid] = [
+          'title' => $project->title,
+          'url' => url('node/' . $project->nid, ['absolute' => TRUE]),
+          'issues' => [],
+        ];
+      }
+
+      $rows[$project->nid]['issues'][] = [
+        'title' => $contribution_record['attributes']['title'],
+        'url' => $contribution_records_base_url . $contribution_record['attributes']['path']['alias'],
+        'source' => $source,
+        'datetime' => $contribution_record['attributes']['changed'],
+      ];
+    }
+  }
+
+  return $rows;
+}
+
+/**
+ * Get recent credits per organization.
+ */
+function drupalorg_get_recent_contribution_record_organization_credits($organization, $limit = FALSE) {
+  if (is_null($organization)) {
+    return '';
+  }
+
+  if (empty($organization->type) || $organization->type != 'organization') {
+    return '';
+  }
+
+  if ($limit && $limit > 50) {
+    $limit = 50;
+  }
+
+  $cache_id = 'drupalorg_contribution_record_recent_credits_by_organization:' . md5($organization->title) . ':' . (int) $limit;
+  if (($cache = cache_get($cache_id))) {
+    return $cache->data;
+  }
+
+  $months = variable_get('drupalorg_months_for_recent_organization_credits', 3);
+  $url = '/contribution-records-by-organization?organization='
+    . urlencode($organization->title)
+    . '&months=' . $months;
+  $all_data = ($limit === FALSE);
+  $result = drupalorg_make_contribution_records_jsonapi_request($url, $all_data);
+  $markup = '';
+  if (empty($result['message']) && $result['data']) {
+    $data = $result['data'];
+    $total_count = !empty($result['total']) ? $result['total'] : count($data);
+    if ($limit && $limit > 0) {
+      // jsonapi only support 50 items per page, so limit the data here.
+      $data = array_slice($data, 0, $limit);
+    }
+
+    $rows = _drupalorg_contribution_records_organized_by_project($data);
+    $links = [];
+    foreach ($rows as $project_nid => $project) {
+      $links[] = l($project['title'], $project['url']) . ', ' .
+        l(format_plural(count($project['issues']), '1 issue', '@count issues'), 'node/' . $organization->nid . '/issue-credits/' . $project_nid);
+    }
+
+    // Mirror the markup from the accordion and the old view so all styling kicks in.
+    $markup = '<div class="accordion"><h3 id="org-page-issue-credit">'
+      . format_plural($total_count, 'Credited on 1 fixed issue in the past @months months', 'Credited on @count fixed issues in the past @months months', ['@months' => $months])
+      . '</h3>';
+    $markup .= '<div id="org-page-issue-credit-content"><div class="view-content">';
+    // theme('item_list'...) adds classes that break the styling, so build the list manually.
+    $markup .= !empty($links) ? '<ul><li>' . implode('</li><li>', $links) . '</li></ul>' : t('No contribution records were found.');
+    $markup .= '</div><p>' . l(t('View all issue credits'), 'node/' . $organization->nid . '/issue-credits') . '</p>';
+    $markup .= '</div></div>';
+
+    $cache_minutes = variable_get('drupalorg_contribution_record_credits_cache_minutes', 60);
+    cache_set($cache_id, $markup, 'cache', REQUEST_TIME + $cache_minutes * 60);
+  }
+  else {
+    watchdog('drupalorg', 'Could not retrieve contribution record by organization from @url. @message', [
+      '@url' => $url,
+      '@message' => !empty($result['message']) ? $result['message'] : ''
+    ], WATCHDOG_ERROR);
+  }
+
+  return $markup;
+}
+
+/**
+ * Get credits per user.
+ */
+function drupalorg_get_contribution_record_user_credits($user, $limit = FALSE) {
+  if (is_null($user)) {
+    return '';
+  }
+
+  if ($limit && $limit > 50) {
+    $limit = 50;
+  }
+
+  $cache_id = 'drupalorg_contribution_record_credits_by_user:' . md5($user->name) . ':' . (int) $limit;
+  if (($cache = cache_get($cache_id))) {
+    return $cache->data;
+  }
+
+  $username = urlencode($user->name);
+  $url = '/contribution-records-by-user?username=' . $username;
+  $all_data = ($limit === FALSE);
+  $result = drupalorg_make_contribution_records_jsonapi_request($url, $all_data);
+  $markup = '';
+  if (empty($result['message']) && $result['data']) {
+    $data = $result['data'];
+    $total_count = !empty($result['total']) ? $result['total'] : count($data);
+    if ($limit && $limit > 0) {
+      // jsonapi only support 50 items per page, so limit the data here.
+      $data = array_slice($data, 0, $limit);
+    }
+
+    $rows = _drupalorg_contribution_records_organized_by_project($data);
+    $links = [];
+    foreach ($rows as $project_nid => $project) {
+      $links[] = l($project['title'], $project['url']) . ', ' .
+        l(format_plural(count($project['issues']), '1 issue', '@count issues'), 'u/' . $user->name . '/issue-credits/' . $project_nid);
+    }
+
+    $markup = '<h4>' . format_plural($total_count, 'Credited on 1 fixed issue', 'Credited on @count fixed issues') . '</h4>';
+    $markup .= theme('item_list', ['items' => $links]);
+
+    $cache_minutes = variable_get('drupalorg_contribution_record_credits_cache_minutes', 60);
+    cache_set($cache_id, $markup, 'cache', REQUEST_TIME + $cache_minutes * 60);
+  }
+  else {
+    watchdog('drupalorg', 'Could not retrieve contribution record by user from @url. @message', [
+      '@url' => $url,
+      '@message' => !empty($result['message']) ? $result['message'] : ''
+    ], WATCHDOG_ERROR);
+  }
+
+  return $markup;
+}
+
+/**
+ * Get contribution record credits table.
+ */
+function drupalorg_get_contribution_record_credits($path = NULL) {
+  drupal_add_library('system', 'drupal.collapse');
+
+  if (is_null($path)) {
+    $path = current_path();
+  }
+
+  $cache_id = 'drupalorg_contribution_record_credits:' . md5($path);
+  if (($cache = cache_get($cache_id))) {
+    return $cache->data;
+  }
+
+  $full_url = _drupalorg_format_url($GLOBALS['base_url'] . '/' . $path);
+  $url = '/contribution-record?source_link=' . $full_url . '&format=jsonapi';
+  $result = drupalorg_make_contribution_records_jsonapi_request($url, TRUE);
+  $markup = '';
+
+  if (empty($result['message']) && $result['data']) {
+    $data = $result['data'];
+    $included = !empty($result['included']) ? $result['included'] : NULL;
+    if ($data && $included && !empty($data['relationships']['field_contributors'])) {
+      $users = [];
+      $table_rows = [];
+      foreach ($data['relationships']['field_contributors']['data'] as $contributor_info) {
+        $id = $contributor_info['id'];
+        $type = $contributor_info['type'];
+        $contributor = $included[$type][$id];
+        $credit = $contributor['attributes']['field_credit_this_contributor'];
+
+        $user = $contributor['relationships']['field_contributor_user'];
+        $user = $included[$user['data']['type']][$user['data']['id']];
+        $users[$user['id']] = [
+          'user' => $user['attributes']['name'],
+          'credit' => $credit ? '✔' : '',
+          'organizations' => [],
+          'customers' => [],
+        ];
+
+        $organizations = $contributor['relationships']['field_contributor_organisation']['data'];
+        foreach ($organizations as $organization) {
+          $organization = $included[$organization['type']][$organization['id']];
+          $users[$user['id']]['organizations'][$organization['id']] = $organization['attributes']['title'];
+        }
+
+        $customers = $contributor['relationships']['field_contributor_customer']['data'];
+        foreach ($customers as $customer) {
+          $customer = $included[$customer['type']][$customer['id']];
+          $users[$user['id']]['customers'][$customer['id']] = $customer['attributes']['title'];
+        }
+
+        $table_rows[] = [
+          $users[$user['id']]['credit'],
+          $users[$user['id']]['user'],
+          implode(', ', $users[$user['id']]['organizations']),
+          implode(', ', $users[$user['id']]['customers']),
+        ];
+      }
+
+      $table_element = [
+        '#theme' => 'table',
+        '#header' => [t('Credit'), t('Username'), t('Organizations'), t('Customers')],
+        '#rows' => $table_rows,
+        '#empty' => t('No contributors were found.'),
+      ];
+      $table_markup = drupal_render($table_element);
+
+      $cache_minutes = variable_get('drupalorg_contribution_record_credits_cache_minutes', 60);
+      $fieldset_element = [
+        '#theme' => 'fieldset',
+        '#title' => t('See contributions'),
+        '#description' => t('The following list is cached and might take up to @minutes minute(s) to udpate with the latest changes. Click the link to see real-time data.', [
+          '@minutes' => $cache_minutes,
+        ]),
+        '#children' => $table_markup,
+        '#attributes' => ['class' => ['collapsible']],
+      ];
+      $markup = drupal_render($fieldset_element);
+
+      cache_set($cache_id, $markup, 'cache', REQUEST_TIME + $cache_minutes * 60);
+    }
+  }
+  else {
+    watchdog('drupalorg', 'Could not retrieve contribution record from @url. @message', [
+      '@url' => $url,
+      '@message' => !empty($result['message']) ? $result['message'] : ''
+    ], WATCHDOG_ERROR);
+  }
+
+  return $markup;
+}
+
+/**
+ * Generates a link to the contribution record of the given (or current) path.
+ */
+function drupalorg_get_link_to_contribution_record($path = NULL) {
+  if (is_null($path)) {
+    $path = current_path();
+  }
+
+  $full_url = _drupalorg_format_url($GLOBALS['base_url'] . '/' . $path);
+  $contribution_records_base_url = variable_get('contribution_records_base_url', 'https://www.drupal.org');
+  return l(
+    t('Attribute this contribution'),
+    $contribution_records_base_url . '/contribution-record',
+    [
+      'query' => ['source_link' => $full_url],
+      'attributes' => [
+        'class' => 'primary-button',
+        'target' => '_blank'
+      ]
+    ]
+  );
+}
+
+
+/**
+ * Get raw credit data for an organization.
+ */
+function drupalorg_get_contribution_record_organization_credits($organization, $months = 12) {
+  $credits_data = [
+    'total' => 0,
+    'data' => NULL,
+  ];
+
+  $cache_id = 'drupalorg_contribution_record_year_credits_by_organization:' . md5($organization->title) . ':' . $months;
+  if (($cache = cache_get($cache_id))) {
+    $credits_data = $cache->data;
+  }
+  else {
+    $url = '/contribution-records-by-organization?organization=' . urlencode($organization->title) . '&months=' . $months;
+    $result = drupalorg_make_contribution_records_jsonapi_request($url, TRUE);
+
+    if (empty($result['message']) && $result['data']) {
+      $credits_data = [
+        'data' => _drupalorg_contribution_records_organized_by_project($result['data']),
+        'total' => $result['total']
+      ];
+    }
+
+    $cache_minutes = variable_get('drupalorg_contribution_record_credits_cache_minutes', 60);
+    cache_set($cache_id, $credits_data, 'cache', REQUEST_TIME + $cache_minutes * 60);
+  }
+
+  return $credits_data;
+}
+
+/**
+ * Filter credits which happened within the last $months months.
+ */
+function drupalorg_filter_recent_contribution_record_organization($credits_data, $months) {
+  $recent_threshold = strtotime($months . ' months ago');
+  $recent_credits_data = [
+    'total' => 0,
+    'data' => NULL,
+  ];
+
+  if (!empty($credits_data['data'])) {
+    foreach ($credits_data['data'] as $project => $credits) {
+      foreach ($credits['issues'] as $credit) {
+        if (strtotime($credit['datetime']) > $recent_threshold) {
+          if (!isset($recent_credits_data['data'][$project])) {
+            $recent_credits_data['data'][$project] = ['issues' => []];
+          }
+
+          $recent_credits_data['data'][$project]['issues'][] = $credit;
+          $recent_credits_data['total']++;
+        }
+      }
+    }
+  }
+
+  return $recent_credits_data;
+}
+
 /**
  * Implements hook_preprocess_comment().
  */
@@ -7177,6 +8027,17 @@ function drupalorg_preprocess_comment(&$v) {
       '!created_date' => format_date($v['comment']->created, 'custom', 'j F Y \a\t H:i'),
     ));
 
+    // Show a link to the contribution record on the very first comment.
+    if (
+      $v['comment']->uid == $v['node']->uid &&
+      isset($v['comment']->thread) &&
+      $v['comment']->thread == int2vancode(1) . '/' &&
+      isset($v['comment']->comment_body[LANGUAGE_NONE][0]) &&
+      preg_match('|^<a.*class="username">.*</a> created an issue.( See <a.*>original summary</a>.)?$|', $v['comment']->comment_body[LANGUAGE_NONE][0]['value'])
+    ) {
+      $v['content']['comment_body'][0]['#markup'] .= '<hr>' . drupalorg_get_link_to_contribution_record();
+    }
+
     // Add extra classes.
     $v['classes_array'][] = 'system-message';
     if (isset($v['comment']->comment_body[LANGUAGE_NONE]) && preg_match('/^The last submitted patch, .*, failed testing./', $v['comment']->comment_body[LANGUAGE_NONE][0]['value'])) {
@@ -8369,8 +9230,8 @@ function drupalorg_riskcal_form($form, &$form_state) {
           '#required' => empty($form_state['node']),
           '#type' => 'select',
           '#options' => ['' => t('- Select -')],
-        ];  
-      }      
+        ];
+      }
       $form['riskcalc'][$group]['#options'][$value['key']] = $description[1];
     }
   }
diff --git a/drupalorg/drupalorg.pages.inc b/drupalorg/drupalorg.pages.inc
index 6ac1b0835..b82674651 100644
--- a/drupalorg/drupalorg.pages.inc
+++ b/drupalorg/drupalorg.pages.inc
@@ -1341,15 +1341,7 @@ function drupalorg_org_owner_tools(stdClass $node) {
   ];
 
   // Display issues fixed.
-
-  $credit_view = views_get_view('issue_credit');
-  $credit_view->set_display('organization_issue_credit_page');
-  $credit_view->set_arguments([$node->nid]);
-  $credit_view->pre_execute();
-  $credit_view->execute();
-
-  $year_credit_count = $credit_view->total_rows;
-
+  $year_credit_count = !empty($node->field_org_issue_credit_year) ? $node->field_org_issue_credit_year[LANGUAGE_NONE][0]['value'] : 0;
   if ($year_credit_count > 0) {
     $content['issues_fixed'] = [
       '#markup' => t('<div class="partner-tier-content"><div>' . format_plural(ceil($year_credit_count), '<strong>@count</strong> issue (closed/fixed) <br>in the last 12 months<br><strong>→ @year_issue_cred_weighted weighted credit</strong></div><div><br>You have @ninety-day-weighted-credits weighted credits over the past 90 days.<p><br>Issue credits are granted by project maintainers. Contributors should follow <a href="@con-guidelines-url">org contribution guidelines</a>, <a href="@issue-ettiquette-url">issue ettiquette</a>, and the <a href="@standards-of-conduct-url">standards of conduct for the marketplace</a>. <a href="@credit-abuse-policy">Abuse of the credit system</a> can have a negative impact.</p></div></div>', '<strong>@count</strong> issues (closed/fixed) <br>in the last 12 months <br><strong>→ @year_issue_cred_weighted weighted credits</strong></div><div><br>You have @ninety-day-weighted-credits weighted credits over the past 90 days.<p><br>Issue credits are granted by project maintainers. Contributors should follow <a href="@con-guidelines-url">org contribution guidelines</a>, <a href="@issue-ettiquette-url">issue ettiquette</a>, and the <a href="@standards-of-conduct-url">standards of conduct for the marketplace</a>. <a href="@credit-abuse-policy">Abuse of the credit system</a> can have a negative impact.</p></div></div>', [
@@ -1440,16 +1432,16 @@ function drupalorg_org_owner_tools(stdClass $node) {
   if ($events_sponsored_count > 0) {
     $events_sponsored_credits = empty($node->field_drupalorg_rank_components[LANGUAGE_NONE][10]['value']) ? 0 : $node->field_drupalorg_rank_components[LANGUAGE_NONE][10]['value'];
     $content['drupalorg_organization_sponsored_events'] = [
-      '#markup' => '<div class="partner-tier-content"><div>' . 
+      '#markup' => '<div class="partner-tier-content"><div>' .
         format_plural($events_sponsored_count,
           '<strong>@count </strong> sponsored Drupal event in the past year',
           '<strong>@count </strong> sponsored Drupal events in the past year'
-        ) 
+        )
         . '<br>' . t('<strong>→ @events_sponsored_credits weighted credits</strong>', [
           '@events_sponsored_credits' =>  $events_sponsored_credits,
-        ]) 
-        . '</div><div>' 
-        . t('Sponsoring Drupal events helps keep the Drupal ecosystem healthy.') 
+        ])
+        . '</div><div>'
+        . t('Sponsoring Drupal events helps keep the Drupal ecosystem healthy.')
         . '</div></div>'
     ];
   }
@@ -1478,11 +1470,8 @@ function drupalorg_org_owner_tools(stdClass $node) {
     ];
   }
 
-  $view = views_get_view('issue_credit');
   $content['user_credit_view'] = [
-    '#prefix' => '<div class="accordion"><h3 id="org-issue-page-issue-credit-user">Organization issue credits by contributor</h3>',
-    '#markup' => '<div>' . $view->preview('organization_user_issue_credit_page', [$node->nid]) . '</div>',
-    '#suffix' => '</div>',
+    '#markup' => '<div><a class="primary-button" href="/node/' . $node->nid . '/org-issue-credit-user">' . t('View this in a full page') . '</a></div>',
   ];
 
   $content['note'] = [
@@ -1512,7 +1501,7 @@ function _drupalorg_toggle_branch_visibility($gitlab_project_id, $branch_name, $
     drupal_goto();
   }
 
-  // Set the visibility of the branch.  
+  // Set the visibility of the branch.
   db_merge('drupalorg_issue_fork_branches')
     ->key([
       'gitlab_project_id' => $gitlab_project_id,
@@ -1524,14 +1513,14 @@ function _drupalorg_toggle_branch_visibility($gitlab_project_id, $branch_name, $
   // Create a comment in the issue to keep track of who changed it.
   if ($fork = entity_load_single('drupalorg_issue_fork', $gitlab_project_id)) {
     drupalorg_post_issue_comment_for_credit(
-      $fork->nid, 
-      user_load($GLOBALS['user']->uid), 
+      $fork->nid,
+      user_load($GLOBALS['user']->uid),
       '!name changed the visibility of the branch %branch to %status.',
       [
         '%branch' => $branch_name,
         '%status' => $status,
       ]
-    );  
+    );
   }
 
   drupal_set_message(t('Branch visibility has been toggled.'));
@@ -1888,3 +1877,548 @@ function _drupalorg_keycloak_event_handle_generic($event) {
     'keycloak_event_type' => $event_type,
   ]);
 }
+
+/**
+ * Menu callback.
+ */
+function _drupalorg_user_contribution_records_by_project($username, $project_id) {
+  $project = node_load($project_id);
+  if (!$project || !project_node_is_project($project)) {
+    drupal_set_message(t('Project not found.'));
+    return drupal_not_found();
+  }
+
+  $user = user_load_by_name($username);
+  if (!$user) {
+    drupal_set_message(t('User not found.'));
+    return drupal_not_found();
+  }
+
+  $data = [];
+  $cache_id = 'drupalorg_contribution_record_credits_by_user_organized_by_project:' . md5($user->name) . ':' . $project_id;
+  if (($cache = cache_get($cache_id))) {
+    $data = $cache->data;
+  }
+  else {
+    // Machine name in the endpoint is the one where the code is.
+    $wrapper = entity_metadata_wrapper('node', $project);
+    $repo = versioncontrol_project_repository_load($project->nid);
+    $machine_name = !empty($repo->name) ? $repo->name : $wrapper->field_project_machine_name->value();
+
+    $username = urlencode($username);
+    $url = '/contribution-records-by-user?username=' . $username . '&machine_name=' . $machine_name;
+    $result = drupalorg_make_contribution_records_jsonapi_request($url, TRUE);
+    if (empty($result['message']) && $result['data']) {
+      $data = _drupalorg_contribution_records_organized_by_project($result['data']);
+    }
+
+    $cache_minutes = variable_get('drupalorg_contribution_record_credits_cache_minutes', 60);
+    cache_set($cache_id, $data, 'cache', REQUEST_TIME + $cache_minutes * 60);
+  }
+
+  $issue_list = !empty($data[$project_id]) ? $data[$project_id]['issues'] : [];
+  $issue_list_links = [];
+  foreach ($issue_list as $issue_info) {
+    $issue_list_links[] =
+      l($issue_info['title'], $issue_info['url']) . ' ' .
+      t('updated @date', ['@date' => format_date(strtotime($issue_info['datetime']), 'medium')]);
+  }
+
+  // Build the page.
+  drupal_set_title(t('@project issues credited to @user', [
+    '@project' => $project->title,
+    '@user' => $username,
+  ]));
+  $back_link = '<p>◀︎ ' . l(t('Back to @user\'s profile', ['@user' => $username]), 'u/' . $username) . '</p>';
+  // theme('item_list'...) adds classes that break the styling, so build the list manually.
+  $issues_markup = !empty($issue_list_links) ? '<ul><li>' . implode('</li><li>', $issue_list_links) . '</li></ul>' : t('No contribution records were found.');
+
+  return [
+    'back_link' => ['#markup' => $back_link],
+    'content' => ['#markup' => $issues_markup],
+  ];
+}
+
+/**
+ * Menu callback.
+ */
+function _drupalorg_user_contribution_records($username) {
+  $user = user_load_by_name($username);
+  if (!$user) {
+    drupal_set_message(t('User not found.'));
+    return drupal_not_found();
+  }
+
+  $params = drupal_get_query_parameters();
+  $months = !empty($params['months']) ? (int) $params['months'] : 0;
+  $page = !empty($params['page']) ? (int) $params['page'] : 0;
+  $data = [];
+
+  $cache_id = 'drupalorg_contribution_record_credits_by_user_last_months:' . md5($user->name) . ':' . $months . ':' . $page;
+  if (($cache = cache_get($cache_id))) {
+    $data = $cache->data;
+  }
+  else {
+    $username = urlencode($username);
+    $url = '/contribution-records-by-user?username=' . $username . '&months=' . $months . '&page=' . $page;
+    $result = drupalorg_make_contribution_records_jsonapi_request($url);
+    if (empty($result['message']) && $result['data']) {
+      $data = [
+        'data' => _drupalorg_contribution_records_organized_by_project($result['data']),
+        'total' => $result['total']
+      ];
+    }
+
+    $cache_minutes = variable_get('drupalorg_contribution_record_credits_cache_minutes', 60);
+    cache_set($cache_id, $data, 'cache', REQUEST_TIME + $cache_minutes * 60);
+  }
+  if (empty($data['data'])) {
+    $data['data'] = [];
+  }
+
+  // Build the page.
+  drupal_set_title(t('Issues credited to @user', [
+    '@user' => $username,
+  ]));
+  $back_link = '<p>◀︎ ' . l(t('Back to @user\'s profile', ['@user' => $username]), 'u/' . $username) . '</p>';
+
+  $issue_counter = 0;
+  $issues_markup = [];
+  foreach ($data['data'] as $project_id => $project_contribution_records) {
+    $issue_list_links = [];
+    foreach ($project_contribution_records['issues'] as $issue_info) {
+      $issue_counter++;
+      $issue_list_links[] =
+        l($issue_info['title'], $issue_info['url']) . ' ' .
+        t('updated @date', ['@date' => format_date(strtotime($issue_info['datetime']), 'medium')]);
+    }
+    $issues_markup[$project_contribution_records['title']] = '<h3>' . l($project_contribution_records['title'], $project_contribution_records['url']) . '</h3>';
+    // theme('item_list'...) adds classes that break the styling, so build the list manually.
+    $issues_markup[$project_contribution_records['title']] .= !empty($issue_list_links) ? '<ul><li>' . implode('</li><li>', $issue_list_links) . '</li></ul>' : '';
+  }
+
+  if (empty($issues_markup)) {
+    $issues_markup = t('No credited issues found');
+  }
+  else {
+    ksort($issues_markup);
+    $issues_markup = implode(PHP_EOL, $issues_markup);
+  }
+
+  $range_form = drupal_get_form('_drupalorg_date_range_options_form');
+  // As we are using method='get' we don't want/need the following params to show up.
+  unset($range_form['form_id']);
+  unset($range_form['form_token']);
+  unset($range_form['form_build_id']);
+
+  $page_size = variable_get('drupalorg_contribution_record_credits_page_size', 50);
+  $from = $page * $page_size + 1;
+  $to = $from + ($issue_counter - 1);
+  $total = !empty($data['total']) ? $data['total'] : 0;
+  $summary = $total ? t('<p>Displaying @from - @to of @total - sorted by last updated</p>', [
+    '@total' => $total,
+    '@from' => $from,
+    '@to' => $to,
+  ]) : '';
+  pager_default_initialize($total, $page_size);
+
+  return [
+    'back_link' => ['#markup' => $back_link],
+    'summary' => ['#markup' => $summary],
+    'range_form' => $range_form,
+    'content' => ['#markup' => $issues_markup],
+    'pager' => ['#markup' => theme('pager')]
+  ];
+}
+
+/**
+ * Date range form.
+ */
+function _drupalorg_date_range_options_form($form, &$form_state, $hide_submit = TRUE, $inline_elements = FALSE, $months = TRUE, $username = FALSE, $machine_name = FALSE) {
+  $form['#method'] = 'get';
+
+  $params = drupal_get_query_parameters();
+  if ($months) {
+    $form['months'] = [
+      '#title' => t('Date range'),
+      '#type' => 'select',
+      '#default_value' => !empty($params['months']) ? (int) $params['months'] : 0,
+      '#options' => [
+        0 => t('- Any -'),
+        12 => t('Past year'),
+        3 => t('Past 90 days'),
+        2 => t('Past 60 days'),
+        1 => t('Past 30 days'),
+      ],
+    ];
+    if ($hide_submit) {
+      $form['months']['#attributes'] = [
+        'onChange' => 'this.form.submit();',
+      ];
+    }
+  }
+  if ($username) {
+    $form['username'] = [
+      '#title' => t('Contributor'),
+      '#type' => 'textfield',
+      '#description' => t('Use the username'),
+      '#attributes' => [
+        'size' => 20,
+      ],
+      '#default_value' => !empty($params['username']) ? $params['username'] : '',
+    ];
+    if ($hide_submit) {
+      $form['username']['#attributes']['onChange'] = 'this.form.submit();';
+    }
+  }
+  if ($machine_name) {
+    $form['machine_name'] = [
+      '#title' => t('Repository name'),
+      '#type' => 'textfield',
+      '#description' => t('eg: admin_toolbar'),
+      '#attributes' => [
+        'size' => 20,
+      ],
+      '#default_value' => !empty($params['machine_name']) ? $params['machine_name'] : '',
+    ];
+    if ($hide_submit) {
+      $form['machine_name']['#attributes']['onChange'] = 'this.form.submit();';
+    }
+  }
+
+  $form['submit'] = [
+    '#type' => 'submit',
+    '#value' => t('Apply'),
+    '#attributes' => [
+      'class' => [($hide_submit ? 'js-hide': '')],
+    ],
+  ];
+
+  if ($inline_elements) {
+    $form['#attributes'] = [
+      'class' => ['views-exposed-form', 'clearfix'],
+    ];
+    if ($months) {
+      $form['months']['#prefix'] = '<div class="views-exposed-widget">';
+      $form['months']['#suffix'] = '</div>';
+    }
+    if ($username) {
+      $form['username']['#prefix'] = '<div class="views-exposed-widget">';
+      $form['username']['#suffix'] = '</div>';
+    }
+    if ($machine_name) {
+      $form['machine_name']['#prefix'] = '<div class="views-exposed-widget">';
+      $form['machine_name']['#suffix'] = '</div>';
+    }
+    $form['submit']['#prefix'] = '<div class="views-exposed-widget">';
+    $form['submit']['#suffix'] = '</div>';
+  }
+
+  return $form;
+}
+
+/**
+ * Menu callback.
+ */
+function _drupalorg_organization_contribution_records_by_project($organization, $project_id) {
+  $project = node_load($project_id);
+  if (!$project || !project_node_is_project($project)) {
+    drupal_set_message(t('Project not found.'));
+    return drupal_not_found();
+  }
+
+  $data = [];
+  $cache_id = 'drupalorg_contribution_record_credits_by_organization_organized_by_project:' . $organization->nid . ':' . $project_id;
+  if (($cache = cache_get($cache_id))) {
+    $data = $cache->data;
+  }
+  else {
+    // Machine name in the endpoint is the one where the code is.
+    $wrapper = entity_metadata_wrapper('node', $project);
+    $repo = versioncontrol_project_repository_load($project->nid);
+    $machine_name = !empty($repo->name) ? $repo->name : $wrapper->field_project_machine_name->value();
+
+    $url = '/contribution-records-by-organization?organization=' . urlencode($organization->title) . '&machine_name=' . $machine_name;
+    $result = drupalorg_make_contribution_records_jsonapi_request($url, TRUE);
+    if (empty($result['message']) && $result['data']) {
+      $data = _drupalorg_contribution_records_organized_by_project($result['data']);
+    }
+
+    $cache_minutes = variable_get('drupalorg_contribution_record_credits_cache_minutes', 60);
+    cache_set($cache_id, $data, 'cache', REQUEST_TIME + $cache_minutes * 60);
+  }
+
+  $issue_list = !empty($data[$project_id]) ? $data[$project_id]['issues'] : [];
+  $issue_list_links = [];
+  foreach ($issue_list as $issue_info) {
+    $issue_list_links[] =
+      l($issue_info['title'], $issue_info['url']) . ' ' .
+      t('updated @date', ['@date' => format_date(strtotime($issue_info['datetime']), 'medium')]);
+  }
+
+  // Build the page.
+  drupal_set_title(t('@project issues credited to @organization', [
+    '@project' => $project->title,
+    '@organization' => $organization->title,
+  ]));
+  $back_link = '<p>◀︎ ' . l(t('Back to @organization\'s profile', ['@organization' => $organization->title]), 'node/' . $organization->nid) . '</p>';
+  // theme('item_list'...) adds classes that break the styling, so build the list manually.
+  $issues_markup = !empty($issue_list_links) ? '<ul><li>' . implode('</li><li>', $issue_list_links) . '</li></ul>' : t('No contribution records were found.');
+
+  return [
+    'back_link' => ['#markup' => $back_link],
+    'content' => ['#markup' => $issues_markup],
+  ];
+}
+
+/**
+ * Menu callback.
+ */
+function _drupalorg_organization_contribution_records_by_user_export($organization) {
+  return _drupalorg_organization_contribution_records_by_user($organization, 'csv');
+}
+
+/**
+ * Menu callback.
+ */
+function _drupalorg_organization_contribution_records_by_user($organization, $output_as = 'page') {
+  if (
+    empty($organization) ||
+    !in_array($output_as, ['csv', 'page']) ||
+    $organization->type !== 'organization'
+  ) {
+    return drupal_not_found();
+  }
+
+  $parameters = drupal_get_query_parameters();
+  $parameters_md5 = !empty($parameters) ? md5(json_encode($parameters)) : 'empty';
+  $query = [
+    'organization' => urlencode($organization->title),
+    'username' => !empty($parameters['username']) ? $parameters['username'] : NULL,
+    'machine_name' => !empty($parameters['machine_name']) ? $parameters['machine_name'] : NULL,
+    'months' => !empty($parameters['months']) ? (int) $parameters['months'] : NULL,
+    'page' => !empty($parameters['page']) ? (int) $parameters['page'] : 0,
+  ];
+
+  $data = [];
+  $cache_id = 'drupalorg_contribution_record_credits_by_organization_organized_by_users:' . $organization->nid . ':' . $parameters_md5 . ':' . $output_as;
+  if (($cache = cache_get($cache_id))) {
+    $data = $cache->data;
+  }
+  else {
+    $url = '/contribution-records-by-organization-by-user?' . http_build_query($query);
+    $result = drupalorg_make_contribution_records_jsonapi_request($url);
+    if (empty($result['message']) && $result['data']) {
+      $data = _drupalorg_contribution_records_organized_by_user($result);
+    }
+
+    $cache_minutes = variable_get('drupalorg_contribution_record_credits_cache_minutes', 60);
+    cache_set($cache_id, $data, 'cache', REQUEST_TIME + $cache_minutes * 60);
+  }
+
+  if ($output_as === 'csv') {
+    drupal_add_http_header('Content-Type', 'text/csv; utf-8');
+    drupal_add_http_header('Content-Disposition', 'attachment;filename=org-credits-export.csv');
+
+    $output = '';
+    $keys = [
+      // t('Username'),
+      t('User link'),
+      t('Issue title'),
+      t('Issue link'),
+      t('Date'),
+      t('Project link'),
+    ];
+    $output .= implode("\t", $keys) . "\n";
+    if (!empty($data)) {
+      foreach ($data as $user_id => $issue_list) {
+        // $user = user_load($user_id);
+        $user_link = url('user/' . $user_id, ['absolute' => TRUE]);
+        foreach ($issue_list as $issue_info) {
+          $row = [
+            // $user->name,
+            $user_link,
+            $issue_info['title'],
+            $issue_info['url'],
+            format_date(strtotime($issue_info['datetime']), 'medium'),
+            !empty($issue_info['project_link']) ? $issue_info['project_link'] : '',
+          ];
+          $output .= implode("\t", $row) . "\n";
+        }
+      }
+    }
+    ob_clean();
+    print $output;
+    exit;
+  }
+
+  $issue_counter = 0;
+  $issue_list_links = [];
+  if (!empty($data)) {
+    foreach ($data as $user_id => $issue_list) {
+      foreach ($issue_list as $issue_info) {
+        $issue_counter++;
+        $title = $issue_info['title'];
+        $issue_link = l($issue_info['title'], $issue_info['url']) . ' ' . t('updated @date', ['@date' => format_date(strtotime($issue_info['datetime']), 'medium')]);
+        if (!empty($issue_info['project_name'])) {
+          $project_link = !empty($issue_info['project_link']) ? l($issue_info['project_name'], $issue_info['project_link']) : $issue_info['project_name'];
+          $issue_link = $project_link . ': ' . $issue_link;
+        }
+
+        $issue_list_links[$user_id][] = $issue_link;
+      }
+    }
+  }
+
+  // Filter form.
+  $filter_form = drupal_get_form('_drupalorg_date_range_options_form', FALSE, TRUE, TRUE, TRUE, TRUE);
+  // As we are using method='get' we don't want/need the following params to show up.
+  unset($filter_form['form_id']);
+  unset($filter_form['form_token']);
+  unset($filter_form['form_build_id']);
+
+  // Pagination.
+  $page_size = variable_get('drupalorg_contribution_record_credits_page_size', 50);
+  $from = $query['page'] * $page_size + 1;
+  $to = $from + ($issue_counter - 1);
+  $total = !empty($data['total']) ? $data['total'] : 0;
+  $summary = $total ? t('<p>Displaying @from - @to of @total - sorted by contributor and then last updated</p>', [
+    '@total' => $total,
+    '@from' => $from,
+    '@to' => $to,
+  ]) : '';
+  pager_default_initialize($total, $page_size);
+
+  $notice = '<div>' . t('<b>Please note:</b> this view organizes the projects and issues which people have attributed to your organization for credit. You may see duplicate issues in this list when multiple people at your organization worked on the issue. Each issue is only counted once for organization credit, regardless of how many people contributed to it.') . '</div><br>';
+
+  $issues_markup = '';
+  if (empty($issue_list_links)) {
+    $issues_markup = '<div>' . t('No contribution records were found.') . '</div>';
+  }
+  else {
+    foreach ($issue_list_links as $user_id => $links) {
+      $user = user_load($user_id);
+      $user_link = l($user->name, 'user/' . $user->uid);
+      $issues_markup .= '<div class="user-credits"><h3>' . $user_link . '</h3>';
+      $issues_markup .= '<ul><li>' . implode('</li><li>', $links) . '</li></ul>';
+      $issues_markup .= '</div>';
+    }
+  }
+
+  $query = http_build_query($parameters);
+  $csv_button = '<div class="feed-icon">
+    <a href="/node/' . $organization->nid . '/org-issue-credit-user-export?' . $query . '">
+      <img src="/sites/all/modules/views_data_export/images/csv.png" alt="CSV Export" title="CSV Export">
+    </a>
+  </div>';
+  $issues_markup .= $csv_button;
+
+  // Build the page.
+  drupal_set_title(t('Issues credited to @organization', [
+    '@organization' => $organization->title,
+  ]));
+  if (drupalorg_organization_manage_access($organization)) {
+    $back_link = '<p>◀︎ ' . l(t('Back to @organization\'s owner tools', ['@organization' => $organization->title]), 'node/' . $organization->nid . '/tools') . '</p>';
+  }
+  else {
+    $back_link = '<p>◀︎ ' . l(t('Back to @organization\'s profile', ['@organization' => $organization->title]), 'node/' . $organization->nid) . '</p>';
+  }
+  return [
+    'back_link' => ['#markup' => $back_link],
+    'summary' => ['#markup' => $summary],
+    'notice' => ['#markup' => $notice],
+    'filter_form' => $filter_form,
+    'content' => ['#markup' => $issues_markup],
+    'pager' => ['#markup' => theme('pager')]
+  ];
+}
+
+/**
+ * Menu callback.
+ */
+function _drupalorg_organization_contribution_records($organization) {
+  if ($organization->type != 'organization') {
+    drupal_set_message(t('Not an organization.'));
+    return drupal_not_found();
+  }
+
+  $params = drupal_get_query_parameters();
+  $months = !empty($params['months']) ? (int) $params['months'] : 0;
+  $page = !empty($params['page']) ? (int) $params['page'] : 0;
+  $data = [];
+
+  $cache_id = 'drupalorg_contribution_record_credits_by_organization_last_months:' . md5($organization->title) . ':' . $months . ':' . $page;
+  if (($cache = cache_get($cache_id))) {
+    $data = $cache->data;
+  }
+  else {
+    $url = '/contribution-records-by-organization?organization=' . urlencode($organization->title) . '&months=' . $months . '&page=' . $page;
+    $result = drupalorg_make_contribution_records_jsonapi_request($url);
+    if (empty($result['message']) && $result['data']) {
+      $data = [
+        'data' => _drupalorg_contribution_records_organized_by_project($result['data']),
+        'total' => $result['total']
+      ];
+    }
+
+    $cache_minutes = variable_get('drupalorg_contribution_record_credits_cache_minutes', 60);
+    cache_set($cache_id, $data, 'cache', REQUEST_TIME + $cache_minutes * 60);
+  }
+  if (empty($data['data'])) {
+    $data['data'] = [];
+  }
+
+  // Build the page.
+  drupal_set_title(t('Issues credited to @organization', [
+    '@organization' => $organization->title,
+  ]));
+  $back_link = '<p>◀︎ ' . l(t('Back to @organization\'s profile', ['@organization' => $organization->title]), 'node/' . $organization->nid) . '</p>';
+
+  $issue_counter = 0;
+  $issues_markup = [];
+  foreach ($data['data'] as $project_id => $project_contribution_records) {
+    $issue_list_links = [];
+    foreach ($project_contribution_records['issues'] as $issue_info) {
+      $issue_counter++;
+      $issue_list_links[] =
+        l($issue_info['title'], $issue_info['url']) . ' ' .
+        t('updated @date', ['@date' => format_date(strtotime($issue_info['datetime']), 'medium')]);
+    }
+    $issues_markup[$project_contribution_records['title']] = '<h3>' . l($project_contribution_records['title'], $project_contribution_records['url']) . '</h3>';
+    // theme('item_list'...) adds classes that break the styling, so build the list manually.
+    $issues_markup[$project_contribution_records['title']] .= !empty($issue_list_links) ? '<ul><li>' . implode('</li><li>', $issue_list_links) . '</li></ul>' : '';
+  }
+
+  if (empty($issues_markup)) {
+    $issues_markup = t('No credited issues found');
+  }
+  else {
+    ksort($issues_markup);
+    $issues_markup = implode(PHP_EOL, $issues_markup);
+  }
+
+  $range_form = drupal_get_form('_drupalorg_date_range_options_form');
+  // As we are using method='get' we don't want/need the following params to show up.
+  unset($range_form['form_id']);
+  unset($range_form['form_token']);
+  unset($range_form['form_build_id']);
+
+  $page_size = variable_get('drupalorg_contribution_record_credits_page_size', 50);
+  $from = $page * $page_size + 1;
+  $to = $from + ($issue_counter - 1);
+  $total = !empty($data['total']) ? $data['total'] : 0;
+  $summary = $total ? t('<p>Displaying @from - @to of @total - sorted by last updated</p>', [
+    '@total' => $total,
+    '@from' => $from,
+    '@to' => $to,
+  ]) : '';
+  pager_default_initialize($total, $page_size);
+
+  return [
+    'back_link' => ['#markup' => $back_link],
+    'summary' => ['#markup' => $summary],
+    'range_form' => $range_form,
+    'content' => ['#markup' => $issues_markup],
+    'pager' => ['#markup' => theme('pager')]
+  ];
+}
diff --git a/drupalorg_metrics/drupalorg_metrics.module b/drupalorg_metrics/drupalorg_metrics.module
index a9400c565..d8e1703d3 100644
--- a/drupalorg_metrics/drupalorg_metrics.module
+++ b/drupalorg_metrics/drupalorg_metrics.module
@@ -165,34 +165,31 @@ function drupalorg_metrics_record_stats($start_year, $end_year) {
       $counts['nodes'][] = [$start_js, db_query("SELECT COUNT(*) FROM {node} WHERE created >= :created1 AND created < :created2", [':created1' => $start, ':created2' => $end])->fetchField()];
       $counts['users'][] = array_merge([$start_js], array_values(db_query("SELECT sum(ur.rid IS NOT NULL) confirmed, sum(ur.rid IS NULL) not_confirmed FROM {users} u LEFT JOIN {users_roles} ur ON ur.uid = u.uid AND ur.rid = :role_id WHERE status = :status AND created >= :created1 AND created < :created2", [':role_id' => variable_get('drupalorg_crosssite_trusted_role'), ':status' => 1, ':created1' => $start, ':created2' => $end])->fetchAssoc()));
       $counts['comments'][] = [$start_js, db_query("SELECT COUNT(*) FROM {comment} WHERE status = :status AND created >= :timestamp1 AND created < :timestamp2", [':status' => COMMENT_PUBLISHED, ':timestamp1' => $start, ':timestamp2' => $end])->fetchField()];
-      $counts['credited'][] = array_merge([$start_js], array_values(db_query("SELECT sum(q.as_volunteer AND q.for_organizations), sum(q.as_volunteer AND NOT q.for_organizations), sum(q.for_organizations AND NOT q.as_volunteer), sum(NOT q.as_volunteer AND NOT q.for_organizations) FROM (SELECT c.uid, coalesce(sum(fdf_aav.field_attribute_as_volunteer_value = 1) > 0, 0) as_volunteer, coalesce(sum(fdf_aav.field_attribute_as_volunteer_value = 0) > 0, 0) for_organizations FROM {search_api_db_project_issues} pi INNER JOIN {field_data_field_issue_credit} fdf_ic ON fdf_ic.entity_id = pi.item_id INNER JOIN {comment} c ON c.cid = fdf_ic.field_issue_credit_target_id AND c.status = :comment_published LEFT JOIN {field_data_field_attribute_as_volunteer} fdf_aav ON fdf_aav.entity_id = c.cid WHERE pi.field_issue_status IN (:fixed_statuses) AND pi.field_issue_last_status_change >= :start AND pi.field_issue_last_status_change < :end GROUP BY c.uid ORDER BY NULL) q", [
-        ':comment_published' => COMMENT_PUBLISHED,
-        ':fixed_statuses' => drupalorg_credited_issue_statuses(),
-        ':start' => $start,
-        ':end' => $end,
-      ])->fetchAssoc()));
+      $monthly_numbers = _drupalorg_metrics_contribution_records_get_monthly_numbers('credits', $year, $month, ['volunteer|organization', 'volunteer|no_organization', 'no_volunteer|organization', 'no_volunteer|no_organization']);
+      $counts['credited'][] = [
+        $start_js,
+        $monthly_numbers['volunteer|organization'],
+        $monthly_numbers['volunteer|no_organization'],
+        $monthly_numbers['no_volunteer|organization'],
+        $monthly_numbers['no_volunteer|no_organization'],
+      ];
       // To preserve anonymity, do not show demographics data before issue
-      // credits have significant data, add some random noise, and round to the
-      // nearest multiple of 10.
+      // credits have significant data.
       if (($year == 2015 && $month >= 4) || $year > 2015) {
-        $counts['credited-demographics'][] = array_merge([$start_js], array_values(db_query("SELECT coalesce(round(sum(q.underrepresented AND NOT (q.prefer_not OR q.none))/10+rand()-0.5)*10, 0) underrepresented, coalesce(round(sum(q.none AND NOT q.prefer_not)/10+rand()-0.5)*10, 0) none, coalesce(round(sum(q.prefer_not)/10+rand()-0.5)*10, 0) prefer_not, coalesce(round(sum(NOT q.prefer_not AND NOT q.none AND NOT q.underrepresented)/10+rand()-0.5)*10, 0) not_reported FROM (SELECT c.uid, coalesce(sum(fdf_d.field_demographics_value = 'prefer not to answer') > 0, 0) prefer_not, coalesce(sum(fdf_d.field_demographics_value = 'none') > 0, 0) none, coalesce(sum(fdf_d.field_demographics_value NOT IN ('prefer not to answer', 'none')) > 0, 0) underrepresented FROM search_api_db_project_issues pi INNER JOIN field_data_field_issue_credit fdf_ic ON fdf_ic.entity_id = pi.item_id INNER JOIN comment c ON c.cid = fdf_ic.field_issue_credit_target_id AND c.status = :comment_published LEFT JOIN field_data_field_demographics fdf_d ON fdf_d.entity_id = c.uid WHERE pi.field_issue_status IN (:fixed_statuses) AND pi.field_issue_last_status_change >= :start AND pi.field_issue_last_status_change < :end GROUP BY c.uid ORDER BY NULL) q", [
-          ':comment_published' => COMMENT_PUBLISHED,
-          ':fixed_statuses' => drupalorg_credited_issue_statuses(),
-          ':start' => $start,
-          ':end' => $end,
-        ])->fetchAssoc()));
+        $monthly_numbers = _drupalorg_metrics_contribution_records_get_monthly_numbers('demographics', $year, $month, ['underrepresented', 'none', 'prefer_not', 'not_reported']);
+        $counts['credited-demographics'][] = [
+          $start_js,
+          $monthly_numbers['underrepresented'],
+          $monthly_numbers['none'],
+          $monthly_numbers['prefer_not'],
+          $monthly_numbers['not_reported'],
+        ];
       }
       else {
         $counts['credited-demographics'][] = [$start_js, 0, 0, 0, 0];
       }
 
       // By region.
-      $query = db_query('SELECT fdf_c.field_country_value country, count(DISTINCT c.uid) count FROM {search_api_db_project_issues} pi INNER JOIN {field_data_field_issue_credit} fdf_ic ON fdf_ic.entity_id = pi.item_id INNER JOIN {comment} c ON c.cid = fdf_ic.field_issue_credit_target_id AND c.status = :comment_published LEFT JOIN {field_data_field_country} fdf_c ON fdf_c.entity_id = c.uid WHERE pi.field_issue_status IN (:fixed_statuses) AND pi.field_issue_last_status_change >= :start AND pi.field_issue_last_status_change < :end GROUP BY fdf_c.field_country_value ORDER BY NULL', [
-        ':comment_published' => COMMENT_PUBLISHED,
-        ':fixed_statuses' => drupalorg_credited_issue_statuses(),
-        ':start' => $start,
-        ':end' => $end,
-      ]);
       $by_continent = [
         'Europe' => 0,
         'Northern America' => 0,
@@ -202,22 +199,40 @@ function drupalorg_metrics_record_stats($start_year, $end_year) {
         'Africa' => 0,
         'na' => 0,
       ];
-      foreach ($query as $row) {
-        $region = drupalorg_map_country_to_region($row->country);
-        $by_continent[isset($region_to_continent[$region]) ? $region_to_continent[$region] : 'na'] += $row->count;
+      $monthly_numbers = _drupalorg_metrics_contribution_records_get_monthly_numbers('region', $year, $month);
+      if (!empty($monthly_numbers)) {
+        foreach ($monthly_numbers as $country => $count) {
+          $region = drupalorg_map_country_to_region($country);
+          $by_continent[isset($region_to_continent[$region]) ? $region_to_continent[$region] : 'na'] += $count;
+        }
       }
       $counts['credited-region'][] = array_merge([$start_js], array_values($by_continent));
 
       // By account age.
-      $result = db_query('SELECT greatest(0, timestampdiff(YEAR, from_unixtime(u.created), from_unixtime(:end))) years_ago, count(DISTINCT c.uid) count FROM {search_api_db_project_issues} pi INNER JOIN {field_data_field_issue_credit} fdf_ic ON fdf_ic.entity_id = pi.item_id INNER JOIN {comment} c ON c.cid = fdf_ic.field_issue_credit_target_id AND c.status = :comment_published INNER JOIN {users} u ON u.uid = c.uid WHERE pi.field_issue_status IN (:fixed_statuses) AND pi.field_issue_last_status_change >= :start AND pi.field_issue_last_status_change < :end GROUP BY years_ago ORDER BY NULL', [
-        ':comment_published' => COMMENT_PUBLISHED,
-        ':fixed_statuses' => drupalorg_credited_issue_statuses(),
-        ':start' => $start,
-        ':end' => $end,
-      ])->fetchAllKeyed() + $counts['#account_ages'];
-      ksort($result, SORT_NUMERIC);
-      $counts['credited-account-age'][] = array_merge([$start_js], $result);
+      $monthly_numbers = _drupalorg_metrics_contribution_records_get_monthly_numbers('account_age', $year, $month);
+      $monthly_numbers += $counts['#account_ages'];
+      ksort($monthly_numbers, SORT_NUMERIC);
+      $counts['credited-account-age'][] = array_merge([$start_js], $monthly_numbers);
     }
   }
   cache_set('drupalorg_metrics_counts', $counts, 'drupalorg');
 }
+
+/**
+ * Get monthly numbers with prefilled information when no data is present.
+ */
+function _drupalorg_metrics_contribution_records_get_monthly_numbers($display, $year, $month, array $keys = []) {
+  $monthly_numbers = [];
+  foreach ($keys as $key) {
+    $monthly_numbers[$key] = 0;
+  }
+
+  $monthly_credit_stats = drupalorg_contribution_records_api_request('/contribution-records-metrics?display=' . $display . '&year=' . $year . '&month=' . $month, 'data');
+  if (!empty($monthly_credit_stats)) {
+    $key = $year . '-' . str_pad($month, 2, '0', STR_PAD_LEFT);
+    $monthly_credit_stats[$key] += $monthly_numbers;
+    $monthly_numbers = $monthly_credit_stats[$key];
+  }
+
+  return $monthly_numbers;
+}
diff --git a/drupalorg_project/drupalorg_project.module b/drupalorg_project/drupalorg_project.module
index 063b3cc28..3c33bb130 100644
--- a/drupalorg_project/drupalorg_project.module
+++ b/drupalorg_project/drupalorg_project.module
@@ -667,6 +667,20 @@ function drupalorg_project_form_node_form_alter(&$form, &$form_state) {
         ];
       }
     }
+
+    // Hide blocks in favour of the new contribution records system.
+    if (!empty($form['nodechanges_comment']['field_attribute_as_volunteer'])) {
+      $form['nodechanges_comment']['field_attribute_as_volunteer']['#access'] = FALSE;
+    }
+    if (!empty($form['drupalorg_credit_wrapper'])) {
+      $form['drupalorg_credit_wrapper']['#access'] = FALSE;
+
+      // Remove submit handler.
+      $pos = array_search('drupalorg_project_issue_credit_submit', $form['actions']['submit']['#submit']);
+      if ($pos !== FALSE) {
+        unset($form['actions']['submit']['#submit'][$pos]);
+      }
+    }
   }
   elseif (project_release_node_is_release($form_state['node'])) {
     // See if this is a release for a translation project, and if so, deny.
diff --git a/features/drupalorg_user/drupalorg_user.views_default.inc b/features/drupalorg_user/drupalorg_user.views_default.inc
index 947f5bc04..3b4ff696f 100644
--- a/features/drupalorg_user/drupalorg_user.views_default.inc
+++ b/features/drupalorg_user/drupalorg_user.views_default.inc
@@ -459,8 +459,8 @@ function drupalorg_user_views_default_views() {
   $handler->display->display_options['filters']['field_issue_status_value_1']['operator'] = 'empty';
   $handler->display->display_options['filters']['field_issue_status_value_1']['group'] = 2;
 
-  /* Display: User recent */
-  $handler = $view->new_display('block', 'User recent', 'user_recent');
+  /* Display: Organization Sec Adv recent */
+  $handler = $view->new_display('block', 'Organization Sec Adv recent', 'org_sa_recent');
   $handler->display->display_options['defaults']['pager'] = FALSE;
   $handler->display->display_options['pager']['type'] = 'none';
   $handler->display->display_options['pager']['options']['offset'] = '0';
@@ -473,7 +473,6 @@ function drupalorg_user_views_default_views() {
   $handler->display->display_options['defaults']['row_plugin'] = FALSE;
   $handler->display->display_options['row_plugin'] = 'fields';
   $handler->display->display_options['row_options']['inline'] = array(
-    'title_1' => 'title_1',
     'drupalorg_project_subtitle' => 'drupalorg_project_subtitle',
     'nid' => 'nid',
   );
@@ -483,7 +482,7 @@ function drupalorg_user_views_default_views() {
   $handler->display->display_options['footer']['area']['id'] = 'area';
   $handler->display->display_options['footer']['area']['table'] = 'views';
   $handler->display->display_options['footer']['area']['field'] = 'area';
-  $handler->display->display_options['footer']['area']['content'] = '<a href="/u/%1/issue-credits">View all issue credits</a>';
+  $handler->display->display_options['footer']['area']['content'] = '<a href="/node/%organization-nid/sa">View all security advisory credits</a>';
   $handler->display->display_options['footer']['area']['format'] = '1';
   $handler->display->display_options['footer']['area']['tokenize'] = TRUE;
   $handler->display->display_options['defaults']['fields'] = FALSE;
@@ -522,147 +521,18 @@ function drupalorg_user_views_default_views() {
   $handler->display->display_options['fields']['nid']['field'] = 'nid';
   $handler->display->display_options['fields']['nid']['group_type'] = 'count_distinct';
   $handler->display->display_options['fields']['nid']['label'] = '';
-  $handler->display->display_options['fields']['nid']['alter']['make_link'] = TRUE;
-  $handler->display->display_options['fields']['nid']['alter']['path'] = 'u/%1/issue-credits/[nid_1]';
+  $handler->display->display_options['fields']['nid']['alter']['path'] = 'node/%organization-nid/sa/[nid_1]';
   $handler->display->display_options['fields']['nid']['element_label_colon'] = FALSE;
   $handler->display->display_options['fields']['nid']['separator'] = '';
   $handler->display->display_options['fields']['nid']['format_plural'] = TRUE;
-  $handler->display->display_options['fields']['nid']['format_plural_singular'] = '1 issue';
-  $handler->display->display_options['fields']['nid']['format_plural_plural'] = '@count issues';
+  $handler->display->display_options['fields']['nid']['format_plural_singular'] = '1 advisory';
+  $handler->display->display_options['fields']['nid']['format_plural_plural'] = '@count advisories';
   $handler->display->display_options['defaults']['arguments'] = FALSE;
-  /* Contextual filter: Comment: Author uid */
-  $handler->display->display_options['arguments']['uid']['id'] = 'uid';
-  $handler->display->display_options['arguments']['uid']['table'] = 'comment';
-  $handler->display->display_options['arguments']['uid']['field'] = 'uid';
-  $handler->display->display_options['arguments']['uid']['relationship'] = 'field_issue_credit_target_id';
-  $handler->display->display_options['arguments']['uid']['default_action'] = 'not found';
-  $handler->display->display_options['arguments']['uid']['default_argument_type'] = 'fixed';
-  $handler->display->display_options['arguments']['uid']['summary']['number_of_records'] = '0';
-  $handler->display->display_options['arguments']['uid']['summary']['format'] = 'default_summary';
-  $handler->display->display_options['arguments']['uid']['summary_options']['items_per_page'] = '25';
-  $handler->display->display_options['arguments']['uid']['specify_validation'] = TRUE;
-  $handler->display->display_options['arguments']['uid']['validate']['type'] = 'user';
   $handler->display->display_options['defaults']['filter_groups'] = FALSE;
-  $handler->display->display_options['defaults']['filters'] = FALSE;
-  /* Filter criterion: Content: Published */
-  $handler->display->display_options['filters']['status']['id'] = 'status';
-  $handler->display->display_options['filters']['status']['table'] = 'node';
-  $handler->display->display_options['filters']['status']['field'] = 'status';
-  $handler->display->display_options['filters']['status']['value'] = 1;
-  $handler->display->display_options['filters']['status']['group'] = 1;
-  $handler->display->display_options['filters']['status']['expose']['operator'] = FALSE;
-  /* Filter criterion: Content: Type */
-  $handler->display->display_options['filters']['type']['id'] = 'type';
-  $handler->display->display_options['filters']['type']['table'] = 'node';
-  $handler->display->display_options['filters']['type']['field'] = 'type';
-  $handler->display->display_options['filters']['type']['value'] = array(
-    'project_issue' => 'project_issue',
-  );
-  $handler->display->display_options['filters']['type']['group'] = 1;
-  /* Filter criterion: Comment: Approved */
-  $handler->display->display_options['filters']['status_1']['id'] = 'status_1';
-  $handler->display->display_options['filters']['status_1']['table'] = 'comment';
-  $handler->display->display_options['filters']['status_1']['field'] = 'status';
-  $handler->display->display_options['filters']['status_1']['relationship'] = 'field_issue_credit_target_id';
-  $handler->display->display_options['filters']['status_1']['value'] = '1';
-  $handler->display->display_options['filters']['status_1']['group'] = 1;
-  /* Filter criterion: Content: Status (field_issue_status) */
-  $handler->display->display_options['filters']['field_issue_status_value']['id'] = 'field_issue_status_value';
-  $handler->display->display_options['filters']['field_issue_status_value']['table'] = 'field_data_field_issue_status';
-  $handler->display->display_options['filters']['field_issue_status_value']['field'] = 'field_issue_status_value';
-  $handler->display->display_options['filters']['field_issue_status_value']['value'] = array(
-    'Closed' => 'Closed',
-    2 => '2',
-  );
-  $handler->display->display_options['filters']['field_issue_status_value']['group'] = 1;
-
-  /* Display: User recent page */
-  $handler = $view->new_display('page', 'User recent page', 'user_recent_page');
-  $handler->display->display_options['defaults']['style_plugin'] = FALSE;
-  $handler->display->display_options['style_plugin'] = 'list';
-  $handler->display->display_options['style_options']['default_row_class'] = FALSE;
-  $handler->display->display_options['style_options']['row_class_special'] = FALSE;
-  $handler->display->display_options['style_options']['wrapper_class'] = '';
-  $handler->display->display_options['defaults']['style_options'] = FALSE;
-  $handler->display->display_options['defaults']['row_plugin'] = FALSE;
-  $handler->display->display_options['row_plugin'] = 'fields';
-  $handler->display->display_options['row_options']['inline'] = array(
-    'title' => 'title',
-    'changed' => 'changed',
+  $handler->display->display_options['filter_groups']['groups'] = array(
+    1 => 'AND',
+    2 => 'OR',
   );
-  $handler->display->display_options['row_options']['separator'] = 'updated';
-  $handler->display->display_options['defaults']['row_options'] = FALSE;
-  $handler->display->display_options['defaults']['header'] = FALSE;
-  /* Header: Global: Text area */
-  $handler->display->display_options['header']['area']['id'] = 'area';
-  $handler->display->display_options['header']['area']['table'] = 'views';
-  $handler->display->display_options['header']['area']['field'] = 'area';
-  $handler->display->display_options['header']['area']['content'] = '◀︎ [uid]';
-  $handler->display->display_options['header']['area']['format'] = '1';
-  $handler->display->display_options['header']['area']['tokenize'] = TRUE;
-  $handler->display->display_options['defaults']['relationships'] = FALSE;
-  /* Relationship: Entity Reference: Referenced Entity */
-  $handler->display->display_options['relationships']['field_issue_credit_target_id']['id'] = 'field_issue_credit_target_id';
-  $handler->display->display_options['relationships']['field_issue_credit_target_id']['table'] = 'field_data_field_issue_credit';
-  $handler->display->display_options['relationships']['field_issue_credit_target_id']['field'] = 'field_issue_credit_target_id';
-  $handler->display->display_options['relationships']['field_issue_credit_target_id']['required'] = TRUE;
-  $handler->display->display_options['defaults']['fields'] = FALSE;
-  /* Field: Content: Title */
-  $handler->display->display_options['fields']['title']['id'] = 'title';
-  $handler->display->display_options['fields']['title']['table'] = 'node';
-  $handler->display->display_options['fields']['title']['field'] = 'title';
-  $handler->display->display_options['fields']['title']['label'] = '';
-  $handler->display->display_options['fields']['title']['element_label_colon'] = FALSE;
-  /* Field: Content: Updated date */
-  $handler->display->display_options['fields']['changed']['id'] = 'changed';
-  $handler->display->display_options['fields']['changed']['table'] = 'node';
-  $handler->display->display_options['fields']['changed']['field'] = 'changed';
-  $handler->display->display_options['fields']['changed']['label'] = '';
-  $handler->display->display_options['fields']['changed']['element_label_colon'] = FALSE;
-  $handler->display->display_options['fields']['changed']['date_format'] = 'today time ago';
-  $handler->display->display_options['fields']['changed']['second_date_format'] = 'medium';
-  /* Field: Comment: Author uid */
-  $handler->display->display_options['fields']['uid']['id'] = 'uid';
-  $handler->display->display_options['fields']['uid']['table'] = 'comment';
-  $handler->display->display_options['fields']['uid']['field'] = 'uid';
-  $handler->display->display_options['fields']['uid']['relationship'] = 'field_issue_credit_target_id';
-  $handler->display->display_options['fields']['uid']['label'] = '';
-  $handler->display->display_options['fields']['uid']['exclude'] = TRUE;
-  $handler->display->display_options['fields']['uid']['alter']['alter_text'] = TRUE;
-  $handler->display->display_options['fields']['uid']['alter']['text'] = 'Back to %1’s profile';
-  $handler->display->display_options['fields']['uid']['alter']['make_link'] = TRUE;
-  $handler->display->display_options['fields']['uid']['alter']['path'] = 'user/[uid]';
-  $handler->display->display_options['fields']['uid']['element_label_colon'] = FALSE;
-  $handler->display->display_options['fields']['uid']['link_to_user'] = FALSE;
-  $handler->display->display_options['defaults']['arguments'] = FALSE;
-  /* Contextual filter: Comment: Author uid */
-  $handler->display->display_options['arguments']['uid']['id'] = 'uid';
-  $handler->display->display_options['arguments']['uid']['table'] = 'comment';
-  $handler->display->display_options['arguments']['uid']['field'] = 'uid';
-  $handler->display->display_options['arguments']['uid']['relationship'] = 'field_issue_credit_target_id';
-  $handler->display->display_options['arguments']['uid']['default_action'] = 'not found';
-  $handler->display->display_options['arguments']['uid']['exception']['value'] = '';
-  $handler->display->display_options['arguments']['uid']['default_argument_type'] = 'fixed';
-  $handler->display->display_options['arguments']['uid']['summary']['number_of_records'] = '0';
-  $handler->display->display_options['arguments']['uid']['summary']['format'] = 'default_summary';
-  $handler->display->display_options['arguments']['uid']['summary_options']['items_per_page'] = '25';
-  $handler->display->display_options['arguments']['uid']['specify_validation'] = TRUE;
-  $handler->display->display_options['arguments']['uid']['validate']['type'] = 'user';
-  $handler->display->display_options['arguments']['uid']['validate_options']['type'] = 'name';
-  /* Contextual filter: Field: Project (field_project) */
-  $handler->display->display_options['arguments']['field_project_target_id']['id'] = 'field_project_target_id';
-  $handler->display->display_options['arguments']['field_project_target_id']['table'] = 'field_data_field_project';
-  $handler->display->display_options['arguments']['field_project_target_id']['field'] = 'field_project_target_id';
-  $handler->display->display_options['arguments']['field_project_target_id']['default_action'] = 'not found';
-  $handler->display->display_options['arguments']['field_project_target_id']['title_enable'] = TRUE;
-  $handler->display->display_options['arguments']['field_project_target_id']['title'] = '%2 issues credited to %1';
-  $handler->display->display_options['arguments']['field_project_target_id']['default_argument_type'] = 'fixed';
-  $handler->display->display_options['arguments']['field_project_target_id']['summary']['number_of_records'] = '0';
-  $handler->display->display_options['arguments']['field_project_target_id']['summary']['format'] = 'default_summary';
-  $handler->display->display_options['arguments']['field_project_target_id']['summary_options']['items_per_page'] = '25';
-  $handler->display->display_options['arguments']['field_project_target_id']['specify_validation'] = TRUE;
-  $handler->display->display_options['arguments']['field_project_target_id']['validate']['type'] = 'project_nid';
-  $handler->display->display_options['defaults']['filter_groups'] = FALSE;
   $handler->display->display_options['defaults']['filters'] = FALSE;
   /* Filter criterion: Content: Published */
   $handler->display->display_options['filters']['status']['id'] = 'status';
@@ -676,7 +546,7 @@ function drupalorg_user_views_default_views() {
   $handler->display->display_options['filters']['type']['table'] = 'node';
   $handler->display->display_options['filters']['type']['field'] = 'type';
   $handler->display->display_options['filters']['type']['value'] = array(
-    'project_issue' => 'project_issue',
+    'sa' => 'sa',
   );
   $handler->display->display_options['filters']['type']['group'] = 1;
   /* Filter criterion: Comment: Approved */
@@ -686,25 +556,78 @@ function drupalorg_user_views_default_views() {
   $handler->display->display_options['filters']['status_1']['relationship'] = 'field_issue_credit_target_id';
   $handler->display->display_options['filters']['status_1']['value'] = '1';
   $handler->display->display_options['filters']['status_1']['group'] = 1;
-  /* Filter criterion: Content: Status (field_issue_status) */
-  $handler->display->display_options['filters']['field_issue_status_value']['id'] = 'field_issue_status_value';
-  $handler->display->display_options['filters']['field_issue_status_value']['table'] = 'field_data_field_issue_status';
-  $handler->display->display_options['filters']['field_issue_status_value']['field'] = 'field_issue_status_value';
-  $handler->display->display_options['filters']['field_issue_status_value']['value'] = array(
-    'Closed' => 'Closed',
-    2 => '2',
+  /* Filter criterion: Comment: Attribute this contribution (field_attribute_as_volunteer) */
+  $handler->display->display_options['filters']['field_attribute_as_volunteer_value']['id'] = 'field_attribute_as_volunteer_value';
+  $handler->display->display_options['filters']['field_attribute_as_volunteer_value']['table'] = 'field_data_field_attribute_as_volunteer';
+  $handler->display->display_options['filters']['field_attribute_as_volunteer_value']['field'] = 'field_attribute_as_volunteer_value';
+  $handler->display->display_options['filters']['field_attribute_as_volunteer_value']['relationship'] = 'field_issue_credit_target_id';
+  $handler->display->display_options['filters']['field_attribute_as_volunteer_value']['value'] = array(
+    0 => '0',
   );
-  $handler->display->display_options['filters']['field_issue_status_value']['group'] = 1;
-  $handler->display->display_options['path'] = 'u/%/issue-credits/%';
+  $handler->display->display_options['filters']['field_attribute_as_volunteer_value']['group'] = 1;
+  /* Filter criterion: Content: Project type (field_project_type) */
+  $handler->display->display_options['filters']['field_project_type_value']['id'] = 'field_project_type_value';
+  $handler->display->display_options['filters']['field_project_type_value']['table'] = 'field_data_field_project_type';
+  $handler->display->display_options['filters']['field_project_type_value']['field'] = 'field_project_type_value';
+  $handler->display->display_options['filters']['field_project_type_value']['relationship'] = 'field_project_target_id';
+  $handler->display->display_options['filters']['field_project_type_value']['value'] = array(
+    'full' => 'full',
+  );
+  $handler->display->display_options['filters']['field_project_type_value']['group'] = 1;
+  /* Filter criterion: Comment: Attribute comment at organization (field_attribute_contribution_to) */
+  $handler->display->display_options['filters']['field_attribute_contribution_to_target_id']['id'] = 'field_attribute_contribution_to_target_id';
+  $handler->display->display_options['filters']['field_attribute_contribution_to_target_id']['table'] = 'field_data_field_attribute_contribution_to';
+  $handler->display->display_options['filters']['field_attribute_contribution_to_target_id']['field'] = 'field_attribute_contribution_to_target_id';
+  $handler->display->display_options['filters']['field_attribute_contribution_to_target_id']['relationship'] = 'field_issue_credit_target_id';
+  $handler->display->display_options['filters']['field_attribute_contribution_to_target_id']['group'] = 2;
+  /* Filter criterion: Comment: Attribute comment for customer (field_for_customer) */
+  $handler->display->display_options['filters']['field_for_customer_target_id']['id'] = 'field_for_customer_target_id';
+  $handler->display->display_options['filters']['field_for_customer_target_id']['table'] = 'field_data_field_for_customer';
+  $handler->display->display_options['filters']['field_for_customer_target_id']['field'] = 'field_for_customer_target_id';
+  $handler->display->display_options['filters']['field_for_customer_target_id']['relationship'] = 'field_issue_credit_target_id';
+  $handler->display->display_options['filters']['field_for_customer_target_id']['group'] = 2;
+  $handler->display->display_options['filters']['field_for_customer_target_id']['expose']['operator_id'] = 'field_for_customer_target_id_op';
+  $handler->display->display_options['filters']['field_for_customer_target_id']['expose']['label'] = 'Attribute comment for customer (field_for_customer)';
+  $handler->display->display_options['filters']['field_for_customer_target_id']['expose']['operator'] = 'field_for_customer_target_id_op';
+  $handler->display->display_options['filters']['field_for_customer_target_id']['expose']['identifier'] = 'field_for_customer_target_id';
+  /* Filter criterion: Content: Last status change (field_issue_last_status_change) */
+  $handler->display->display_options['filters']['field_issue_last_status_change_value']['id'] = 'field_issue_last_status_change_value';
+  $handler->display->display_options['filters']['field_issue_last_status_change_value']['table'] = 'field_data_field_issue_last_status_change';
+  $handler->display->display_options['filters']['field_issue_last_status_change_value']['field'] = 'field_issue_last_status_change_value';
+  $handler->display->display_options['filters']['field_issue_last_status_change_value']['operator'] = '>=';
+  $handler->display->display_options['filters']['field_issue_last_status_change_value']['value']['value'] = '-12 months';
+  $handler->display->display_options['filters']['field_issue_last_status_change_value']['value']['type'] = 'offset';
+  $handler->display->display_options['filters']['field_issue_last_status_change_value']['group'] = 1;
+  $handler->display->display_options['filters']['field_issue_last_status_change_value']['expose']['operator_id'] = 'field_issue_last_status_change_value_op';
+  $handler->display->display_options['filters']['field_issue_last_status_change_value']['expose']['label'] = 'Last status change (field_issue_last_status_change)';
+  $handler->display->display_options['filters']['field_issue_last_status_change_value']['expose']['operator'] = 'field_issue_last_status_change_value_op';
+  $handler->display->display_options['filters']['field_issue_last_status_change_value']['expose']['identifier'] = 'field_issue_last_status_change_value';
+  $handler->display->display_options['block_description'] = 'Org SA recent';
 
-  /* Display: User issue credit page */
-  $handler = $view->new_display('page', 'User issue credit page', 'page_1');
+  /* Display: Organization sa credit page */
+  $handler = $view->new_display('page', 'Organization sa credit page', 'org_sa_credit_page');
+  $handler->display->display_options['defaults']['title'] = FALSE;
+  $handler->display->display_options['title'] = 'Security advisories credited to %1';
+  $handler->display->display_options['defaults']['cache'] = FALSE;
+  $handler->display->display_options['cache']['type'] = 'time';
+  $handler->display->display_options['cache']['results_lifespan'] = '3600';
+  $handler->display->display_options['cache']['results_lifespan_custom'] = '0';
+  $handler->display->display_options['cache']['output_lifespan'] = '3600';
+  $handler->display->display_options['cache']['output_lifespan_custom'] = '0';
+  $handler->display->display_options['defaults']['exposed_form'] = FALSE;
+  $handler->display->display_options['exposed_form']['type'] = 'basic';
+  $handler->display->display_options['defaults']['pager'] = FALSE;
+  $handler->display->display_options['pager']['type'] = 'full';
+  $handler->display->display_options['pager']['options']['items_per_page'] = '100';
+  $handler->display->display_options['pager']['options']['offset'] = '0';
+  $handler->display->display_options['pager']['options']['id'] = '0';
+  $handler->display->display_options['pager']['options']['quantity'] = '9';
   $handler->display->display_options['defaults']['style_plugin'] = FALSE;
   $handler->display->display_options['style_plugin'] = 'list';
   $handler->display->display_options['style_options']['grouping'] = array(
     0 => array(
       'field' => 'field_project_machine_name',
-      'rendered' => 0,
+      'rendered' => 1,
       'rendered_strip' => 0,
     ),
   );
@@ -725,23 +648,10 @@ function drupalorg_user_views_default_views() {
   $handler->display->display_options['header']['area']['id'] = 'area';
   $handler->display->display_options['header']['area']['table'] = 'views';
   $handler->display->display_options['header']['area']['field'] = 'area';
-  $handler->display->display_options['header']['area']['content'] = '◀︎ [uid]';
+  $handler->display->display_options['header']['area']['empty'] = TRUE;
+  $handler->display->display_options['header']['area']['content'] = '◀︎ <a href="!url-1">Back to %1</a>';
   $handler->display->display_options['header']['area']['format'] = '1';
   $handler->display->display_options['header']['area']['tokenize'] = TRUE;
-  /* Header: Global: Result summary */
-  $handler->display->display_options['header']['result']['id'] = 'result';
-  $handler->display->display_options['header']['result']['table'] = 'views';
-  $handler->display->display_options['header']['result']['field'] = 'result';
-  $handler->display->display_options['defaults']['relationships'] = FALSE;
-  /* Relationship: Entity Reference: Referenced Entity */
-  $handler->display->display_options['relationships']['field_issue_credit_target_id']['id'] = 'field_issue_credit_target_id';
-  $handler->display->display_options['relationships']['field_issue_credit_target_id']['table'] = 'field_data_field_issue_credit';
-  $handler->display->display_options['relationships']['field_issue_credit_target_id']['field'] = 'field_issue_credit_target_id';
-  $handler->display->display_options['relationships']['field_issue_credit_target_id']['required'] = TRUE;
-  /* Relationship: Entity Reference: Referenced Entity */
-  $handler->display->display_options['relationships']['field_project_target_id']['id'] = 'field_project_target_id';
-  $handler->display->display_options['relationships']['field_project_target_id']['table'] = 'field_data_field_project';
-  $handler->display->display_options['relationships']['field_project_target_id']['field'] = 'field_project_target_id';
   $handler->display->display_options['defaults']['fields'] = FALSE;
   /* Field: Content: Title */
   $handler->display->display_options['fields']['title']['id'] = 'title';
@@ -757,19 +667,6 @@ function drupalorg_user_views_default_views() {
   $handler->display->display_options['fields']['changed']['element_label_colon'] = FALSE;
   $handler->display->display_options['fields']['changed']['date_format'] = 'today time ago';
   $handler->display->display_options['fields']['changed']['second_date_format'] = 'medium';
-  /* Field: Comment: Author uid */
-  $handler->display->display_options['fields']['uid']['id'] = 'uid';
-  $handler->display->display_options['fields']['uid']['table'] = 'comment';
-  $handler->display->display_options['fields']['uid']['field'] = 'uid';
-  $handler->display->display_options['fields']['uid']['relationship'] = 'field_issue_credit_target_id';
-  $handler->display->display_options['fields']['uid']['label'] = '';
-  $handler->display->display_options['fields']['uid']['exclude'] = TRUE;
-  $handler->display->display_options['fields']['uid']['alter']['alter_text'] = TRUE;
-  $handler->display->display_options['fields']['uid']['alter']['text'] = 'Back to %1’s profile';
-  $handler->display->display_options['fields']['uid']['alter']['make_link'] = TRUE;
-  $handler->display->display_options['fields']['uid']['alter']['path'] = 'user/[uid]';
-  $handler->display->display_options['fields']['uid']['element_label_colon'] = FALSE;
-  $handler->display->display_options['fields']['uid']['link_to_user'] = FALSE;
   /* Field: Content: Nid */
   $handler->display->display_options['fields']['nid']['id'] = 'nid';
   $handler->display->display_options['fields']['nid']['table'] = 'node';
@@ -800,6 +697,7 @@ function drupalorg_user_views_default_views() {
   $handler->display->display_options['fields']['field_project_machine_name']['alter']['path'] = 'node/[nid]';
   $handler->display->display_options['fields']['field_project_machine_name']['alter']['suffix'] = ' [drupalorg_project_subtitle]';
   $handler->display->display_options['fields']['field_project_machine_name']['element_label_colon'] = FALSE;
+  $handler->display->display_options['fields']['field_project_machine_name']['group_column'] = 'entity_id';
   $handler->display->display_options['fields']['field_project_machine_name']['group_columns'] = array(
     'value' => 'value',
   );
@@ -816,26 +714,25 @@ function drupalorg_user_views_default_views() {
   $handler->display->display_options['sorts']['field_issue_last_status_change_value']['group_type'] = 'max';
   $handler->display->display_options['sorts']['field_issue_last_status_change_value']['order'] = 'DESC';
   $handler->display->display_options['defaults']['arguments'] = FALSE;
-  /* Contextual filter: Comment: Author uid */
-  $handler->display->display_options['arguments']['uid']['id'] = 'uid';
-  $handler->display->display_options['arguments']['uid']['table'] = 'comment';
-  $handler->display->display_options['arguments']['uid']['field'] = 'uid';
-  $handler->display->display_options['arguments']['uid']['relationship'] = 'field_issue_credit_target_id';
-  $handler->display->display_options['arguments']['uid']['default_action'] = 'not found';
-  $handler->display->display_options['arguments']['uid']['exception']['value'] = '';
-  $handler->display->display_options['arguments']['uid']['default_argument_type'] = 'fixed';
-  $handler->display->display_options['arguments']['uid']['summary']['number_of_records'] = '0';
-  $handler->display->display_options['arguments']['uid']['summary']['format'] = 'default_summary';
-  $handler->display->display_options['arguments']['uid']['summary_options']['items_per_page'] = '25';
-  $handler->display->display_options['arguments']['uid']['specify_validation'] = TRUE;
-  $handler->display->display_options['arguments']['uid']['validate']['type'] = 'user';
-  $handler->display->display_options['arguments']['uid']['validate_options']['type'] = 'name';
-  $handler->display->display_options['defaults']['filter_groups'] = FALSE;
-  $handler->display->display_options['defaults']['filters'] = FALSE;
-  /* Filter criterion: Content: Published */
-  $handler->display->display_options['filters']['status']['id'] = 'status';
-  $handler->display->display_options['filters']['status']['table'] = 'node';
-  $handler->display->display_options['filters']['status']['field'] = 'status';
+  /* Contextual filter: Global: Null */
+  $handler->display->display_options['arguments']['null']['id'] = 'null';
+  $handler->display->display_options['arguments']['null']['table'] = 'views';
+  $handler->display->display_options['arguments']['null']['field'] = 'null';
+  $handler->display->display_options['arguments']['null']['default_action'] = 'not found';
+  $handler->display->display_options['arguments']['null']['default_argument_type'] = 'fixed';
+  $handler->display->display_options['arguments']['null']['summary']['number_of_records'] = '0';
+  $handler->display->display_options['arguments']['null']['summary']['format'] = 'default_summary';
+  $handler->display->display_options['arguments']['null']['summary_options']['items_per_page'] = '25';
+  $handler->display->display_options['defaults']['filter_groups'] = FALSE;
+  $handler->display->display_options['filter_groups']['groups'] = array(
+    1 => 'AND',
+    2 => 'OR',
+  );
+  $handler->display->display_options['defaults']['filters'] = FALSE;
+  /* Filter criterion: Content: Published */
+  $handler->display->display_options['filters']['status']['id'] = 'status';
+  $handler->display->display_options['filters']['status']['table'] = 'node';
+  $handler->display->display_options['filters']['status']['field'] = 'status';
   $handler->display->display_options['filters']['status']['value'] = 1;
   $handler->display->display_options['filters']['status']['group'] = 1;
   $handler->display->display_options['filters']['status']['expose']['operator'] = FALSE;
@@ -844,7 +741,7 @@ function drupalorg_user_views_default_views() {
   $handler->display->display_options['filters']['type']['table'] = 'node';
   $handler->display->display_options['filters']['type']['field'] = 'type';
   $handler->display->display_options['filters']['type']['value'] = array(
-    'project_issue' => 'project_issue',
+    'sa' => 'sa',
   );
   $handler->display->display_options['filters']['type']['group'] = 1;
   /* Filter criterion: Comment: Approved */
@@ -854,74 +751,33 @@ function drupalorg_user_views_default_views() {
   $handler->display->display_options['filters']['status_1']['relationship'] = 'field_issue_credit_target_id';
   $handler->display->display_options['filters']['status_1']['value'] = '1';
   $handler->display->display_options['filters']['status_1']['group'] = 1;
-  /* Filter criterion: Content: Last status change (field_issue_last_status_change) */
-  $handler->display->display_options['filters']['field_issue_last_status_change_value']['id'] = 'field_issue_last_status_change_value';
-  $handler->display->display_options['filters']['field_issue_last_status_change_value']['table'] = 'field_data_field_issue_last_status_change';
-  $handler->display->display_options['filters']['field_issue_last_status_change_value']['field'] = 'field_issue_last_status_change_value';
-  $handler->display->display_options['filters']['field_issue_last_status_change_value']['group'] = 1;
-  $handler->display->display_options['filters']['field_issue_last_status_change_value']['exposed'] = TRUE;
-  $handler->display->display_options['filters']['field_issue_last_status_change_value']['expose']['operator_id'] = 'field_issue_last_status_change_value_op';
-  $handler->display->display_options['filters']['field_issue_last_status_change_value']['expose']['label'] = 'Last status change (field_issue_last_status_change)';
-  $handler->display->display_options['filters']['field_issue_last_status_change_value']['expose']['operator'] = 'field_issue_last_status_change_value_op';
-  $handler->display->display_options['filters']['field_issue_last_status_change_value']['expose']['identifier'] = 'field_issue_last_status_change_value';
-  $handler->display->display_options['filters']['field_issue_last_status_change_value']['is_grouped'] = TRUE;
-  $handler->display->display_options['filters']['field_issue_last_status_change_value']['group_info']['label'] = 'Date range';
-  $handler->display->display_options['filters']['field_issue_last_status_change_value']['group_info']['identifier'] = 'field_issue_last_status_change_value';
-  $handler->display->display_options['filters']['field_issue_last_status_change_value']['group_info']['group_items'] = array(
-    1 => array(
-      'title' => 'Past 12 months',
-      'operator' => '>=',
-      'value' => array(
-        'type' => 'offset',
-        'value' => '-1 year',
-        'min' => '',
-        'max' => '',
-      ),
-    ),
-    2 => array(
-      'title' => 'Past 90 days',
-      'operator' => '>=',
-      'value' => array(
-        'type' => 'offset',
-        'value' => '-90 days',
-        'min' => '',
-        'max' => '',
-      ),
-    ),
-    3 => array(
-      'title' => 'Past 60 days',
-      'operator' => '>=',
-      'value' => array(
-        'type' => 'offset',
-        'value' => '-60 days',
-        'min' => '',
-        'max' => '',
-      ),
-    ),
-    4 => array(
-      'title' => 'Past 30 days',
-      'operator' => '>=',
-      'value' => array(
-        'type' => 'offset',
-        'value' => '-30 days',
-        'min' => '',
-        'max' => '',
-      ),
-    ),
-  );
-  /* Filter criterion: Content: Status (field_issue_status) */
-  $handler->display->display_options['filters']['field_issue_status_value']['id'] = 'field_issue_status_value';
-  $handler->display->display_options['filters']['field_issue_status_value']['table'] = 'field_data_field_issue_status';
-  $handler->display->display_options['filters']['field_issue_status_value']['field'] = 'field_issue_status_value';
-  $handler->display->display_options['filters']['field_issue_status_value']['value'] = array(
-    'Closed' => 'Closed',
-    2 => '2',
+  /* Filter criterion: Comment: Attribute this contribution (field_attribute_as_volunteer) */
+  $handler->display->display_options['filters']['field_attribute_as_volunteer_value']['id'] = 'field_attribute_as_volunteer_value';
+  $handler->display->display_options['filters']['field_attribute_as_volunteer_value']['table'] = 'field_data_field_attribute_as_volunteer';
+  $handler->display->display_options['filters']['field_attribute_as_volunteer_value']['field'] = 'field_attribute_as_volunteer_value';
+  $handler->display->display_options['filters']['field_attribute_as_volunteer_value']['relationship'] = 'field_issue_credit_target_id';
+  $handler->display->display_options['filters']['field_attribute_as_volunteer_value']['value'] = array(
+    0 => '0',
   );
-  $handler->display->display_options['filters']['field_issue_status_value']['group'] = 1;
-  $handler->display->display_options['path'] = 'u/%/issue-credits';
+  $handler->display->display_options['filters']['field_attribute_as_volunteer_value']['group'] = 1;
+  /* Filter criterion: Comment: Attribute comment at organization (field_attribute_contribution_to) */
+  $handler->display->display_options['filters']['field_attribute_contribution_to_target_id']['id'] = 'field_attribute_contribution_to_target_id';
+  $handler->display->display_options['filters']['field_attribute_contribution_to_target_id']['table'] = 'field_data_field_attribute_contribution_to';
+  $handler->display->display_options['filters']['field_attribute_contribution_to_target_id']['field'] = 'field_attribute_contribution_to_target_id';
+  $handler->display->display_options['filters']['field_attribute_contribution_to_target_id']['relationship'] = 'field_issue_credit_target_id';
+  $handler->display->display_options['filters']['field_attribute_contribution_to_target_id']['value']['value'] = '***CURRENT_ORGANIZATION***';
+  $handler->display->display_options['filters']['field_attribute_contribution_to_target_id']['group'] = 2;
+  /* Filter criterion: Comment: Attribute comment for customer (field_for_customer) */
+  $handler->display->display_options['filters']['field_for_customer_target_id']['id'] = 'field_for_customer_target_id';
+  $handler->display->display_options['filters']['field_for_customer_target_id']['table'] = 'field_data_field_for_customer';
+  $handler->display->display_options['filters']['field_for_customer_target_id']['field'] = 'field_for_customer_target_id';
+  $handler->display->display_options['filters']['field_for_customer_target_id']['relationship'] = 'field_issue_credit_target_id';
+  $handler->display->display_options['filters']['field_for_customer_target_id']['value']['value'] = '***CURRENT_ORGANIZATION***';
+  $handler->display->display_options['filters']['field_for_customer_target_id']['group'] = 2;
+  $handler->display->display_options['path'] = 'node/%/sa';
 
-  /* Display: Organization recent */
-  $handler = $view->new_display('block', 'Organization recent', 'organization_recent');
+  /* Display: User SA */
+  $handler = $view->new_display('block', 'User SA', 'user_sa_recent');
   $handler->display->display_options['defaults']['pager'] = FALSE;
   $handler->display->display_options['pager']['type'] = 'none';
   $handler->display->display_options['pager']['options']['offset'] = '0';
@@ -934,18 +790,12 @@ function drupalorg_user_views_default_views() {
   $handler->display->display_options['defaults']['row_plugin'] = FALSE;
   $handler->display->display_options['row_plugin'] = 'fields';
   $handler->display->display_options['row_options']['inline'] = array(
+    'title_1' => 'title_1',
     'drupalorg_project_subtitle' => 'drupalorg_project_subtitle',
     'nid' => 'nid',
   );
   $handler->display->display_options['defaults']['row_options'] = FALSE;
   $handler->display->display_options['defaults']['footer'] = FALSE;
-  /* Footer: Global: Text area */
-  $handler->display->display_options['footer']['area']['id'] = 'area';
-  $handler->display->display_options['footer']['area']['table'] = 'views';
-  $handler->display->display_options['footer']['area']['field'] = 'area';
-  $handler->display->display_options['footer']['area']['content'] = '<a href="/node/%organization-nid/issue-credits">View all issue credits</a>';
-  $handler->display->display_options['footer']['area']['format'] = '1';
-  $handler->display->display_options['footer']['area']['tokenize'] = TRUE;
   $handler->display->display_options['defaults']['fields'] = FALSE;
   /* Field: Content: Nid */
   $handler->display->display_options['fields']['nid_1']['id'] = 'nid_1';
@@ -983,18 +833,26 @@ function drupalorg_user_views_default_views() {
   $handler->display->display_options['fields']['nid']['group_type'] = 'count_distinct';
   $handler->display->display_options['fields']['nid']['label'] = '';
   $handler->display->display_options['fields']['nid']['alter']['make_link'] = TRUE;
-  $handler->display->display_options['fields']['nid']['alter']['path'] = 'node/%organization-nid/issue-credits/[nid_1]';
+  $handler->display->display_options['fields']['nid']['alter']['path'] = 'u/%1/sa-credits';
   $handler->display->display_options['fields']['nid']['element_label_colon'] = FALSE;
   $handler->display->display_options['fields']['nid']['separator'] = '';
   $handler->display->display_options['fields']['nid']['format_plural'] = TRUE;
   $handler->display->display_options['fields']['nid']['format_plural_singular'] = '1 issue';
   $handler->display->display_options['fields']['nid']['format_plural_plural'] = '@count issues';
   $handler->display->display_options['defaults']['arguments'] = FALSE;
+  /* Contextual filter: Comment: Author uid */
+  $handler->display->display_options['arguments']['uid']['id'] = 'uid';
+  $handler->display->display_options['arguments']['uid']['table'] = 'comment';
+  $handler->display->display_options['arguments']['uid']['field'] = 'uid';
+  $handler->display->display_options['arguments']['uid']['relationship'] = 'field_issue_credit_target_id';
+  $handler->display->display_options['arguments']['uid']['default_action'] = 'not found';
+  $handler->display->display_options['arguments']['uid']['default_argument_type'] = 'fixed';
+  $handler->display->display_options['arguments']['uid']['summary']['number_of_records'] = '0';
+  $handler->display->display_options['arguments']['uid']['summary']['format'] = 'default_summary';
+  $handler->display->display_options['arguments']['uid']['summary_options']['items_per_page'] = '25';
+  $handler->display->display_options['arguments']['uid']['specify_validation'] = TRUE;
+  $handler->display->display_options['arguments']['uid']['validate']['type'] = 'user';
   $handler->display->display_options['defaults']['filter_groups'] = FALSE;
-  $handler->display->display_options['filter_groups']['groups'] = array(
-    1 => 'AND',
-    2 => 'OR',
-  );
   $handler->display->display_options['defaults']['filters'] = FALSE;
   /* Filter criterion: Content: Published */
   $handler->display->display_options['filters']['status']['id'] = 'status';
@@ -1008,7 +866,7 @@ function drupalorg_user_views_default_views() {
   $handler->display->display_options['filters']['type']['table'] = 'node';
   $handler->display->display_options['filters']['type']['field'] = 'type';
   $handler->display->display_options['filters']['type']['value'] = array(
-    'project_issue' => 'project_issue',
+    'sa' => 'sa',
   );
   $handler->display->display_options['filters']['type']['group'] = 1;
   /* Filter criterion: Comment: Approved */
@@ -1018,78 +876,15 @@ function drupalorg_user_views_default_views() {
   $handler->display->display_options['filters']['status_1']['relationship'] = 'field_issue_credit_target_id';
   $handler->display->display_options['filters']['status_1']['value'] = '1';
   $handler->display->display_options['filters']['status_1']['group'] = 1;
-  /* Filter criterion: Comment: Attribute this contribution (field_attribute_as_volunteer) */
-  $handler->display->display_options['filters']['field_attribute_as_volunteer_value']['id'] = 'field_attribute_as_volunteer_value';
-  $handler->display->display_options['filters']['field_attribute_as_volunteer_value']['table'] = 'field_data_field_attribute_as_volunteer';
-  $handler->display->display_options['filters']['field_attribute_as_volunteer_value']['field'] = 'field_attribute_as_volunteer_value';
-  $handler->display->display_options['filters']['field_attribute_as_volunteer_value']['relationship'] = 'field_issue_credit_target_id';
-  $handler->display->display_options['filters']['field_attribute_as_volunteer_value']['value'] = array(
-    0 => '0',
-  );
-  $handler->display->display_options['filters']['field_attribute_as_volunteer_value']['group'] = 1;
-  /* Filter criterion: Content: Project type (field_project_type) */
-  $handler->display->display_options['filters']['field_project_type_value']['id'] = 'field_project_type_value';
-  $handler->display->display_options['filters']['field_project_type_value']['table'] = 'field_data_field_project_type';
-  $handler->display->display_options['filters']['field_project_type_value']['field'] = 'field_project_type_value';
-  $handler->display->display_options['filters']['field_project_type_value']['relationship'] = 'field_project_target_id';
-  $handler->display->display_options['filters']['field_project_type_value']['value'] = array(
-    'full' => 'full',
-  );
-  $handler->display->display_options['filters']['field_project_type_value']['group'] = 1;
-  /* Filter criterion: Content: Last status change (field_issue_last_status_change) */
-  $handler->display->display_options['filters']['field_issue_last_status_change_value']['id'] = 'field_issue_last_status_change_value';
-  $handler->display->display_options['filters']['field_issue_last_status_change_value']['table'] = 'field_data_field_issue_last_status_change';
-  $handler->display->display_options['filters']['field_issue_last_status_change_value']['field'] = 'field_issue_last_status_change_value';
-  $handler->display->display_options['filters']['field_issue_last_status_change_value']['operator'] = '>=';
-  $handler->display->display_options['filters']['field_issue_last_status_change_value']['value']['value'] = '-3 months';
-  $handler->display->display_options['filters']['field_issue_last_status_change_value']['value']['type'] = 'offset';
-  $handler->display->display_options['filters']['field_issue_last_status_change_value']['group'] = 1;
-  $handler->display->display_options['filters']['field_issue_last_status_change_value']['expose']['operator_id'] = 'field_issue_last_status_change_value_op';
-  $handler->display->display_options['filters']['field_issue_last_status_change_value']['expose']['label'] = 'Last status change (field_issue_last_status_change)';
-  $handler->display->display_options['filters']['field_issue_last_status_change_value']['expose']['operator'] = 'field_issue_last_status_change_value_op';
-  $handler->display->display_options['filters']['field_issue_last_status_change_value']['expose']['identifier'] = 'field_issue_last_status_change_value';
-  /* Filter criterion: Content: Status (field_issue_status) */
-  $handler->display->display_options['filters']['field_issue_status_value']['id'] = 'field_issue_status_value';
-  $handler->display->display_options['filters']['field_issue_status_value']['table'] = 'field_data_field_issue_status';
-  $handler->display->display_options['filters']['field_issue_status_value']['field'] = 'field_issue_status_value';
-  $handler->display->display_options['filters']['field_issue_status_value']['value'] = array(
-    'Closed' => 'Closed',
-    2 => '2',
-  );
-  $handler->display->display_options['filters']['field_issue_status_value']['group'] = 1;
-  /* Filter criterion: Comment: Attribute comment at organization (field_attribute_contribution_to) */
-  $handler->display->display_options['filters']['field_attribute_contribution_to_target_id']['id'] = 'field_attribute_contribution_to_target_id';
-  $handler->display->display_options['filters']['field_attribute_contribution_to_target_id']['table'] = 'field_data_field_attribute_contribution_to';
-  $handler->display->display_options['filters']['field_attribute_contribution_to_target_id']['field'] = 'field_attribute_contribution_to_target_id';
-  $handler->display->display_options['filters']['field_attribute_contribution_to_target_id']['relationship'] = 'field_issue_credit_target_id';
-  $handler->display->display_options['filters']['field_attribute_contribution_to_target_id']['group'] = 2;
-  /* Filter criterion: Comment: Attribute comment for customer (field_for_customer) */
-  $handler->display->display_options['filters']['field_for_customer_target_id']['id'] = 'field_for_customer_target_id';
-  $handler->display->display_options['filters']['field_for_customer_target_id']['table'] = 'field_data_field_for_customer';
-  $handler->display->display_options['filters']['field_for_customer_target_id']['field'] = 'field_for_customer_target_id';
-  $handler->display->display_options['filters']['field_for_customer_target_id']['relationship'] = 'field_issue_credit_target_id';
-  $handler->display->display_options['filters']['field_for_customer_target_id']['group'] = 2;
-  $handler->display->display_options['filters']['field_for_customer_target_id']['expose']['operator_id'] = 'field_for_customer_target_id_op';
-  $handler->display->display_options['filters']['field_for_customer_target_id']['expose']['label'] = 'Attribute comment for customer (field_for_customer)';
-  $handler->display->display_options['filters']['field_for_customer_target_id']['expose']['operator'] = 'field_for_customer_target_id_op';
-  $handler->display->display_options['filters']['field_for_customer_target_id']['expose']['identifier'] = 'field_for_customer_target_id';
 
-  /* Display: Organization recent page */
-  $handler = $view->new_display('page', 'Organization recent page', 'organization_recent_page');
-  $handler->display->display_options['defaults']['cache'] = FALSE;
-  $handler->display->display_options['cache']['type'] = 'time';
-  $handler->display->display_options['cache']['results_lifespan'] = '21600';
-  $handler->display->display_options['cache']['results_lifespan_custom'] = '0';
-  $handler->display->display_options['cache']['output_lifespan'] = '21600';
-  $handler->display->display_options['cache']['output_lifespan_custom'] = '0';
-  $handler->display->display_options['defaults']['exposed_form'] = FALSE;
-  $handler->display->display_options['exposed_form']['type'] = 'basic';
+  /* Display: User SA credit page */
+  $handler = $view->new_display('page', 'User SA credit page', 'page_2');
   $handler->display->display_options['defaults']['style_plugin'] = FALSE;
   $handler->display->display_options['style_plugin'] = 'list';
   $handler->display->display_options['style_options']['grouping'] = array(
     0 => array(
-      'field' => 'type',
-      'rendered' => 1,
+      'field' => 'field_project_machine_name',
+      'rendered' => 0,
       'rendered_strip' => 0,
     ),
   );
@@ -1110,9 +905,23 @@ function drupalorg_user_views_default_views() {
   $handler->display->display_options['header']['area']['id'] = 'area';
   $handler->display->display_options['header']['area']['table'] = 'views';
   $handler->display->display_options['header']['area']['field'] = 'area';
-  $handler->display->display_options['header']['area']['content'] = '◀︎ <a href="!url-1">Back to %1</a>';
+  $handler->display->display_options['header']['area']['content'] = '◀︎ [uid]';
   $handler->display->display_options['header']['area']['format'] = '1';
   $handler->display->display_options['header']['area']['tokenize'] = TRUE;
+  /* Header: Global: Result summary */
+  $handler->display->display_options['header']['result']['id'] = 'result';
+  $handler->display->display_options['header']['result']['table'] = 'views';
+  $handler->display->display_options['header']['result']['field'] = 'result';
+  $handler->display->display_options['defaults']['relationships'] = FALSE;
+  /* Relationship: Entity Reference: Referenced Entity */
+  $handler->display->display_options['relationships']['field_issue_credit_target_id']['id'] = 'field_issue_credit_target_id';
+  $handler->display->display_options['relationships']['field_issue_credit_target_id']['table'] = 'field_data_field_issue_credit';
+  $handler->display->display_options['relationships']['field_issue_credit_target_id']['field'] = 'field_issue_credit_target_id';
+  $handler->display->display_options['relationships']['field_issue_credit_target_id']['required'] = TRUE;
+  /* Relationship: Entity Reference: Referenced Entity */
+  $handler->display->display_options['relationships']['field_project_target_id']['id'] = 'field_project_target_id';
+  $handler->display->display_options['relationships']['field_project_target_id']['table'] = 'field_data_field_project';
+  $handler->display->display_options['relationships']['field_project_target_id']['field'] = 'field_project_target_id';
   $handler->display->display_options['defaults']['fields'] = FALSE;
   /* Field: Content: Title */
   $handler->display->display_options['fields']['title']['id'] = 'title';
@@ -1128,1409 +937,80 @@ function drupalorg_user_views_default_views() {
   $handler->display->display_options['fields']['changed']['element_label_colon'] = FALSE;
   $handler->display->display_options['fields']['changed']['date_format'] = 'today time ago';
   $handler->display->display_options['fields']['changed']['second_date_format'] = 'medium';
+  /* Field: Comment: Author uid */
+  $handler->display->display_options['fields']['uid']['id'] = 'uid';
+  $handler->display->display_options['fields']['uid']['table'] = 'comment';
+  $handler->display->display_options['fields']['uid']['field'] = 'uid';
+  $handler->display->display_options['fields']['uid']['relationship'] = 'field_issue_credit_target_id';
+  $handler->display->display_options['fields']['uid']['label'] = '';
+  $handler->display->display_options['fields']['uid']['exclude'] = TRUE;
+  $handler->display->display_options['fields']['uid']['alter']['alter_text'] = TRUE;
+  $handler->display->display_options['fields']['uid']['alter']['text'] = 'Back to %1’s profile';
+  $handler->display->display_options['fields']['uid']['alter']['make_link'] = TRUE;
+  $handler->display->display_options['fields']['uid']['alter']['path'] = 'user/[uid]';
+  $handler->display->display_options['fields']['uid']['element_label_colon'] = FALSE;
+  $handler->display->display_options['fields']['uid']['link_to_user'] = FALSE;
+  /* Field: Content: Nid */
+  $handler->display->display_options['fields']['nid']['id'] = 'nid';
+  $handler->display->display_options['fields']['nid']['table'] = 'node';
+  $handler->display->display_options['fields']['nid']['field'] = 'nid';
+  $handler->display->display_options['fields']['nid']['relationship'] = 'field_project_target_id';
+  $handler->display->display_options['fields']['nid']['label'] = '';
+  $handler->display->display_options['fields']['nid']['exclude'] = TRUE;
+  $handler->display->display_options['fields']['nid']['element_label_colon'] = FALSE;
+  /* Field: Content: Project subtitle */
+  $handler->display->display_options['fields']['drupalorg_project_subtitle']['id'] = 'drupalorg_project_subtitle';
+  $handler->display->display_options['fields']['drupalorg_project_subtitle']['table'] = 'views_entity_node';
+  $handler->display->display_options['fields']['drupalorg_project_subtitle']['field'] = 'drupalorg_project_subtitle';
+  $handler->display->display_options['fields']['drupalorg_project_subtitle']['relationship'] = 'field_project_target_id';
+  $handler->display->display_options['fields']['drupalorg_project_subtitle']['label'] = '';
+  $handler->display->display_options['fields']['drupalorg_project_subtitle']['exclude'] = TRUE;
+  $handler->display->display_options['fields']['drupalorg_project_subtitle']['alter']['alter_text'] = TRUE;
+  $handler->display->display_options['fields']['drupalorg_project_subtitle']['alter']['text'] = '<small>[drupalorg_project_subtitle]</small>';
+  $handler->display->display_options['fields']['drupalorg_project_subtitle']['element_label_colon'] = FALSE;
+  /* Field: Content: Short name */
+  $handler->display->display_options['fields']['field_project_machine_name']['id'] = 'field_project_machine_name';
+  $handler->display->display_options['fields']['field_project_machine_name']['table'] = 'field_data_field_project_machine_name';
+  $handler->display->display_options['fields']['field_project_machine_name']['field'] = 'field_project_machine_name';
+  $handler->display->display_options['fields']['field_project_machine_name']['relationship'] = 'field_project_target_id';
+  $handler->display->display_options['fields']['field_project_machine_name']['label'] = '';
+  $handler->display->display_options['fields']['field_project_machine_name']['exclude'] = TRUE;
+  $handler->display->display_options['fields']['field_project_machine_name']['alter']['alter_text'] = TRUE;
+  $handler->display->display_options['fields']['field_project_machine_name']['alter']['make_link'] = TRUE;
+  $handler->display->display_options['fields']['field_project_machine_name']['alter']['path'] = 'node/[nid]';
+  $handler->display->display_options['fields']['field_project_machine_name']['alter']['suffix'] = ' [drupalorg_project_subtitle]';
+  $handler->display->display_options['fields']['field_project_machine_name']['element_label_colon'] = FALSE;
+  $handler->display->display_options['fields']['field_project_machine_name']['group_columns'] = array(
+    'value' => 'value',
+  );
+  $handler->display->display_options['defaults']['sorts'] = FALSE;
+  /* Sort criterion: Content: Short name (field_project_machine_name) */
+  $handler->display->display_options['sorts']['field_project_machine_name_value']['id'] = 'field_project_machine_name_value';
+  $handler->display->display_options['sorts']['field_project_machine_name_value']['table'] = 'field_data_field_project_machine_name';
+  $handler->display->display_options['sorts']['field_project_machine_name_value']['field'] = 'field_project_machine_name_value';
+  $handler->display->display_options['sorts']['field_project_machine_name_value']['relationship'] = 'field_project_target_id';
+  /* Sort criterion: MAX(Content: Last status change (field_issue_last_status_change)) */
+  $handler->display->display_options['sorts']['field_issue_last_status_change_value']['id'] = 'field_issue_last_status_change_value';
+  $handler->display->display_options['sorts']['field_issue_last_status_change_value']['table'] = 'field_data_field_issue_last_status_change';
+  $handler->display->display_options['sorts']['field_issue_last_status_change_value']['field'] = 'field_issue_last_status_change_value';
+  $handler->display->display_options['sorts']['field_issue_last_status_change_value']['group_type'] = 'max';
+  $handler->display->display_options['sorts']['field_issue_last_status_change_value']['order'] = 'DESC';
   $handler->display->display_options['defaults']['arguments'] = FALSE;
-  /* Contextual filter: Global: Null */
-  $handler->display->display_options['arguments']['null']['id'] = 'null';
-  $handler->display->display_options['arguments']['null']['table'] = 'views';
-  $handler->display->display_options['arguments']['null']['field'] = 'null';
-  $handler->display->display_options['arguments']['null']['default_action'] = 'not found';
-  $handler->display->display_options['arguments']['null']['default_argument_type'] = 'fixed';
-  $handler->display->display_options['arguments']['null']['summary']['number_of_records'] = '0';
-  $handler->display->display_options['arguments']['null']['summary']['format'] = 'default_summary';
-  $handler->display->display_options['arguments']['null']['summary_options']['items_per_page'] = '25';
-  /* Contextual filter: Field: Project (field_project) */
-  $handler->display->display_options['arguments']['field_project_target_id']['id'] = 'field_project_target_id';
-  $handler->display->display_options['arguments']['field_project_target_id']['table'] = 'field_data_field_project';
-  $handler->display->display_options['arguments']['field_project_target_id']['field'] = 'field_project_target_id';
-  $handler->display->display_options['arguments']['field_project_target_id']['default_action'] = 'not found';
-  $handler->display->display_options['arguments']['field_project_target_id']['exception']['value'] = '';
-  $handler->display->display_options['arguments']['field_project_target_id']['title_enable'] = TRUE;
-  $handler->display->display_options['arguments']['field_project_target_id']['title'] = '%2 issues credited to %1';
-  $handler->display->display_options['arguments']['field_project_target_id']['default_argument_type'] = 'fixed';
-  $handler->display->display_options['arguments']['field_project_target_id']['summary']['number_of_records'] = '0';
-  $handler->display->display_options['arguments']['field_project_target_id']['summary']['format'] = 'default_summary';
-  $handler->display->display_options['arguments']['field_project_target_id']['summary_options']['items_per_page'] = '25';
-  $handler->display->display_options['arguments']['field_project_target_id']['specify_validation'] = TRUE;
-  $handler->display->display_options['arguments']['field_project_target_id']['validate']['type'] = 'project_nid';
+  /* Contextual filter: Comment: Author uid */
+  $handler->display->display_options['arguments']['uid']['id'] = 'uid';
+  $handler->display->display_options['arguments']['uid']['table'] = 'comment';
+  $handler->display->display_options['arguments']['uid']['field'] = 'uid';
+  $handler->display->display_options['arguments']['uid']['relationship'] = 'field_issue_credit_target_id';
+  $handler->display->display_options['arguments']['uid']['default_action'] = 'not found';
+  $handler->display->display_options['arguments']['uid']['exception']['value'] = '';
+  $handler->display->display_options['arguments']['uid']['default_argument_type'] = 'fixed';
+  $handler->display->display_options['arguments']['uid']['summary']['number_of_records'] = '0';
+  $handler->display->display_options['arguments']['uid']['summary']['format'] = 'default_summary';
+  $handler->display->display_options['arguments']['uid']['summary_options']['items_per_page'] = '25';
+  $handler->display->display_options['arguments']['uid']['specify_validation'] = TRUE;
+  $handler->display->display_options['arguments']['uid']['validate']['type'] = 'user';
+  $handler->display->display_options['arguments']['uid']['validate_options']['type'] = 'name';
   $handler->display->display_options['defaults']['filter_groups'] = FALSE;
-  $handler->display->display_options['filter_groups']['groups'] = array(
-    1 => 'AND',
-    2 => 'OR',
-  );
-  $handler->display->display_options['defaults']['filters'] = FALSE;
-  /* Filter criterion: Content: Published */
-  $handler->display->display_options['filters']['status']['id'] = 'status';
-  $handler->display->display_options['filters']['status']['table'] = 'node';
-  $handler->display->display_options['filters']['status']['field'] = 'status';
-  $handler->display->display_options['filters']['status']['value'] = 1;
-  $handler->display->display_options['filters']['status']['group'] = 1;
-  $handler->display->display_options['filters']['status']['expose']['operator'] = FALSE;
-  /* Filter criterion: Content: Type */
-  $handler->display->display_options['filters']['type']['id'] = 'type';
-  $handler->display->display_options['filters']['type']['table'] = 'node';
-  $handler->display->display_options['filters']['type']['field'] = 'type';
-  $handler->display->display_options['filters']['type']['value'] = array(
-    'project_issue' => 'project_issue',
-  );
-  $handler->display->display_options['filters']['type']['group'] = 1;
-  /* Filter criterion: Comment: Approved */
-  $handler->display->display_options['filters']['status_1']['id'] = 'status_1';
-  $handler->display->display_options['filters']['status_1']['table'] = 'comment';
-  $handler->display->display_options['filters']['status_1']['field'] = 'status';
-  $handler->display->display_options['filters']['status_1']['relationship'] = 'field_issue_credit_target_id';
-  $handler->display->display_options['filters']['status_1']['value'] = '1';
-  $handler->display->display_options['filters']['status_1']['group'] = 1;
-  /* Filter criterion: Comment: Attribute this contribution (field_attribute_as_volunteer) */
-  $handler->display->display_options['filters']['field_attribute_as_volunteer_value']['id'] = 'field_attribute_as_volunteer_value';
-  $handler->display->display_options['filters']['field_attribute_as_volunteer_value']['table'] = 'field_data_field_attribute_as_volunteer';
-  $handler->display->display_options['filters']['field_attribute_as_volunteer_value']['field'] = 'field_attribute_as_volunteer_value';
-  $handler->display->display_options['filters']['field_attribute_as_volunteer_value']['relationship'] = 'field_issue_credit_target_id';
-  $handler->display->display_options['filters']['field_attribute_as_volunteer_value']['value'] = array(
-    0 => '0',
-  );
-  $handler->display->display_options['filters']['field_attribute_as_volunteer_value']['group'] = 1;
-  /* Filter criterion: Content: Status (field_issue_status) */
-  $handler->display->display_options['filters']['field_issue_status_value']['id'] = 'field_issue_status_value';
-  $handler->display->display_options['filters']['field_issue_status_value']['table'] = 'field_data_field_issue_status';
-  $handler->display->display_options['filters']['field_issue_status_value']['field'] = 'field_issue_status_value';
-  $handler->display->display_options['filters']['field_issue_status_value']['value'] = array(
-    'Closed' => 'Closed',
-    2 => '2',
-  );
-  $handler->display->display_options['filters']['field_issue_status_value']['group'] = 1;
-  /* Filter criterion: Comment: Attribute comment at organization (field_attribute_contribution_to) */
-  $handler->display->display_options['filters']['field_attribute_contribution_to_target_id']['id'] = 'field_attribute_contribution_to_target_id';
-  $handler->display->display_options['filters']['field_attribute_contribution_to_target_id']['table'] = 'field_data_field_attribute_contribution_to';
-  $handler->display->display_options['filters']['field_attribute_contribution_to_target_id']['field'] = 'field_attribute_contribution_to_target_id';
-  $handler->display->display_options['filters']['field_attribute_contribution_to_target_id']['relationship'] = 'field_issue_credit_target_id';
-  $handler->display->display_options['filters']['field_attribute_contribution_to_target_id']['value']['value'] = '***CURRENT_ORGANIZATION***';
-  $handler->display->display_options['filters']['field_attribute_contribution_to_target_id']['group'] = 2;
-  /* Filter criterion: Comment: Attribute comment for customer (field_for_customer) */
-  $handler->display->display_options['filters']['field_for_customer_target_id']['id'] = 'field_for_customer_target_id';
-  $handler->display->display_options['filters']['field_for_customer_target_id']['table'] = 'field_data_field_for_customer';
-  $handler->display->display_options['filters']['field_for_customer_target_id']['field'] = 'field_for_customer_target_id';
-  $handler->display->display_options['filters']['field_for_customer_target_id']['relationship'] = 'field_issue_credit_target_id';
-  $handler->display->display_options['filters']['field_for_customer_target_id']['value']['value'] = '***CURRENT_ORGANIZATION***';
-  $handler->display->display_options['filters']['field_for_customer_target_id']['group'] = 2;
-  $handler->display->display_options['path'] = 'node/%/issue-credits/%';
-
-  /* Display: Organization issue credit page */
-  $handler = $view->new_display('page', 'Organization issue credit page', 'organization_issue_credit_page');
-  $handler->display->display_options['defaults']['title'] = FALSE;
-  $handler->display->display_options['title'] = 'Issues credited to %1';
-  $handler->display->display_options['defaults']['cache'] = FALSE;
-  $handler->display->display_options['cache']['type'] = 'time';
-  $handler->display->display_options['cache']['results_lifespan'] = '21600';
-  $handler->display->display_options['cache']['results_lifespan_custom'] = '0';
-  $handler->display->display_options['cache']['output_lifespan'] = '21600';
-  $handler->display->display_options['cache']['output_lifespan_custom'] = '0';
-  $handler->display->display_options['defaults']['exposed_form'] = FALSE;
-  $handler->display->display_options['exposed_form']['type'] = 'basic';
-  $handler->display->display_options['defaults']['pager'] = FALSE;
-  $handler->display->display_options['pager']['type'] = 'full';
-  $handler->display->display_options['pager']['options']['items_per_page'] = '100';
-  $handler->display->display_options['pager']['options']['offset'] = '0';
-  $handler->display->display_options['pager']['options']['id'] = '0';
-  $handler->display->display_options['pager']['options']['quantity'] = '9';
-  $handler->display->display_options['defaults']['style_plugin'] = FALSE;
-  $handler->display->display_options['style_plugin'] = 'list';
-  $handler->display->display_options['style_options']['grouping'] = array(
-    0 => array(
-      'field' => 'field_project_machine_name',
-      'rendered' => 1,
-      'rendered_strip' => 0,
-    ),
-  );
-  $handler->display->display_options['style_options']['default_row_class'] = FALSE;
-  $handler->display->display_options['style_options']['row_class_special'] = FALSE;
-  $handler->display->display_options['style_options']['wrapper_class'] = '';
-  $handler->display->display_options['defaults']['style_options'] = FALSE;
-  $handler->display->display_options['defaults']['row_plugin'] = FALSE;
-  $handler->display->display_options['row_plugin'] = 'fields';
-  $handler->display->display_options['row_options']['inline'] = array(
-    'title' => 'title',
-    'changed' => 'changed',
-  );
-  $handler->display->display_options['row_options']['separator'] = 'updated';
-  $handler->display->display_options['defaults']['row_options'] = FALSE;
-  $handler->display->display_options['defaults']['header'] = FALSE;
-  /* Header: Global: Text area */
-  $handler->display->display_options['header']['area']['id'] = 'area';
-  $handler->display->display_options['header']['area']['table'] = 'views';
-  $handler->display->display_options['header']['area']['field'] = 'area';
-  $handler->display->display_options['header']['area']['empty'] = TRUE;
-  $handler->display->display_options['header']['area']['content'] = '◀︎ <a href="!url-1">Back to %1</a>';
-  $handler->display->display_options['header']['area']['format'] = '1';
-  $handler->display->display_options['header']['area']['tokenize'] = TRUE;
-  /* Header: Global: Result summary */
-  $handler->display->display_options['header']['result']['id'] = 'result';
-  $handler->display->display_options['header']['result']['table'] = 'views';
-  $handler->display->display_options['header']['result']['field'] = 'result';
-  $handler->display->display_options['defaults']['fields'] = FALSE;
-  /* Field: Content: Title */
-  $handler->display->display_options['fields']['title']['id'] = 'title';
-  $handler->display->display_options['fields']['title']['table'] = 'node';
-  $handler->display->display_options['fields']['title']['field'] = 'title';
-  $handler->display->display_options['fields']['title']['label'] = '';
-  $handler->display->display_options['fields']['title']['element_label_colon'] = FALSE;
-  /* Field: Content: Updated date */
-  $handler->display->display_options['fields']['changed']['id'] = 'changed';
-  $handler->display->display_options['fields']['changed']['table'] = 'node';
-  $handler->display->display_options['fields']['changed']['field'] = 'changed';
-  $handler->display->display_options['fields']['changed']['label'] = '';
-  $handler->display->display_options['fields']['changed']['element_label_colon'] = FALSE;
-  $handler->display->display_options['fields']['changed']['date_format'] = 'today time ago';
-  $handler->display->display_options['fields']['changed']['second_date_format'] = 'medium';
-  /* Field: Content: Nid */
-  $handler->display->display_options['fields']['nid']['id'] = 'nid';
-  $handler->display->display_options['fields']['nid']['table'] = 'node';
-  $handler->display->display_options['fields']['nid']['field'] = 'nid';
-  $handler->display->display_options['fields']['nid']['relationship'] = 'field_project_target_id';
-  $handler->display->display_options['fields']['nid']['label'] = '';
-  $handler->display->display_options['fields']['nid']['exclude'] = TRUE;
-  $handler->display->display_options['fields']['nid']['element_label_colon'] = FALSE;
-  /* Field: Content: Project subtitle */
-  $handler->display->display_options['fields']['drupalorg_project_subtitle']['id'] = 'drupalorg_project_subtitle';
-  $handler->display->display_options['fields']['drupalorg_project_subtitle']['table'] = 'views_entity_node';
-  $handler->display->display_options['fields']['drupalorg_project_subtitle']['field'] = 'drupalorg_project_subtitle';
-  $handler->display->display_options['fields']['drupalorg_project_subtitle']['relationship'] = 'field_project_target_id';
-  $handler->display->display_options['fields']['drupalorg_project_subtitle']['label'] = '';
-  $handler->display->display_options['fields']['drupalorg_project_subtitle']['exclude'] = TRUE;
-  $handler->display->display_options['fields']['drupalorg_project_subtitle']['alter']['alter_text'] = TRUE;
-  $handler->display->display_options['fields']['drupalorg_project_subtitle']['alter']['text'] = '<small>[drupalorg_project_subtitle]</small>';
-  $handler->display->display_options['fields']['drupalorg_project_subtitle']['element_label_colon'] = FALSE;
-  /* Field: Content: Short name */
-  $handler->display->display_options['fields']['field_project_machine_name']['id'] = 'field_project_machine_name';
-  $handler->display->display_options['fields']['field_project_machine_name']['table'] = 'field_data_field_project_machine_name';
-  $handler->display->display_options['fields']['field_project_machine_name']['field'] = 'field_project_machine_name';
-  $handler->display->display_options['fields']['field_project_machine_name']['relationship'] = 'field_project_target_id';
-  $handler->display->display_options['fields']['field_project_machine_name']['label'] = '';
-  $handler->display->display_options['fields']['field_project_machine_name']['exclude'] = TRUE;
-  $handler->display->display_options['fields']['field_project_machine_name']['alter']['alter_text'] = TRUE;
-  $handler->display->display_options['fields']['field_project_machine_name']['alter']['make_link'] = TRUE;
-  $handler->display->display_options['fields']['field_project_machine_name']['alter']['path'] = 'node/[nid]';
-  $handler->display->display_options['fields']['field_project_machine_name']['alter']['suffix'] = ' [drupalorg_project_subtitle]';
-  $handler->display->display_options['fields']['field_project_machine_name']['element_label_colon'] = FALSE;
-  $handler->display->display_options['fields']['field_project_machine_name']['group_column'] = 'entity_id';
-  $handler->display->display_options['fields']['field_project_machine_name']['group_columns'] = array(
-    'value' => 'value',
-  );
-  $handler->display->display_options['defaults']['sorts'] = FALSE;
-  /* Sort criterion: Content: Short name (field_project_machine_name) */
-  $handler->display->display_options['sorts']['field_project_machine_name_value']['id'] = 'field_project_machine_name_value';
-  $handler->display->display_options['sorts']['field_project_machine_name_value']['table'] = 'field_data_field_project_machine_name';
-  $handler->display->display_options['sorts']['field_project_machine_name_value']['field'] = 'field_project_machine_name_value';
-  $handler->display->display_options['sorts']['field_project_machine_name_value']['relationship'] = 'field_project_target_id';
-  /* Sort criterion: MAX(Content: Last status change (field_issue_last_status_change)) */
-  $handler->display->display_options['sorts']['field_issue_last_status_change_value']['id'] = 'field_issue_last_status_change_value';
-  $handler->display->display_options['sorts']['field_issue_last_status_change_value']['table'] = 'field_data_field_issue_last_status_change';
-  $handler->display->display_options['sorts']['field_issue_last_status_change_value']['field'] = 'field_issue_last_status_change_value';
-  $handler->display->display_options['sorts']['field_issue_last_status_change_value']['group_type'] = 'max';
-  $handler->display->display_options['sorts']['field_issue_last_status_change_value']['order'] = 'DESC';
-  $handler->display->display_options['defaults']['arguments'] = FALSE;
-  /* Contextual filter: Global: Null */
-  $handler->display->display_options['arguments']['null']['id'] = 'null';
-  $handler->display->display_options['arguments']['null']['table'] = 'views';
-  $handler->display->display_options['arguments']['null']['field'] = 'null';
-  $handler->display->display_options['arguments']['null']['default_action'] = 'not found';
-  $handler->display->display_options['arguments']['null']['default_argument_type'] = 'fixed';
-  $handler->display->display_options['arguments']['null']['summary']['number_of_records'] = '0';
-  $handler->display->display_options['arguments']['null']['summary']['format'] = 'default_summary';
-  $handler->display->display_options['arguments']['null']['summary_options']['items_per_page'] = '25';
-  $handler->display->display_options['defaults']['filter_groups'] = FALSE;
-  $handler->display->display_options['filter_groups']['groups'] = array(
-    1 => 'AND',
-    2 => 'OR',
-  );
-  $handler->display->display_options['defaults']['filters'] = FALSE;
-  /* Filter criterion: Content: Published */
-  $handler->display->display_options['filters']['status']['id'] = 'status';
-  $handler->display->display_options['filters']['status']['table'] = 'node';
-  $handler->display->display_options['filters']['status']['field'] = 'status';
-  $handler->display->display_options['filters']['status']['value'] = 1;
-  $handler->display->display_options['filters']['status']['group'] = 1;
-  $handler->display->display_options['filters']['status']['expose']['operator'] = FALSE;
-  /* Filter criterion: Content: Type */
-  $handler->display->display_options['filters']['type']['id'] = 'type';
-  $handler->display->display_options['filters']['type']['table'] = 'node';
-  $handler->display->display_options['filters']['type']['field'] = 'type';
-  $handler->display->display_options['filters']['type']['value'] = array(
-    'project_issue' => 'project_issue',
-  );
-  $handler->display->display_options['filters']['type']['group'] = 1;
-  /* Filter criterion: Comment: Approved */
-  $handler->display->display_options['filters']['status_1']['id'] = 'status_1';
-  $handler->display->display_options['filters']['status_1']['table'] = 'comment';
-  $handler->display->display_options['filters']['status_1']['field'] = 'status';
-  $handler->display->display_options['filters']['status_1']['relationship'] = 'field_issue_credit_target_id';
-  $handler->display->display_options['filters']['status_1']['value'] = '1';
-  $handler->display->display_options['filters']['status_1']['group'] = 1;
-  /* Filter criterion: Comment: Attribute this contribution (field_attribute_as_volunteer) */
-  $handler->display->display_options['filters']['field_attribute_as_volunteer_value']['id'] = 'field_attribute_as_volunteer_value';
-  $handler->display->display_options['filters']['field_attribute_as_volunteer_value']['table'] = 'field_data_field_attribute_as_volunteer';
-  $handler->display->display_options['filters']['field_attribute_as_volunteer_value']['field'] = 'field_attribute_as_volunteer_value';
-  $handler->display->display_options['filters']['field_attribute_as_volunteer_value']['relationship'] = 'field_issue_credit_target_id';
-  $handler->display->display_options['filters']['field_attribute_as_volunteer_value']['value'] = array(
-    0 => '0',
-  );
-  $handler->display->display_options['filters']['field_attribute_as_volunteer_value']['group'] = 1;
-  /* Filter criterion: Content: Status (field_issue_status) */
-  $handler->display->display_options['filters']['field_issue_status_value']['id'] = 'field_issue_status_value';
-  $handler->display->display_options['filters']['field_issue_status_value']['table'] = 'field_data_field_issue_status';
-  $handler->display->display_options['filters']['field_issue_status_value']['field'] = 'field_issue_status_value';
-  $handler->display->display_options['filters']['field_issue_status_value']['value'] = array(
-    'Closed' => 'Closed',
-    2 => '2',
-  );
-  $handler->display->display_options['filters']['field_issue_status_value']['group'] = 1;
-  /* Filter criterion: Comment: Attribute comment at organization (field_attribute_contribution_to) */
-  $handler->display->display_options['filters']['field_attribute_contribution_to_target_id']['id'] = 'field_attribute_contribution_to_target_id';
-  $handler->display->display_options['filters']['field_attribute_contribution_to_target_id']['table'] = 'field_data_field_attribute_contribution_to';
-  $handler->display->display_options['filters']['field_attribute_contribution_to_target_id']['field'] = 'field_attribute_contribution_to_target_id';
-  $handler->display->display_options['filters']['field_attribute_contribution_to_target_id']['relationship'] = 'field_issue_credit_target_id';
-  $handler->display->display_options['filters']['field_attribute_contribution_to_target_id']['value']['value'] = '***CURRENT_ORGANIZATION***';
-  $handler->display->display_options['filters']['field_attribute_contribution_to_target_id']['group'] = 2;
-  /* Filter criterion: Comment: Attribute comment for customer (field_for_customer) */
-  $handler->display->display_options['filters']['field_for_customer_target_id']['id'] = 'field_for_customer_target_id';
-  $handler->display->display_options['filters']['field_for_customer_target_id']['table'] = 'field_data_field_for_customer';
-  $handler->display->display_options['filters']['field_for_customer_target_id']['field'] = 'field_for_customer_target_id';
-  $handler->display->display_options['filters']['field_for_customer_target_id']['relationship'] = 'field_issue_credit_target_id';
-  $handler->display->display_options['filters']['field_for_customer_target_id']['value']['value'] = '***CURRENT_ORGANIZATION***';
-  $handler->display->display_options['filters']['field_for_customer_target_id']['group'] = 2;
-  /* Filter criterion: Content: Last status change (field_issue_last_status_change) */
-  $handler->display->display_options['filters']['field_issue_last_status_change_value']['id'] = 'field_issue_last_status_change_value';
-  $handler->display->display_options['filters']['field_issue_last_status_change_value']['table'] = 'field_data_field_issue_last_status_change';
-  $handler->display->display_options['filters']['field_issue_last_status_change_value']['field'] = 'field_issue_last_status_change_value';
-  $handler->display->display_options['filters']['field_issue_last_status_change_value']['exposed'] = TRUE;
-  $handler->display->display_options['filters']['field_issue_last_status_change_value']['expose']['operator_id'] = 'field_issue_last_status_change_value_op';
-  $handler->display->display_options['filters']['field_issue_last_status_change_value']['expose']['label'] = 'Last status change (field_issue_last_status_change)';
-  $handler->display->display_options['filters']['field_issue_last_status_change_value']['expose']['operator'] = 'field_issue_last_status_change_value_op';
-  $handler->display->display_options['filters']['field_issue_last_status_change_value']['expose']['identifier'] = 'field_issue_last_status_change_value';
-  $handler->display->display_options['filters']['field_issue_last_status_change_value']['is_grouped'] = TRUE;
-  $handler->display->display_options['filters']['field_issue_last_status_change_value']['group_info']['label'] = 'Date range';
-  $handler->display->display_options['filters']['field_issue_last_status_change_value']['group_info']['identifier'] = 'field_issue_last_status_change_value';
-  $handler->display->display_options['filters']['field_issue_last_status_change_value']['group_info']['default_group'] = '1';
-  $handler->display->display_options['filters']['field_issue_last_status_change_value']['group_info']['group_items'] = array(
-    1 => array(
-      'title' => 'Past year',
-      'operator' => '>=',
-      'value' => array(
-        'type' => 'date',
-        'value' => '-1 year',
-        'min' => '',
-        'max' => '',
-      ),
-    ),
-    2 => array(
-      'title' => 'Past 90 days',
-      'operator' => '>=',
-      'value' => array(
-        'type' => 'date',
-        'value' => '-90 days',
-        'min' => '',
-        'max' => '',
-      ),
-    ),
-    3 => array(
-      'title' => 'Past 60 days',
-      'operator' => '>=',
-      'value' => array(
-        'type' => 'date',
-        'value' => '-60 days',
-        'min' => '',
-        'max' => '',
-      ),
-    ),
-    4 => array(
-      'title' => 'Past 30 days',
-      'operator' => '>=',
-      'value' => array(
-        'type' => 'date',
-        'value' => '-30 days',
-        'min' => '',
-        'max' => '',
-      ),
-    ),
-  );
-  $handler->display->display_options['path'] = 'node/%/issue-credits';
-
-  /* Display: Organization Sec Adv recent */
-  $handler = $view->new_display('block', 'Organization Sec Adv recent', 'org_sa_recent');
-  $handler->display->display_options['defaults']['pager'] = FALSE;
-  $handler->display->display_options['pager']['type'] = 'none';
-  $handler->display->display_options['pager']['options']['offset'] = '0';
-  $handler->display->display_options['defaults']['style_plugin'] = FALSE;
-  $handler->display->display_options['style_plugin'] = 'list';
-  $handler->display->display_options['style_options']['default_row_class'] = FALSE;
-  $handler->display->display_options['style_options']['row_class_special'] = FALSE;
-  $handler->display->display_options['style_options']['wrapper_class'] = '';
-  $handler->display->display_options['defaults']['style_options'] = FALSE;
-  $handler->display->display_options['defaults']['row_plugin'] = FALSE;
-  $handler->display->display_options['row_plugin'] = 'fields';
-  $handler->display->display_options['row_options']['inline'] = array(
-    'drupalorg_project_subtitle' => 'drupalorg_project_subtitle',
-    'nid' => 'nid',
-  );
-  $handler->display->display_options['defaults']['row_options'] = FALSE;
-  $handler->display->display_options['defaults']['footer'] = FALSE;
-  /* Footer: Global: Text area */
-  $handler->display->display_options['footer']['area']['id'] = 'area';
-  $handler->display->display_options['footer']['area']['table'] = 'views';
-  $handler->display->display_options['footer']['area']['field'] = 'area';
-  $handler->display->display_options['footer']['area']['content'] = '<a href="/node/%organization-nid/sa">View all security advisory credits</a>';
-  $handler->display->display_options['footer']['area']['format'] = '1';
-  $handler->display->display_options['footer']['area']['tokenize'] = TRUE;
-  $handler->display->display_options['defaults']['fields'] = FALSE;
-  /* Field: Content: Nid */
-  $handler->display->display_options['fields']['nid_1']['id'] = 'nid_1';
-  $handler->display->display_options['fields']['nid_1']['table'] = 'node';
-  $handler->display->display_options['fields']['nid_1']['field'] = 'nid';
-  $handler->display->display_options['fields']['nid_1']['relationship'] = 'field_project_target_id';
-  $handler->display->display_options['fields']['nid_1']['label'] = '';
-  $handler->display->display_options['fields']['nid_1']['exclude'] = TRUE;
-  $handler->display->display_options['fields']['nid_1']['element_label_colon'] = FALSE;
-  /* Field: Content: Title */
-  $handler->display->display_options['fields']['title_1']['id'] = 'title_1';
-  $handler->display->display_options['fields']['title_1']['table'] = 'node';
-  $handler->display->display_options['fields']['title_1']['field'] = 'title';
-  $handler->display->display_options['fields']['title_1']['relationship'] = 'field_project_target_id';
-  $handler->display->display_options['fields']['title_1']['label'] = '';
-  $handler->display->display_options['fields']['title_1']['exclude'] = TRUE;
-  $handler->display->display_options['fields']['title_1']['alter']['make_link'] = TRUE;
-  $handler->display->display_options['fields']['title_1']['alter']['path'] = 'node/[nid_1]';
-  $handler->display->display_options['fields']['title_1']['element_label_colon'] = FALSE;
-  $handler->display->display_options['fields']['title_1']['link_to_node'] = FALSE;
-  /* Field: Content: Project subtitle */
-  $handler->display->display_options['fields']['drupalorg_project_subtitle']['id'] = 'drupalorg_project_subtitle';
-  $handler->display->display_options['fields']['drupalorg_project_subtitle']['table'] = 'views_entity_node';
-  $handler->display->display_options['fields']['drupalorg_project_subtitle']['field'] = 'drupalorg_project_subtitle';
-  $handler->display->display_options['fields']['drupalorg_project_subtitle']['relationship'] = 'field_project_target_id';
-  $handler->display->display_options['fields']['drupalorg_project_subtitle']['label'] = '';
-  $handler->display->display_options['fields']['drupalorg_project_subtitle']['alter']['alter_text'] = TRUE;
-  $handler->display->display_options['fields']['drupalorg_project_subtitle']['alter']['text'] = '[title_1] [drupalorg_project_subtitle],';
-  $handler->display->display_options['fields']['drupalorg_project_subtitle']['element_label_colon'] = FALSE;
-  $handler->display->display_options['fields']['drupalorg_project_subtitle']['empty'] = '[title_1],';
-  /* Field: COUNT(DISTINCT Content: Nid) */
-  $handler->display->display_options['fields']['nid']['id'] = 'nid';
-  $handler->display->display_options['fields']['nid']['table'] = 'node';
-  $handler->display->display_options['fields']['nid']['field'] = 'nid';
-  $handler->display->display_options['fields']['nid']['group_type'] = 'count_distinct';
-  $handler->display->display_options['fields']['nid']['label'] = '';
-  $handler->display->display_options['fields']['nid']['alter']['path'] = 'node/%organization-nid/sa/[nid_1]';
-  $handler->display->display_options['fields']['nid']['element_label_colon'] = FALSE;
-  $handler->display->display_options['fields']['nid']['separator'] = '';
-  $handler->display->display_options['fields']['nid']['format_plural'] = TRUE;
-  $handler->display->display_options['fields']['nid']['format_plural_singular'] = '1 advisory';
-  $handler->display->display_options['fields']['nid']['format_plural_plural'] = '@count advisories';
-  $handler->display->display_options['defaults']['arguments'] = FALSE;
-  $handler->display->display_options['defaults']['filter_groups'] = FALSE;
-  $handler->display->display_options['filter_groups']['groups'] = array(
-    1 => 'AND',
-    2 => 'OR',
-  );
-  $handler->display->display_options['defaults']['filters'] = FALSE;
-  /* Filter criterion: Content: Published */
-  $handler->display->display_options['filters']['status']['id'] = 'status';
-  $handler->display->display_options['filters']['status']['table'] = 'node';
-  $handler->display->display_options['filters']['status']['field'] = 'status';
-  $handler->display->display_options['filters']['status']['value'] = 1;
-  $handler->display->display_options['filters']['status']['group'] = 1;
-  $handler->display->display_options['filters']['status']['expose']['operator'] = FALSE;
-  /* Filter criterion: Content: Type */
-  $handler->display->display_options['filters']['type']['id'] = 'type';
-  $handler->display->display_options['filters']['type']['table'] = 'node';
-  $handler->display->display_options['filters']['type']['field'] = 'type';
-  $handler->display->display_options['filters']['type']['value'] = array(
-    'sa' => 'sa',
-  );
-  $handler->display->display_options['filters']['type']['group'] = 1;
-  /* Filter criterion: Comment: Approved */
-  $handler->display->display_options['filters']['status_1']['id'] = 'status_1';
-  $handler->display->display_options['filters']['status_1']['table'] = 'comment';
-  $handler->display->display_options['filters']['status_1']['field'] = 'status';
-  $handler->display->display_options['filters']['status_1']['relationship'] = 'field_issue_credit_target_id';
-  $handler->display->display_options['filters']['status_1']['value'] = '1';
-  $handler->display->display_options['filters']['status_1']['group'] = 1;
-  /* Filter criterion: Comment: Attribute this contribution (field_attribute_as_volunteer) */
-  $handler->display->display_options['filters']['field_attribute_as_volunteer_value']['id'] = 'field_attribute_as_volunteer_value';
-  $handler->display->display_options['filters']['field_attribute_as_volunteer_value']['table'] = 'field_data_field_attribute_as_volunteer';
-  $handler->display->display_options['filters']['field_attribute_as_volunteer_value']['field'] = 'field_attribute_as_volunteer_value';
-  $handler->display->display_options['filters']['field_attribute_as_volunteer_value']['relationship'] = 'field_issue_credit_target_id';
-  $handler->display->display_options['filters']['field_attribute_as_volunteer_value']['value'] = array(
-    0 => '0',
-  );
-  $handler->display->display_options['filters']['field_attribute_as_volunteer_value']['group'] = 1;
-  /* Filter criterion: Content: Project type (field_project_type) */
-  $handler->display->display_options['filters']['field_project_type_value']['id'] = 'field_project_type_value';
-  $handler->display->display_options['filters']['field_project_type_value']['table'] = 'field_data_field_project_type';
-  $handler->display->display_options['filters']['field_project_type_value']['field'] = 'field_project_type_value';
-  $handler->display->display_options['filters']['field_project_type_value']['relationship'] = 'field_project_target_id';
-  $handler->display->display_options['filters']['field_project_type_value']['value'] = array(
-    'full' => 'full',
-  );
-  $handler->display->display_options['filters']['field_project_type_value']['group'] = 1;
-  /* Filter criterion: Comment: Attribute comment at organization (field_attribute_contribution_to) */
-  $handler->display->display_options['filters']['field_attribute_contribution_to_target_id']['id'] = 'field_attribute_contribution_to_target_id';
-  $handler->display->display_options['filters']['field_attribute_contribution_to_target_id']['table'] = 'field_data_field_attribute_contribution_to';
-  $handler->display->display_options['filters']['field_attribute_contribution_to_target_id']['field'] = 'field_attribute_contribution_to_target_id';
-  $handler->display->display_options['filters']['field_attribute_contribution_to_target_id']['relationship'] = 'field_issue_credit_target_id';
-  $handler->display->display_options['filters']['field_attribute_contribution_to_target_id']['group'] = 2;
-  /* Filter criterion: Comment: Attribute comment for customer (field_for_customer) */
-  $handler->display->display_options['filters']['field_for_customer_target_id']['id'] = 'field_for_customer_target_id';
-  $handler->display->display_options['filters']['field_for_customer_target_id']['table'] = 'field_data_field_for_customer';
-  $handler->display->display_options['filters']['field_for_customer_target_id']['field'] = 'field_for_customer_target_id';
-  $handler->display->display_options['filters']['field_for_customer_target_id']['relationship'] = 'field_issue_credit_target_id';
-  $handler->display->display_options['filters']['field_for_customer_target_id']['group'] = 2;
-  $handler->display->display_options['filters']['field_for_customer_target_id']['expose']['operator_id'] = 'field_for_customer_target_id_op';
-  $handler->display->display_options['filters']['field_for_customer_target_id']['expose']['label'] = 'Attribute comment for customer (field_for_customer)';
-  $handler->display->display_options['filters']['field_for_customer_target_id']['expose']['operator'] = 'field_for_customer_target_id_op';
-  $handler->display->display_options['filters']['field_for_customer_target_id']['expose']['identifier'] = 'field_for_customer_target_id';
-  /* Filter criterion: Content: Last status change (field_issue_last_status_change) */
-  $handler->display->display_options['filters']['field_issue_last_status_change_value']['id'] = 'field_issue_last_status_change_value';
-  $handler->display->display_options['filters']['field_issue_last_status_change_value']['table'] = 'field_data_field_issue_last_status_change';
-  $handler->display->display_options['filters']['field_issue_last_status_change_value']['field'] = 'field_issue_last_status_change_value';
-  $handler->display->display_options['filters']['field_issue_last_status_change_value']['operator'] = '>=';
-  $handler->display->display_options['filters']['field_issue_last_status_change_value']['value']['value'] = '-12 months';
-  $handler->display->display_options['filters']['field_issue_last_status_change_value']['value']['type'] = 'offset';
-  $handler->display->display_options['filters']['field_issue_last_status_change_value']['group'] = 1;
-  $handler->display->display_options['filters']['field_issue_last_status_change_value']['expose']['operator_id'] = 'field_issue_last_status_change_value_op';
-  $handler->display->display_options['filters']['field_issue_last_status_change_value']['expose']['label'] = 'Last status change (field_issue_last_status_change)';
-  $handler->display->display_options['filters']['field_issue_last_status_change_value']['expose']['operator'] = 'field_issue_last_status_change_value_op';
-  $handler->display->display_options['filters']['field_issue_last_status_change_value']['expose']['identifier'] = 'field_issue_last_status_change_value';
-  $handler->display->display_options['block_description'] = 'Org SA recent';
-
-  /* Display: Organization sa credit page */
-  $handler = $view->new_display('page', 'Organization sa credit page', 'org_sa_credit_page');
-  $handler->display->display_options['defaults']['title'] = FALSE;
-  $handler->display->display_options['title'] = 'Security advisories credited to %1';
-  $handler->display->display_options['defaults']['cache'] = FALSE;
-  $handler->display->display_options['cache']['type'] = 'time';
-  $handler->display->display_options['cache']['results_lifespan'] = '3600';
-  $handler->display->display_options['cache']['results_lifespan_custom'] = '0';
-  $handler->display->display_options['cache']['output_lifespan'] = '3600';
-  $handler->display->display_options['cache']['output_lifespan_custom'] = '0';
-  $handler->display->display_options['defaults']['exposed_form'] = FALSE;
-  $handler->display->display_options['exposed_form']['type'] = 'basic';
-  $handler->display->display_options['defaults']['pager'] = FALSE;
-  $handler->display->display_options['pager']['type'] = 'full';
-  $handler->display->display_options['pager']['options']['items_per_page'] = '100';
-  $handler->display->display_options['pager']['options']['offset'] = '0';
-  $handler->display->display_options['pager']['options']['id'] = '0';
-  $handler->display->display_options['pager']['options']['quantity'] = '9';
-  $handler->display->display_options['defaults']['style_plugin'] = FALSE;
-  $handler->display->display_options['style_plugin'] = 'list';
-  $handler->display->display_options['style_options']['grouping'] = array(
-    0 => array(
-      'field' => 'field_project_machine_name',
-      'rendered' => 1,
-      'rendered_strip' => 0,
-    ),
-  );
-  $handler->display->display_options['style_options']['default_row_class'] = FALSE;
-  $handler->display->display_options['style_options']['row_class_special'] = FALSE;
-  $handler->display->display_options['style_options']['wrapper_class'] = '';
-  $handler->display->display_options['defaults']['style_options'] = FALSE;
-  $handler->display->display_options['defaults']['row_plugin'] = FALSE;
-  $handler->display->display_options['row_plugin'] = 'fields';
-  $handler->display->display_options['row_options']['inline'] = array(
-    'title' => 'title',
-    'changed' => 'changed',
-  );
-  $handler->display->display_options['row_options']['separator'] = 'updated';
-  $handler->display->display_options['defaults']['row_options'] = FALSE;
-  $handler->display->display_options['defaults']['header'] = FALSE;
-  /* Header: Global: Text area */
-  $handler->display->display_options['header']['area']['id'] = 'area';
-  $handler->display->display_options['header']['area']['table'] = 'views';
-  $handler->display->display_options['header']['area']['field'] = 'area';
-  $handler->display->display_options['header']['area']['empty'] = TRUE;
-  $handler->display->display_options['header']['area']['content'] = '◀︎ <a href="!url-1">Back to %1</a>';
-  $handler->display->display_options['header']['area']['format'] = '1';
-  $handler->display->display_options['header']['area']['tokenize'] = TRUE;
-  $handler->display->display_options['defaults']['fields'] = FALSE;
-  /* Field: Content: Title */
-  $handler->display->display_options['fields']['title']['id'] = 'title';
-  $handler->display->display_options['fields']['title']['table'] = 'node';
-  $handler->display->display_options['fields']['title']['field'] = 'title';
-  $handler->display->display_options['fields']['title']['label'] = '';
-  $handler->display->display_options['fields']['title']['element_label_colon'] = FALSE;
-  /* Field: Content: Updated date */
-  $handler->display->display_options['fields']['changed']['id'] = 'changed';
-  $handler->display->display_options['fields']['changed']['table'] = 'node';
-  $handler->display->display_options['fields']['changed']['field'] = 'changed';
-  $handler->display->display_options['fields']['changed']['label'] = '';
-  $handler->display->display_options['fields']['changed']['element_label_colon'] = FALSE;
-  $handler->display->display_options['fields']['changed']['date_format'] = 'today time ago';
-  $handler->display->display_options['fields']['changed']['second_date_format'] = 'medium';
-  /* Field: Content: Nid */
-  $handler->display->display_options['fields']['nid']['id'] = 'nid';
-  $handler->display->display_options['fields']['nid']['table'] = 'node';
-  $handler->display->display_options['fields']['nid']['field'] = 'nid';
-  $handler->display->display_options['fields']['nid']['relationship'] = 'field_project_target_id';
-  $handler->display->display_options['fields']['nid']['label'] = '';
-  $handler->display->display_options['fields']['nid']['exclude'] = TRUE;
-  $handler->display->display_options['fields']['nid']['element_label_colon'] = FALSE;
-  /* Field: Content: Project subtitle */
-  $handler->display->display_options['fields']['drupalorg_project_subtitle']['id'] = 'drupalorg_project_subtitle';
-  $handler->display->display_options['fields']['drupalorg_project_subtitle']['table'] = 'views_entity_node';
-  $handler->display->display_options['fields']['drupalorg_project_subtitle']['field'] = 'drupalorg_project_subtitle';
-  $handler->display->display_options['fields']['drupalorg_project_subtitle']['relationship'] = 'field_project_target_id';
-  $handler->display->display_options['fields']['drupalorg_project_subtitle']['label'] = '';
-  $handler->display->display_options['fields']['drupalorg_project_subtitle']['exclude'] = TRUE;
-  $handler->display->display_options['fields']['drupalorg_project_subtitle']['alter']['alter_text'] = TRUE;
-  $handler->display->display_options['fields']['drupalorg_project_subtitle']['alter']['text'] = '<small>[drupalorg_project_subtitle]</small>';
-  $handler->display->display_options['fields']['drupalorg_project_subtitle']['element_label_colon'] = FALSE;
-  /* Field: Content: Short name */
-  $handler->display->display_options['fields']['field_project_machine_name']['id'] = 'field_project_machine_name';
-  $handler->display->display_options['fields']['field_project_machine_name']['table'] = 'field_data_field_project_machine_name';
-  $handler->display->display_options['fields']['field_project_machine_name']['field'] = 'field_project_machine_name';
-  $handler->display->display_options['fields']['field_project_machine_name']['relationship'] = 'field_project_target_id';
-  $handler->display->display_options['fields']['field_project_machine_name']['label'] = '';
-  $handler->display->display_options['fields']['field_project_machine_name']['exclude'] = TRUE;
-  $handler->display->display_options['fields']['field_project_machine_name']['alter']['alter_text'] = TRUE;
-  $handler->display->display_options['fields']['field_project_machine_name']['alter']['make_link'] = TRUE;
-  $handler->display->display_options['fields']['field_project_machine_name']['alter']['path'] = 'node/[nid]';
-  $handler->display->display_options['fields']['field_project_machine_name']['alter']['suffix'] = ' [drupalorg_project_subtitle]';
-  $handler->display->display_options['fields']['field_project_machine_name']['element_label_colon'] = FALSE;
-  $handler->display->display_options['fields']['field_project_machine_name']['group_column'] = 'entity_id';
-  $handler->display->display_options['fields']['field_project_machine_name']['group_columns'] = array(
-    'value' => 'value',
-  );
-  $handler->display->display_options['defaults']['sorts'] = FALSE;
-  /* Sort criterion: Content: Short name (field_project_machine_name) */
-  $handler->display->display_options['sorts']['field_project_machine_name_value']['id'] = 'field_project_machine_name_value';
-  $handler->display->display_options['sorts']['field_project_machine_name_value']['table'] = 'field_data_field_project_machine_name';
-  $handler->display->display_options['sorts']['field_project_machine_name_value']['field'] = 'field_project_machine_name_value';
-  $handler->display->display_options['sorts']['field_project_machine_name_value']['relationship'] = 'field_project_target_id';
-  /* Sort criterion: MAX(Content: Last status change (field_issue_last_status_change)) */
-  $handler->display->display_options['sorts']['field_issue_last_status_change_value']['id'] = 'field_issue_last_status_change_value';
-  $handler->display->display_options['sorts']['field_issue_last_status_change_value']['table'] = 'field_data_field_issue_last_status_change';
-  $handler->display->display_options['sorts']['field_issue_last_status_change_value']['field'] = 'field_issue_last_status_change_value';
-  $handler->display->display_options['sorts']['field_issue_last_status_change_value']['group_type'] = 'max';
-  $handler->display->display_options['sorts']['field_issue_last_status_change_value']['order'] = 'DESC';
-  $handler->display->display_options['defaults']['arguments'] = FALSE;
-  /* Contextual filter: Global: Null */
-  $handler->display->display_options['arguments']['null']['id'] = 'null';
-  $handler->display->display_options['arguments']['null']['table'] = 'views';
-  $handler->display->display_options['arguments']['null']['field'] = 'null';
-  $handler->display->display_options['arguments']['null']['default_action'] = 'not found';
-  $handler->display->display_options['arguments']['null']['default_argument_type'] = 'fixed';
-  $handler->display->display_options['arguments']['null']['summary']['number_of_records'] = '0';
-  $handler->display->display_options['arguments']['null']['summary']['format'] = 'default_summary';
-  $handler->display->display_options['arguments']['null']['summary_options']['items_per_page'] = '25';
-  $handler->display->display_options['defaults']['filter_groups'] = FALSE;
-  $handler->display->display_options['filter_groups']['groups'] = array(
-    1 => 'AND',
-    2 => 'OR',
-  );
-  $handler->display->display_options['defaults']['filters'] = FALSE;
-  /* Filter criterion: Content: Published */
-  $handler->display->display_options['filters']['status']['id'] = 'status';
-  $handler->display->display_options['filters']['status']['table'] = 'node';
-  $handler->display->display_options['filters']['status']['field'] = 'status';
-  $handler->display->display_options['filters']['status']['value'] = 1;
-  $handler->display->display_options['filters']['status']['group'] = 1;
-  $handler->display->display_options['filters']['status']['expose']['operator'] = FALSE;
-  /* Filter criterion: Content: Type */
-  $handler->display->display_options['filters']['type']['id'] = 'type';
-  $handler->display->display_options['filters']['type']['table'] = 'node';
-  $handler->display->display_options['filters']['type']['field'] = 'type';
-  $handler->display->display_options['filters']['type']['value'] = array(
-    'sa' => 'sa',
-  );
-  $handler->display->display_options['filters']['type']['group'] = 1;
-  /* Filter criterion: Comment: Approved */
-  $handler->display->display_options['filters']['status_1']['id'] = 'status_1';
-  $handler->display->display_options['filters']['status_1']['table'] = 'comment';
-  $handler->display->display_options['filters']['status_1']['field'] = 'status';
-  $handler->display->display_options['filters']['status_1']['relationship'] = 'field_issue_credit_target_id';
-  $handler->display->display_options['filters']['status_1']['value'] = '1';
-  $handler->display->display_options['filters']['status_1']['group'] = 1;
-  /* Filter criterion: Comment: Attribute this contribution (field_attribute_as_volunteer) */
-  $handler->display->display_options['filters']['field_attribute_as_volunteer_value']['id'] = 'field_attribute_as_volunteer_value';
-  $handler->display->display_options['filters']['field_attribute_as_volunteer_value']['table'] = 'field_data_field_attribute_as_volunteer';
-  $handler->display->display_options['filters']['field_attribute_as_volunteer_value']['field'] = 'field_attribute_as_volunteer_value';
-  $handler->display->display_options['filters']['field_attribute_as_volunteer_value']['relationship'] = 'field_issue_credit_target_id';
-  $handler->display->display_options['filters']['field_attribute_as_volunteer_value']['value'] = array(
-    0 => '0',
-  );
-  $handler->display->display_options['filters']['field_attribute_as_volunteer_value']['group'] = 1;
-  /* Filter criterion: Comment: Attribute comment at organization (field_attribute_contribution_to) */
-  $handler->display->display_options['filters']['field_attribute_contribution_to_target_id']['id'] = 'field_attribute_contribution_to_target_id';
-  $handler->display->display_options['filters']['field_attribute_contribution_to_target_id']['table'] = 'field_data_field_attribute_contribution_to';
-  $handler->display->display_options['filters']['field_attribute_contribution_to_target_id']['field'] = 'field_attribute_contribution_to_target_id';
-  $handler->display->display_options['filters']['field_attribute_contribution_to_target_id']['relationship'] = 'field_issue_credit_target_id';
-  $handler->display->display_options['filters']['field_attribute_contribution_to_target_id']['value']['value'] = '***CURRENT_ORGANIZATION***';
-  $handler->display->display_options['filters']['field_attribute_contribution_to_target_id']['group'] = 2;
-  /* Filter criterion: Comment: Attribute comment for customer (field_for_customer) */
-  $handler->display->display_options['filters']['field_for_customer_target_id']['id'] = 'field_for_customer_target_id';
-  $handler->display->display_options['filters']['field_for_customer_target_id']['table'] = 'field_data_field_for_customer';
-  $handler->display->display_options['filters']['field_for_customer_target_id']['field'] = 'field_for_customer_target_id';
-  $handler->display->display_options['filters']['field_for_customer_target_id']['relationship'] = 'field_issue_credit_target_id';
-  $handler->display->display_options['filters']['field_for_customer_target_id']['value']['value'] = '***CURRENT_ORGANIZATION***';
-  $handler->display->display_options['filters']['field_for_customer_target_id']['group'] = 2;
-  $handler->display->display_options['path'] = 'node/%/sa';
-
-  /* Display: User SA */
-  $handler = $view->new_display('block', 'User SA', 'user_sa_recent');
-  $handler->display->display_options['defaults']['pager'] = FALSE;
-  $handler->display->display_options['pager']['type'] = 'none';
-  $handler->display->display_options['pager']['options']['offset'] = '0';
-  $handler->display->display_options['defaults']['style_plugin'] = FALSE;
-  $handler->display->display_options['style_plugin'] = 'list';
-  $handler->display->display_options['style_options']['default_row_class'] = FALSE;
-  $handler->display->display_options['style_options']['row_class_special'] = FALSE;
-  $handler->display->display_options['style_options']['wrapper_class'] = '';
-  $handler->display->display_options['defaults']['style_options'] = FALSE;
-  $handler->display->display_options['defaults']['row_plugin'] = FALSE;
-  $handler->display->display_options['row_plugin'] = 'fields';
-  $handler->display->display_options['row_options']['inline'] = array(
-    'title_1' => 'title_1',
-    'drupalorg_project_subtitle' => 'drupalorg_project_subtitle',
-    'nid' => 'nid',
-  );
-  $handler->display->display_options['defaults']['row_options'] = FALSE;
-  $handler->display->display_options['defaults']['footer'] = FALSE;
-  $handler->display->display_options['defaults']['fields'] = FALSE;
-  /* Field: Content: Nid */
-  $handler->display->display_options['fields']['nid_1']['id'] = 'nid_1';
-  $handler->display->display_options['fields']['nid_1']['table'] = 'node';
-  $handler->display->display_options['fields']['nid_1']['field'] = 'nid';
-  $handler->display->display_options['fields']['nid_1']['relationship'] = 'field_project_target_id';
-  $handler->display->display_options['fields']['nid_1']['label'] = '';
-  $handler->display->display_options['fields']['nid_1']['exclude'] = TRUE;
-  $handler->display->display_options['fields']['nid_1']['element_label_colon'] = FALSE;
-  /* Field: Content: Title */
-  $handler->display->display_options['fields']['title_1']['id'] = 'title_1';
-  $handler->display->display_options['fields']['title_1']['table'] = 'node';
-  $handler->display->display_options['fields']['title_1']['field'] = 'title';
-  $handler->display->display_options['fields']['title_1']['relationship'] = 'field_project_target_id';
-  $handler->display->display_options['fields']['title_1']['label'] = '';
-  $handler->display->display_options['fields']['title_1']['exclude'] = TRUE;
-  $handler->display->display_options['fields']['title_1']['alter']['make_link'] = TRUE;
-  $handler->display->display_options['fields']['title_1']['alter']['path'] = 'node/[nid_1]';
-  $handler->display->display_options['fields']['title_1']['element_label_colon'] = FALSE;
-  $handler->display->display_options['fields']['title_1']['link_to_node'] = FALSE;
-  /* Field: Content: Project subtitle */
-  $handler->display->display_options['fields']['drupalorg_project_subtitle']['id'] = 'drupalorg_project_subtitle';
-  $handler->display->display_options['fields']['drupalorg_project_subtitle']['table'] = 'views_entity_node';
-  $handler->display->display_options['fields']['drupalorg_project_subtitle']['field'] = 'drupalorg_project_subtitle';
-  $handler->display->display_options['fields']['drupalorg_project_subtitle']['relationship'] = 'field_project_target_id';
-  $handler->display->display_options['fields']['drupalorg_project_subtitle']['label'] = '';
-  $handler->display->display_options['fields']['drupalorg_project_subtitle']['alter']['alter_text'] = TRUE;
-  $handler->display->display_options['fields']['drupalorg_project_subtitle']['alter']['text'] = '[title_1] [drupalorg_project_subtitle],';
-  $handler->display->display_options['fields']['drupalorg_project_subtitle']['element_label_colon'] = FALSE;
-  $handler->display->display_options['fields']['drupalorg_project_subtitle']['empty'] = '[title_1],';
-  /* Field: COUNT(DISTINCT Content: Nid) */
-  $handler->display->display_options['fields']['nid']['id'] = 'nid';
-  $handler->display->display_options['fields']['nid']['table'] = 'node';
-  $handler->display->display_options['fields']['nid']['field'] = 'nid';
-  $handler->display->display_options['fields']['nid']['group_type'] = 'count_distinct';
-  $handler->display->display_options['fields']['nid']['label'] = '';
-  $handler->display->display_options['fields']['nid']['alter']['make_link'] = TRUE;
-  $handler->display->display_options['fields']['nid']['alter']['path'] = 'u/%1/sa-credits';
-  $handler->display->display_options['fields']['nid']['element_label_colon'] = FALSE;
-  $handler->display->display_options['fields']['nid']['separator'] = '';
-  $handler->display->display_options['fields']['nid']['format_plural'] = TRUE;
-  $handler->display->display_options['fields']['nid']['format_plural_singular'] = '1 issue';
-  $handler->display->display_options['fields']['nid']['format_plural_plural'] = '@count issues';
-  $handler->display->display_options['defaults']['arguments'] = FALSE;
-  /* Contextual filter: Comment: Author uid */
-  $handler->display->display_options['arguments']['uid']['id'] = 'uid';
-  $handler->display->display_options['arguments']['uid']['table'] = 'comment';
-  $handler->display->display_options['arguments']['uid']['field'] = 'uid';
-  $handler->display->display_options['arguments']['uid']['relationship'] = 'field_issue_credit_target_id';
-  $handler->display->display_options['arguments']['uid']['default_action'] = 'not found';
-  $handler->display->display_options['arguments']['uid']['default_argument_type'] = 'fixed';
-  $handler->display->display_options['arguments']['uid']['summary']['number_of_records'] = '0';
-  $handler->display->display_options['arguments']['uid']['summary']['format'] = 'default_summary';
-  $handler->display->display_options['arguments']['uid']['summary_options']['items_per_page'] = '25';
-  $handler->display->display_options['arguments']['uid']['specify_validation'] = TRUE;
-  $handler->display->display_options['arguments']['uid']['validate']['type'] = 'user';
-  $handler->display->display_options['defaults']['filter_groups'] = FALSE;
-  $handler->display->display_options['defaults']['filters'] = FALSE;
-  /* Filter criterion: Content: Published */
-  $handler->display->display_options['filters']['status']['id'] = 'status';
-  $handler->display->display_options['filters']['status']['table'] = 'node';
-  $handler->display->display_options['filters']['status']['field'] = 'status';
-  $handler->display->display_options['filters']['status']['value'] = 1;
-  $handler->display->display_options['filters']['status']['group'] = 1;
-  $handler->display->display_options['filters']['status']['expose']['operator'] = FALSE;
-  /* Filter criterion: Content: Type */
-  $handler->display->display_options['filters']['type']['id'] = 'type';
-  $handler->display->display_options['filters']['type']['table'] = 'node';
-  $handler->display->display_options['filters']['type']['field'] = 'type';
-  $handler->display->display_options['filters']['type']['value'] = array(
-    'sa' => 'sa',
-  );
-  $handler->display->display_options['filters']['type']['group'] = 1;
-  /* Filter criterion: Comment: Approved */
-  $handler->display->display_options['filters']['status_1']['id'] = 'status_1';
-  $handler->display->display_options['filters']['status_1']['table'] = 'comment';
-  $handler->display->display_options['filters']['status_1']['field'] = 'status';
-  $handler->display->display_options['filters']['status_1']['relationship'] = 'field_issue_credit_target_id';
-  $handler->display->display_options['filters']['status_1']['value'] = '1';
-  $handler->display->display_options['filters']['status_1']['group'] = 1;
-
-  /* Display: User SA credit page */
-  $handler = $view->new_display('page', 'User SA credit page', 'page_2');
-  $handler->display->display_options['defaults']['style_plugin'] = FALSE;
-  $handler->display->display_options['style_plugin'] = 'list';
-  $handler->display->display_options['style_options']['grouping'] = array(
-    0 => array(
-      'field' => 'field_project_machine_name',
-      'rendered' => 0,
-      'rendered_strip' => 0,
-    ),
-  );
-  $handler->display->display_options['style_options']['default_row_class'] = FALSE;
-  $handler->display->display_options['style_options']['row_class_special'] = FALSE;
-  $handler->display->display_options['style_options']['wrapper_class'] = '';
-  $handler->display->display_options['defaults']['style_options'] = FALSE;
-  $handler->display->display_options['defaults']['row_plugin'] = FALSE;
-  $handler->display->display_options['row_plugin'] = 'fields';
-  $handler->display->display_options['row_options']['inline'] = array(
-    'title' => 'title',
-    'changed' => 'changed',
-  );
-  $handler->display->display_options['row_options']['separator'] = 'updated';
-  $handler->display->display_options['defaults']['row_options'] = FALSE;
-  $handler->display->display_options['defaults']['header'] = FALSE;
-  /* Header: Global: Text area */
-  $handler->display->display_options['header']['area']['id'] = 'area';
-  $handler->display->display_options['header']['area']['table'] = 'views';
-  $handler->display->display_options['header']['area']['field'] = 'area';
-  $handler->display->display_options['header']['area']['content'] = '◀︎ [uid]';
-  $handler->display->display_options['header']['area']['format'] = '1';
-  $handler->display->display_options['header']['area']['tokenize'] = TRUE;
-  /* Header: Global: Result summary */
-  $handler->display->display_options['header']['result']['id'] = 'result';
-  $handler->display->display_options['header']['result']['table'] = 'views';
-  $handler->display->display_options['header']['result']['field'] = 'result';
-  $handler->display->display_options['defaults']['relationships'] = FALSE;
-  /* Relationship: Entity Reference: Referenced Entity */
-  $handler->display->display_options['relationships']['field_issue_credit_target_id']['id'] = 'field_issue_credit_target_id';
-  $handler->display->display_options['relationships']['field_issue_credit_target_id']['table'] = 'field_data_field_issue_credit';
-  $handler->display->display_options['relationships']['field_issue_credit_target_id']['field'] = 'field_issue_credit_target_id';
-  $handler->display->display_options['relationships']['field_issue_credit_target_id']['required'] = TRUE;
-  /* Relationship: Entity Reference: Referenced Entity */
-  $handler->display->display_options['relationships']['field_project_target_id']['id'] = 'field_project_target_id';
-  $handler->display->display_options['relationships']['field_project_target_id']['table'] = 'field_data_field_project';
-  $handler->display->display_options['relationships']['field_project_target_id']['field'] = 'field_project_target_id';
-  $handler->display->display_options['defaults']['fields'] = FALSE;
-  /* Field: Content: Title */
-  $handler->display->display_options['fields']['title']['id'] = 'title';
-  $handler->display->display_options['fields']['title']['table'] = 'node';
-  $handler->display->display_options['fields']['title']['field'] = 'title';
-  $handler->display->display_options['fields']['title']['label'] = '';
-  $handler->display->display_options['fields']['title']['element_label_colon'] = FALSE;
-  /* Field: Content: Updated date */
-  $handler->display->display_options['fields']['changed']['id'] = 'changed';
-  $handler->display->display_options['fields']['changed']['table'] = 'node';
-  $handler->display->display_options['fields']['changed']['field'] = 'changed';
-  $handler->display->display_options['fields']['changed']['label'] = '';
-  $handler->display->display_options['fields']['changed']['element_label_colon'] = FALSE;
-  $handler->display->display_options['fields']['changed']['date_format'] = 'today time ago';
-  $handler->display->display_options['fields']['changed']['second_date_format'] = 'medium';
-  /* Field: Comment: Author uid */
-  $handler->display->display_options['fields']['uid']['id'] = 'uid';
-  $handler->display->display_options['fields']['uid']['table'] = 'comment';
-  $handler->display->display_options['fields']['uid']['field'] = 'uid';
-  $handler->display->display_options['fields']['uid']['relationship'] = 'field_issue_credit_target_id';
-  $handler->display->display_options['fields']['uid']['label'] = '';
-  $handler->display->display_options['fields']['uid']['exclude'] = TRUE;
-  $handler->display->display_options['fields']['uid']['alter']['alter_text'] = TRUE;
-  $handler->display->display_options['fields']['uid']['alter']['text'] = 'Back to %1’s profile';
-  $handler->display->display_options['fields']['uid']['alter']['make_link'] = TRUE;
-  $handler->display->display_options['fields']['uid']['alter']['path'] = 'user/[uid]';
-  $handler->display->display_options['fields']['uid']['element_label_colon'] = FALSE;
-  $handler->display->display_options['fields']['uid']['link_to_user'] = FALSE;
-  /* Field: Content: Nid */
-  $handler->display->display_options['fields']['nid']['id'] = 'nid';
-  $handler->display->display_options['fields']['nid']['table'] = 'node';
-  $handler->display->display_options['fields']['nid']['field'] = 'nid';
-  $handler->display->display_options['fields']['nid']['relationship'] = 'field_project_target_id';
-  $handler->display->display_options['fields']['nid']['label'] = '';
-  $handler->display->display_options['fields']['nid']['exclude'] = TRUE;
-  $handler->display->display_options['fields']['nid']['element_label_colon'] = FALSE;
-  /* Field: Content: Project subtitle */
-  $handler->display->display_options['fields']['drupalorg_project_subtitle']['id'] = 'drupalorg_project_subtitle';
-  $handler->display->display_options['fields']['drupalorg_project_subtitle']['table'] = 'views_entity_node';
-  $handler->display->display_options['fields']['drupalorg_project_subtitle']['field'] = 'drupalorg_project_subtitle';
-  $handler->display->display_options['fields']['drupalorg_project_subtitle']['relationship'] = 'field_project_target_id';
-  $handler->display->display_options['fields']['drupalorg_project_subtitle']['label'] = '';
-  $handler->display->display_options['fields']['drupalorg_project_subtitle']['exclude'] = TRUE;
-  $handler->display->display_options['fields']['drupalorg_project_subtitle']['alter']['alter_text'] = TRUE;
-  $handler->display->display_options['fields']['drupalorg_project_subtitle']['alter']['text'] = '<small>[drupalorg_project_subtitle]</small>';
-  $handler->display->display_options['fields']['drupalorg_project_subtitle']['element_label_colon'] = FALSE;
-  /* Field: Content: Short name */
-  $handler->display->display_options['fields']['field_project_machine_name']['id'] = 'field_project_machine_name';
-  $handler->display->display_options['fields']['field_project_machine_name']['table'] = 'field_data_field_project_machine_name';
-  $handler->display->display_options['fields']['field_project_machine_name']['field'] = 'field_project_machine_name';
-  $handler->display->display_options['fields']['field_project_machine_name']['relationship'] = 'field_project_target_id';
-  $handler->display->display_options['fields']['field_project_machine_name']['label'] = '';
-  $handler->display->display_options['fields']['field_project_machine_name']['exclude'] = TRUE;
-  $handler->display->display_options['fields']['field_project_machine_name']['alter']['alter_text'] = TRUE;
-  $handler->display->display_options['fields']['field_project_machine_name']['alter']['make_link'] = TRUE;
-  $handler->display->display_options['fields']['field_project_machine_name']['alter']['path'] = 'node/[nid]';
-  $handler->display->display_options['fields']['field_project_machine_name']['alter']['suffix'] = ' [drupalorg_project_subtitle]';
-  $handler->display->display_options['fields']['field_project_machine_name']['element_label_colon'] = FALSE;
-  $handler->display->display_options['fields']['field_project_machine_name']['group_columns'] = array(
-    'value' => 'value',
-  );
-  $handler->display->display_options['defaults']['sorts'] = FALSE;
-  /* Sort criterion: Content: Short name (field_project_machine_name) */
-  $handler->display->display_options['sorts']['field_project_machine_name_value']['id'] = 'field_project_machine_name_value';
-  $handler->display->display_options['sorts']['field_project_machine_name_value']['table'] = 'field_data_field_project_machine_name';
-  $handler->display->display_options['sorts']['field_project_machine_name_value']['field'] = 'field_project_machine_name_value';
-  $handler->display->display_options['sorts']['field_project_machine_name_value']['relationship'] = 'field_project_target_id';
-  /* Sort criterion: MAX(Content: Last status change (field_issue_last_status_change)) */
-  $handler->display->display_options['sorts']['field_issue_last_status_change_value']['id'] = 'field_issue_last_status_change_value';
-  $handler->display->display_options['sorts']['field_issue_last_status_change_value']['table'] = 'field_data_field_issue_last_status_change';
-  $handler->display->display_options['sorts']['field_issue_last_status_change_value']['field'] = 'field_issue_last_status_change_value';
-  $handler->display->display_options['sorts']['field_issue_last_status_change_value']['group_type'] = 'max';
-  $handler->display->display_options['sorts']['field_issue_last_status_change_value']['order'] = 'DESC';
-  $handler->display->display_options['defaults']['arguments'] = FALSE;
-  /* Contextual filter: Comment: Author uid */
-  $handler->display->display_options['arguments']['uid']['id'] = 'uid';
-  $handler->display->display_options['arguments']['uid']['table'] = 'comment';
-  $handler->display->display_options['arguments']['uid']['field'] = 'uid';
-  $handler->display->display_options['arguments']['uid']['relationship'] = 'field_issue_credit_target_id';
-  $handler->display->display_options['arguments']['uid']['default_action'] = 'not found';
-  $handler->display->display_options['arguments']['uid']['exception']['value'] = '';
-  $handler->display->display_options['arguments']['uid']['default_argument_type'] = 'fixed';
-  $handler->display->display_options['arguments']['uid']['summary']['number_of_records'] = '0';
-  $handler->display->display_options['arguments']['uid']['summary']['format'] = 'default_summary';
-  $handler->display->display_options['arguments']['uid']['summary_options']['items_per_page'] = '25';
-  $handler->display->display_options['arguments']['uid']['specify_validation'] = TRUE;
-  $handler->display->display_options['arguments']['uid']['validate']['type'] = 'user';
-  $handler->display->display_options['arguments']['uid']['validate_options']['type'] = 'name';
-  $handler->display->display_options['defaults']['filter_groups'] = FALSE;
-  $handler->display->display_options['defaults']['filters'] = FALSE;
-  /* Filter criterion: Content: Published */
-  $handler->display->display_options['filters']['status']['id'] = 'status';
-  $handler->display->display_options['filters']['status']['table'] = 'node';
-  $handler->display->display_options['filters']['status']['field'] = 'status';
-  $handler->display->display_options['filters']['status']['value'] = 1;
-  $handler->display->display_options['filters']['status']['group'] = 1;
-  $handler->display->display_options['filters']['status']['expose']['operator'] = FALSE;
-  /* Filter criterion: Content: Type */
-  $handler->display->display_options['filters']['type']['id'] = 'type';
-  $handler->display->display_options['filters']['type']['table'] = 'node';
-  $handler->display->display_options['filters']['type']['field'] = 'type';
-  $handler->display->display_options['filters']['type']['value'] = array(
-    'sa' => 'sa',
-  );
-  $handler->display->display_options['filters']['type']['group'] = 1;
-  /* Filter criterion: Comment: Approved */
-  $handler->display->display_options['filters']['status_1']['id'] = 'status_1';
-  $handler->display->display_options['filters']['status_1']['table'] = 'comment';
-  $handler->display->display_options['filters']['status_1']['field'] = 'status';
-  $handler->display->display_options['filters']['status_1']['relationship'] = 'field_issue_credit_target_id';
-  $handler->display->display_options['filters']['status_1']['value'] = '1';
-  $handler->display->display_options['filters']['status_1']['group'] = 1;
-  /* Filter criterion: Content: Status (field_issue_status) */
-  $handler->display->display_options['filters']['field_issue_status_value']['id'] = 'field_issue_status_value';
-  $handler->display->display_options['filters']['field_issue_status_value']['table'] = 'field_data_field_issue_status';
-  $handler->display->display_options['filters']['field_issue_status_value']['field'] = 'field_issue_status_value';
-  $handler->display->display_options['filters']['field_issue_status_value']['value'] = array(
-    'Closed' => 'Closed',
-    2 => '2',
-  );
-  $handler->display->display_options['filters']['field_issue_status_value']['group'] = 1;
-  $handler->display->display_options['path'] = 'u/%/sa-credits';
-
-  /* Display: Organization user issue credit page */
-  $handler = $view->new_display('page', 'Organization user issue credit page', 'organization_user_issue_credit_page');
-  $handler->display->display_options['defaults']['title'] = FALSE;
-  $handler->display->display_options['defaults']['use_ajax'] = FALSE;
-  $handler->display->display_options['use_ajax'] = TRUE;
-  $handler->display->display_options['defaults']['access'] = FALSE;
-  $handler->display->display_options['access']['type'] = 'none';
-  $handler->display->display_options['defaults']['cache'] = FALSE;
-  $handler->display->display_options['cache']['type'] = 'time';
-  $handler->display->display_options['cache']['results_lifespan'] = '21600';
-  $handler->display->display_options['cache']['results_lifespan_custom'] = '0';
-  $handler->display->display_options['cache']['output_lifespan'] = '21600';
-  $handler->display->display_options['cache']['output_lifespan_custom'] = '0';
-  $handler->display->display_options['defaults']['exposed_form'] = FALSE;
-  $handler->display->display_options['exposed_form']['type'] = 'better_exposed_filters';
-  $handler->display->display_options['exposed_form']['options']['bef'] = array(
-    'general' => array(
-      'input_required' => 0,
-      'text_input_required' => array(
-        'text_input_required' => array(
-          'value' => 'Select any filter and click on Apply to see results',
-          'format' => '1',
-        ),
-      ),
-      'allow_secondary' => 0,
-      'secondary_label' => 'Advanced options',
-      'secondary_collapse_override' => '0',
-    ),
-    'field_issue_last_status_change_value' => array(
-      'bef_format' => 'default',
-      'more_options' => array(
-        'bef_select_all_none' => FALSE,
-        'bef_collapsible' => 0,
-        'autosubmit' => 0,
-        'is_secondary' => 0,
-        'any_label' => '',
-        'bef_filter_description' => '',
-        'tokens' => array(
-          'available' => array(
-            0 => 'global_types',
-          ),
-        ),
-        'rewrite' => array(
-          'filter_rewrite_values' => '',
-        ),
-        'datepicker_options' => '',
-      ),
-    ),
-    'name' => array(
-      'bef_format' => 'default',
-      'more_options' => array(
-        'autosubmit' => 0,
-        'is_secondary' => 0,
-        'any_label' => '',
-        'bef_filter_description' => '',
-        'tokens' => array(
-          'available' => array(
-            0 => 'global_types',
-          ),
-        ),
-        'rewrite' => array(
-          'filter_rewrite_values' => '',
-        ),
-      ),
-    ),
-    'field_project_machine_name_value' => array(
-      'bef_format' => 'default',
-      'more_options' => array(
-        'autosubmit' => 0,
-        'is_secondary' => 0,
-        'any_label' => '',
-        'bef_filter_description' => '',
-        'tokens' => array(
-          'available' => array(
-            0 => 'global_types',
-          ),
-        ),
-        'rewrite' => array(
-          'filter_rewrite_values' => '',
-        ),
-      ),
-    ),
-  );
-  $handler->display->display_options['defaults']['pager'] = FALSE;
-  $handler->display->display_options['pager']['type'] = 'full';
-  $handler->display->display_options['pager']['options']['items_per_page'] = '100';
-  $handler->display->display_options['pager']['options']['offset'] = '0';
-  $handler->display->display_options['pager']['options']['id'] = '0';
-  $handler->display->display_options['pager']['options']['quantity'] = '9';
-  $handler->display->display_options['defaults']['style_plugin'] = FALSE;
-  $handler->display->display_options['style_plugin'] = 'list';
-  $handler->display->display_options['style_options']['grouping'] = array(
-    0 => array(
-      'field' => 'name',
-      'rendered' => 1,
-      'rendered_strip' => 0,
-    ),
-  );
-  $handler->display->display_options['style_options']['default_row_class'] = FALSE;
-  $handler->display->display_options['style_options']['row_class_special'] = FALSE;
-  $handler->display->display_options['style_options']['wrapper_class'] = '';
-  $handler->display->display_options['defaults']['style_options'] = FALSE;
-  $handler->display->display_options['defaults']['row_plugin'] = FALSE;
-  $handler->display->display_options['row_plugin'] = 'fields';
-  $handler->display->display_options['row_options']['inline'] = array(
-    'field_project_machine_name' => 'field_project_machine_name',
-    'title' => 'title',
-    'changed' => 'changed',
-  );
-  $handler->display->display_options['row_options']['separator'] = ' ';
-  $handler->display->display_options['defaults']['row_options'] = FALSE;
-  $handler->display->display_options['defaults']['header'] = FALSE;
-  /* Header: Global: Result summary */
-  $handler->display->display_options['header']['result']['id'] = 'result';
-  $handler->display->display_options['header']['result']['table'] = 'views';
-  $handler->display->display_options['header']['result']['field'] = 'result';
-  /* Header: Global: Text area */
-  $handler->display->display_options['header']['area']['id'] = 'area';
-  $handler->display->display_options['header']['area']['table'] = 'views';
-  $handler->display->display_options['header']['area']['field'] = 'area';
-  $handler->display->display_options['header']['area']['content'] = '<p><strong>Please note:</strong> This view organizes the projects and issues which people have attributed to your organization for credit. You may see duplicate issues in this list when multiple people at your organization worked on the issue. Each issue is only counted once for organization credit, regardless of how many people contributed to it.</p>';
-  $handler->display->display_options['header']['area']['format'] = '1';
-  $handler->display->display_options['defaults']['relationships'] = FALSE;
-  /* Relationship: Entity Reference: Referenced Entity */
-  $handler->display->display_options['relationships']['field_issue_credit_target_id']['id'] = 'field_issue_credit_target_id';
-  $handler->display->display_options['relationships']['field_issue_credit_target_id']['table'] = 'field_data_field_issue_credit';
-  $handler->display->display_options['relationships']['field_issue_credit_target_id']['field'] = 'field_issue_credit_target_id';
-  $handler->display->display_options['relationships']['field_issue_credit_target_id']['required'] = TRUE;
-  /* Relationship: Entity Reference: Referenced Entity */
-  $handler->display->display_options['relationships']['field_project_target_id']['id'] = 'field_project_target_id';
-  $handler->display->display_options['relationships']['field_project_target_id']['table'] = 'field_data_field_project';
-  $handler->display->display_options['relationships']['field_project_target_id']['field'] = 'field_project_target_id';
-  $handler->display->display_options['relationships']['field_project_target_id']['required'] = TRUE;
-  /* Relationship: Comment: Author */
-  $handler->display->display_options['relationships']['uid']['id'] = 'uid';
-  $handler->display->display_options['relationships']['uid']['table'] = 'comment';
-  $handler->display->display_options['relationships']['uid']['field'] = 'uid';
-  $handler->display->display_options['relationships']['uid']['relationship'] = 'field_issue_credit_target_id';
-  $handler->display->display_options['defaults']['fields'] = FALSE;
-  /* Field: Comment: Author */
-  $handler->display->display_options['fields']['name']['id'] = 'name';
-  $handler->display->display_options['fields']['name']['table'] = 'comment';
-  $handler->display->display_options['fields']['name']['field'] = 'name';
-  $handler->display->display_options['fields']['name']['relationship'] = 'field_issue_credit_target_id';
-  $handler->display->display_options['fields']['name']['label'] = '';
-  $handler->display->display_options['fields']['name']['exclude'] = TRUE;
-  $handler->display->display_options['fields']['name']['alter']['text'] = '[name]';
-  $handler->display->display_options['fields']['name']['element_label_colon'] = FALSE;
-  /* Field: Content: Nid */
-  $handler->display->display_options['fields']['nid']['id'] = 'nid';
-  $handler->display->display_options['fields']['nid']['table'] = 'node';
-  $handler->display->display_options['fields']['nid']['field'] = 'nid';
-  $handler->display->display_options['fields']['nid']['relationship'] = 'field_project_target_id';
-  $handler->display->display_options['fields']['nid']['label'] = '';
-  $handler->display->display_options['fields']['nid']['exclude'] = TRUE;
-  $handler->display->display_options['fields']['nid']['element_label_colon'] = FALSE;
-  /* Field: Content: Project subtitle */
-  $handler->display->display_options['fields']['drupalorg_project_subtitle']['id'] = 'drupalorg_project_subtitle';
-  $handler->display->display_options['fields']['drupalorg_project_subtitle']['table'] = 'views_entity_node';
-  $handler->display->display_options['fields']['drupalorg_project_subtitle']['field'] = 'drupalorg_project_subtitle';
-  $handler->display->display_options['fields']['drupalorg_project_subtitle']['relationship'] = 'field_project_target_id';
-  $handler->display->display_options['fields']['drupalorg_project_subtitle']['label'] = '';
-  $handler->display->display_options['fields']['drupalorg_project_subtitle']['exclude'] = TRUE;
-  $handler->display->display_options['fields']['drupalorg_project_subtitle']['alter']['alter_text'] = TRUE;
-  $handler->display->display_options['fields']['drupalorg_project_subtitle']['alter']['text'] = ' <small>[drupalorg_project_subtitle]</small>';
-  $handler->display->display_options['fields']['drupalorg_project_subtitle']['element_label_colon'] = FALSE;
-  /* Field: Content: Short name */
-  $handler->display->display_options['fields']['field_project_machine_name']['id'] = 'field_project_machine_name';
-  $handler->display->display_options['fields']['field_project_machine_name']['table'] = 'field_data_field_project_machine_name';
-  $handler->display->display_options['fields']['field_project_machine_name']['field'] = 'field_project_machine_name';
-  $handler->display->display_options['fields']['field_project_machine_name']['relationship'] = 'field_project_target_id';
-  $handler->display->display_options['fields']['field_project_machine_name']['label'] = '';
-  $handler->display->display_options['fields']['field_project_machine_name']['alter']['alter_text'] = TRUE;
-  $handler->display->display_options['fields']['field_project_machine_name']['alter']['make_link'] = TRUE;
-  $handler->display->display_options['fields']['field_project_machine_name']['alter']['path'] = 'node/[nid]';
-  $handler->display->display_options['fields']['field_project_machine_name']['alter']['suffix'] = '[drupalorg_project_subtitle]:';
-  $handler->display->display_options['fields']['field_project_machine_name']['element_label_colon'] = FALSE;
-  $handler->display->display_options['fields']['field_project_machine_name']['group_column'] = 'entity_id';
-  $handler->display->display_options['fields']['field_project_machine_name']['group_columns'] = array(
-    'value' => 'value',
-  );
-  /* Field: Content: Title */
-  $handler->display->display_options['fields']['title']['id'] = 'title';
-  $handler->display->display_options['fields']['title']['table'] = 'node';
-  $handler->display->display_options['fields']['title']['field'] = 'title';
-  $handler->display->display_options['fields']['title']['label'] = '';
-  $handler->display->display_options['fields']['title']['element_label_colon'] = FALSE;
-  /* Field: Content: Updated date */
-  $handler->display->display_options['fields']['changed']['id'] = 'changed';
-  $handler->display->display_options['fields']['changed']['table'] = 'node';
-  $handler->display->display_options['fields']['changed']['field'] = 'changed';
-  $handler->display->display_options['fields']['changed']['label'] = '';
-  $handler->display->display_options['fields']['changed']['alter']['alter_text'] = TRUE;
-  $handler->display->display_options['fields']['changed']['alter']['text'] = 'updated [changed]';
-  $handler->display->display_options['fields']['changed']['element_label_colon'] = FALSE;
-  $handler->display->display_options['fields']['changed']['date_format'] = 'today time ago';
-  $handler->display->display_options['fields']['changed']['second_date_format'] = 'medium';
-  $handler->display->display_options['defaults']['sorts'] = FALSE;
-  /* Sort criterion: Comment: Author */
-  $handler->display->display_options['sorts']['name']['id'] = 'name';
-  $handler->display->display_options['sorts']['name']['table'] = 'comment';
-  $handler->display->display_options['sorts']['name']['field'] = 'name';
-  $handler->display->display_options['sorts']['name']['relationship'] = 'field_issue_credit_target_id';
-  /* Sort criterion: Content: Short name (field_project_machine_name) */
-  $handler->display->display_options['sorts']['field_project_machine_name_value']['id'] = 'field_project_machine_name_value';
-  $handler->display->display_options['sorts']['field_project_machine_name_value']['table'] = 'field_data_field_project_machine_name';
-  $handler->display->display_options['sorts']['field_project_machine_name_value']['field'] = 'field_project_machine_name_value';
-  $handler->display->display_options['sorts']['field_project_machine_name_value']['relationship'] = 'field_project_target_id';
-  /* Sort criterion: MAX(Content: Last status change (field_issue_last_status_change)) */
-  $handler->display->display_options['sorts']['field_issue_last_status_change_value']['id'] = 'field_issue_last_status_change_value';
-  $handler->display->display_options['sorts']['field_issue_last_status_change_value']['table'] = 'field_data_field_issue_last_status_change';
-  $handler->display->display_options['sorts']['field_issue_last_status_change_value']['field'] = 'field_issue_last_status_change_value';
-  $handler->display->display_options['sorts']['field_issue_last_status_change_value']['group_type'] = 'max';
-  $handler->display->display_options['sorts']['field_issue_last_status_change_value']['order'] = 'DESC';
-  $handler->display->display_options['defaults']['arguments'] = FALSE;
-  /* Contextual filter: Global: Null */
-  $handler->display->display_options['arguments']['null']['id'] = 'null';
-  $handler->display->display_options['arguments']['null']['table'] = 'views';
-  $handler->display->display_options['arguments']['null']['field'] = 'null';
-  $handler->display->display_options['arguments']['null']['default_action'] = 'not found';
-  $handler->display->display_options['arguments']['null']['default_argument_type'] = 'fixed';
-  $handler->display->display_options['arguments']['null']['summary']['number_of_records'] = '0';
-  $handler->display->display_options['arguments']['null']['summary']['format'] = 'default_summary';
-  $handler->display->display_options['arguments']['null']['summary_options']['items_per_page'] = '25';
-  $handler->display->display_options['defaults']['filter_groups'] = FALSE;
-  $handler->display->display_options['filter_groups']['groups'] = array(
-    1 => 'AND',
-    2 => 'OR',
-  );
-  $handler->display->display_options['defaults']['filters'] = FALSE;
-  /* Filter criterion: Content: Published */
-  $handler->display->display_options['filters']['status']['id'] = 'status';
-  $handler->display->display_options['filters']['status']['table'] = 'node';
-  $handler->display->display_options['filters']['status']['field'] = 'status';
-  $handler->display->display_options['filters']['status']['value'] = 1;
-  $handler->display->display_options['filters']['status']['group'] = 1;
-  $handler->display->display_options['filters']['status']['expose']['operator'] = FALSE;
-  /* Filter criterion: Content: Type */
-  $handler->display->display_options['filters']['type']['id'] = 'type';
-  $handler->display->display_options['filters']['type']['table'] = 'node';
-  $handler->display->display_options['filters']['type']['field'] = 'type';
-  $handler->display->display_options['filters']['type']['value'] = array(
-    'project_issue' => 'project_issue',
-  );
-  $handler->display->display_options['filters']['type']['group'] = 1;
-  /* Filter criterion: Comment: Approved */
-  $handler->display->display_options['filters']['status_1']['id'] = 'status_1';
-  $handler->display->display_options['filters']['status_1']['table'] = 'comment';
-  $handler->display->display_options['filters']['status_1']['field'] = 'status';
-  $handler->display->display_options['filters']['status_1']['relationship'] = 'field_issue_credit_target_id';
-  $handler->display->display_options['filters']['status_1']['value'] = '1';
-  $handler->display->display_options['filters']['status_1']['group'] = 1;
-  /* Filter criterion: Comment: Attribute this contribution (field_attribute_as_volunteer) */
-  $handler->display->display_options['filters']['field_attribute_as_volunteer_value']['id'] = 'field_attribute_as_volunteer_value';
-  $handler->display->display_options['filters']['field_attribute_as_volunteer_value']['table'] = 'field_data_field_attribute_as_volunteer';
-  $handler->display->display_options['filters']['field_attribute_as_volunteer_value']['field'] = 'field_attribute_as_volunteer_value';
-  $handler->display->display_options['filters']['field_attribute_as_volunteer_value']['relationship'] = 'field_issue_credit_target_id';
-  $handler->display->display_options['filters']['field_attribute_as_volunteer_value']['value'] = array(
-    0 => '0',
-  );
-  $handler->display->display_options['filters']['field_attribute_as_volunteer_value']['group'] = 1;
-  /* Filter criterion: Content: Status (field_issue_status) */
-  $handler->display->display_options['filters']['field_issue_status_value']['id'] = 'field_issue_status_value';
-  $handler->display->display_options['filters']['field_issue_status_value']['table'] = 'field_data_field_issue_status';
-  $handler->display->display_options['filters']['field_issue_status_value']['field'] = 'field_issue_status_value';
-  $handler->display->display_options['filters']['field_issue_status_value']['value'] = array(
-    'Closed' => 'Closed',
-    2 => '2',
-  );
-  $handler->display->display_options['filters']['field_issue_status_value']['group'] = 1;
-  /* Filter criterion: Comment: Attribute comment at organization (field_attribute_contribution_to) */
-  $handler->display->display_options['filters']['field_attribute_contribution_to_target_id']['id'] = 'field_attribute_contribution_to_target_id';
-  $handler->display->display_options['filters']['field_attribute_contribution_to_target_id']['table'] = 'field_data_field_attribute_contribution_to';
-  $handler->display->display_options['filters']['field_attribute_contribution_to_target_id']['field'] = 'field_attribute_contribution_to_target_id';
-  $handler->display->display_options['filters']['field_attribute_contribution_to_target_id']['relationship'] = 'field_issue_credit_target_id';
-  $handler->display->display_options['filters']['field_attribute_contribution_to_target_id']['value']['value'] = '***CURRENT_ORGANIZATION***';
-  $handler->display->display_options['filters']['field_attribute_contribution_to_target_id']['group'] = 2;
-  /* Filter criterion: Comment: Attribute comment for customer (field_for_customer) */
-  $handler->display->display_options['filters']['field_for_customer_target_id']['id'] = 'field_for_customer_target_id';
-  $handler->display->display_options['filters']['field_for_customer_target_id']['table'] = 'field_data_field_for_customer';
-  $handler->display->display_options['filters']['field_for_customer_target_id']['field'] = 'field_for_customer_target_id';
-  $handler->display->display_options['filters']['field_for_customer_target_id']['relationship'] = 'field_issue_credit_target_id';
-  $handler->display->display_options['filters']['field_for_customer_target_id']['value']['value'] = '***CURRENT_ORGANIZATION***';
-  $handler->display->display_options['filters']['field_for_customer_target_id']['group'] = 2;
-  /* Filter criterion: Content: Last status change (field_issue_last_status_change) */
-  $handler->display->display_options['filters']['field_issue_last_status_change_value']['id'] = 'field_issue_last_status_change_value';
-  $handler->display->display_options['filters']['field_issue_last_status_change_value']['table'] = 'field_data_field_issue_last_status_change';
-  $handler->display->display_options['filters']['field_issue_last_status_change_value']['field'] = 'field_issue_last_status_change_value';
-  $handler->display->display_options['filters']['field_issue_last_status_change_value']['exposed'] = TRUE;
-  $handler->display->display_options['filters']['field_issue_last_status_change_value']['expose']['operator_id'] = 'field_issue_last_status_change_value_op';
-  $handler->display->display_options['filters']['field_issue_last_status_change_value']['expose']['label'] = 'Last status change (field_issue_last_status_change)';
-  $handler->display->display_options['filters']['field_issue_last_status_change_value']['expose']['operator'] = 'field_issue_last_status_change_value_op';
-  $handler->display->display_options['filters']['field_issue_last_status_change_value']['expose']['identifier'] = 'field_issue_last_status_change_value';
-  $handler->display->display_options['filters']['field_issue_last_status_change_value']['is_grouped'] = TRUE;
-  $handler->display->display_options['filters']['field_issue_last_status_change_value']['group_info']['label'] = 'Date range';
-  $handler->display->display_options['filters']['field_issue_last_status_change_value']['group_info']['identifier'] = 'field_issue_last_status_change_value';
-  $handler->display->display_options['filters']['field_issue_last_status_change_value']['group_info']['default_group'] = '1';
-  $handler->display->display_options['filters']['field_issue_last_status_change_value']['group_info']['group_items'] = array(
-    1 => array(
-      'title' => 'Past year',
-      'operator' => '>=',
-      'value' => array(
-        'type' => 'date',
-        'value' => '-1 year',
-        'min' => '',
-        'max' => '',
-      ),
-    ),
-    2 => array(
-      'title' => 'Past 90 days',
-      'operator' => '>=',
-      'value' => array(
-        'type' => 'date',
-        'value' => '-90 days',
-        'min' => '',
-        'max' => '',
-      ),
-    ),
-    3 => array(
-      'title' => 'Past 60 days',
-      'operator' => '>=',
-      'value' => array(
-        'type' => 'date',
-        'value' => '-60 days',
-        'min' => '',
-        'max' => '',
-      ),
-    ),
-    4 => array(
-      'title' => 'Past 30 days',
-      'operator' => '>=',
-      'value' => array(
-        'type' => 'date',
-        'value' => '-30 days',
-        'min' => '',
-        'max' => '',
-      ),
-    ),
-  );
-  /* Filter criterion: Comment: Author */
-  $handler->display->display_options['filters']['name']['id'] = 'name';
-  $handler->display->display_options['filters']['name']['table'] = 'comment';
-  $handler->display->display_options['filters']['name']['field'] = 'name';
-  $handler->display->display_options['filters']['name']['relationship'] = 'field_issue_credit_target_id';
-  $handler->display->display_options['filters']['name']['operator'] = 'word';
-  $handler->display->display_options['filters']['name']['exposed'] = TRUE;
-  $handler->display->display_options['filters']['name']['expose']['operator_id'] = 'name_op';
-  $handler->display->display_options['filters']['name']['expose']['label'] = 'Contributor';
-  $handler->display->display_options['filters']['name']['expose']['operator'] = 'name_op';
-  $handler->display->display_options['filters']['name']['expose']['identifier'] = 'name';
-  $handler->display->display_options['filters']['name']['expose']['remember_roles'] = array(
-    2 => '2',
-    3 => 0,
-    1 => 0,
-    39 => 0,
-    36 => 0,
-    7 => 0,
-    34 => 0,
-    32 => 0,
-    22 => 0,
-    20 => 0,
-    24 => 0,
-    41 => 0,
-    26 => 0,
-    38 => 0,
-    4 => 0,
-    42 => 0,
-  );
-  /* Filter criterion: Content: Short name (field_project_machine_name) */
-  $handler->display->display_options['filters']['field_project_machine_name_value']['id'] = 'field_project_machine_name_value';
-  $handler->display->display_options['filters']['field_project_machine_name_value']['table'] = 'field_data_field_project_machine_name';
-  $handler->display->display_options['filters']['field_project_machine_name_value']['field'] = 'field_project_machine_name_value';
-  $handler->display->display_options['filters']['field_project_machine_name_value']['relationship'] = 'field_project_target_id';
-  $handler->display->display_options['filters']['field_project_machine_name_value']['operator'] = 'word';
-  $handler->display->display_options['filters']['field_project_machine_name_value']['exposed'] = TRUE;
-  $handler->display->display_options['filters']['field_project_machine_name_value']['expose']['operator_id'] = 'field_project_machine_name_value_op';
-  $handler->display->display_options['filters']['field_project_machine_name_value']['expose']['label'] = 'Project short name';
-  $handler->display->display_options['filters']['field_project_machine_name_value']['expose']['operator'] = 'field_project_machine_name_value_op';
-  $handler->display->display_options['filters']['field_project_machine_name_value']['expose']['identifier'] = 'field_project_machine_name_value';
-  $handler->display->display_options['filters']['field_project_machine_name_value']['expose']['remember_roles'] = array(
-    2 => '2',
-    3 => 0,
-    1 => 0,
-    39 => 0,
-    36 => 0,
-    7 => 0,
-    34 => 0,
-    32 => 0,
-    22 => 0,
-    20 => 0,
-    24 => 0,
-    41 => 0,
-    26 => 0,
-    38 => 0,
-    4 => 0,
-    42 => 0,
-  );
-  $handler->display->display_options['path'] = 'node/%/org-issue-credit-user';
-  $handler->display->display_options['menu']['title'] = 'Org Issue credits';
-  $handler->display->display_options['menu']['weight'] = '0';
-  $handler->display->display_options['menu']['context'] = 0;
-  $handler->display->display_options['menu']['context_only_inline'] = 0;
-
-  /* Display: Organization export */
-  $handler = $view->new_display('views_data_export', 'Organization export', 'organization_user_issue_credit_page_data_export');
-  $handler->display->display_options['pager']['type'] = 'none';
-  $handler->display->display_options['pager']['options']['offset'] = '0';
-  $handler->display->display_options['style_plugin'] = 'views_data_export_csv';
-  $handler->display->display_options['style_options']['attach_text'] = 'CSV Export';
-  $handler->display->display_options['style_options']['provide_file'] = 1;
-  $handler->display->display_options['style_options']['filename'] = '%timestamp-full-%1-title.csv';
-  $handler->display->display_options['style_options']['parent_sort'] = 0;
-  $handler->display->display_options['style_options']['quote'] = 1;
-  $handler->display->display_options['style_options']['trim'] = 0;
-  $handler->display->display_options['style_options']['replace_newlines'] = 0;
-  $handler->display->display_options['style_options']['newline_token'] = '1';
-  $handler->display->display_options['style_options']['header'] = 1;
-  $handler->display->display_options['style_options']['keep_html'] = 0;
-  $handler->display->display_options['defaults']['relationships'] = FALSE;
-  /* Relationship: Entity Reference: Referenced Entity */
-  $handler->display->display_options['relationships']['field_issue_credit_target_id']['id'] = 'field_issue_credit_target_id';
-  $handler->display->display_options['relationships']['field_issue_credit_target_id']['table'] = 'field_data_field_issue_credit';
-  $handler->display->display_options['relationships']['field_issue_credit_target_id']['field'] = 'field_issue_credit_target_id';
-  $handler->display->display_options['relationships']['field_issue_credit_target_id']['required'] = TRUE;
-  /* Relationship: Entity Reference: Referenced Entity */
-  $handler->display->display_options['relationships']['field_project_target_id']['id'] = 'field_project_target_id';
-  $handler->display->display_options['relationships']['field_project_target_id']['table'] = 'field_data_field_project';
-  $handler->display->display_options['relationships']['field_project_target_id']['field'] = 'field_project_target_id';
-  $handler->display->display_options['relationships']['field_project_target_id']['required'] = TRUE;
-  /* Relationship: Comment: Author */
-  $handler->display->display_options['relationships']['uid']['id'] = 'uid';
-  $handler->display->display_options['relationships']['uid']['table'] = 'comment';
-  $handler->display->display_options['relationships']['uid']['field'] = 'uid';
-  $handler->display->display_options['relationships']['uid']['relationship'] = 'field_issue_credit_target_id';
-  $handler->display->display_options['defaults']['fields'] = FALSE;
-  /* Field: Content: Title */
-  $handler->display->display_options['fields']['title']['id'] = 'title';
-  $handler->display->display_options['fields']['title']['table'] = 'node';
-  $handler->display->display_options['fields']['title']['field'] = 'title';
-  /* Field: Content: Updated date */
-  $handler->display->display_options['fields']['changed']['id'] = 'changed';
-  $handler->display->display_options['fields']['changed']['table'] = 'node';
-  $handler->display->display_options['fields']['changed']['field'] = 'changed';
-  /* Field: Content: Nid */
-  $handler->display->display_options['fields']['nid']['id'] = 'nid';
-  $handler->display->display_options['fields']['nid']['table'] = 'node';
-  $handler->display->display_options['fields']['nid']['field'] = 'nid';
-  $handler->display->display_options['fields']['nid']['relationship'] = 'field_project_target_id';
-  /* Field: Content: Project subtitle */
-  $handler->display->display_options['fields']['drupalorg_project_subtitle']['id'] = 'drupalorg_project_subtitle';
-  $handler->display->display_options['fields']['drupalorg_project_subtitle']['table'] = 'views_entity_node';
-  $handler->display->display_options['fields']['drupalorg_project_subtitle']['field'] = 'drupalorg_project_subtitle';
-  $handler->display->display_options['fields']['drupalorg_project_subtitle']['relationship'] = 'field_project_target_id';
-  /* Field: Content: Short name */
-  $handler->display->display_options['fields']['field_project_machine_name']['id'] = 'field_project_machine_name';
-  $handler->display->display_options['fields']['field_project_machine_name']['table'] = 'field_data_field_project_machine_name';
-  $handler->display->display_options['fields']['field_project_machine_name']['field'] = 'field_project_machine_name';
-  $handler->display->display_options['fields']['field_project_machine_name']['relationship'] = 'field_project_target_id';
-  $handler->display->display_options['fields']['field_project_machine_name']['group_column'] = 'entity_id';
-  $handler->display->display_options['fields']['field_project_machine_name']['group_columns'] = array(
-    'value' => 'value',
-  );
-  /* Field: Comment: Author */
-  $handler->display->display_options['fields']['name']['id'] = 'name';
-  $handler->display->display_options['fields']['name']['table'] = 'comment';
-  $handler->display->display_options['fields']['name']['field'] = 'name';
-  $handler->display->display_options['fields']['name']['relationship'] = 'field_issue_credit_target_id';
-  $handler->display->display_options['defaults']['sorts'] = FALSE;
-  /* Sort criterion: Comment: Author */
-  $handler->display->display_options['sorts']['name']['id'] = 'name';
-  $handler->display->display_options['sorts']['name']['table'] = 'comment';
-  $handler->display->display_options['sorts']['name']['field'] = 'name';
-  $handler->display->display_options['sorts']['name']['relationship'] = 'field_issue_credit_target_id';
-  /* Sort criterion: MAX(Content: Last status change (field_issue_last_status_change)) */
-  $handler->display->display_options['sorts']['field_issue_last_status_change_value']['id'] = 'field_issue_last_status_change_value';
-  $handler->display->display_options['sorts']['field_issue_last_status_change_value']['table'] = 'field_data_field_issue_last_status_change';
-  $handler->display->display_options['sorts']['field_issue_last_status_change_value']['field'] = 'field_issue_last_status_change_value';
-  $handler->display->display_options['sorts']['field_issue_last_status_change_value']['group_type'] = 'max';
-  $handler->display->display_options['sorts']['field_issue_last_status_change_value']['order'] = 'DESC';
-  $handler->display->display_options['defaults']['arguments'] = FALSE;
-  /* Contextual filter: Global: Null */
-  $handler->display->display_options['arguments']['null']['id'] = 'null';
-  $handler->display->display_options['arguments']['null']['table'] = 'views';
-  $handler->display->display_options['arguments']['null']['field'] = 'null';
-  $handler->display->display_options['arguments']['null']['default_argument_type'] = 'fixed';
-  $handler->display->display_options['arguments']['null']['summary']['format'] = 'default_summary';
-  $handler->display->display_options['defaults']['filter_groups'] = FALSE;
-  $handler->display->display_options['filter_groups']['groups'] = array(
-    1 => 'AND',
-    2 => 'OR',
-  );
   $handler->display->display_options['defaults']['filters'] = FALSE;
   /* Filter criterion: Content: Published */
   $handler->display->display_options['filters']['status']['id'] = 'status';
@@ -2544,7 +1024,7 @@ function drupalorg_user_views_default_views() {
   $handler->display->display_options['filters']['type']['table'] = 'node';
   $handler->display->display_options['filters']['type']['field'] = 'type';
   $handler->display->display_options['filters']['type']['value'] = array(
-    'project_issue' => 'project_issue',
+    'sa' => 'sa',
   );
   $handler->display->display_options['filters']['type']['group'] = 1;
   /* Filter criterion: Comment: Approved */
@@ -2563,50 +1043,7 @@ function drupalorg_user_views_default_views() {
     2 => '2',
   );
   $handler->display->display_options['filters']['field_issue_status_value']['group'] = 1;
-  /* Filter criterion: Comment: Attribute comment at organization (field_attribute_contribution_to) */
-  $handler->display->display_options['filters']['field_attribute_contribution_to_target_id']['id'] = 'field_attribute_contribution_to_target_id';
-  $handler->display->display_options['filters']['field_attribute_contribution_to_target_id']['table'] = 'field_data_field_attribute_contribution_to';
-  $handler->display->display_options['filters']['field_attribute_contribution_to_target_id']['field'] = 'field_attribute_contribution_to_target_id';
-  $handler->display->display_options['filters']['field_attribute_contribution_to_target_id']['relationship'] = 'field_issue_credit_target_id';
-  $handler->display->display_options['filters']['field_attribute_contribution_to_target_id']['value']['value'] = '***CURRENT_ORGANIZATION***';
-  $handler->display->display_options['filters']['field_attribute_contribution_to_target_id']['group'] = 2;
-  /* Filter criterion: Comment: Attribute comment for customer (field_for_customer) */
-  $handler->display->display_options['filters']['field_for_customer_target_id']['id'] = 'field_for_customer_target_id';
-  $handler->display->display_options['filters']['field_for_customer_target_id']['table'] = 'field_data_field_for_customer';
-  $handler->display->display_options['filters']['field_for_customer_target_id']['field'] = 'field_for_customer_target_id';
-  $handler->display->display_options['filters']['field_for_customer_target_id']['relationship'] = 'field_issue_credit_target_id';
-  $handler->display->display_options['filters']['field_for_customer_target_id']['value']['value'] = '***CURRENT_ORGANIZATION***';
-  $handler->display->display_options['filters']['field_for_customer_target_id']['group'] = 2;
-  /* Filter criterion: Comment: Attribute this contribution (field_attribute_as_volunteer) */
-  $handler->display->display_options['filters']['field_attribute_as_volunteer_value']['id'] = 'field_attribute_as_volunteer_value';
-  $handler->display->display_options['filters']['field_attribute_as_volunteer_value']['table'] = 'field_data_field_attribute_as_volunteer';
-  $handler->display->display_options['filters']['field_attribute_as_volunteer_value']['field'] = 'field_attribute_as_volunteer_value';
-  $handler->display->display_options['filters']['field_attribute_as_volunteer_value']['relationship'] = 'field_issue_credit_target_id';
-  $handler->display->display_options['filters']['field_attribute_as_volunteer_value']['value'] = array(
-    0 => '0',
-  );
-  /* Filter criterion: Content: Last status change (field_issue_last_status_change) */
-  $handler->display->display_options['filters']['field_issue_last_status_change_value']['id'] = 'field_issue_last_status_change_value';
-  $handler->display->display_options['filters']['field_issue_last_status_change_value']['table'] = 'field_data_field_issue_last_status_change';
-  $handler->display->display_options['filters']['field_issue_last_status_change_value']['field'] = 'field_issue_last_status_change_value';
-  $handler->display->display_options['filters']['field_issue_last_status_change_value']['operator'] = '>=';
-  $handler->display->display_options['filters']['field_issue_last_status_change_value']['value']['value'] = '-1year';
-  $handler->display->display_options['filters']['field_issue_last_status_change_value']['value']['type'] = 'offset';
-  $handler->display->display_options['path'] = 'node/%/org-issue-credit-user-export';
-  $handler->display->display_options['displays'] = array(
-    'organization_user_issue_credit_page' => 'organization_user_issue_credit_page',
-    'default' => 0,
-    'user_recent' => 0,
-    'user_recent_page' => 0,
-    'page_1' => 0,
-    'organization_recent' => 0,
-    'organization_recent_page' => 0,
-    'organization_issue_credit_page' => 0,
-    'org_sa_recent' => 0,
-    'org_sa_credit_page' => 0,
-    'user_sa_recent' => 0,
-    'page_2' => 0,
-  );
+  $handler->display->display_options['path'] = 'u/%/sa-credits';
   $translatables['issue_credit'] = array(
     t('Master'),
     t('more'),
-- 
GitLab


From 0bd0824b29ac5b15b311685799cb33490a4daf4f Mon Sep 17 00:00:00 2001
From: Fran Garcia-Linares <fjgarlin@gmail.com>
Date: Thu, 27 Mar 2025 17:46:55 +0100
Subject: [PATCH 2/2] JS leftover.

---
 drupalorg/js/general.js | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/drupalorg/js/general.js b/drupalorg/js/general.js
index c951a3152..bb17c26cd 100644
--- a/drupalorg/js/general.js
+++ b/drupalorg/js/general.js
@@ -202,11 +202,13 @@
           }
           // If at organization… is checked, and no organizations are selected,
           // show a warning.
-          if ($notVolunteer.attr('checked') && !$organizations.length && !customers.length) {
-            $fieldset[0].querySelector('.empty-organizations').classList.remove('element-hidden');
-          }
-          else {
-            $fieldset[0].querySelector('.empty-organizations').classList.add('element-hidden');
+          if ($fieldset[0].querySelector('.empty-organizations') !== null) {
+            if ($notVolunteer.attr('checked') && !$organizations.length && !customers.length) {
+              $fieldset[0].querySelector('.empty-organizations').classList.remove('element-hidden');
+            }
+            else {
+              $fieldset[0].querySelector('.empty-organizations').classList.add('element-hidden');
+            }
           }
         });
       });
-- 
GitLab