diff --git a/local/languages/de.ini b/local/languages/de.ini
index 5991e07331a5a6bfa248af41411f89c989ee4c15..b2a372c2da3c276fd4ea5373dcefb23bccdf1446 100644
--- a/local/languages/de.ini
+++ b/local/languages/de.ini
@@ -1933,6 +1933,8 @@ Wirtschaftswissenschaften = "Wirtschaftswissenschaften"
 #13402 Missing Translations in result-list
 Varying Title = "Alternativer Titel"
 Fulltext = "Volltext"
+Full Text = "Volltext"
+Further Information = "Weiterführende Informationen"
 Classification = "Klassifikation"
 Alternative Author Name = "Alternativer Autorenname"
 Alternative Corporate Name = "Körperschaftennamenalternative"
@@ -1975,17 +1977,15 @@ ReliefPrint = Druckgraphik
 
 ; Accessibility
 Modal_description = "Sie befinden sich in einem Dialogfenster, das über dem Hauptinhalt der Seiten liegt. Drücken Sie die Escape-Taste oder die Schaltfläche 'Dialogfenster schließen', um das Fenster zu schließen und auf der Hauptseite weiterzuarbeiten."
-
-; #17598
+Skip_navigation_links = "Sprunglinks zum Inhalt"
 Skip to search = "Zum Suchbereich"
+Skip to content = "Zum Inhalt"
+
 ; Overwrite, only in de.ini necessary:
 Search type = "Suchtyp"
 
 License = "Lizenz"
 
-; #17717
-Skip to content = "Zum Inhalt"
-
 fine_date_short = "Gebühr fällig"
 
 ; #17626
diff --git a/local/languages/en.ini b/local/languages/en.ini
index 9cf833274f01634dafb38e5eecb46a7fe1f04d95..b40a155ef597688a9f3d7dcec6fa4043352604a1 100644
--- a/local/languages/en.ini
+++ b/local/languages/en.ini
@@ -1022,6 +1022,8 @@ Find Similar Items = Find Similar Items
 Footnotes = Footnotes
 Form of address = Form of address
 Friday = Friday
+Full Text = "Full Text"
+Further Information = "Further information"
 Gender = Gender
 Help and information material = Help and information material
 Here = Here
@@ -2042,7 +2044,7 @@ Wirtschaftswissenschaften = "Business and Economics"
 
 ; #13402 Missing Translations in result-list
 Varying Title = "Varying Title"
-Fulltext = "Fulltext"
+Fulltext = "Full text"
 Classification = "Classification"
 Alternative Author Name = "Alternative Author Name"
 Alternative Corporate Name = "Alternative Corporate Name"
@@ -2079,16 +2081,13 @@ ReliefPrint = "Printmaking"
 
 ; Accessibility
 Modal_description = "This is a dialog window which overlays the main content of the page. Pressing the Escape key or the Close Dialog Window button will close the modal and bring you back to where you were on the page."
-
-; #17598
+Skip_navigation_links = "Skip navigation links"
 Skip to search = "Skip to search"
-
-License = "License"
-
-; #17717
 ; only necessary in en.ini
 skip-to = "Skip to "
 
+License = "License"
+
 fine_date_short = "Fine Date"
 
 ; #9016, #17375
diff --git a/module/fid/src/Controller/CustomTraits/FidAcquisitionTrait.php b/module/fid/src/Controller/CustomTraits/FidAcquisitionTrait.php
index 5fac446cd047102cfb5b59551b79465ae28a1dbd..4848298c75beb158f3545a67d06fc7a6b8ac1f04 100644
--- a/module/fid/src/Controller/CustomTraits/FidAcquisitionTrait.php
+++ b/module/fid/src/Controller/CustomTraits/FidAcquisitionTrait.php
@@ -34,7 +34,6 @@ use fid\Validator\SubitoPartialCopyPageBounds;
 use fid\Validator\SubitoPartialCopyPageSelection;
 use finc\View\Helper\Root\Citation;
 use Zend\Form\Form;
-use Zend\Http\PhpEnvironment\Request;
 
 /**
  * FID Acquisition Trait
@@ -51,6 +50,9 @@ trait FidAcquisitionTrait
      */
     protected $client;
 
+    protected $type;
+    protected $formConfig = "fid-acquisition-form";
+
     /**
      * @param Client $client
      */
@@ -59,103 +61,27 @@ trait FidAcquisitionTrait
         $this->client = $client;
     }
 
-    public function fidPdaAction ()
+    public function fidPdaAction()
     {
-        if (!($user = $this->getUser())) {
-            return $this->forceLogin();
-        }
-
-        /** @var User $user */
-        $user = $this->client->requestUserDetails();
-
-        if ($user->hasPermission('limited_access')) {
-            $type = "pda";
-            $driver = $this->loadRecord();
-            $recordId = $driver->tryMethod('getUniqueID');
-            $messenger = $this->flashMessenger();
-
-            /** @var Form $form */
-            /** @var Request $request */
-            $request = $this->getRequest();
-            $form = $this->serviceLocator->get('fid-acquisition-form');
-
-            if ($submitted = $this->formWasSubmitted()) {
-                $form->setData($request->getPost());
-                if ($form->isValid()) {
-                    $url = $this->getRecordUrl($recordId);
-                    $label = $this->getOrderLabel($driver);
-                    $form->getHydrator()->hydrate(compact('driver','user', 'type','url','label'), $order = new Order());
-                    $response = $this->client->requestOrderCreation($order);
-                    $message = $this->translate('fid::acquisition_success');
-                    $messenger->addSuccessMessage($message);
-                    return $this->redirect()->toRoute('record',['id' => $recordId]);
-                }
-            }
-
-            $action = $this->url()->fromRoute('record-fidpda',['id' => $recordId]);
-            $form->setAttribute('action', $action);
-            $form->prepare();
-
-            $view = $this->createViewModel();
-            $view->setVariables(compact('form','driver','user'));
-            $view->setTemplate('fid/record/acquisition-pda');
-        }
-        else {
-            $view = $this->getPermissionDeniedView();
-        }
-
-        return $view;
+        $this->type = self::PDA;
+        return $this->runAcquisition();
     }
 
-    public function fidSubitoArticleAction () {
-
-        if (!($user = $this->getUser())) {
-            return $this->forceLogin();
-        }
-
-        /** @var User $user */
-        $user = $this->client->requestUserDetails();
-
-        if ($user->hasPermission('limited_access')) {
-            $type = "subito-article";
-            $driver = $this->loadRecord();
-            $recordId = $driver->tryMethod('getUniqueID');
-            $messenger = $this->flashMessenger();
-
-            /** @var Form $form */
-            /** @var Request $request */
-            $request = $this->getRequest();
-            $form = $this->serviceLocator->get('fid-acquisition-form');
-
-            if ($submitted = $this->formWasSubmitted()) {
-                $form->setData($request->getPost());
-                if ($form->isValid()) {
-                    $url = $this->getRecordUrl($recordId);
-                    $label = $this->getOrderLabel($driver);
-                    $form->getHydrator()->hydrate(compact('driver', 'user', 'type', 'url', 'label'), $order = new Order());
-                    $response = $this->client->requestOrderCreation($order);
-                    $message = $this->translate('fid::acquisition_success');
-                    $messenger->addSuccessMessage($message);
-                    return $this->redirect()->toRoute('record', ['id' => $recordId]);
-                }
-            }
-
-            $action = $this->url()->fromRoute('record-fidsubitoarticle', ['id' => $recordId]);
-            $form->setAttribute('action', $action);
-            $form->prepare();
-
-            $view = $this->createViewModel();
-            $view->setVariables(compact('form', 'driver', 'user'));
-            $view->setTemplate('fid/record/acquisition-subito-article');
-        }
-        else {
-            $view = $this->getPermissionDeniedView();
-        }
+    public function fidSubitoArticleAction()
+    {
+        $this->type = self::SUBITO_ARTICLE;
+        return $this->runAcquisition();
+    }
 
-        return $view;
+    public function fidSubitoPartialCopyAction()
+    {
+        $this->type = self::SUBITO_PARTIAL_COPY;
+        $this->formConfig = ('fid-acquisition-subito-partial-copy-form');
+        return $this->runAcquisition();
     }
 
-    public function fidSubitoPartialCopyAction () {
+    protected function runAcquisition()
+    {
         if (!($user = $this->getUser())) {
             return $this->forceLogin();
         }
@@ -164,65 +90,56 @@ trait FidAcquisitionTrait
         $user = $this->client->requestUserDetails();
 
         if ($user->hasPermission('limited_access')) {
-            $type = "subito-partial-copy";
             $driver = $this->loadRecord();
             $recordId = $driver->tryMethod('getUniqueID');
-            $messenger = $this->flashMessenger();
 
             /** @var Form $form */
-            /** @var Request $request */
-            $request = $this->getRequest();
-            $form = $this->serviceLocator->get('fid-acquisition-subito-partial-copy-form');
+            $form = $this->serviceLocator->get($this->formConfig);
 
-            // add number of pages specific validators
-            $recordPages = $driver->tryMethod('getNumberOfPages');
-            if ($recordPages) {
-                $form->getInputFilter()->get('pages')->getValidatorChain()->attach(
-                    new SubitoPartialCopyPageBounds(['numberPages' => $recordPages]),
-                    true
-                );
-                $form->getInputFilter()->get('pages')->getValidatorChain()->attach(
-                    new SubitoPartialCopyPageSelection(['numberPages' => $recordPages])
-                );
-            }
+            $this->addOptinalFormValidators($form);
 
-            if ($submitted = $this->formWasSubmitted()) {
-                $form->setData($request->getPost());
+            if ($this->formWasSubmitted()) {
+                $form->setData($this->getRequest()->getPost());
                 if ($form->isValid()) {
                     $url = $this->getRecordUrl($recordId);
                     $label = $this->getOrderLabel($driver);
-                    $subitoPartialCopy = [
-                        'selection' => $form->getData()['pages'],
-                        'comment' => $form->getData()['comment']
-                    ];
-                    $form->getHydrator()->hydrate(compact('driver', 'user', 'type', 'url', 'label', 'subitoPartialCopy'), $order = new Order());
+                    $type = $this->type;
+                    $hydratorData = compact('type', 'driver', 'user', 'url', 'label');
+                    $hydratorData += $this->addTypeSpecificOrderInformation($form);
+                    $form->getHydrator()->hydrate($hydratorData, $order = new Order());
                     $this->client->requestOrderCreation($order);
                     $message = $this->translate('fid::acquisition_success');
+                    $messenger = $this->flashMessenger();
                     $messenger->addSuccessMessage($message);
                     return $this->redirect()->toRoute('record', ['id' => $recordId]);
+                } else {
+                    $this->handleOptionalErrorMessages($form);
                 }
             }
 
-            $action = $this->url()->fromRoute('record-fidsubitopartialcopy', ['id' => $recordId]);
+            $typeWithoutHyphens = preg_replace("/[^a-zA-Z]+/", "", $this->type);
+            $action = $this->url()->fromRoute("record-fid$typeWithoutHyphens", ['id' => $recordId]);
             $form->setAttribute('action', $action);
             $form->prepare();
 
             $view = $this->createViewModel();
             $view->setVariables(compact('form', 'driver', 'user'));
-            $view->setTemplate('fid/record/acquisition-subito-partial-copy');
-        }
-        else {
+            $view->setTemplate("fid/record/acquisition-$this->type");
+        } else {
             $view = $this->getPermissionDeniedView();
         }
 
         return $view;
     }
 
-    function getRecordUrl($recordId) {
-        return $this->url()->fromRoute('record',['id' => $recordId], ['force_canonical' => true]);
+    protected function getRecordUrl($recordId)
+    {
+        return $this->url()->fromRoute('record', ['id' => $recordId], ['force_canonical' => true]);
     }
 
-    function getRecordCitation($driver) {
+    protected function getRecordCitation()
+    {
+        $driver = $this->loadRecord();
         /** @var Citation $helper */
         $helper = $this->getViewRenderer()->plugin('citation');
         $helper->__invoke($driver);
@@ -231,20 +148,56 @@ trait FidAcquisitionTrait
         $formats = array_intersect($priorityFormats, $existingFormats);
         if (!empty($formats)) {
             return $helper->getCitation($formats[0]);
-        }
-        else {
+        } else {
             return $driver->tryMethod('getTitle');
         }
     }
 
-    function getOrderLabel ($driver) {
-        return $driver->tryMethod('getTitle');
+    protected function getOrderLabel()
+    {
+        return $this->loadRecord()->tryMethod('getTitle');
     }
 
-    function getPermissionDeniedView() {
+    protected function getPermissionDeniedView()
+    {
         $view = $this->createViewModel();
         $view->setVariables(['msg' => "fid::acquisition_permission_denied"]);
         $view->setTemplate('error/permissiondenied.phtml');
         return $view;
     }
+
+    protected function addOptinalFormValidators($form)
+    {
+        if ($this->type == self::SUBITO_PARTIAL_COPY) {
+            // add number of pages specific validators
+            $recordPages = $this->loadRecord()->tryMethod('getNumberOfPages');
+            if ($recordPages) {
+                $form->getInputFilter()->get('pages')->getValidatorChain()->attach(
+                    new SubitoPartialCopyPageBounds(['numberPages' => $recordPages]),
+                    true
+                );
+                $form->getInputFilter()->get('pages')->getValidatorChain()->attach(
+                    new SubitoPartialCopyPageSelection(['numberPages' => $recordPages])
+                );
+            }
+        }
+    }
+
+    protected function addTypeSpecificOrderInformation($form)
+    {
+        $data = [];
+        if ($this->type == self::SUBITO_PARTIAL_COPY) {
+            $data += [
+                'subitoPartialCopy' => [
+                    'selection' => $form->getData()['pages'],
+                    'comment' => $form->getData()['comment']
+                ]
+            ];
+        }
+        return $data;
+    }
+
+    protected function handleOptionalErrorMessages($form)
+    {
+    }
 }
diff --git a/module/fid/src/Controller/RecordController.php b/module/fid/src/Controller/RecordController.php
index 0bd3d654f768c0658db12d129c4b729ff0829426..76d5d21c62a778bc181676ea991f49976e8a70ab 100644
--- a/module/fid/src/Controller/RecordController.php
+++ b/module/fid/src/Controller/RecordController.php
@@ -31,4 +31,8 @@ class RecordController extends \finc\Controller\RecordController
     use CustomTraits\FidAcquisitionTrait;
 
     const PAGE_RANGE_PATTERN = '/^(0|[1-9]\d*)-([1-9]\d*)$/';
+
+    const PDA = "pda";
+    const SUBITO_ARTICLE = "subito-article";
+    const SUBITO_PARTIAL_COPY = "subito-partial-copy";
 }
diff --git a/module/fid/src/Hydrator/OrderHydrator.php b/module/fid/src/Hydrator/OrderHydrator.php
index 9edb7e79d937b346cf5298d39db0f31e58465fd3..ba97e3975c2048f9839cda456b0b5fec99d83146 100644
--- a/module/fid/src/Hydrator/OrderHydrator.php
+++ b/module/fid/src/Hydrator/OrderHydrator.php
@@ -32,7 +32,8 @@ class OrderHydrator extends AbstractHydrator {
         /* Collect needed record data */
         $id = $driver->tryMethod('getUniqueID');
         $title = $driver->tryMethod('getTitle');
-        $publicationDetails = $this->toArray( $driver->tryMethod('getPublicationDetails')[0] );
+        $pdetails = $driver->tryMethod('getPublicationDetails');
+        $publicationDetails = $this->toArray(!empty($pdetails) ? $pdetails[0] : null);
         $authors = $driver->tryMethod('getDeduplicatedAuthors');
         $primaryAuthor = $driver->tryMethod('getPrimaryAuthor');
         $secondaryAuthors = $driver->tryMethod('getSecondaryAuthors');
@@ -49,6 +50,10 @@ class OrderHydrator extends AbstractHydrator {
                 ? $publishedIn['issue'] : implode(', ', $publishedIn['issue']);
         }
 
+        if (empty($publishedIn['issns'])) {
+            $publishedIn['issns'] = [""];
+        }
+
         $record = compact(
             'id',
             'title',
diff --git a/module/fid/src/View/Helper/Root/GetIt.php b/module/fid/src/View/Helper/Root/GetIt.php
index 263687c840f6ad6b780d7a619739296e5746ba82..df73259aa95f6583d473181a31137eb7f4eb1e8c 100644
--- a/module/fid/src/View/Helper/Root/GetIt.php
+++ b/module/fid/src/View/Helper/Root/GetIt.php
@@ -152,7 +152,7 @@ class GetIt extends AbstractHelper
     private function _getNonSourceIds($value)
     {
         $sids = $this->config->NonSourceIds;
-        return isset($sids->$value) ? $sids->$value : '';
+        return $sids->$value ?? '';
     }
 
     /**
@@ -168,6 +168,7 @@ class GetIt extends AbstractHelper
         $accordeonHeadline = $this->accordeonHeadlineDefault;
         $boxHeadline = $this->translate('Get it');
         $notice = $this->translate('getit_text_default');
+        $noticeWithLink = null;
         $showLinks = true;
         $showOrderButton = false;
         $showPartCopyButton = false;
@@ -179,9 +180,8 @@ class GetIt extends AbstractHelper
 
         // let specific functions override defaults where necessary
         foreach ($this->sids as $sid_config) {
-            if (in_array($this->sid, $sid = $this->_getSourceIds($sid_config)))
-            {
-                $foo = 'get_config_'.$sid_config;
+            if (in_array($this->sid, $sid = $this->_getSourceIds($sid_config))) {
+                $foo = 'get_config_' . $sid_config;
                 $this->$foo(
                     $accordeonColor,
                     $accordeonHeadline,
@@ -194,10 +194,10 @@ class GetIt extends AbstractHelper
                     $bossData,
                     $isEBCEBooks,
                     $hideNotice,
-                    $isAiSidRecord
+                    $isAiSidRecord,
+                    $noticeLinkType
                 );
-                if ($this->sid !== '0')
-                {
+                if ($this->sid !== '0') {
                     //special case for source ID 0
                     // this is th only SID that is contained in multiple configs (V8 + V9)
                     break;
@@ -216,7 +216,8 @@ class GetIt extends AbstractHelper
             'bossData',
             'isEBCEBooks',
             'hideNotice',
-            'isAiSidRecord'
+            'isAiSidRecord',
+            'noticeLinkType'
         );
     }
 
@@ -235,6 +236,7 @@ class GetIt extends AbstractHelper
      * @param $isEBCEBooks          boolean is given record UBL-FID-EBC
      * @param $hideNotice           boolean hide notice
      * @param $isAiSidRecord        boolean is given record an ai record
+     * @param $noticeLinkType       string type of link
      */
     public function get_config_source_idsV1(
         &$accordeonColor,
@@ -248,9 +250,9 @@ class GetIt extends AbstractHelper
         &$bossData,
         &$isEBCEBooks,
         &$hideNotice,
-        &$isAiSidRecord
-    )
-    {
+        &$isAiSidRecord,
+        &$noticeLinkType
+    ) {
         $accordeonColor = $this->accordeonColorAlternative;
         $accordeonHeadline = $this->accordeonHeadlineAlternative;
         $notice = $this->translate('getit_text_1');
@@ -271,6 +273,7 @@ class GetIt extends AbstractHelper
      * @param $isEBCEBooks          boolean is given record UBL-FID-EBC
      * @param $hideNotice           boolean hide notice
      * @param $isAiSidRecord        boolean is given record an ai record
+     * @param $noticeLinkType       string type of link
      */
     public function get_config_source_idsV3(
         &$accordeonColor,
@@ -284,9 +287,9 @@ class GetIt extends AbstractHelper
         &$bossData,
         &$isEBCEBooks,
         &$hideNotice,
-        &$isAiSidRecord
-    )
-    {
+        &$isAiSidRecord,
+        &$noticeLinkType
+    ) {
         $accordeonColor = $this->accordeonColorAlternative;
         $accordeonHeadline = $this->accordeonHeadlineAlternative;
         $boxHeadline = $this->fidClient->isLoggedOn() ? $this->translate('Get it') : $this->translate('getit_logged_not');
@@ -311,6 +314,7 @@ class GetIt extends AbstractHelper
      * @param $isEBCEBooks          boolean is given record UBL-FID-EBC
      * @param $hideNotice           boolean hide notice
      * @param $isAiSidRecord        boolean is given record an ai record
+     * @param $noticeLinkType       string type of link
      */
     public function get_config_source_idsV4(
         &$accordeonColor,
@@ -324,11 +328,16 @@ class GetIt extends AbstractHelper
         &$bossData,
         &$isEBCEBooks,
         &$hideNotice,
-        &$isAiSidRecord
-    )
-    {
+        &$isAiSidRecord,
+        &$noticeLinkType
+    ) {
         $boxHeadline = $this->fidClient->isLoggedOn() ? $this->translate('Get it') : $this->translate('getit_logged_not');
-        $notice = $this->fidClient->isLoggedOn() ? $this->translate('getit_text_12') : $this->translate('getit_text_2');
+        if ($this->fidClient->isLoggedOn()) {
+            $notice = $this->translate('getit_text_12');
+        } else {
+            $notice = $this->translate('getit_text_2');
+            $noticeLinkType = "register";
+        }
         $showOrderButton = isset($this->config->Permission->allowPDA) ?
             $this->config->Permission->allowPDA : true;
     }
@@ -348,6 +357,7 @@ class GetIt extends AbstractHelper
      * @param $isEBCEBooks          boolean is given record UBL-FID-EBC
      * @param $hideNotice           boolean hide notice
      * @param $isAiSidRecord        boolean is given record an ai record
+     * @param $noticeLinkType       string type of link
      */
     public function get_config_source_idsV5(
         &$accordeonColor,
@@ -361,14 +371,29 @@ class GetIt extends AbstractHelper
         &$bossData,
         &$isEBCEBooks,
         &$hideNotice,
-        &$isAiSidRecord
-    )
-    {
+        &$isAiSidRecord,
+        &$noticeLinkType
+    ) {
+        $limited_access = false;
+        if ($this->fidClient->isLoggedOn()) {
+            $limited_access = $this->fidClient->requestUserDetails()->hasPermission('limited_access');
+        }
+
         $accordeonColor = $this->accordeonColorAlternative;
         $accordeonHeadline = $this->accordeonHeadlineAlternative;
-        $notice = !$this->fidClient->isLoggedOn() ? $this->translate('getit_text_3_1') : $this->translate('getit_text_13');
+        if ($this->fidClient->isLoggedOn()) {
+            if ($limited_access) {
+                $notice = $this->translate('getit_text_13');
+            } else {
+                $notice = $this->translate('getit_text_13b_1');
+                $noticeLinkType = "contact";
+            }
+        } else {
+            $notice = $this->translate('getit_text_3_1');
+            $noticeLinkType = "register";
+        }
         $boxHeadline = $this->fidClient->isLoggedOn() ? $this->translate('Get it') : $this->translate('getit_logged_not');
-        $showLinks = $this->fidClient->isLoggedOn();
+        $showLinks = $this->fidClient->isLoggedOn() && $limited_access;
     }
 
     /**
@@ -386,6 +411,7 @@ class GetIt extends AbstractHelper
      * @param $isEBCEBooks          boolean is given record UBL-FID-EBC
      * @param $hideNotice           boolean hide notice
      * @param $isAiSidRecord        boolean is given record an ai record
+     * @param $noticeLinkType       string type of link
      */
     public function get_config_source_idsV6(
         &$accordeonColor,
@@ -399,9 +425,9 @@ class GetIt extends AbstractHelper
         &$bossData,
         &$isEBCEBooks,
         &$hideNotice,
-        &$isAiSidRecord
-    )
-    {
+        &$isAiSidRecord,
+        &$noticeLinkType
+    ) {
         $notice = $this->translate('getit_text_4');
     }
 
@@ -420,6 +446,7 @@ class GetIt extends AbstractHelper
      * @param $isEBCEBooks          boolean is given record UBL-FID-EBC
      * @param $hideNotice           boolean hide notice
      * @param $isAiSidRecord        boolean is given record an ai record
+     * @param $noticeLinkType       string type of link
      */
     public function get_config_source_idsV7(
         &$accordeonColor,
@@ -433,9 +460,9 @@ class GetIt extends AbstractHelper
         &$bossData,
         &$isEBCEBooks,
         &$hideNotice,
-        &$isAiSidRecord
-    )
-    {
+        &$isAiSidRecord,
+        &$noticeLinkType
+    ) {
         $accordeonColor = $this->accordeonColorAlternative;
         $accordeonHeadline = $this->accordeonHeadlineAlternative;
         $notice = $this->translate('getit_text_5');
@@ -456,6 +483,7 @@ class GetIt extends AbstractHelper
      * @param $isEBCEBooks          boolean is given record UBL-FID-EBC
      * @param $hideNotice           boolean hide notice
      * @param $isAiSidRecord        boolean is given record an ai record
+     * @param $noticeLinkType       string type of link
      */
     public function get_config_source_idsV8(
         &$accordeonColor,
@@ -469,9 +497,9 @@ class GetIt extends AbstractHelper
         &$bossData,
         &$isEBCEBooks,
         &$hideNotice,
-        &$isAiSidRecord
-    )
-    {
+        &$isAiSidRecord,
+        &$noticeLinkType
+    ) {
         //accordeon
         if (in_array('Free', $this->facetAvail)) {
             $accordeonHeadline = $this->accordeonHeadlineAlternative;
@@ -491,8 +519,7 @@ class GetIt extends AbstractHelper
             && preg_grep($this->_getNonSourceIds('source_idsV8_8'), $this->format)
         ) {
             $isLogin = true;
-        }
-        elseif (in_array('Local', $this->facetAvail)
+        } elseif (in_array('Local', $this->facetAvail)
             && ((preg_grep($this->_getNonSourceIds('source_idsV8_1'), $this->format)
                     && !in_array($this->_getNonSourceIds('source_idsV8_9'), $this->institution))
                 || preg_grep($this->_getNonSourceIds('source_idsV8_3'), $this->format)
@@ -517,35 +544,30 @@ class GetIt extends AbstractHelper
                 } else {
                     $notice = $this->translate('getit_text_13');
                 }
-            }
-            elseif ($this->isCollection) {
-                $notice = $this->translate('getit_text_11',['%%hierarchy_tree%%' => $this->translate('hierarchy_tree')]);
-            }
-            elseif (preg_grep($this->_getNonSourceIds('source_idsV8_7'), $this->megacollection)
+            } elseif ($this->isCollection) {
+                $notice = $this->translate('getit_text_11', ['%%hierarchy_tree%%' => $this->translate('hierarchy_tree')]);
+            } elseif (preg_grep($this->_getNonSourceIds('source_idsV8_7'), $this->megacollection)
             ) {
                 $notice = $this->translate('getit_text_1');
-            }
-            elseif (in_array('Local', $this->facetAvail)
+            } elseif (in_array('Local', $this->facetAvail)
                 && (preg_grep($this->_getNonSourceIds('source_idsV8_1'), $this->format)
                     || preg_grep($this->_getNonSourceIds('source_idsV8_3'), $this->format))
             ) {
                 if (!$this->fidClient->isLoggedOn()) {
                     $notice = $this->translate('getit_text_10');
+                    $noticeLinkType = "register";
                 } elseif (preg_grep($this->_getNonSourceIds('source_idsV8_3'), $this->format)) {
                     $notice = $this->translate('getit_text_14');
                 } else {
                     $notice = '';
                 }
-            }
-            elseif (in_array('Local', $this->facetAvail)
+            } elseif (in_array('Local', $this->facetAvail)
                 && preg_grep($this->_getNonSourceIds('source_idsV8_2'), $this->format)
             ) {
                 $notice = $this->translate('getit_text_8');
-            }
-            elseif (in_array('Free', $this->facetAvail)) {
+            } elseif (in_array('Free', $this->facetAvail)) {
                 $notice = $this->translate('getit_text_1');
-            }
-            elseif (in_array('Online', $this->facetAvail)
+            } elseif (in_array('Online', $this->facetAvail)
                 && (preg_grep($this->_getNonSourceIds('source_idsV8_5'), $this->format)
                     || preg_grep($this->_getNonSourceIds('source_idsV8_6'), $this->format))
             ) {
@@ -555,12 +577,13 @@ class GetIt extends AbstractHelper
             ) {
                 if (!$this->fidClient->isLoggedOn()) {
                     $notice = $this->translate('getit_text_10');
+                    $noticeLinkType = "register";
                 } else {
                     $notice = $this->translate('getit_text_15');
                 }
             }
         } elseif ($this->isCollection) {
-            $notice = $this->translate('getit_text_11',['%%hierarchy_tree%%' => $this->translate('hierarchy_tree')]);
+            $notice = $this->translate('getit_text_11', ['%%hierarchy_tree%%' => $this->translate('hierarchy_tree')]);
         } elseif (in_array('Local', $this->facetAvail)
             && preg_grep($this->_getNonSourceIds('source_idsV8_2'), $this->format)
         ) {
@@ -568,6 +591,7 @@ class GetIt extends AbstractHelper
         } elseif (in_array('Local', $this->facetAvail)) {
             if (!$this->fidClient->isLoggedOn()) {
                 $notice = $this->translate('getit_text_10');
+                $noticeLinkType = "register";
             } elseif (preg_grep($this->_getNonSourceIds('source_idsV8_3'), $this->format)) {
                 $notice = $this->translate('getit_text_14');
             } elseif (!preg_grep($this->_getNonSourceIds('source_idsV8_10'), $this->format)) {
@@ -585,6 +609,7 @@ class GetIt extends AbstractHelper
         ) {
             if (!$this->fidClient->isLoggedOn()) {
                 $notice = $this->translate('getit_text_10');
+                $noticeLinkType = "register";
             } else {
                 $notice = $this->translate('getit_text_15');
             }
@@ -611,8 +636,7 @@ class GetIt extends AbstractHelper
         //END bossData
         //hideNotice
         if ($this->fidClient->isLoggedOn()) {
-            if (in_array('Local', $this->facetAvail))
-            {
+            if (in_array('Local', $this->facetAvail)) {
                 if (preg_grep($this->_getNonSourceIds('source_idsV8_1'), $this->format)
                     && empty($this->isbn)
                     && !preg_grep($this->_getNonSourceIds('source_idsV8_9'), $this->institution)
@@ -643,6 +667,7 @@ class GetIt extends AbstractHelper
      * @param $isEBCEBooks          boolean is given record UBL-FID-EBC
      * @param $hideNotice           boolean hide notice
      * @param $isAiSidRecord        boolean is given record an ai record
+     * @param $noticeLinkType       string type of link
      */
     public function get_config_source_idsV9(
         &$accordeonColor,
@@ -656,9 +681,9 @@ class GetIt extends AbstractHelper
         &$bossData,
         &$isEBCEBooks,
         &$hideNotice,
-        &$isAiSidRecord
-    )
-    {
+        &$isAiSidRecord,
+        &$noticeLinkType
+    ) {
         //accordeon
         if (preg_grep($this->_getNonSourceIds('source_idsV8_8'), $this->collection)
             || preg_grep($this->_getNonSourceIds('source_idsV8_7'), $this->megacollection)
@@ -710,6 +735,7 @@ class GetIt extends AbstractHelper
      * @param $isEBCEBooks          boolean is given record UBL-FID-EBC
      * @param $hideNotice           boolean hide notice
      * @param $isAiSidRecord        boolean is given record an ai record
+     * @param $noticeLinkType       string type of link
      */
     public function get_config_source_idsV10(
         &$accordeonColor,
@@ -723,9 +749,9 @@ class GetIt extends AbstractHelper
         &$bossData,
         &$isEBCEBooks,
         &$hideNotice,
-        &$isAiSidRecord
-    )
-    {
+        &$isAiSidRecord,
+        &$noticeLinkType
+    ) {
         $accordeonColor = $this->accordeonColorAlternative;
         $accordeonHeadline = $this->accordeonHeadlineAlternative;
         $notice = $this->translate('getit_text_6');
@@ -746,6 +772,7 @@ class GetIt extends AbstractHelper
      * @param $isEBCEBooks          boolean is given record UBL-FID-EBC
      * @param $hideNotice           boolean hide notice
      * @param $isAiSidRecord        boolean is given record an ai record
+     * @param $noticeLinkType       string type of link
      */
     public function get_config_source_idsV11(
         &$accordeonColor,
@@ -759,9 +786,9 @@ class GetIt extends AbstractHelper
         &$bossData,
         &$isEBCEBooks,
         &$hideNotice,
-        &$isAiSidRecord
-    )
-    {
+        &$isAiSidRecord,
+        &$noticeLinkType
+    ) {
         $notice = $this->translate('getit_text_7');
     }
 
diff --git a/module/finc/src/finc/RecordDriver/SolrMarcFincTrait.php b/module/finc/src/finc/RecordDriver/SolrMarcFincTrait.php
index 803e6d9aad71764e643146ef4d3a3406ac72ac4b..aaed7e69ea8d14b22fee441e0c217fe7fb5160aa 100644
--- a/module/finc/src/finc/RecordDriver/SolrMarcFincTrait.php
+++ b/module/finc/src/finc/RecordDriver/SolrMarcFincTrait.php
@@ -129,15 +129,12 @@ trait SolrMarcFincTrait
                             $tmpArr = array_unique($tmpArr);
                             $desc = implode(', ', $tmpArr);
 
-                            // If no description take url as description
-                            // For 856[40] url denoting resource itself
-                            // use "Online Access"/"Online-Zugang" #6109
+                            // #18129 for 856[40] url denoting resource itself
                             if (empty($desc)) {
-                                if ($indicator1 == 4
-                                    && $indicator2 == 0
-                                    && preg_match('!https?://.*?doi.org/!', $address)
-                                ) {
-                                    $desc = "Online Access";
+                                if ($indicator2 == 0) {
+                                    $desc = "Full Text";
+                                } elseif ($indicator2 == 2) {
+                                    $desc = "Further Information";
                                 } else {
                                     $desc = $address;
                                 }
diff --git a/themes/fid/languages/fid/de.ini b/themes/fid/languages/fid/de.ini
index d0ffa82fed491360dbfcdf8394db75ace61cf524..2459aaded65f50cd1745fc33023f01d53b6aff3c 100644
--- a/themes/fid/languages/fid/de.ini
+++ b/themes/fid/languages/fid/de.ini
@@ -121,6 +121,7 @@ read_order_list_not_allowed = "Sie haben keine Berechtigung die Bestellliste ein
 user_edit_form_title = "Nutzerdaten ändern für <em>%%username%%</em> (ID %%userid%%)"
 
 user_edit = "Nutzer %%userid%% bearbeiten"
+user_deleted = "Gelöschter Nutzer"
 
 permission_read_user_list = "Liste aller Nutzer einsehen"
 permission_edit_user = "Daten anderer Nutzer bearbeiten"
diff --git a/themes/fid/languages/fid/en.ini b/themes/fid/languages/fid/en.ini
index c511b01b33af51c737bcfff70447676216f3e15b..d8af96da20a412c9e1fe22827a542002c40f240a 100644
--- a/themes/fid/languages/fid/en.ini
+++ b/themes/fid/languages/fid/en.ini
@@ -119,6 +119,7 @@ read_order_list_not_allowed = "You are not entitled to read the order list"
 user_edit_form_title = "Edit user data of <em>%%username%%</em> (ID %%userid%%)"
 
 user_edit = "Edit user %%userid%%"
+user_deleted = "Deleted user"
 
 permission_read_user_list = "Read list of all users"
 permission_edit_user = "Edit other user's data"
diff --git a/themes/fid/templates/fid/user/admin-orders.phtml b/themes/fid/templates/fid/user/admin-orders.phtml
index c4042701c89bdc77c6e574438a46f69de58c9580..3caca066e03db0a678264b53d1d15f7cab8c689b 100644
--- a/themes/fid/templates/fid/user/admin-orders.phtml
+++ b/themes/fid/templates/fid/user/admin-orders.phtml
@@ -25,8 +25,11 @@
         <td>
           <?php
           /** @var \fid\Service\DataTransferObject\User $user */
-          $user = $order->getUser(); ?>
-          <?= $user->getFirstname() ?> <?= $user->getLastname() ?>
+          if ($user = $order->getUser()) : ?>
+            <?= $user->getFirstname() ?> <?= $user->getLastname() ?>
+          <?php else: ?>
+            <?= $this->translate('fid::user_deleted') ?>
+          <?php endif; ?>
         </td>
         <!-- fid: fid - admin - order-list - data - END -->
 
diff --git a/themes/finc/scss/compiled.scss b/themes/finc/scss/compiled.scss
index acf94c5a8cba1fbd877cf2544ac1292545127dbb..4002602036c026a1ebbed2c644858620fd086f39 100644
--- a/themes/finc/scss/compiled.scss
+++ b/themes/finc/scss/compiled.scss
@@ -587,11 +587,13 @@ select {
 a.toggle {
   color: inherit;
   text-decoration: inherit;
+
   &:active,
   &:focus,
   &:hover {
     text-decoration: inherit;
   }
+
   &::after {
     font-family: 'FontAwesome';
     content: $fa-var-angle-down;
@@ -604,9 +606,11 @@ span.notation ul {
   @media (max-width: $screen-md-min) {
     padding-inline-start: 0;
   }
+
   li {
     list-style-type: none;
   }
+
   li:before {
     margin-right: 0.5em;
     font-family: 'FontAwesome';
@@ -1600,6 +1604,19 @@ header,
   > .active a {
     color: darken($breadcrumb-active-color, 10%);
   }
+  
+  //// more contrast: switch the colors
+  a:focus,
+  a:hover {
+    background-color: $breadcrumb-color;
+    color: $breadcrumb-bg;
+  }
+}
+
+////// Prevent overlapping of header on breadcrumb on 100% zoom on advanced search result list
+////// (works only correctly for one line in cell "Your search terms") 
+.template-dir-search.template-name-results .search .navbar-form {
+  margin-bottom: 5px;
 }
 
 // BREADCRUMBS - END
@@ -2523,6 +2540,28 @@ footer ul {
 
 // Bookbag - END
 
+// Result List
+
+.result-links {
+  // Favorites list in MyAccount
+  .edit.tool,
+  .del-button {
+    a {
+      margin-top: 1em;
+
+      @media (max-width: $screen-sm-max) {
+        margin-top: 0;
+      }
+    }
+
+    li a {
+      margin-top: 0;
+    }
+  }
+}
+
+// Result List - END
+
 // Translate feature (Admin panel)
 #set-translation-form {
   margin-top: 2em;
@@ -2755,6 +2794,15 @@ input {
   }
 }
 
+// Delete dropdown in favorites list
+.open > .dropdown-menu {
+  .template-dir-myresearch.template-name-mylist .result-links & {
+    float: none;
+    position: relative;
+  }
+}
+
+
 // AMSL
 
 .template-dir-amsl.template-name-sources-list {
diff --git a/themes/finc/templates/RecordDriver/DefaultRecord/list-entry.phtml b/themes/finc/templates/RecordDriver/DefaultRecord/list-entry.phtml
index 851e6ce67f152deece86b95d811e2bae4c7ddfd9..991ba371499a349bff31bede9361361cf666133e 100644
--- a/themes/finc/templates/RecordDriver/DefaultRecord/list-entry.phtml
+++ b/themes/finc/templates/RecordDriver/DefaultRecord/list-entry.phtml
@@ -213,7 +213,7 @@ if ($cover):
           ?>
           <div class="dropdown">
             <i class="fa fa-fw fa-trash-o" aria-hidden="true"></i>
-            <a class="dropdown-toggle" id="<?= $dLabel ?>"
+            <a class="dropdown-toggle del-button" id="<?= $dLabel ?>"
                role="button" data-toggle="dropdown"
                href="<?= $deleteUrlGet ?>">
               <?= $this->transEsc('Delete') ?>
diff --git a/themes/finc/templates/layout/layout.phtml b/themes/finc/templates/layout/layout.phtml
index 2db1002ed24142e7b60fbe138a54d0219c5a8090..8673edfdd49f7a0e2f7f269a9d8baaaa8d3fcd9f 100644
--- a/themes/finc/templates/layout/layout.phtml
+++ b/themes/finc/templates/layout/layout.phtml
@@ -157,19 +157,21 @@ if (!isset($this->layout()->searchbox)) {
   <span class="sr-only" role="heading" aria-level="1"><?=$this->layout()->srmessage?></span>
 <?php endif; ?>
 
-<?php /* Show skip to search link only when page is not "advanced" search, CK */ ?>
-<?php if (strtolower($this->layout()->templateName) !== 'advanced'): ?>
-  <a class="sr-only" href="#searchForm_lookfor"><?=$this->transEsc('Skip to search')?></a>
-<?php endif; ?>
-<a class="sr-only" href="#content"><?=$this->transEsc('Skip to content')?></a>
-<?php if (substr_count(strtolower($this->layout()->templateName), 'results') > 0): ?>
-  <?php if (strcmp($this->layout()->userLang, 'de') == 0): ?>
-    <a class="sr-only hidden-xs" href="#myresearch-sidebar"><?=$this->transEsc(isset($this->overrideSideFacetCaption) ? $this->overrideSideFacetCaption : 'Narrow Search')?></a>
-  <?php else: ?>
-    <a class="sr-only hidden-xs" href="#myresearch-sidebar"><?=$this->transEsc('skip-to')?><?=strtolower($this->transEsc(isset($this->overrideSideFacetCaption) ? $this->overrideSideFacetCaption : 'Narrow Search'))?></a>
+<?php /* Add landmark role to avoid 'all content must be inside landmarks error', CK */ ?>
+<div role="navigation" aria-label="Skip_navigation_links">
+  <?php /* Show skip to search link only when page is not "advanced" search, CK */ ?>
+  <?php if (strtolower($this->layout()->templateName) !== 'advanced'): ?>
+    <a class="sr-only" href="#searchForm_lookfor"><?=$this->transEsc('Skip to search')?></a>
   <?php endif; ?>
-<?php endif; ?>
-
+  <a class="sr-only" href="#content"><?=$this->transEsc('Skip to content')?></a>
+  <?php if (substr_count(strtolower($this->layout()->templateName), 'results') > 0): ?>
+    <?php if (strcmp($this->layout()->userLang, 'de') == 0): ?>
+      <a class="sr-only hidden-xs" href="#myresearch-sidebar"><?=$this->transEsc(isset($this->overrideSideFacetCaption) ? $this->overrideSideFacetCaption : 'Narrow Search')?></a>
+    <?php else: ?>
+      <a class="sr-only hidden-xs" href="#myresearch-sidebar"><?=$this->transEsc('skip-to')?><?=strtolower($this->transEsc(isset($this->overrideSideFacetCaption) ? $this->overrideSideFacetCaption : 'Narrow Search'))?></a>
+    <?php endif; ?>
+  <?php endif; ?>
+</div>
 
 <?php /* Start header here, not above, custom finc, CK */ ?>
 <header class="hidden-print">
@@ -182,6 +184,8 @@ if (!isset($this->layout()->searchbox)) {
     && $this->layout()->breadcrumbs !== false
   ): ?>
     <ul class="breadcrumb large-centered hidden-xs hidden-print">
+      <?php /* added Home link - #17603 - HR */?>
+      <li><a href="<?=$this->url('home')?>"><?=$this->transEsc('Home')?></a></li>
       <?php if (is_array($this->layout()->breadcrumbs)): ?>
         <?php if (count($this->layout()->breadcrumbs) > 1): ?>
           <?=$this->render('breadcrumbs/multi.phtml', [