diff --git a/docroot/sites/all/modules/registration/modules/registration_views/includes/registration_plugin_access_administer_registrations.inc b/docroot/sites/all/modules/registration/modules/registration_views/includes/registration_plugin_access_administer_registrations.inc
new file mode 100644
index 0000000000000000000000000000000000000000..c46b0ee6eca3c65998e5f52a7dfbc4447c252e4b
--- /dev/null
+++ b/docroot/sites/all/modules/registration/modules/registration_views/includes/registration_plugin_access_administer_registrations.inc
@@ -0,0 +1,145 @@
+<?php
+
+/**
+ * @file
+ * Definition of views_plugin_access_perm.
+ */
+
+/**
+ * Access plugin that provides permission-based access control.
+ *
+ * @ingroup views_access_plugins
+ */
+class registration_plugin_access_administer_registrations extends views_plugin_access {
+  function access($account) {
+    $entity = $this->tokenize_value($this->options['entity'], 0);
+    return registration_administer_registrations_access($this->options['entity_type'], (int)$entity, $account);
+  }
+
+  function get_access_callback() {
+    $entity = $this->tokenize_value($this->options['entity'], 0);
+    return array('registration_administer_registrations_access', array($this->options['entity_type'], (int)$entity));
+  }
+
+  function summary_title() {
+    return t('%entity_type with ID %entity', array('%entity_type' => $this->options['entity_type'], '%entity' => $this->options['entity']));
+  }
+
+  function option_definition() {
+    $options = parent::option_definition();
+    $options['entity_type'] = array('default' => NULL);
+    $options['entity'] = array('default' => NULL);
+
+    return $options;
+  }
+
+  function options_form(&$form, &$form_state) {
+    parent::options_form($form, $form_state);
+
+    $form['entity_type'] = array(
+      '#type' => 'textfield',
+      '#title' => t('Entity type'),
+      '#default_value' => $this->options['entity_type'],
+      '#required' => TRUE,
+      '#description' => t("The type of entity who's permission needs to be checked."),
+    );
+    $form['entity'] = array(
+      '#type' => 'textfield',
+      '#title' => t('Entity ID'),
+      '#default_value' => $this->options['entity'],
+      '#required' => TRUE,
+      '#description' => t("The entity ID of the entity who's permission needs to be checked."),
+    );
+
+    $count = 0; // This lets us prepare the key as we want it printed.
+    foreach ($this->view->display_handler->get_handlers('argument') as $arg => $handler) {
+      $options[t('Arguments')]['%' . ++$count] = t('@argument title', array('@argument' => $handler->ui_name()));
+      $options[t('Arguments')]['!' . $count] = t('@argument input', array('@argument' => $handler->ui_name()));
+    }
+
+    if (!empty($options)) {
+      $output = '<p>' . t('The following tokens are available. If you would like to have the characters \'[\' and \']\' please use the html entity codes \'%5B\' or  \'%5D\' or they will get replaced with empty space.' . '</p>');
+      foreach (array_keys($options) as $type) {
+        if (!empty($options[$type])) {
+          $items = array();
+          foreach ($options[$type] as $key => $value) {
+            $items[] = $key . ' == ' . $value;
+          }
+          $output .= theme('item_list',
+            array(
+              'items' => $items,
+              'type' => $type
+            ));
+        }
+      }
+
+      $form['token_help'] = array(
+        '#type' => 'fieldset',
+        '#title' => t('Replacement patterns'),
+        '#collapsible' => TRUE,
+        '#collapsed' => TRUE,
+        '#value' => $output,
+        '#id' => 'edit-options-token-help',
+        '#dependency' => array(
+          'edit-options-tokenize' => array(1),
+        ),
+        '#prefix' => '<div>',
+        '#suffix' => '</div>',
+      );
+    }
+  }
+
+  function options_validate(&$form, &$form_state) {
+    // @todo
+    if (FALSE && !$form_state['values']['entity_type']) {
+      form_error($form['entity_type'], t('You must enter a valid entity type.'));
+    }
+  }
+
+  /**
+   * Get the 'render' tokens to use for advanced rendering.
+   *
+   * This runs through all of the fields and arguments that
+   * are available and gets their values. This will then be
+   * used in one giant str_replace().
+   */
+  function get_render_tokens() {
+    $tokens = array();
+    if (!empty($this->view->build_info['substitutions'])) {
+      $tokens = $this->view->build_info['substitutions'];
+    }
+
+    $path = explode('/', $this->view->display_handler->get_option('path'));
+    $count = 0;
+    foreach ($path as $key => $piece) {
+      if (strpos($piece, '%') !== FALSE) {
+        $token = '%' . ++$count;
+        if (!isset($tokens[$token])) {
+          $tokens[$token] = '';
+        }
+
+        // Use strip tags as there should never be HTML in the path.
+        // However, we need to preserve special characters like " that
+        // were removed by check_plain().
+        $tokens['!' . $count] = $key;
+      }
+    }
+
+    return $tokens;
+  }
+
+  /**
+   * Replace a value with tokens from the last field.
+   */
+  function tokenize_value($value, $row_index = NULL) {
+    if (strpos($value, '[') !== FALSE || strpos($value, '!') !== FALSE || strpos($value, '%') !== FALSE) {
+      $tokens = $this->get_render_tokens();
+
+      $value = filter_xss_admin($value);
+      $value = strtr($value, $tokens);
+      $value = strip_tags($value);
+    }
+
+    return $value;
+  }
+}
diff --git a/docroot/sites/all/modules/registration/modules/registration_views/registration_views.info b/docroot/sites/all/modules/registration/modules/registration_views/registration_views.info
index 04cb81d4105e3a0c7d5e077134575fe041443763..f556afbc887f4e5ef6e47cc5f8d8f79bd705bd8c 100644
--- a/docroot/sites/all/modules/registration/modules/registration_views/registration_views.info
+++ b/docroot/sites/all/modules/registration/modules/registration_views/registration_views.info
@@ -17,6 +17,7 @@ files[] = includes/registration_handler_field_entity_capacity_total.inc
 files[] = includes/registration_handler_field_entity_datetime.inc
 files[] = includes/registration_handler_field_entity_settings_link.inc
 files[] = includes/registration_handler_field_entity_registration_status.inc
+files[] = includes/registration_plugin_access_administer_registrations.inc
 
 ; Information added by drupal.org packaging script on 2013-01-25
 version = "7.x-1.0"
diff --git a/docroot/sites/all/modules/registration/modules/registration_views/registration_views.module b/docroot/sites/all/modules/registration/modules/registration_views/registration_views.module
index c5921a2eabafa24be03191643bcad77cf5c70042..df5304a497482c33119eac004e7504f73dcb4297 100644
--- a/docroot/sites/all/modules/registration/modules/registration_views/registration_views.module
+++ b/docroot/sites/all/modules/registration/modules/registration_views/registration_views.module
@@ -5,6 +5,7 @@
  * Entity Registration Views integration
  */
 
+
 /**
  * Implements hook_views_api().
  */
@@ -16,6 +17,25 @@ function registration_views_views_api() {
 }
 
 /**
+ * Implements hook_views_plugins().
+ */
+function registration_views_views_plugins() {
+  $plugins = array(
+    'access' => array(
+      'administer_registrations' => array(
+        'title' => t('Administer registrations'),
+        'help' => t('Access will be granted to users with administer registrations access for a specified entity.'),
+        'handler' => 'registration_plugin_access_administer_registrations',
+        'uses options' => TRUE,
+        'help topic' => 'access-administer-registrations',
+      ),
+    ),
+  );
+
+  return $plugins;
+}
+
+/**
  * Implements hook_views_data().
  */
 function registration_views_views_data() {
diff --git a/docroot/sites/all/modules/registration/registration.module b/docroot/sites/all/modules/registration/registration.module
index dd7e678add0e407fb227215a1c630846019a5254..82ac7a60e43023101b1866c16f2f2b9f6921788e 100644
--- a/docroot/sites/all/modules/registration/registration.module
+++ b/docroot/sites/all/modules/registration/registration.module
@@ -474,6 +474,8 @@ function registration_register_page_access($entity_type, $entity) {
  *   The host entity type.
  * @param object $entity
  *   The host entity.
+ * @param object $account
+ *   (optional) The account to check, if not given use currently logged in user.
  *
  * @return bool
  *   Whether a user can view registrations for a host entity.
@@ -481,13 +483,22 @@ function registration_register_page_access($entity_type, $entity) {
  * @see registration_registrations_page()
  * @see registration_menu()
  */
-function registration_administer_registrations_access($entity_type, $entity) {
+function registration_administer_registrations_access($entity_type, $entity, $account = NULL) {
+  global $user;
+
+  if (is_numeric($entity)) {
+    $entity = entity_object_load($entity, $entity_type);
+  }
+  if (!isset($account)) {
+    $account = $user;
+  }
+
   $registration_type = registration_get_entity_registration_type($entity_type, $entity);
   if ($registration_type) {
-    if (user_access("administer $registration_type registration")) {
+    if (user_access("administer $registration_type registration", $account)) {
       return TRUE;
     }
-    elseif (user_access("administer own $registration_type registration") && entity_access('update', $entity_type, $entity)) {
+    elseif (user_access("administer own $registration_type registration", $account) && entity_access('update', $entity_type, $entity, $account)) {
       return TRUE;
     }
   }
