diff --git a/module/VuFind/src/VuFind/Controller/RelaisController.php b/module/VuFind/src/VuFind/Controller/RelaisController.php
index d66afb60c230883295a9245fd298a270f44d2162..303c5fe8504f8afe65e186fa96fa8d6d163e9b42 100644
--- a/module/VuFind/src/VuFind/Controller/RelaisController.php
+++ b/module/VuFind/src/VuFind/Controller/RelaisController.php
@@ -62,13 +62,29 @@ class RelaisController extends AbstractBase
         $q = $this->params()->fromQuery('query');
         $url = $baseUrl . '?LS=' . urlencode($symbol)
             . '&dest=discovery&group=patron&PI='
-            . urlencode($patron['cat_username']);
+            . urlencode($this->getRelaisUserIdentifier($patron));
         if (!empty($q)) {
             $url .= '&query=' . rawurlencode($q);
         }
         return $this->redirect()->toUrl($url);
     }
 
+    /**
+     * Given patron data from the catalogLogin() method, return the appropriate
+     * identifer for use with Relais.
+     *
+     * @param array $patron Patron details
+     *
+     * @return string
+     */
+    protected function getRelaisUserIdentifier($patron)
+    {
+        // By default we assume the cat_username field provides the appropriate
+        // username... but if you have a more complex situation at your local
+        // institution, you can extend the controller and override this method.
+        return $patron['cat_username'];
+    }
+
     /**
      * Relais request action.
      *