diff --git a/local/alpha/config/vufind/ExternalCatalogue.schema.json b/local/alpha/config/vufind/ExternalCatalogue.schema.json
new file mode 100644
index 0000000000000000000000000000000000000000..9ebddda25a4ad481798b704333d7a6068f5fbf7d
--- /dev/null
+++ b/local/alpha/config/vufind/ExternalCatalogue.schema.json
@@ -0,0 +1,54 @@
+{
+  "$schema": "http://json-schema.org/draft-04/schema#",
+  "title": "External Catalogue Links",
+  "description": "Define external catalogue links for VuFind and filter for SolrDefault criteria",
+  "type": "object",
+  "properties": {
+    "id": {
+      "patternProperties": {
+        "([A-Z0-9]*)-([a-zA-Z0-9]*)": {
+          "properties": {
+            "pattern": {
+              "description": "URL pattern for replacement with identifier",
+              "type": "string"
+            },
+            "filter": {
+              "patternProperties": {
+                "[A-Z0-9]*": {
+                  "description": "Filter rules",
+                  "type": [
+                    "string",
+                    "array"
+                  ]
+                }
+              }
+            }
+          }
+        }
+      }
+    },
+    "ppn": {
+      "patternProperties": {
+        "([A-Z0-9]*)-([a-zA-Z0-9]*)": {
+          "properties": {
+            "pattern": {
+              "description": "URL pattern for replacement with identifier",
+              "type": "string"
+            },
+            "filter": {
+              "patternProperties": {
+                "[A-Z0-9]*": {
+                  "description": "Filter rules",
+                  "type": [
+                    "string",
+                    "array"
+                  ]
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+}
\ No newline at end of file
diff --git a/local/alpha/config/vufind/FincILS.ini b/local/alpha/config/vufind/FincILS.ini
index 10eacd4b703be67499d37aef03969daf8563f301..94a54c73cc9c9f929b8d9d3290b652b8e86aeca7 100644
--- a/local/alpha/config/vufind/FincILS.ini
+++ b/local/alpha/config/vufind/FincILS.ini
@@ -19,14 +19,4 @@ relative_path = ../../../config/vufind/FincILS.ini
 ;       Add ALPHA-specific customization after this header.
 ;
 ;##################### DO NOT DELETE THIS HEADER ####################
-;####################################################################
-
-[DAIA]
-baseUrl            = http://139.18.19.238:9080/daiawachtl/daia/
-daiaIdPrefix       = "DE-15:ppn:"
-ilsIdentifier      = "record_id"
-multiQuery         = true
-daiaResponseFormat = json
-
-[PAIA]
-baseUrl   = http://139.18.19.238:9080/paiawachtl/paia/DE-15/
\ No newline at end of file
+;####################################################################
\ No newline at end of file
diff --git a/local/alpha/config/vufind/config.ini b/local/alpha/config/vufind/config.ini
index 4da468999163e9cdf4d46d28a1d60a2324d29097..c5778dc1806aa5fe9f36f3d03e4d56c25039311d 100644
--- a/local/alpha/config/vufind/config.ini
+++ b/local/alpha/config/vufind/config.ini
@@ -20,29 +20,3 @@ relative_path = ../../../config/vufind/config.ini
 ;
 ;##################### DO NOT DELETE THIS HEADER ####################
 ;####################################################################
-
-[System]
-debug           = false
-
-[Index]
-;url             = http://localhost:8080/solr
-; Solr4Entwickler
-url              = http://172.18.85.142:8085/solr
-; Solr6EntwicklerTest
-;url = http://172.18.85.143:8080/solr/#/biblio
-
-[Site]
-url = "https://alpha.finc.info/vufind2/local"
-
-[Authentication]
-method = ILS
-hash_passwords = "1"
-encrypt_ils_password = "1"
-ils_encryption_key = "3e2ac9b644dd4e0b64b179a0309ead13bb59202a"
-
-; Basically allow ILS river on base de_15 with restricted DAIA/PAIA functionallity
-[Catalog]
-driver = "FincILS"
-
-[Database]
-database = "mysql://vufind_local:i3lIPQTBmbSGmzipQHjOPrzmUfUuiDiA@localhost/vufind_local"
diff --git a/local/alpha/config/vufind/searches.ini b/local/alpha/config/vufind/searches.ini
index 4b336851dfd3baad985d54f9411e8392426da448..1a87c350692d172856f4a232dbcd9cbec555e360 100644
--- a/local/alpha/config/vufind/searches.ini
+++ b/local/alpha/config/vufind/searches.ini
@@ -20,18 +20,3 @@ relative_path = ../../../config/vufind/searches.ini
 ;
 ;##################### DO NOT DELETE THIS HEADER ####################
 ;####################################################################
-
-[IndexShards]
-;finc-live = 172.18.113.250:8080/solr/biblio
-;finc-nonlive = 172.18.113.250:8081/solr/biblio
-solr4entw = 172.18.85.142:8085/solr/biblio
-;solr5entwickler = "172.18.85.142:8983/solr/biblio"
-;ai-live = ai.ub.uni-leipzig.de/solr/biblio
-ai-nonlive = solr.ub.uni-leipzig.de/solr/biblio
-;ai-dev = 172.18.113.22:8085/solr/biblio
-;dbod_todo = 194.95.146.188:8080/solr/fincdbod
-;dbodtodo = 141.39.229.20:9003/solr/fincdbod
-;blade12 = 172.18.113.12:8080/solr/biblio
-
-[ShardPreferences]
-showCheckboxes = true
diff --git a/local/config/vufind/DAIA.ini b/local/config/vufind/DAIA.ini
index de3128e33a18ec962a31ac7087ef1aeaba4044b4..45316a4ddef94262674c871d9226332fc802f9b8 100644
--- a/local/config/vufind/DAIA.ini
+++ b/local/config/vufind/DAIA.ini
@@ -16,8 +16,8 @@
 
 [DAIA]
 ; The base URL for the DAIA webservice.
-;baseUrl            = http://139.18.19.238:9080/daialibero/daia/
-;baseUrl            = http://139.18.19.238:9080/daiatheca/daia/
+;baseUrl            = http://localhost/daialibero/daia/
+;baseUrl            = http://localhost/daiatheca/daia/
 
 ; Set a DAIA specific timeout in seconds to be used for DAIA http requests (defaults
 ; to Zend defaults or as defined in
diff --git a/local/config/vufind/DDS.ini b/local/config/vufind/DDS.ini
index c3130f976cba2b4ed4531810d5adb14dfbbb502d..60fba3341b506c174973053f3de27abd037b23cf 100644
--- a/local/config/vufind/DDS.ini
+++ b/local/config/vufind/DDS.ini
@@ -5,8 +5,8 @@
 
 [DDS]
 ; Base url to Password service API.
-;url = http://api.ub.intern.uni-leipzig.de/docdelis
-;ns = de-15
+;url = http://api.localhost
+;ns = de-xx
 
 ; Credentials to connect to service and get access token finally.
 ;username = "username"
diff --git a/local/config/vufind/FincILS.ini b/local/config/vufind/FincILS.ini
index d6a9eb5cf111e24fdc2368c7817989dc22f4c816..970fe40596787cfaeb3e2e4c121982d26a3c2e2b 100644
--- a/local/config/vufind/FincILS.ini
+++ b/local/config/vufind/FincILS.ini
@@ -12,14 +12,14 @@ queryIls[] = 'getAccessFacet:Local Holdings'
 ;DAIA configuration
 ;[DAIA]
 ; The base URL for the DAIA webservice.
-;baseUrl        = http://data.ub.uni-leipzig.de/item/ISIL/identifier/
+;baseUrl        = "http://localhost/daiawachtl/daia/"
 ; The prefix prepended to the VuFind record Id resulting in the document URI
 ; used for the DAIA request (default = ppn:) (the prefix usually defines the
 ; field which the DAIA server uses for the loookup - e.g. ppn: or isbn:).
-;daiaIdPrefix = "ppn:"
+;daiaIdPrefix       = "{ISIL}:ppn:"
 
 ; Set the requested DAIA response format: xml (deprecated), json
-;daiaResponseFormat = xml
+;daiaResponseFormat = json
 
 ; Set multiQuery to true if your DAIA webservice supports queries with multiple
 ; ids (cf. http://gbv.github.io/daiaspec/daia.html#query-api).
@@ -50,27 +50,10 @@ queryIls[] = 'getAccessFacet:Local Holdings'
 ; refer to ticket #4499 for further info on configuring it
 ;ilsIdentifier = "default"
 
-; config-examples:
-
-; DE-15
-;baseUrl            = http://139.18.19.238:9080/daiawachtl/daia/
-;daiaIdPrefix       = "UBL:ppn:"
-;ilsIdentifier      = "record_id"
-;multiQuery         = true
-;daiaResponseFormat = json
-
-; DE-Gla 1
-;baseUrl            = http://139.18.19.238:9080/daiatheca/daia/
-;daiaIdPrefix       = "DE-Gla1:ppn:"
-;ilsIdentifier      = "record_id"
-;multiQuery         = true
-;daiaResponseFormat = json
-
 ;PAIA configuration
 ;[PAIA]
 ; base URL of the PAIA server
-; baseUrl        = http://139.18.19.238:9080/paiatheca/paia/ISIL/
-; baseUrl        = http://139.18.19.238:9080/paiawachtl/paia/{ISIL/LiberoDBId}/
+; baseUrl        = http://localhost/paiawachtl/paia/{ISIL}/
 
 ; Set a PAIA specific timeout in seconds to be used for PAIA http requests (defaults
 ; to Zend defaults or as defined in
@@ -84,28 +67,6 @@ queryIls[] = 'getAccessFacet:Local Holdings'
 ;root_username            = 'root'
 ;root_password            = ''
 
-; config-examples:
-
-; DE-15
-;baseUrl            = http://139.18.19.238:9080/paiawachtl/paia/UBL/
-
-; DE-Gla1
-;baseUrl            = http://139.18.19.238:9080/paiatheca/paia/DE-Gla1/
-
-; LiberoDing - Configuration (via LiberoDingTrait)
-;[LiberoDing]
-;webScraperUrl   = http://139.18.19.114:8080/liberodriver/ ; Poli at Home
-;webScraperUrl   = http://172.18.113.146:8080/liberodriver/ ; Poly-Finc intern
-;webScraperUrl   = http://139.18.19.238:9080/wachtl/ ; Webdevel
-;databaseName    = UBL
-;prefixCode      = LC
-
-; timeout for connection to webscraper in ms
-;connectTimeout  = 5000
-
-; timeout for response to webscraper in ms
-;responseTimeout = 10000
-
 ; Enable EmailHold to allow placing orders via Email instead of direct ILS
 ; interaction.
 ;[EmailHold]
diff --git a/local/config/vufind/SolrAI.ini b/local/config/vufind/SolrAI.ini
index 4ace37943b27db4a43d7ff56b53c40aa90900b4a..6ef65a61a1cb3ad7234c94066064c153006d1bf0 100644
--- a/local/config/vufind/SolrAI.ini
+++ b/local/config/vufind/SolrAI.ini
@@ -1,3 +1,3 @@
 [General]
 ; Set the URI-pattern of the server which serves the raw Ai-record-data.
-baseUrl = "https://ai.ub.uni-leipzig.de/blob?%s"
+;baseUrl = "http://localhost/blob?%s"
diff --git a/local/config/vufind/config.ini b/local/config/vufind/config.ini
index 7f6b2e6872ef9a0c948a03f526787cc98c092744..0534e75775bb4f15f6177734454bd1f1a44a13b0 100644
--- a/local/config/vufind/config.ini
+++ b/local/config/vufind/config.ini
@@ -24,7 +24,7 @@ autoConfigure = true
 ; Base URL is normally auto-detected, but this setting is used when autodetection is
 ; not possible (i.e. during sitemap generation at the command line).
 url             = http://localhost/vufind_generic
-email           = team@
+email           = dummy@vufind.org
 title           = "Generic Katalog (devel)"
 ; This is the default theme for non-mobile devices (or all devices if mobile_theme
 ; is disabled below). Available standard themes:
@@ -103,7 +103,7 @@ showBulkOptions = false
 ; Should users be allowed to save searches in their accounts?
 allowSavedSearches = true
 ; Generator value to display in an HTML header <meta> tag:
-generator = "VuFind 3.0.3"
+generator = "VuFind 4.1.2"
 
 ; This section allows you to configure the mechanism used for storing user
 ; sessions.  Available types: File, Memcache, Database.
@@ -607,7 +607,7 @@ showStyleBasedIcons = true
 ; You can select Syndetics, LibraryThing, Summon, Amazon, Booksite, OpenLibrary,
 ; Contentcafe, Buchhandel.de and/or Google Books.
 ;   Note: Summon service takes a Serials Solutions client key, NOT Summon API key!
-coverimages     = OpenLibrary,Google,LibraryThing:7710c07c4a8c66b217b0d39e6c33abe0
+coverimages     = OpenLibrary,Google,LibraryThing:MyLibraryThingId
 ;Syndetics:MySyndeticsId,Amazon:MyAccessKeyId,Booksite,LibraryThing:MyLibraryThingId,Google,OpenLibrary,Summon:MySerialsSolutionsClientKey,Contentcafe:MyContentCafeID
 
 ; This setting controls which services will have images cached on your local disk.
@@ -1230,7 +1230,7 @@ jump_to_single_search_result = false
 ; Set the URI-pattern of the server which serves the raw Marc-data. (see
 ; https://vufind.org/wiki/configuration:remote_marc_records for more information
 ; on how to set up a remote service for raw Marc-data)
-remote_marc_url = http://172.18.113.147/%s
+;remote_marc_url = http://localhost/%s
 
 ; You can use this setting to hide holdings information for particular named locations
 ; as returned by the catalog.
@@ -1440,49 +1440,29 @@ max_tag_length = 64
 ; This section allows to set identifiers and other information which are specific 
 ; for the library.
 ;[InstitutionInfo]
-;bibid = "UBL"
-;sigel = "15"
-;isil[] = "DE-15"
-;isil[] = "DE-15-100"
-;isil[] = "DE-15-292"
-;bik = "952000-4"
+;bibid = "BIBID"
+;sigel = "ISIL number"
+;isil[] = "DE-XXX"
+;bik = "XXXXXX-X"
 
 ; This section contains all site related customization for finc
 ;[CustomSite]
 ; Combine more formats to one css class. If false first format entry will taken
 ; to display icon symbol
 ;combinedIcons   = false
-;namespace      = ubl
+;namespace      = namespace
 ;
 ; Fields of study used as required information in forms such as Acquisiton and PDA:
 ;field_of_study[] = misc
 ;field_of_study[] = bio
 ;field_of_study[] = geo
-;field_of_study[] = hist
-;field_of_study[] = art
-;field_of_study[] = ling
-;field_of_study[] = math
-;field_of_study[] = med
-;field_of_study[] = mus
-;field_of_study[] = nat
-;field_of_study[] = paed
-;field_of_study[] = phil
-;field_of_study[] = pol
-;field_of_study[] = psy
-;field_of_study[] = jur
-;field_of_study[] = soz
-;field_of_study[] = sport
-;field_of_study[] = vet
-;field_of_study[] = theo
-;field_of_study[] = ethno
-;field_of_study[] = wiwi
 
 ; This section contains all index related customizations for finc
 [CustomIndex]
 ; The indexExtension allows to select library specific index fields (e.g.
 ; barcode_{indexExtension}, callnumber_{indexExtension}, format_{indexExtension}
 ; etc.).
-;indexExtension  = "de15"
+;indexExtension  = "{DYNAMIC_INDEX_EXTENSION}"
 
 ; take general format field of Solr index. If false it takes the format fields
 ; with index extension defined above.
@@ -1508,7 +1488,7 @@ localMarcFieldOfLibraryMapping[] = "gfzk:986"
 
 ; Namespace to select the correct library specific Marc field from the
 ; localMarcFieldOfLibraryMapping
-localMarcFieldOfLibraryNamespace = "gfzk"
+;localMarcFieldOfLibraryNamespace = "namespace of library"
 
 ; In this section you can define strings to be used as filter for removing certain
 ; subjects from Marc records (used in getAllSubjectHeadings()).
@@ -1549,11 +1529,8 @@ remove[] = "gndmusic"
 ; identifier[method] calls an alternative method with the link as parameter.
 ;    The method is expected in View\Helper\Root\Record.php
 ; Examples:
-; ebl[pattern] = leip.eblib.com
-; ebl[method]  = resolveEblLink
-; naxos[pattern] = www.ln.naxosmusiclibrary.com
-; naxos[search]  = www.ln.naxosmusiclibrary.com
-; naxos[replace] = ubl-leipzig.naxosmusiclibrary.com
+; url[pattern] = url.pattern.to.resolve.link
+; url[method]  = resolveLink
 nbn[pattern] = "^urn:nbn:"
 nbn[search]  = "urn:nbn:"
 nbn[replace] = "http://nbn-resolving.de/urn:nbn:"
@@ -1565,7 +1542,6 @@ nbn[replace] = "http://nbn-resolving.de/urn:nbn:"
 ;   record id of data other provider.
 ; - The variable key indicates the institution for those replacement should be take
 ;   place.
-; See also https://intern.finc.info/issues/9245
 [ExternalAccess]
 ; ppn[DE-D13] = "http://webopac.skd.museum/libero/WebopacOpenURL.cls?ACTION=DISPLAY&RID=%s"
 ; id[DE-14] = "http://katalogbeta.slub-dresden.de/id/%s/"
diff --git a/local/config/vufind/facets.ini b/local/config/vufind/facets.ini
index 696e0eccee2f5289d77e74cc5abe545a5cc016e9..5a923cc3e02e6078c9386d135f99296fd7472c1a 100644
--- a/local/config/vufind/facets.ini
+++ b/local/config/vufind/facets.ini
@@ -6,9 +6,6 @@
 ; building           = Library
 access_facet	   = Access
 format             = Format
-; format_de15        = "Format UBL"
-branch_de15        = "Zweigbibliothek"
-; collcode_de15      = "Literaturabteilung UBL"
 ; rvk_facet          = "RVK"
 finc_class_facet   = Fachgebiet
 
@@ -24,7 +21,8 @@ author_facet	   = Author
 ; genre_facet        = Genre
 ; era_facet          = Era
 ; geographic_facet   = Region
-publishDate        = "adv_search_year"  ; share year string w/advanced search page
+; share year string w/advanced search page
+publishDate        = "adv_search_year"
 
 ; Facets that will appear at the top of search results when the TopFacets
 ; recommendations module is used.  See the [TopRecommendations] section of
@@ -128,8 +126,7 @@ topic_facet = "Related Subjects"
 ; cache after changing this section.
 [Advanced]
 ;callnumber-first = "Call Number"
-;language         = Language
-branch_de15	     = Zweigbibliothek
+language         = Language
 format           = Format
 ;hierarchy_top_title   = Collections
 
@@ -177,9 +174,6 @@ special_facets   = "illustrated,daterange"
 ;translated_facets[] = building
 translated_facets[] = format
 translated_facets[] = language
-translated_facets[] = access_facet
-translated_facets[] = finc_class_facet
-translated_facets[] = rvk_facet
 translated_facets[] = mega_collection
 
 ; Any facets named here will be treated as a delimited facet.
@@ -241,5 +235,4 @@ hide_facets = "genre_facet,era_facet,geographic_facet"
 
 ; Special facets sorted alphabetically.
 [SortedByIndex]
-index[] = branch_de15
 ;index[] = format
diff --git a/local/config/vufind/permissions.ini b/local/config/vufind/permissions.ini
index 994c2b86245c7d1311d3dbbe42a1072ab9eefa26..4ea557df4b8c91510ef5b898702543b714d2260e 100644
--- a/local/config/vufind/permissions.ini
+++ b/local/config/vufind/permissions.ini
@@ -70,25 +70,25 @@
 ; Configuration for permitting EBL/Schweitzer link resolving
 ;[default.EBL]
 ;role = loggedin
-;catUserType = UBL:eblAccessGranted
+;catUserType =  {NAMESPACE}:eblAccessGranted
 ;permission = access.EblLink
 
 ; Configuration for permitting PDA form action
 ;[default.PDA]
 ;role = loggedin
-;catUserType = UBL:pdaAccessGranted
+;catUserType = {NAMESPACE}:pdaAccessGranted
 ;permission = access.PDAForm
 
 ; Configuration for permitting Acquisition form action
 ;[default.Acquisition]
 ;role = loggedin
-;catUserType = DE-15:pdaAccessGranted
+;catUserType = {NAMESPACE}:pdaAccessGranted
 ;permission = access.AcquisitionForm
 
 ; Configuration for permitting DDS form action
 ;[default.DDS]
 ;role = loggedin
-;catUserType = UBL:ddsAccessGranted
+;catUserType = {NAMESPACE}:ddsAccessGranted
 ;permission = access.DDSForm
 
 ; Show staff view for all users by default
diff --git a/local/config/vufind/searches.ini b/local/config/vufind/searches.ini
index 6c7a988b6405154b6a73f301fd16ec2fad2ebd61..ab20a8fc4da5f272a4bc75f93da2cbe615d80452 100644
--- a/local/config/vufind/searches.ini
+++ b/local/config/vufind/searches.ini
@@ -133,7 +133,6 @@ AllFields           = adv_search_all
 Title               = adv_search_title
 ;JournalTitle        = adv_search_journaltitle
 Author              = adv_search_author
-rvk                 = "RVK-Notation"
 Subject             = adv_search_subject
 ;CallNumber          = adv_search_callnumber
 Series              = adv_search_series
diff --git a/local/dev/config/vufind/FincILS.ini.sample b/local/dev/config/vufind/FincILS.ini.sample
index 3cef938e6117d7f5dc4a017c377068a9da36b7bc..79eca43c7037af47cab6fad8a822335661b30f7e 100644
--- a/local/dev/config/vufind/FincILS.ini.sample
+++ b/local/dev/config/vufind/FincILS.ini.sample
@@ -22,14 +22,14 @@ relative_path = ../../../config/vufind/FincILS.ini
 ;####################################################################
 
 [DAIA]
-baseUrl            = http://139.18.19.238:9080/daiawachtl/daia/
-daiaIdPrefix       = "DE-15:ppn:"
+baseUrl            = http:/{URL}/daiawachtl/daia/
+daiaIdPrefix       = "{ISIL}:ppn:"
 ilsIdentifier      = "record_id"
 multiQuery         = true
 daiaResponseFormat = json
 
 [PAIA]
-baseUrl        = http://139.18.19.238:9080/paiawachtl/paia/DE-15/
+baseUrl        = http://{URL}/paiawachtl/paia/{ISIL}/
 paiaCache = false
 
 [Records]
diff --git a/local/dev/config/vufind/Resolver.ini.sample b/local/dev/config/vufind/Resolver.ini.sample
index ddcc57419e5ff2024590c13e7ac16c4c57e93242..7edbbfa39da3700999cd48a88996f480038843dd 100644
--- a/local/dev/config/vufind/Resolver.ini.sample
+++ b/local/dev/config/vufind/Resolver.ini.sample
@@ -9,17 +9,17 @@ embed_auto_load = false
 replace_other_urls = false
 
 [Redi]
-url             = "http://www.redi-bw.de/links/ubl?rl_site=ubl"
-rfr_id          = www.ub.uni-leipzig.de
+url             = "{URL}"
+rfr_id          = {RFR_ID}
 resolver        = redi
 
 [Ezb]
-url             = "http://services.d-nb.de/fize-service/gvr/full.xml"
-rfr_id          = www.ub.uni-leipzig.de
+url             = "{URL}"
+rfr_id          = {RFR_ID}
 resolver        = ezb
-sid = "ubl:vufind"
+sid = "{SID}:vufind"
 ;validStatesList = "0,1,2,3"
-bibid = "UBL"
-sigel = 15
-isil = "DE-15"
-bik = "952000-4"
+bibid = "{BIBID}"
+sigel = {ISIL NUMBER}
+isil = "{ISIL}"
+bik = "{BIK}"
diff --git a/local/dev/config/vufind/SolrAI.ini.sample b/local/dev/config/vufind/SolrAI.ini.sample
index 84c18ffc83b80a63f674b8a90e7dd3d420a46b1d..c0a43057a4e3104647dbc28aa23f6ae09464eff7 100644
--- a/local/dev/config/vufind/SolrAI.ini.sample
+++ b/local/dev/config/vufind/SolrAI.ini.sample
@@ -23,4 +23,4 @@
 
 [General]
 ; base url to ai blob server
-baseUrl = "https://ai.ub.uni-leipzig.de/blob?%s"
+baseUrl = "https://{URL}/blob?%s"
diff --git a/local/dev/config/vufind/branches.yaml.sample b/local/dev/config/vufind/branches.yaml.sample
index 1f408c25bc2694ceca0fd9d45ebf852e0106d344..fe90552fdda607bfb5470a20a05477434ddb8e94 100644
--- a/local/dev/config/vufind/branches.yaml.sample
+++ b/local/dev/config/vufind/branches.yaml.sample
@@ -17,445 +17,19 @@ http://data.ub.uni-leipzig.de/resource/UBL/department/zw01:
             branchpart: "Freihand / Lesesaal / Offenes Magazin"
             tel: [+49(0) 341 97 30587, +49(0) 341 97 30528]
             email: [freihand@ub.uni-leipzig.de, lesesaal@ub.uni-leipzig.de]
-#            openinghours:
-#                    - {open: 08:00:00, close: 24:00:00, days: Monday-Saturday}
+            openinghours:
+                    - {open: 08:00:00, close: 24:00:00, days: Monday-Saturday}
         http://data.ub.uni-leipzig.de/resource/UBL/department/zw01/part/02:
             branchpart: "Bibliothekarischer Service"
-#            openinghours:
-#                    - {open: 08:00:00, close: 20:00:00, days: Monday-Friday}
-#                    - {open: 08:00:00, close: 19:00:00, days: Saturday}
+            openinghours:
+                    - {open: 08:00:00, close: 20:00:00, days: Monday-Friday}
+                    - {open: 08:00:00, close: 19:00:00, days: Saturday}
         http://data.ub.uni-leipzig.de/resource/UBL/department/zw01/part/03:
             branchpart: Forschungslesesaal
             tel: [+49(0) 341 97 30526, +49(0) 341 97 30584]
             email: sondersammlungen@ub.uni-leipzig.de
-#            openinghours:
-#                    - {open: 09:00:00, close: 20:00:00, days: Monday-Friday}
-#                    - {open: 10:00:00, close: 19:00:00, days: Saturday}
-http://data.ub.uni-leipzig.de/resource/UBL/department/zw02:
-    branch: "Campus-Bibliothek, 24 h geöffnet"
-    branchno: zw02
-    streetaddress: "Universitätsstraße 3 (im Hörsaalgebäude)"
-    postalcode: "04109"
-    city: Leipzig
-    tel: [+49(0) 341 97 30811, +49(0) 341 97 30813]
-    fax: +49(0) 341 97 39239
-    email: zbcb@ub.uni-leipzig.de
-    url: "https://www.ub.uni-leipzig.de/index.php?id=196"
-    parts: 
-        http://data.ub.uni-leipzig.de/resource/UBL/department/zw02/part/01:
-            branchpart: "Bibliothekarischer Service"
-#            openinghours:
-#                    - {open: 08:00:00, close: 19:00:00, days: Monday-Friday}
-#                    - {open: 08:00:00, close: 13:00:00, days: Saturday}
-        http://data.ub.uni-leipzig.de/resource/UBL/department/zw02/part/02:
-            branchpart: "Hauptzugang im Hörsaalgebäude"
-#            openinghours:
-#                    - {open: 07:00:00, close: 22:00:00, days: Monday-Friday}
-#                    - {open: 07:00:00, close: 14:00:00, days: Saturday}
-    note: "Der Hauptzugang im Hörsaalgebäude ist von montags bis freitags 7:00 - 22:00 Uhr und samstags 7:00 - 14:00 Uhr geöffnet. Außerhalb dieser Zeiten benutzen Sie bitte den Nachtzugang am Augustusplatz. Über den Nachtzugang kann die Bibliothek nur mit gültiger Lesekarte betreten werden."
-zw08paed:
-    branch: "Nebenstandort Kunstpädagogik Institut für Kunstpädagogik der Universität Leipzig"
-    branchno: zw08paed
-    streetaddress: "Ritterstr. 8-10 (Geschwister-Scholl-Haus)"
-    postalcode: "04109"
-    city: Leipzig
-    tel: +49(0) 341 97 37250
-#    fax: +49(0) 341 97 30759
-    email: kunstpae@uni-leipzig.de
-    url: "https://www.ub.uni-leipzig.de/standorte/kunst/"
-zw09:
-    branch: "Museum für Musikinstrumente der Universität Leipzig"
-    branchno: zw11-01
-    streetaddress: "Johannisplatz 5–11"
-    postalcode: "04103"
-    city: Leipzig
-    tel: +49(0) 341 97 30750
-    fax: +49(0) 341 97 30759
-    email: musik.museum@uni-leipzig.de
-    url: "http://mfm.uni-leipzig.de/dt/dasmuseum/bibliothek.php"
-#    openinghours:
-#            - {open: 14:00:00, close: 17:00:00, days: Thursday}
-#            - {open: 09:00:00, close: 16:00:00, days: Friday}
-zw11:    
-    branch: "Bibliothek Musik"
-    branchno: zw11
-    streetaddress: "Neumarkt 9-19, Städtisches Kaufhaus"
-    postalcode: "04109"
-    city: Leipzig
-    tel: +49(0) 341 97 30478
-    email: zbmus@ub.uni-leipzig.de
-    url: "https://www.ub.uni-leipzig.de/index.php?id=489"
-#    openinghours:
-#            - {open: 09:00:00, close: 12:00:00, days: Monday-Thursday}
-#            - {open: 13:00:00, close: 15:30:00, days: Monday}
-#            - {open: 13:00:00, close: 18:00:00, days: Tuesday-Thursday}
-#            - {open: 09:00:00, close: 14:00:00, days: Friday}
-#    note: "Sie erreichen die Bibliothek über Aufgang D, 3. Etage. Bitte beachten Sie, dass der Zugang über die Universitätsstraße erfolgt. Achten Sie auch auf die veränderten Öffnungszeiten während der vorlesungsfreien Zeit (siehe Website)."
-    note: "Sie erreichen die Bibliothek über Aufgang D, 3. Etage. Bitte beachten Sie, dass der Zugang über die Universitätsstraße erfolgt."
-zw12:    
-    branch: "Bibliothek Psychologie"
-    branchno: zw12
-    streetaddress: "Seeburgstraße 14/20"
-    postalcode: "04103"
-    city: Leipzig
-    tel: +49(0) 341 97 30625
-    email: zbcb@ub.uni-leipzig.de
-    url: "https://www.ub.uni-leipzig.de/index.php?id=499"
-#    openinghours:
-#            - {open: 09:00:00, close: 18:00:00, days: Monday-Wednesday}
-#            - {open: 09:00:00, close: 16:00:00, days: Thursday-Friday}
-#    note: "Bitte beachten Sie die veränderten Öffnungszeiten während der vorlesungsfreien Zeit (siehe Website)."
-http://data.ub.uni-leipzig.de/resource/UBL/department/zw13:
-    branch: "Karl-Sudhoff-Institut"
-    branchno: zw13
-    streetaddress: "Käthe-Kollwitz-Straße 82"
-    postalcode: "04109"
-    city: Leipzig
-    tel: +49(0) 341 97 25607
-    fax: +49(0) 341 97 25624
-    email: zbmed.sudhoff@medizin.uni-leipzig.de
-    url: "https://www.ub.uni-leipzig.de/index.php?id=604"
-#    openinghours:
-#            - {open: 13:00:00, close: 17:00:00, days: Monday}
-#            - {open: 13:00:00, close: 17:00:00, days: Thursday}
-#            - {open: 09:00:00, close: 13:00:00, days: Tuesday-Wednesday}
-#            - {open: 09:00:00, close: 13:00:00, days: Friday}
-http://data.ub.uni-leipzig.de/resource/UBL/department/zw31:
-    branch: "Bibliothek Rechtswissenschaft"
-    branchno: zw31
-    streetaddress: Burgstraße 27
-    postalcode: "04109"
-    city: Leipzig
-    tel: +49(0) 341 97 30655
-    fax: +49(0) 341 97 30669
-    email: zbrewi@ub.uni-leipzig.de
-    url: "https://www.ub.uni-leipzig.de/index.php?id=504"
-    parts: 
-        01:
-#            openinghours:
-#                - {open: 08:00:00, close: 22:00:00, days: Monday-Friday}
-#                - {open: 10:00:00, close: 22:00:00, days: Saturday}
-        02:
-            branchpart: Zeitschriftenlesesaal
-#            openinghours:
-#                - {open: 09:00:00, close: 19:00:00, days: Monday-Friday}
-#                - {open: 12:00:00, close: 17:00:00, days: Saturday}
-http://data.ub.uni-leipzig.de/resource/UBL/department/zw41:
-    branch: "Bibliothek Orientwissenschaften / Ethnologie, Indologie, Japanologie, Orientalistik, Religionswissenschaft, Sinologie, Zentralasienwissenschaften"
-    branchno: zw41
-    streetaddress: Schillerstraße 6
-    postalcode: "04109"
-    city: Leipzig
-    tel: [+49(0) 341 97 37117 (Auskunft), +49(0) 341 97 37139 (Benutzung)]
-    fax: +49(0) 341 97 30698
-    email: zborient@ub.uni-leipzig.de
-    url: "https://www.ub.uni-leipzig.de/index.php?id=494"
-#    openinghours:
-#            - {open: 09:00:00, close: 20:00:00, days: Monday-Friday}
-#    note: "Standort: Graduiertenkolleg 1553: http://www.ub.uni-leipzig.de/ubl/standorte/orientwissenschaften/graduiertenkolleg-orientwissenschaften.html. Bitte beachten Sie die veränderten Öffnungszeiten während der vorlesungsfreien Zeit (siehe Website)."
-#    note: "Standort: Graduiertenkolleg 1553: http://www.ub.uni-leipzig.de/ubl/standorte/orientwissenschaften/graduiertenkolleg-orientwissenschaften.html."
-http://data.ub.uni-leipzig.de/resource/UBL/department/zw41alt:
-    branch: "Bibliothek Orientwissenschaften / Altorientalistik"
-    branchno: zw41alt
-    streetaddress: "Goethestraße 2 (Krochhochhaus)"
-    postalcode: "04109"
-    city: Leipzig
-    tel: +49(0) 341 97 37023
-    email: zborient@ub.uni-leipzig.de
-    url: "http://www.uni-leipzig.de/altorient/bibliothek.html"
-#    openinghours:
-#            - {open: 10:00:00, close: 16:00:00, days: Monday-Friday}
-#    note: "Bitte beachten Sie die veränderten Öffnungszeiten während der vorlesungsfreien Zeit. In der vorlesungsfreien Zeit ist die Benutzung auch nach Vereinbarung möglich."
-    note: "Die aktuellen Öffnungszeiten sind auf der Website zu finden."
-http://data.ub.uni-leipzig.de/resource/UBL/department/zw41ori:
-    branch: "Bibliothek Orientwissenschaften / Ägyptologie"
-    branchno: zw41ori
-    streetaddress: "Goethestraße 2 (Krochhochhaus)"
-    postalcode: "04109"
-    city: Leipzig
-    tel: +49(0) 341 97 37018
-    email: bibliothek.aegyptologie@uni-leipzig.de
-    url: "http://www.gko.uni-leipzig.de/aegyptologisches-institut/bibliothek/informationen.html"
-    note: "Die Öffnungszeiten finden Sie auf der Website des Instituts."
-http://data.ub.uni-leipzig.de/resource/UBL/department/zw46:
-    branch: "Bibliothek Erziehungswissenschaft"
-    branchno: zw46
-    streetaddress: "Karl-Heine-Straße 22b"
-    postalcode: "04229"
-    city: Leipzig
-    tel: +49(0) 341 97 30674
-    fax: +49(0) 341 97 39236
-    email: zberz@ub.uni-leipzig.de
-    url: "https://www.ub.uni-leipzig.de/index.php?id=471"
-    parts:
-        http://data.ub.uni-leipzig.de/resource/UBL/department/zw46/part/01:
-            branchpart: Ausleihe
-#            openinghours:
-#                - {open: 10:00:00, close: 16:00:00, days: Monday}
-#                - {open: 10:00:00, close: 17:00:00, days: Tuesday-Thursday}
-#                - {open: 10:00:00, close: 16:00:00, days: Friday}
-        http://data.ub.uni-leipzig.de/resource/UBL/department/zw46/part/02:
-            branchpart: Freihandbereich-Lesesaal
-#            openinghours:
-#                - {open: 09:00:00, close: 18:00:00, days: Monday-Thursday}
-#                - {open: 09:00:00, close: 16:00:00, days: Friday}
-#    note: "Bitte beachten Sie die veränderten Öffnungszeiten während der vorlesungsfreien Zeit (siehe Website)."
-http://data.ub.uni-leipzig.de/resource/UBL/department/zw66:
-    branch: "Bibliothek Geowissenschaften"
-    branchno: zw66
-    streetaddress: Talstraße 35
-    postalcode: "04103"
-    city: Leipzig
-    tel: +49(0) 341 97 30629
-    email: zbgeowi@ub.uni-leipzig.de
-    url: "https://www.ub.uni-leipzig.de/index.php?id=437"
-#    openinghours:
-#            - {open: 09:00:00, close: 12:00:00, days: Monday-Friday}
-#            - {open: 13:00:00, close: 16:00:00, days: Monday-Thursday}
-zw71:    
-    branch: "Bibliothek Physik"
-    branchno: zw71
-    streetaddress: "Linnéstraße 5"
-    postalcode: "04103"
-    city: Leipzig
-    tel: +49(0) 341 97 32414
-    fax: +49(0) 341 97 39242
-    email: zbphys@ub.uni-leipzig.de
-    url: "https://www.ub.uni-leipzig.de/index.php?id=463"
-#    openinghours:
-#            - {open: 09:00:00, close: 12:00:00, days: Monday-Friday}
-#            - {open: 13:00:00, close: 18:00:00, days: Monday-Wednesday}
-#            - {open: 13:00:00, close: 16:00:00, days: Thursday-Friday}
-#    note: "Bitte beachten Sie die veränderten Öffnungszeiten während der vorlesungsfreien Zeit (siehe Website)."
-http://data.ub.uni-leipzig.de/resource/UBL/department/zw76:
-    branch: "Bibliothek Chemie/Physik"
-    branchno: zw76
-    streetaddress: Johannisallee 29
-    postalcode: "04103"
-    city: Leipzig
-    tel: +49(0) 341 97 30630
-    fax: +49(0) 341 97 39253
-    email: zbchem@ub.uni-leipzig.de
-    url: "https://www.ub.uni-leipzig.de/index.php?id=463"
-#    openinghours:
-#            - {open: 08:00:00, close: 12:00:00, days: Monday-Friday}
-#            - {open: 13:00:00, close: 16:30:00, days: Monday}
-#            - {open: 13:00:00, close: 16:30:00, days: Friday}
-#            - {open: 13:00:00, close: 18:00:00, days: Tuesday-Thursday}
-#    note: "Bitte beachten Sie die veränderten Öffnungszeiten während der vorlesungsfreien Zeit (siehe Website)."
-http://data.ub.uni-leipzig.de/resource/UBL/department/zw81:
-    branch: "Bibliothek Biowissenschaften"
-    branchno: zw81
-    streetaddress: Talstraße 35
-    postalcode: "04103"
-    city: Leipzig
-    tel: +49(0) 341 97 36783
-    fax: +49(0) 341 97 39245
-    email: zbbio@ub.uni-leipzig.de
-    url: "https://www.ub.uni-leipzig.de/index.php?id=415"
-#    openinghours:
-#            - {open: 09:00:00, close: 12:00:00, days: Monday-Friday}
-#            - {open: 13:00:00, close: 18:00:00, days: Monday-Thursday}
-#            - {open: 13:00:00, close: 16:00:00, days: Friday}
-#    note: "Bitte beachten Sie die veränderten Öffnungszeiten während der vorlesungsfreien Zeit (siehe Website)."
-http://data.ub.uni-leipzig.de/resource/UBL/department/zw81idiv:
-    branch: "Bibliothek des German Centre for Integrative Biodiversity Research (iDiv) - Nebenstelle der Bibliothek Biowissenschaften"
-    branchno: zw81idiv
-    streetaddress: Deutscher Platz 5e
-    postalcode: "04103"
-    city: Leipzig
-    tel: +49(0) 341 97 33102
-    email: rebecca.thier-lange@idiv.de
-    note: "Öffnungszeiten: Dienstag: 10:00 - 12:00 Uhr"
-http://data.ub.uni-leipzig.de/resource/UBL/department/zw86:
-    branch: "Bibliothek Veterinärmedizin"
-    branchno: zw86
-    streetaddress: "An den Tierkliniken 5"
-    postalcode: "04103"
-    city: Leipzig
-    tel: [+49(0) 341 97 30623, +49(0) 341 97 38017 (Ausleihe)]
-    fax: +49(0) 341 97 39246
-    email: zbvetmed@ub.uni-leipzig.de
-    url: "https://www.ub.uni-leipzig.de/index.php?id=514"
-#    openinghours:
-#            - {open: 09:00:00, close: 20:00:00, days: Monday-Thursday}
-#            - {open: 09:00:00, close: 18:00:00, days: Friday}
-#    note: "Bitte beachten Sie die veränderten Öffnungszeiten während der vorlesungsfreien Zeit (siehe Website)."
-http://data.ub.uni-leipzig.de/resource/UBL/department/zw91:
-    branch: "Zentralbibliothek Medizin"
-    branchno: zw91
-    streetaddress: "Johannisallee 34"
-    postalcode: "04103"
-    city: Leipzig
-    tel: [+49(0) 341 97 14012 (Ausleihe), +49(0) 341 97 14014 (Fernleihe)]
-    url: "https://www.ub.uni-leipzig.de/index.php?id=519"
-#    openinghours:
-#            - {open: 08:00:00, close: 19:00:00, days: Monday-Thursday}
-#            - {open: 09:00:00, close: 18:00:00, days: Friday}
-#            - {open: 11:00:00, close: 16:00:00, days: Saturday}
-#    note: "Bitte beachten Sie die veränderten Öffnungszeiten während der vorlesungsfreien Zeit (siehe Website)."
-http://data.ub.uni-leipzig.de/resource/UBL/department/zw96:
-    branch: "Bibliothek Sportwissenschaft"
-    branchno: zw96
-    streetaddress: Jahnallee 59
-    postalcode: "04109"
-    city: Leipzig
-    tel: [+49(0) 341 97 30635, +49(0) 341 97 30663 (Ausleihe)]
-    fax: +49(0) 341 97 31628
-    email: zbspowi@ub.uni-leipzig.de
-    url: "https://www.ub.uni-leipzig.de/index.php?id=509"
-#    openinghours:
-#            - {open: 10:00:00, close: 18:00:00, days: Monday-Thursday}
-#            - {open: 10:00:00, close: 16:00:00, days: Friday}
-#    note: "Bitte beachten Sie die veränderten Öffnungszeiten während der vorlesungsfreien Zeit (siehe Website)."
-http://data.ub.uni-leipzig.de/resource/UBL/department/zw01theat:
-    branch: "Nebenstandort Theaterwissenschaft"
-    branchno: zw01theat
-    streetaddress: Ritterstraße 16
-    postalcode: "04109"
-    city: Leipzig
-    tel: +49(0) 341 97 30400
-    fax: +49(0) 341 97 30409
-    email: theaterw@uni-leipzig.de
-    url: "https://www.ub.uni-leipzig.de/standorte/bibliotheca-albertina/nebenstandort-theaterwissenschaft/"
-    note: "Die Öffnungszeiten erfragen Sie bitte per automatischer Antwort hier: nebenstelle-tw@uni-leipzig.de."
-http://data.ub.uni-leipzig.de/resource/UBL/department/zw02kmw:
-    branch: "Nebenstandort Kommunikations- und Medienwissenschaft"
-    branchno: zw02kmw
-    streetaddress: Burgstraße 21, Raum 3.22
-    postalcode: "04109"
-    city: Leipzig
-    tel: +49(0) 341 97 35784
-    email: bgenner@rz.uni-leipzig.de
-    url: "https://www.ub.uni-leipzig.de/standorte/campus-bibliothek/nebenstandort-kmw/"
-#    openinghours:
-#            - {open: 09:00:00, close: 16:30:00, days: Monday}
-#            - {open: 09:00:00, close: 18:00:00, days: Tuesday}
-#            - {open: 09:00:00, close: 16:30:00, days: Wednesday-Thursday}
-#            - {open: 09:00:00, close: 15:00:00, days: Friday}
-http://data.ub.uni-leipzig.de/resource/UBL/department/zw05:
-    branch: "Bibliothek Klassische Archäologie und Ur- und Frühgeschichte"
-    branchno: zw05
-    streetaddress: Ritterstraße 14
-    postalcode: "04109"
-    city: Leipzig
-    tel: +49(0) 341 97 30707
-    email: zbarch@ub.uni-leipzig.de
-    url: "https://www.ub.uni-leipzig.de/index.php?id=449"
-    parts:
-        http://data.ub.uni-leipzig.de/resource/UBL/department/zw05/part/01:
-            branchpart: "Klassische Archäologie (2. Etage)"
-#            openinghours:
-#                - {open: 09:00:00, close: 19:00:00, days: Monday}
-#                - {open: 09:00:00, close: 20:00:00, days: Tuesday}
-#                - {open: 09:00:00, close: 17:00:00, days: Wednesday}
-#                - {open: 09:00:00, close: 20:00:00, days: Thursday}
-#                - {open: 09:00:00, close: 17:00:00, days: Friday}
-        
-        http://data.ub.uni-leipzig.de/resource/UBL/department/zw05/part/02:
-            branchpart: "Ur- und Frühgeschichte (3. Etage)"
-#            openinghours:
-#                - {open: 09:00:00, close: 19:00:00, days: Monday-Friday}
-    note: "Aktuelle Öffnungszeiten in der vorlesungsfreien Zeit sind dem Aushang in der Zweigbibliothek zu entnehmen."
-http://data.ub.uni-leipzig.de/resource/UBL/department/zw06:
-    branch: "Bibliothek Deutsches Literaturinstitut Leipzig"
-    branchno: zw06
-    streetaddress: Wächterstraße 34
-    postalcode: "04107"
-    city: Leipzig
-    tel: +49(0) 341 97 30312
-    email: neumannb@ub.uni-leipzig.de
-    url: "https://www.ub.uni-leipzig.de/index.php?id=410"
-#    openinghours:
-#            - {open: 13:00:00, close: 16:00:00, days: Monday}
-#            - {open: 10:00:00, close: 12:00:00, days: Tuesday}
-#            - {open: 13:00:00, close: 16:00:00, days: Tuesday}
-#            - {open: 13:00:00, close: 18:00:00, days: Wednesday}
-#            - {open: 13:00:00, close: 16:00:00, days: Thursday}
-#            - {open: 10:00:00, close: 13:00:00, days: Friday}
-#    note: "Bitte beachten Sie die veränderten Öffnungszeiten während der vorlesungsfreien Zeit (siehe Website)."
-http://data.ub.uni-leipzig.de/resource/UBL/department/zw07:
-    branch: "Bibliothek Geographie"
-    branchno: zw07
-    streetaddress: Johannisallee 19
-    postalcode: "04103"
-    city: Leipzig
-    tel: +49(0) 341 97 38586
-    fax: +49(0) 341 97 39241
-    email: zbgeogr@ub.uni-leipzig.de
-    url: "https://www.ub.uni-leipzig.de/index.php?id=484"
-#    openinghours:
-#            - {open: 09:00:00, close: 12:00:00, days: Monday-Friday}
-#            - {open: 13:00:00, close: 18:00:00, days: Monday}
-#            - {open: 13:00:00, close: 18:00:00, days: Wednesday-Thursday}
-#            - {open: 13:00:00, close: 16:00:00, days: Tuesday}
-#            - {open: 13:00:00, close: 15:00:00, days: Friday}
-#    note: "Bitte beachten Sie die veränderten Öffnungszeiten während der vorlesungsfreien Zeit (siehe Website)."
-http://data.ub.uni-leipzig.de/resource/UBL/department/zw08:
-    branch: "Bibliothek Kunst"
-    branchno: zw08
-    streetaddress: Dittrichring 18-20
-    postalcode: "04109"
-    city: Leipzig
-    tel: [+49(0) 341 97 35545, +49(0) 341 97 35547]
-    fax: +49(0) 341 97 39244
-    email: zbkunst@ub.uni-leipzig.de
-    url: "https://www.ub.uni-leipzig.de/index.php?id=456"
-#    openinghours:
-#            - {open: 09:30:00, close: 18:00:00, days: Monday-Wednesday}
-#            - {open: 09:30:00, close: 20:00:00, days: Thursday}
-#            - {open: 09:00:00, close: 14:00:00, days: Friday}
-#    note: "Bitte beachten Sie die veränderten Öffnungszeiten während der vorlesungsfreien Zeit (siehe Website)."
-http://data.ub.uni-leipzig.de/resource/UBL/department/zw11instr:
-    branch: "Bibliothek Musik / Nebenstelle Museum für Musikinstrumente"
-    branchno: zw11instr
-    streetaddress: "Johannisplatz 5-11"
-    postalcode: "04103"
-    city: Leipzig
-    tel: +49(0) 341 97 30750
-    fax: +49(0) 341 97 30759
-    email: musik.museum@uni-leipzig.de
-    url: "http://mfm.uni-leipzig.de/"
-#    openinghours:
-#          - {open: 14:00:00, close: 17:00:00, days: Thursday}
-#          - {open: 09:00:00, close: 16:00:00, days: Friday}
-http://data.ub.uni-leipzig.de/resource/UBL/department/zw76thph:
-    branch: "Bibliothek Chemie/Physik / Nebenstelle Theoretische Physik"
-    branch-no: zw71thph
-    street-address: "Vor dem Hospitaltore 1"
-    postal-code: "04103"
-    city: Leipzig
-    tel: +49(0) 341 97 32430
-    email: gabriele.menge@itp.uni-leipzig.de
-    url: "https://www.ub.uni-leipzig.de/index.php?id=463"
-#    openinghours:
-#            - {open: 09:00:00, close: 12:00:00, days: Tuesday-Thursday}
-zw91018:    
-    branch: "Bibliothek Medizin / Kopfkliniken"
-    branch-no: zw91018
-    street-address: "Johannisallee 34"
-    postal-code: "04103"
-    city: Leipzig
-    tel: +49(0) 341 97 14170
-    fax: +49(0) 341 97 17163
-    email: zbmed2@medizin.uni-leipzig.de
-    url: "https://www.ub.uni-leipzig.de/index.php?id=519"
-#    openinghours:
-#            - {open: 08:00:00, close: 19:00:00, days: Monday-Thursday}
-#            - {open: 08:00:00, close: 18:00:00, days: Friday}
-#    note: "Bitte beachten Sie die veränderten Öffnungszeiten während der vorlesungsfreien Zeit (siehe Website)."
-http://data.ub.uni-leipzig.de/resource/UBL/department/zw91016:
-    branch: "Zentralbibliothek Medizin 2"
-    branchno: zw91016
-    streetaddress: "Johannisallee 34"
-    postalcode: "04103"
-    city: Leipzig
-    tel: +49(0) 341 97 14170
-    fax: +49(0) 341 97 17163
-    email: zbmed2@medizin.uni-leipzig.de
-    url: "https://www.ub.uni-leipzig.de/index.php?id=519"
-#    openinghours:
-#            - {open: 08:00:00, close: 19:00:00, days: Monday-Thursday}
-#            - {open: 08:00:00, close: 18:00:00, days: Friday}
-#    note: "Bitte beachten Sie die veränderten Öffnungszeiten während der vorlesungsfreien Zeit (siehe Website)."
+            openinghours:
+                    - {open: 09:00:00, close: 20:00:00, days: Monday-Friday}
+                    - {open: 10:00:00, close: 19:00:00, days: Saturday}
+
 
diff --git a/local/dev/config/vufind/config.ini.sample b/local/dev/config/vufind/config.ini.sample
index cac7d6085f086ea3f95a1a25fc90a03be2979b01..49dce52c7300535302b94cf5be7a0e806e3c7451 100644
--- a/local/dev/config/vufind/config.ini.sample
+++ b/local/dev/config/vufind/config.ini.sample
@@ -25,20 +25,16 @@ override_full_sections = "Http"
 debug           = false
 
 [Index]
-; lokaler Solr
-url             = http://localhost:8080/solr
-; Solr4Entwickler
-;url              = http://172.18.85.142:8085/solr
-; Solr-Devel (Ip-Freischaltung notwendig)
-;url              = http://139.18.19.239:8080/solr
+url             = http://{URL}:{PORT}/solr
 
 [Site]
-url = "http://localhost"
+url = "http://{URL}"
 
 [Authentication]
+method=ILS
 hash_passwords = "1"
 encrypt_ils_password = "1"
-ils_encryption_key = "3e2ac9b644dd4e0b64b179a0309ead13bb59202a"
+ils_encryption_key = "{ENCRYPTION_KEY}"
 
 [Catalog]
 driver = "FincILS"
@@ -47,43 +43,9 @@ driver = "FincILS"
 ; Pfad zu SSL-Zertifikaten in der docker-VM (global für CentOS konfiguriert)
 sslcapath = "/etc/ssl/certs"
 
-; OpenURL configuration institution specified
-; sample configuration for ubl
-[OpenURL]
-url             = "http://www.redi-bw.de/links/ubl?rl_site=ubl"
-rfr_id          = www.ub.uni-leipzig.de
-resolver        = redi
-window_settings = "toolbar=no,location=no,directories=no,buttons=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=550,height=600"
-show_in_results = false    ; include in search results
-show_in_record = false     ; include in core record metadata
-show_in_holdings = true    ; include in holdings tab of record view
-embed = true
-replace_other_urls = true
-
 [Content]
 coversize[result-list] = false
 showStyleBasedIcons = true
 
-[Ebl]
-pattern = "leip.eblib.com"
-secret_key = "SecretKey"
-product_sigel[] = "ZDB-89-EBL"
-product_sigel[] = "ZDB-30-PQE"
-
-[LinksRewrite]
-; Personalized rewriting of Open Urls.
-; Start to declare a own group which can have following keys.
-; identifier[pattern] is necessary to switch on rewrite und sort out the right links.
-;    regular expression are allowed
-; identifier[search] is the string to replaced
-; identifier[replace] is the replacing phrase
-; identifier[method] calls an alternative method with the link as parameter.
-;    The method has to be written in the IndexDriver.php
-schweitzer[pattern] = leip.eblib.com
-schweitzer[method] = resolveEblLink
-; naxos[pattern] = www.ln.naxosmusiclibrary.com
-; naxos[search] = www.ln.naxosmusiclibrary.com
-; naxos[replace] = ubl-leipzig.naxosmusiclibrary.com
-; nbn[pattern] =  "^urn:nbn:"
-; nbn[search] =  urn:nbn:
-; nbn[replace] = nbn-resolving.de/urn:nbn:
+[CustomIndex]
+localMarcFieldOfLibraryNamespace = "{NAMESPACE_OF_LIBRARY}"
diff --git a/local/dev/config/vufind/permissions.ini.sample b/local/dev/config/vufind/permissions.ini.sample
index c4d8554657918052cd56a643ca45d2f59eb95286..c62d333770a72e7de5d841d281e8c90df71a5198 100644
--- a/local/dev/config/vufind/permissions.ini.sample
+++ b/local/dev/config/vufind/permissions.ini.sample
@@ -19,8 +19,4 @@ relative_path = ../../../config/vufind/permissions.ini
 ;       Add DEV-specific customization after this header.
 ;
 ;##################### DO NOT DELETE THIS HEADER ####################
-;####################################################################
-
-[default.OffCampusSourceIds]
-IpRegExFoFor = "/(139\.18.*)/"
-permission = OffCampusSourceIds
\ No newline at end of file
+;####################################################################
\ No newline at end of file
diff --git a/local/dev/languages/de.ini b/local/dev/languages/de.ini
index c3bc6fa82bdc624acd5a44cc62c031f593ff17a3..82610eb5926df679c2765b2e3d347e3c782d3101 100644
--- a/local/dev/languages/de.ini
+++ b/local/dev/languages/de.ini
@@ -16,17 +16,3 @@
 ;##################### DO NOT DELETE THIS HEADER ####################
 ;####################################################################
 
-Delivery to = Lieferung an
-Delivery service for documents = Dokumentenlieferdienst
-Details for requested item = Angaben zum gewünschten Artikel
-Division = Fakultät
-Email = E-Mail-Adresse
-Pages = Seiten (von - bis)
-Phone = Telefon
-Publishing date = Erscheinungsjahr
-Remarks = Bemerkungen
-Send order = Bestellung senden
-Title of issue = Aufsatztitel
-
-Mandatory fields = Pflichtfelder
-
diff --git a/local/languages/DDS/de.ini b/local/languages/DDS/de.ini
index 6855afd770d5b5cfbd81096557b7993a47c59d4a..9bcc3f8b5be5a42205e89ff27801a685aa160250 100644
--- a/local/languages/DDS/de.ini
+++ b/local/languages/DDS/de.ini
@@ -1,5 +1,5 @@
 ; Document Delivery Service
-dds_form_headline = "UBL-Dokumentenlieferdienst"
+dds_form_headline = "Dokumentenlieferdienst"
 dds_form_delivery_data = "Lieferung an"
 dds_form_details_ordered_title = "Angaben zum gewünschten Titel"
 form_field_phone = "Telefon"
diff --git a/local/languages/de.ini b/local/languages/de.ini
index aaae6bd5eff3acedcab299d86346812f6515ddcd..be89314d4a728935d85bfcb76ab4711d9eb3a078 100644
--- a/local/languages/de.ini
+++ b/local/languages/de.ini
@@ -1802,6 +1802,20 @@ renew_item_maximum = "There is a maximum of three renewals allowed."
 guser_dunning_process = "User account is blocked due to a dunning process"
 
 ################### finc-spezifisch hinzugefuegt ##########################
+; document delivery service
+Delivery to = "Lieferung an"
+Delivery service for documents = Dokumentenlieferdienst
+Details for requested item = "Angaben zum gewünschten Artikel"
+Division = Fakultät
+Email = E-Mail-Adresse
+Pages = "Seiten (von - bis)"
+Phone = Telefon
+Publishing date = Erscheinungsjahr
+Remarks = Bemerkungen
+Send order = "Bestellung senden"
+Title of issue = Aufsatztitel
+Mandatory fields = Pflichtfelder
+
 p. = S.
 
 APAAI Citation = APA Zitierstil
diff --git a/local/languages/en.ini b/local/languages/en.ini
index fa25648ea63a1c057f9d9ad34e9d15811ae2efb9..34635e068b04571d94fdca319442b19e00240cdd 100644
--- a/local/languages/en.ini
+++ b/local/languages/en.ini
@@ -1745,6 +1745,20 @@ Zulu = Zulu
 Zuni = Zuni
 
 ################### finc-spezifisch hinzugefuegt ##########################
+; document delivery service
+Delivery to = "Delivery to"
+Delivery service for documents = "Delivery service for documents"
+Details for requested item = "Details for requested item"
+Division = Division
+Email = E-Mail
+Pages = "Pages (from - till)"
+Phone = Phone
+Publishing date = "Publishing date"
+Remarks = Remarks
+Send order = "Send order"
+Title of issue = "Title of issue"
+Mandatory fields = "Mandatory fields"
+
 p. = p.
 
 APAAI Citation = APA Citation
diff --git a/module/finc/config/module.config.php b/module/finc/config/module.config.php
index 535795b490fc47f99aa29e7bb1026895f9cecbde..81f6ce18fe32543e02e31f75654983dcda0c8370 100644
--- a/module/finc/config/module.config.php
+++ b/module/finc/config/module.config.php
@@ -171,13 +171,15 @@ $recordRoutes = [
 
 // Define static routes -- Controller/Action strings
 $staticRoutes = [
-    'MyResearch/Acquisition', 'MyResearch/ResetPassword', 'dds/Home', 'dds/Email',
+    'MyResearch/Acquisition',
+    'MyResearch/ResetPassword',
+    'dds/Home',
+    'dds/Email',
     'Record/EblLink'
 ];
 
 $routeGenerator = new \VuFind\Route\RouteGenerator($nonTabRecordActions);
 $routeGenerator->addRecordRoutes($config, $recordRoutes);
-//$routeGenerator->addDynamicRoutes($config, $dynamicRoutes);
 $routeGenerator->addStaticRoutes($config, $staticRoutes);
 
 return $config;
diff --git a/module/finc/src/finc/Config/BranchesReader.php b/module/finc/src/finc/Config/BranchesReader.php
index 1b8baa887b6462aa24f0037e250c1200a64a0113..9413c6a9bdede8f61f5594ff7bee64f276d4c691 100644
--- a/module/finc/src/finc/Config/BranchesReader.php
+++ b/module/finc/src/finc/Config/BranchesReader.php
@@ -27,8 +27,8 @@
  * @link     https://vufind.org Main Site
  */
 namespace finc\Config;
-use VuFind\Config\Locator as Locator,
-    Symfony\Component\Yaml\Yaml;
+
+use VuFind\Config\Locator as Locator;
 
 /**
  * VuFind Branches.yaml Configuration Reader
@@ -119,7 +119,5 @@ class BranchesReader extends \VuFind\Config\SearchSpecsReader
 
         return $results;
     }
-
-
-
 }
+
diff --git a/module/finc/src/finc/Controller/AjaxController.php b/module/finc/src/finc/Controller/AjaxController.php
index 350f392149eb08aa15c2f825db40bcb5cd0c461e..b0d3ee1317033f41f22aa505990ecc7a107a415e 100644
--- a/module/finc/src/finc/Controller/AjaxController.php
+++ b/module/finc/src/finc/Controller/AjaxController.php
@@ -92,6 +92,7 @@ class AjaxController extends \VuFind\Controller\AjaxController
                         // Special case -- modify DOI text for special display:
                         $link['title'] = $this->translate('Get full text');
                         $link['coverage'] = '';
+                        break;
                     case 'getFullTxt':
                     default:
                         $electronic[] = $link;
@@ -384,12 +385,15 @@ class AjaxController extends \VuFind\Controller\AjaxController
     /**
      * Reduce an array of service names to a human-readable string.
      *
-     * @param array $services Names of available services.
+     * @param array  $services      Names of available services.
+     * @param string $availability
      *
      * @return string
      */
-    protected function reduceServices(array $services, $availability = 'available')
-    {
+    protected function reduceServices(
+        $services = [],
+        $availability = 'available'
+    ) {
         // Normalize, dedup and sort available services
         $normalize = function ($in) {
             return strtolower(preg_replace('/[^A-Za-z]/', '', $in));
diff --git a/module/finc/src/finc/Controller/CustomTraits/AcquisitionTrait.php b/module/finc/src/finc/Controller/CustomTraits/AcquisitionTrait.php
index 8deee14393d03640fb6f9b0a7bc4c67aa814efe0..3ddb4d7a336cfd45ba0a21b280e1bc5db5b6c18f 100644
--- a/module/finc/src/finc/Controller/CustomTraits/AcquisitionTrait.php
+++ b/module/finc/src/finc/Controller/CustomTraits/AcquisitionTrait.php
@@ -59,6 +59,7 @@ trait AcquisitionTrait
      * @todo Open issue: Implementation of accession/domain check of user by PAIA.
      *
      * @return \Zend\View\Model\ViewModel
+     * @throws \Exception Authorization service missing
      */
     public function acquisitionAction()
     {
@@ -193,7 +194,7 @@ trait AcquisitionTrait
     /**
      * Send Acquisition order via e-mail.
      *
-     * @param $params Data to be used for Email template
+     * @param array $params Data to be used for Email template
      *
      * @return void
      * @throws MailException
diff --git a/module/finc/src/finc/Controller/CustomTraits/EmailProfileTrait.php b/module/finc/src/finc/Controller/CustomTraits/EmailProfileTrait.php
index 8456a9977b14589d989c3b8eb969e9c370b80eb7..93d678e954e1595c0efd848a38ffef2306e4be88 100644
--- a/module/finc/src/finc/Controller/CustomTraits/EmailProfileTrait.php
+++ b/module/finc/src/finc/Controller/CustomTraits/EmailProfileTrait.php
@@ -59,7 +59,7 @@ trait EmailProfileTrait
         if (isset($mailConfig->$profile)) {
             return $mailConfig->$profile;
         } else {
-            $this->debug('Missing email profile: ' + $profile);
+            $this->debug('Missing email profile: ' . $profile);
             return [];
         }
     }
diff --git a/module/finc/src/finc/Controller/CustomTraits/PdaTrait.php b/module/finc/src/finc/Controller/CustomTraits/PdaTrait.php
index af3af144f600387415efb378aa5be8800e271d8a..c5167be23a5e5afc82bcd71e9a64ca31bff5c31f 100644
--- a/module/finc/src/finc/Controller/CustomTraits/PdaTrait.php
+++ b/module/finc/src/finc/Controller/CustomTraits/PdaTrait.php
@@ -59,6 +59,7 @@ trait PdaTrait
      * @todo Open issue: Implementation of accession/domain check of user by PAIA.
      *
      * @return \Zend\View\Model\ViewModel
+     * @throws \Exception Authorization service missing
      */
     public function pdaAction()
     {
@@ -183,7 +184,7 @@ trait PdaTrait
     /**
      * Send PDA order via e-mail.
      *
-     * @param $params Data to be used for Email template
+     * @param array $params Data to be used for Email template
      *
      * @return void
      * @throws MailException
diff --git a/module/finc/src/finc/Controller/CustomTraits/ReportErrorsTrait.php b/module/finc/src/finc/Controller/CustomTraits/ReportErrorsTrait.php
index ab7a84b143c4c373856b6474560eb6017453b49a..1ace686a365640a391a91223970e7caee83bb7ee 100644
--- a/module/finc/src/finc/Controller/CustomTraits/ReportErrorsTrait.php
+++ b/module/finc/src/finc/Controller/CustomTraits/ReportErrorsTrait.php
@@ -30,8 +30,7 @@ namespace finc\Controller\CustomTraits;
 use VuFind\Exception\Mail as MailException,
     finc\Mailer\Mailer,
     Zend\Mail\Address,
-    Zend\Validator\StringLength,
-    Zend\Validator\Identical;
+    Zend\Validator\StringLength;
 
 /**
  * ReportErrors Trait
@@ -137,7 +136,7 @@ trait ReportErrorsTrait
     /**
      * Send PDA order via e-mail.
      *
-     * @param $params Data to be used for Email template
+     * @param array $params Data to be used for Email template
      *
      * @return void
      * @throws MailException
diff --git a/module/finc/src/finc/Controller/CustomTraits/ResetPasswordTrait.php b/module/finc/src/finc/Controller/CustomTraits/ResetPasswordTrait.php
index 688184291ca3495fe5eb171eb2599eba6f48a982..a5a2691678b1d66643af10b766f15683cbfbe0be 100644
--- a/module/finc/src/finc/Controller/CustomTraits/ResetPasswordTrait.php
+++ b/module/finc/src/finc/Controller/CustomTraits/ResetPasswordTrait.php
@@ -150,7 +150,7 @@ trait ResetPasswordTrait
     /**
      * Send ResetPassword e-mail.
      *
-     * @param $params Data to be used for Email template
+     * @param array $params Data to be used for Email template
      *
      * @return void
      * @throws MailException
diff --git a/module/finc/src/finc/Controller/DocumentDeliveryServiceController.php b/module/finc/src/finc/Controller/DocumentDeliveryServiceController.php
index e9396e97dd57e1718f0df1b60685116169dcac25..cbba3b186696af6884b1cec9556414bf26d7360f 100644
--- a/module/finc/src/finc/Controller/DocumentDeliveryServiceController.php
+++ b/module/finc/src/finc/Controller/DocumentDeliveryServiceController.php
@@ -93,11 +93,12 @@ class DocumentDeliveryServiceController extends \VuFind\Controller\AbstractBase
      *
      * @param \Zend\Config\Config $config VuFind configuration
      * @param \Zend\Config\Config $dds Document Delivery Service configuration
-     * @param \Zend\Http\Client $client Http client
+     * @param \Zend\Session\Container $session Session container
      */
-    public function __construct(\Zend\Config\Config $config,
-                                \Zend\Config\Config $dds,
-                                \Zend\Session\Container $session
+    public function __construct(
+        \Zend\Config\Config $config,
+        \Zend\Config\Config $dds,
+        \Zend\Session\Container $session
     ) {
         $this->config = array_merge($dds->toArray(), $config->toArray());
         $this->session = $session;
@@ -137,7 +138,7 @@ class DocumentDeliveryServiceController extends \VuFind\Controller\AbstractBase
      * Display Feedback home form.
      *
      * @return \Zend\View\Model\ViewModel
-     * @throws Exception
+     * @throws \Exception Authorization service missing
      */
     public function homeAction()
     {
@@ -150,7 +151,7 @@ class DocumentDeliveryServiceController extends \VuFind\Controller\AbstractBase
 
         $auth = $this->getAuthorizationService();
         if (!$auth) {
-            throw new Exception('Authorization service missing');
+            throw new \Exception('Authorization service missing');
         }
 
         if (!$auth->isGranted($this->accessPermission)) {
@@ -258,10 +259,10 @@ class DocumentDeliveryServiceController extends \VuFind\Controller\AbstractBase
     /**
      * Private authentication function - Password JTW authentication
      *
-     * @params auth_path    Substitute of path for authentication.
-     * @return mixed        True if authentication successful, null if not
-     *                      successful, PEAR_Error on error.
-     * @throws Exception
+     * @param string $auth_path    Substitute of path for authentication.
+     *
+     * @return mixed                True if authentication successful, null if
+     *                              not successful, PEAR_Error on error.
      * @throws DDSException
      * @access protected
      */
@@ -321,7 +322,7 @@ class DocumentDeliveryServiceController extends \VuFind\Controller\AbstractBase
     /**
      * Private method for build and fill the email templates.
      *
-     * @params array $details   Details to build template
+     * @param array $details   Details to build template
      *
      * @return array [order|customer] Body texts for email
      * @access protected
@@ -490,9 +491,9 @@ class DocumentDeliveryServiceController extends \VuFind\Controller\AbstractBase
             $this->content = array_merge($this->content, $get);
         }
 
-        $structure = array('username', 'phone', 'email', 'userid', 'division',
+        $structure = ['username', 'phone', 'email', 'userid', 'division',
             'department', 'author', 'article', 'journal', 'issn',
-            'publishdate', 'number', 'pages', 'inputdepartment', 'remarks');
+            'publishdate', 'number', 'pages', 'inputdepartment', 'remarks'];
 
         foreach ($structure as $attribute) {
 
@@ -575,9 +576,9 @@ class DocumentDeliveryServiceController extends \VuFind\Controller\AbstractBase
         if (isset($this->config[$identifier][$var])) {
             return $this->config[$identifier][$var];
         } else {
-            throw new DDSException ('Variable [' . $identifier . '] ' . $var . 'is '
+            throw new DDSException(
+                'Variable [' . $identifier . '] ' . $var . 'is '
                 . 'not set at DDS.ini.');
-            return '';
         }
     }
 
@@ -591,8 +592,15 @@ class DocumentDeliveryServiceController extends \VuFind\Controller\AbstractBase
     private function preserveVarsAfterSuccessfulOrder()
     {
         $heap = [];
-        foreach (['department', 'inputdepartment', 'division', 'username', 'phone',
-                     'email', 'userid'] as $k) {
+        foreach ([
+            'department',
+            'inputdepartment',
+            'division',
+            'username',
+            'phone',
+            'email',
+            'userid'
+        ] as $k) {
             $heap[$k] = $this->content[$k];
         }
         $this->content = [];;
@@ -821,30 +829,27 @@ class DocumentDeliveryServiceController extends \VuFind\Controller\AbstractBase
         // get open url standard
         $version = $this->getOpenUrlVersion($getvars);
         // check if article
-        //if (true === $this->_isOpenUrlGenreArticle($getvars, $version)) {
         if ($version == 'v1_0') {
-            return array(
-                array('article' => 'rft_atitle'),
-                array('author' => array('rft_au', 'rft_aufirst|rft_aulast', 'rft_aucorp')),
-                array('journal' => array('rft_jtitle', 'rft_title')),
-                array('issn' => 'rft_issn'),
-                array('number' => 'rft_volume|rft_issue'),
-                array('publishdate' => 'rft_date'),
-                array('pages' => array('rft_pages', 'rft_spage|rft_epage'))
-            );
+            return [
+                ['article' => 'rft_atitle'],
+                ['author' => ['rft_au', 'rft_aufirst|rft_aulast', 'rft_aucorp']],
+                ['journal' => ['rft_jtitle', 'rft_title']],
+                ['issn' => 'rft_issn'],
+                ['number' => 'rft_volume|rft_issue'],
+                ['publishdate' => 'rft_date'],
+                ['pages' => ['rft_pages', 'rft_spage|rft_epage']]
+            ];
         } else {
-            return array(
-                array('article' => 'atitle'),
-                array('author' => array('aufirst|aulast')),
-                array('journal' => array('title')),
-                array('issn' => 'issn'),
-                array('number' => 'volume|issue'),
-                array('publishdate' => 'date'),
-                array('pages' => array('pages', 'spage|epage'))
-            );
+            return [
+                ['article' => 'atitle'],
+                ['author' => ['aufirst|aulast']],
+                ['journal' => ['title']],
+                ['issn' => 'issn'],
+                ['number' => 'volume|issue'],
+                ['publishdate' => 'date'],
+                ['pages' => ['pages', 'spage|epage']]
+            ];
         }
-        //}
-        return false;
     }
 
     /**
@@ -955,7 +960,7 @@ class DocumentDeliveryServiceController extends \VuFind\Controller\AbstractBase
                 } else {
                     $message = 'HTTP status ' . $response->getStatusCode() . ' received';
                 }
-                throw new DDSException ($message);
+                throw new DDSException($message);
             }
 
             return $this->parseJsonAsArray($response->getBody());
@@ -989,7 +994,7 @@ class DocumentDeliveryServiceController extends \VuFind\Controller\AbstractBase
     /**
      * Refresh token if it is e.g. expired.
      *
-     * @params path     Substitute of path for refresh token.
+     * @param string $path Substitute of path for refresh token.
      *
      * @return mixed    True if token refreshed.
      * @access protected
@@ -1018,7 +1023,7 @@ class DocumentDeliveryServiceController extends \VuFind\Controller\AbstractBase
                 } else {
                     $message = 'HTTP status ' . $response->getStatusCode() . ' received';
                 }
-                throw new DDSException ($message);
+                throw new DDSException($message);
             }
 
             $responseArray = $this->parseJsonAsArray($response->getBody());
@@ -1038,7 +1043,7 @@ class DocumentDeliveryServiceController extends \VuFind\Controller\AbstractBase
     /**
      * Store triggered order to database
      *
-     * @params array $content Content
+     * @param array $content Content
      *
      * @access private
      * @return boolean true
@@ -1109,7 +1114,7 @@ class DocumentDeliveryServiceController extends \VuFind\Controller\AbstractBase
      * Method to set subject for Subito order. Places two possibilities:
      * 1) If exists subject from mysql database 2) if not from subito.ini.
      *
-     * @params array $departmentdetails     Details of department.
+     * @param array $departmentdetails     Details of department.
      *
      * @return string
      * @access private
diff --git a/module/finc/src/finc/Cookie/CookieManager.php b/module/finc/src/finc/Cookie/CookieManager.php
index 8e3b75943f9314ac66f546c60585f596112eb339..6dbd76ea92ca26e3660d766b7b87168164dbb88c 100644
--- a/module/finc/src/finc/Cookie/CookieManager.php
+++ b/module/finc/src/finc/Cookie/CookieManager.php
@@ -55,8 +55,12 @@ class CookieManager extends \VuFind\Cookie\CookieManager
      * @param string $sessionName Session cookie name (if null defaults to PHP
      * settings)
      */
-    public function __construct($cookies, $path = '/', $domain = null,
-                                $secure = false, $sessionName = null
+    public function __construct(
+        $cookies,
+        $path = '/',
+        $domain = null,
+        $secure = false,
+        $sessionName = null
     ) {
         $this->cookies = $cookies;
         $this->path = $path;
diff --git a/module/finc/src/finc/ILS/Driver/FincILS.php b/module/finc/src/finc/ILS/Driver/FincILS.php
index 4811e178b43089a69e642fddb24726b1f5c67ee4..3095a85dfe66372639fb36e7e9a2aba7762d9da7 100644
--- a/module/finc/src/finc/ILS/Driver/FincILS.php
+++ b/module/finc/src/finc/ILS/Driver/FincILS.php
@@ -60,13 +60,13 @@ class FincILS extends PAIA implements LoggerAwareInterface
     // 5 - the postal code;
     // 6 - the country name;
     // (cf. https://tools.ietf.org/html/rfc6350#section-6.3.1)
-    public static $vcard_address_parameter_map = array(
+    public static $vcard_address_parameter_map = [
             'address1' => '2',
             'additional' => '1',
             'city' => '3',
             'country' => '6',
-            'zip' => '5',
-    );
+            'zip' => '5'
+    ];
 
     protected $root_username;
     protected $root_password;
@@ -155,11 +155,18 @@ class FincILS extends PAIA implements LoggerAwareInterface
      *
      * @param \VuFind\Date\Converter $converter  Date converter
      * @param \VuFind\Record\Loader  $loader     Record loader
-     * @param \Zend\Config\Config    $mainConfig VuFind main configuration (omit for
-     * built-in defaults)
+     * @param \Zend\Config\Config    $mainConfig VuFind main configuration
+     *                                           (omit for built-in defaults)
+     * @param SearchService          $ss         Search Service
+     * @param mixed                  $mainConfig
+     * @param mixed                  $auth
      */
-    public function __construct(\VuFind\Date\Converter $converter, \Zend\Session\SessionManager $sessionManager,
-        \VuFind\Record\Loader $loader, SearchService $ss, $mainConfig = null,
+    public function __construct(
+        \VuFind\Date\Converter $converter,
+        \Zend\Session\SessionManager $sessionManager,
+        \VuFind\Record\Loader $loader,
+        SearchService $ss,
+        $mainConfig = null,
         $auth = null
     ) {
         parent::__construct($converter, $sessionManager);
@@ -299,8 +306,8 @@ class FincILS extends PAIA implements LoggerAwareInterface
      * Returns whether hold should be placed via Email for the current item based on
      * settings in FincILS.ini.
      *
-     * @param $item
      * @return array
+     * @access protected
      */
     protected function getEmailHoldValidationCriteria()
     {
@@ -469,7 +476,8 @@ class FincILS extends PAIA implements LoggerAwareInterface
      * Gets additional array fields for the item.
      * Override this method in your custom PAIA driver if necessary.
      *
-     * @param array $fee The fee array from PAIA
+     * @param array $fee    The fee array from PAIA
+     * @param array $patron Patron data
      *
      * @return array Additional fee data for the item
      */
@@ -667,6 +675,8 @@ class FincILS extends PAIA implements LoggerAwareInterface
      *     - zipCode      : location zip code
      *     - emailAddress : email address
      *     - reason       : reason of change
+     * @param array $patron Patron data
+     *
      * @return boolean true OK, false FAIL
      * @access public
      */
@@ -808,7 +818,12 @@ class FincILS extends PAIA implements LoggerAwareInterface
     }
 
     /**
-     * helper function for addresses
+     * Helper function for addresses
+     *
+     * @param string $address
+     *
+     * @return mixed
+     * @access private
      */
     private function splitAddress($address) {
 
@@ -823,8 +838,8 @@ class FincILS extends PAIA implements LoggerAwareInterface
         //where everything behind the comma is assumed to be the extension
         $conf = $this->config;
         $regex = '(\D+\d[^\,]*)(?:\,\s*(.*))?';
-        $matches = array();
-        if (preg_match('/'.$regex.'/',$address,$matches)) {
+        $matches = [];
+        if (preg_match('/'.$regex.'/',$address, $matches)) {
             return $matches;
         }
         return FALSE;
@@ -852,7 +867,7 @@ class FincILS extends PAIA implements LoggerAwareInterface
         if (empty($children)) {
 
             // if the key is unknown, we add a new property with the value
-            if (in_array($key, array('TEL', 'ADR'))) {
+            if (in_array($key, ['TEL', 'ADR'])) {
                 $vcard->createComponent($key);
             } else {
                 $vcard->createProperty($key);
@@ -944,8 +959,10 @@ class FincILS extends PAIA implements LoggerAwareInterface
     /**
      * PAIA helper function to map session data to return value of patronLogin()
      *
-     * @param $details  Patron details returned by patronLogin
-     * @param $password Patron cataloge password
+     * @param array  $details  Patron details returned by patronLogin
+     * @param string $password Patron cataloge password
+     * @param string $username
+     *
      * @return mixed
      */
     protected function enrichUserDetails($details, $password, $username = null)
@@ -972,6 +989,7 @@ class FincILS extends PAIA implements LoggerAwareInterface
      * @param array $filter Array of properties identifying the wanted items
      *
      * @return array|mixed Array of documents containing the given filter properties
+     * @throws \Exception
      */
     protected function paiaGetItems($patron, $filter = [])
     {
@@ -985,7 +1003,7 @@ class FincILS extends PAIA implements LoggerAwareInterface
                 $itemsResponse = $this->paiaGetAsArray(
                     'core/'.$patron['cat_username'].'/items'
                 );
-            } catch (Exception $e) {
+            } catch (\Exception $e) {
                 // all error handling is done in paiaHandleErrors so pass on the excpetion
                 throw $e;
             }
@@ -1189,10 +1207,12 @@ class FincILS extends PAIA implements LoggerAwareInterface
      * finc-specific function to count items/entries in return values of given
      * functions in order to be shown as numbers in MyReSearch-Menu
      *
-     * @param $functions Array of function names that will get called and the
-     *                   count of their return values being returned
-     * @param $patron    Patron details returned by patronLogin
-     * @return array     Array in the format [function => count]
+     * @param array $functions  Array of function names that will get called
+     *                          and the count of their return values being
+     *                          returned
+     * @param array $patron     Patron details returned by patronLogin
+     *
+*@return array     Array in the format [function => count]
      */
     public function countItems($functions, $patron) {
         $retval = [];
diff --git a/module/finc/src/finc/ILS/Driver/LiberoDingTrait.php b/module/finc/src/finc/ILS/Driver/LiberoDingTrait.php
index a4a5d73423d85d67e98a169741fdb64c357040c5..57bf6219fce9ec5d97389176f24708344d17ce40 100644
--- a/module/finc/src/finc/ILS/Driver/LiberoDingTrait.php
+++ b/module/finc/src/finc/ILS/Driver/LiberoDingTrait.php
@@ -45,10 +45,12 @@ trait LiberoDingTrait
     /**
      * Get connection timeout of Libero request.
      *
+     * @param int $connectTimeout
+     *
      * @return int Connection timeout
      * @access protected
      */
-    protected function getConnectTimeout ( $connectTimeout = 500 )
+    protected function getConnectTimeout ($connectTimeout = 500)
     {
         return $test = (isset($this->config['LiberoDing']['connectTimeout'])
             && is_numeric($this->config['LiberoDing']['connectTimeout']))
@@ -59,10 +61,12 @@ trait LiberoDingTrait
     /**
      * Get response timeout of Libero request.
      *
+     * @param int $responseTimeout
+     *
      * @return int Response timeout.
      * @access protected
      */
-    protected function getResponseTimeout( $responseTimeout = 1000 )
+    protected function getResponseTimeout($responseTimeout = 1000)
     {
         return (isset($this->config['LiberoDing']['responseTimeout'])
             && is_numeric($this->config['LiberoDing']['responseTimeout']))
@@ -74,7 +78,7 @@ trait LiberoDingTrait
      * gets the webscraper url from config
      *
      * @return string
-     * @throws Exception if not defined
+     * @throws \Exception Webscraper url not defined
      */
     protected function getWebScraperUrl()
     {
@@ -89,7 +93,7 @@ trait LiberoDingTrait
      * gets the databasename from config
      *
      * @return string
-     * @throws Exception if not defined
+     * @throws \Exception No database name defined
      */
     protected function getDbName()
     {
@@ -104,7 +108,8 @@ trait LiberoDingTrait
      * Check if there exists a connection to a url.
      *
      * @access public
-     * @return boolean             Retruns true if a connection exists.
+     * @return boolean    Returns true if a connection exists
+     * @throws \Exception Throws ILSException
      */
     public function checkLiberoDingConnection ()
     {
@@ -149,7 +154,7 @@ trait LiberoDingTrait
      *
      * @param $patron
      * @return bool
-     * @throws Exception
+     * @throws \Exception
      * @throws ILSException
      */
     protected function getSystemMessages($patron)
@@ -184,7 +189,7 @@ trait LiberoDingTrait
     /**
      * Remove libero system messages. No native function in vufind.
      *
-     * @param array  $inval      Associative array of key => value. Keys are:
+     * @param array  $patron     Associative array of key => value. Keys are:
      *                           dbName : databaseName of libero
      *                           memberCode : User ID returned by patronLogin
      *                           password : password of user
@@ -192,9 +197,13 @@ trait LiberoDingTrait
      * @param string $toDate     Deadline till all dates should be removed before
      *
      * @return boolean
+     * @throws \Exception Throws ILSException
      */
-    public function removeMySystemMessages($patron, $messageIdList = null, $toDate = null) {
-
+    public function removeMySystemMessages(
+        $patron,
+        $messageIdList = null,
+        $toDate = null
+    ) {
         $params                 = $this->_getLiberoDingRequestParams();
         $params['memberCode']   = $patron['cat_username'];
         $params['password']     = $patron['cat_password'];
@@ -240,8 +249,11 @@ trait LiberoDingTrait
      *     - zipCode      : location zip code
      *     - emailAddress : email address
      *     - reason       : reason of change
+     * @param array $patron Patron data
+     *
      * @return boolean true OK, false FAIL
      * @access public
+     * @throws \Exception Throws ILSException
      */
     public function setMyProfile($inval, $patron)
     {
@@ -319,6 +331,7 @@ trait LiberoDingTrait
      *
      * @return array An associative array
      * @see For content variables see method _profileDataMapper
+     * @throws \Exception Throws ILSException
      */
     protected function getLiberoDingProfile($patron, $mapped = true)
     {
@@ -416,7 +429,6 @@ trait LiberoDingTrait
      * Private Helper function to return LiberoDing request parameters
      *
      * @return array
-     * @throws Exception
      */
     private function _getLiberoDingRequestParams()
     {
@@ -443,8 +455,10 @@ trait LiberoDingTrait
      * Check the given result for key errorcode and return the requested resultKey
      * value
      *
-     * @param $result array
-     * @return array
+     * @param array $result
+     * @param string $resultKey     Key of $result
+     *
+     * @return mixed
      */
     private function _getLiberoDingResult($result, $resultKey)
     {
diff --git a/module/finc/src/finc/ILS/Driver/PAIA.php b/module/finc/src/finc/ILS/Driver/PAIA.php
index 0a206b2583c4eeb4c7188656a00554681dc91647..cc9107057d1d24a9d7ce3ceae77a94c8195fc097 100644
--- a/module/finc/src/finc/ILS/Driver/PAIA.php
+++ b/module/finc/src/finc/ILS/Driver/PAIA.php
@@ -96,6 +96,8 @@ class PAIA extends \VuFind\ILS\Driver\PAIA
      *                           (required – VuFind-specific message,
      *                           subject to translation)
      *                sysMessage A system supplied failure message
+     * @throws \Exception
+     * @throws ILSException You are not entitled to write items.
      */
     public function cancelHolds($cancelDetails)
     {
@@ -119,7 +121,7 @@ class PAIA extends \VuFind\ILS\Driver\PAIA
             $array_response = $this->paiaPostAsArray(
                 'core/'.$patron['cat_username'].'/cancel', $post_data
             );
-        } catch (Exception $e) {
+        } catch (\Exception $e) {
             $this->debug($e->getMessage());
             return [
                 'success' => false,
@@ -181,6 +183,8 @@ class PAIA extends \VuFind\ILS\Driver\PAIA
      *                       oldPassword.
      *
      * @return array An array with patron information.
+     * @throws \Exception
+     * @throws ILSException You are not entitled to write items.
      */
     public function changePassword($details)
     {
@@ -200,7 +204,7 @@ class PAIA extends \VuFind\ILS\Driver\PAIA
             $array_response = $this->paiaPostAsArray(
                 'auth/change', $post_data
             );
-        } catch (Exception $e) {
+        } catch (\Exception $e) {
             $this->debug($e->getMessage());
             return [
                 'success' => false,
@@ -247,6 +251,8 @@ class PAIA extends \VuFind\ILS\Driver\PAIA
      * @param array $patron The patron array from patronLogin
      *
      * @return mixed Array of the patron's fines on success
+     * @throws \Exception
+     * @throws ILSException You are not entitled to read fees
      */
     public function getMyFines($patron)
     {
@@ -259,7 +265,7 @@ class PAIA extends \VuFind\ILS\Driver\PAIA
             $fees = $this->paiaGetAsArray(
                 'core/'.$patron['cat_username'].'/fees'
             );
-        } catch (Exception $e) {
+        } catch (\Exception $e) {
             // all error handling is done in paiaHandleErrors so pass on the excpetion
             throw $e;
         }
@@ -350,8 +356,8 @@ class PAIA extends \VuFind\ILS\Driver\PAIA
      *
      * @return mixed          Associative array of patron info on successful login,
      * null on unsuccessful login.
-     *
-     * @throws ILSException
+     * @throws \Exception
+     * @throws ILSException Invalid Login, Please try again
      */
     public function patronLogin($username, $password)
     {
@@ -369,7 +375,7 @@ class PAIA extends \VuFind\ILS\Driver\PAIA
                     $this->paiaGetUserDetails($session->patron),
                     $password
                 );
-            } catch (Exception $e) {
+            } catch (\Exception $e) {
                 // TODO? $this->debug('Session expired, login again', ['info' => 'info']);
                 // all error handling is done in paiaHandleErrors so pass on the excpetion
                 throw $e;
@@ -382,7 +388,7 @@ class PAIA extends \VuFind\ILS\Driver\PAIA
                     $password
                 );
             }
-        } catch (Exception $e) {
+        } catch (\Exception $e) {
             // all error handling is done in paiaHandleErrors so pass on the excpetion
             throw $e;
         }
@@ -391,7 +397,8 @@ class PAIA extends \VuFind\ILS\Driver\PAIA
     /**
      * Handle PAIA request errors and throw appropriate exception.
      *
-     * @param array $error Array containing error messages
+     * @param array $array Array containing error messages
+     *
      * @throws AuthException
      * @throws ILSException
      */
@@ -462,6 +469,8 @@ class PAIA extends \VuFind\ILS\Driver\PAIA
      *
      * @return mixed An array of data on the request including
      * whether or not it was successful and a system message (if available)
+     * @throws \Exception
+     * @throws ILSException You are not entitled to write items
      */
     public function placeHold($holdDetails)
     {
@@ -484,7 +493,7 @@ class PAIA extends \VuFind\ILS\Driver\PAIA
             $array_response = $this->paiaPostAsArray(
                 'core/'.$patron['cat_username'].'/request', $post_data
             );
-        } catch (Exception $e) {
+        } catch (\Exception $e) {
             $this->debug($e->getMessage());
             return [
                 'success' => false,
@@ -542,6 +551,8 @@ class PAIA extends \VuFind\ILS\Driver\PAIA
      *                  new_time – string – A new due time
      *                  item_id – The item id of the renewed item
      *                  sysMessage – A system supplied renewal message (optional)
+     * @throws \Exception
+     * @throws ILSException You are not entitled to write items
      */
     public function renewMyItems($details)
     {
@@ -562,7 +573,7 @@ class PAIA extends \VuFind\ILS\Driver\PAIA
             $array_response = $this->paiaPostAsArray(
                 'core/'.$patron['cat_username'].'/renew', $post_data
             );
-        } catch (Exception $e) {
+        } catch (\Exception $e) {
             $this->debug($e->getMessage());
             return [
                 'success' => false,
@@ -635,6 +646,8 @@ class PAIA extends \VuFind\ILS\Driver\PAIA
      * @param array $filter Array of properties identifying the wanted items
      *
      * @return array|mixed Array of documents containing the given filter properties
+     * @throws \Exception
+     * @throws ILSException You are not entitled to read items
      */
     protected function paiaGetItems($patron, $filter = [])
     {
@@ -653,7 +666,7 @@ class PAIA extends \VuFind\ILS\Driver\PAIA
                 $itemsResponse = $this->paiaGetAsArray(
                     'core/'.$patron['cat_username'].'/items'
                 );
-            } catch (Exception $e) {
+            } catch (\Exception $e) {
                 // all error handling is done in paiaHandleErrors so pass on the excpetion
                 throw $e;
             }
@@ -962,7 +975,7 @@ class PAIA extends \VuFind\ILS\Driver\PAIA
      * @param string $file JSON data
      *
      * @return mixed
-     * @throws ILSException
+     * @throws \Exception
      */
     protected function paiaParseJsonAsArray($file)
     {
@@ -973,7 +986,7 @@ class PAIA extends \VuFind\ILS\Driver\PAIA
         if (isset($responseArray['error'])) {
             try {
                 $this->paiaHandleErrors($responseArray);
-            } catch (Exception $e) {
+            } catch (\Exception $e) {
                 throw $e;
             }
         }
@@ -987,7 +1000,7 @@ class PAIA extends \VuFind\ILS\Driver\PAIA
      * @param string $file GET target URL
      *
      * @return array|mixed
-     * @throws ILSException
+     * @throws \Exception
      */
     protected function paiaGetAsArray($file)
     {
@@ -998,7 +1011,7 @@ class PAIA extends \VuFind\ILS\Driver\PAIA
 
         try {
             $responseArray = $this->paiaParseJsonAsArray($responseJson);
-        } catch (Exception $e) {
+        } catch (\Exception $e) {
             // all error handling is done in paiaHandleErrors so pass on the
             // excpetion
             throw $e;
@@ -1043,6 +1056,7 @@ class PAIA extends \VuFind\ILS\Driver\PAIA
      *
      * @return mixed Associative array of patron info on successful login,
      * null on unsuccessful login, PEAR_Error on error.
+     * @throws \Exception
      * @throws ILSException
      */
     protected function paiaLogin($username, $password)
@@ -1062,7 +1076,7 @@ class PAIA extends \VuFind\ILS\Driver\PAIA
 
         try {
             $responseArray = $this->paiaParseJsonAsArray($responseJson);
-        } catch (Exception $e) {
+        } catch (\Exception $e) {
             // all error handling is done in paiaHandleErrors so pass on the
             // excpetion
             throw $e;
@@ -1130,7 +1144,11 @@ class PAIA extends \VuFind\ILS\Driver\PAIA
 
     public function getValidPatronUpdateKeys() {
 
-        return array('name'=>'name','email'=>'email','address'=>'address');
+        return [
+            'name'=>'name',
+            'email'=>'email',
+            'address'=>'address'
+        ];
     }
 
     /**
@@ -1194,6 +1212,8 @@ class PAIA extends \VuFind\ILS\Driver\PAIA
     /**
      * Checks if the current scope is set for active session.
      *
+     * @param string $scope Scope of paia
+     *
      * @return boolean
      */
     protected function paiaCheckScope($scope)
@@ -1209,7 +1229,7 @@ class PAIA extends \VuFind\ILS\Driver\PAIA
      *
      * @param string $id     The Bib ID
      * @param array  $data   An Array of item data
-     * @param patron $patron An array of patron data
+     * @param array  $patron An array of patron data
      *
      * @return bool True if request is valid, false if not
      *
@@ -1227,7 +1247,7 @@ class PAIA extends \VuFind\ILS\Driver\PAIA
      *
      * @param string $id     The Bib ID
      * @param array  $data   An Array of item data
-     * @param patron $patron An array of patron data
+     * @param array  $patron An array of patron data
      *
      * @return bool True if request is valid, false if not
      *
diff --git a/module/finc/src/finc/ILS/Logic/Holds.php b/module/finc/src/finc/ILS/Logic/Holds.php
index 6e6bf38c8c17690826af6f425512daa3fa6ce935..c7f5a366f2c96379b27ec1b6a64e9e7ff25fa4b2 100644
--- a/module/finc/src/finc/ILS/Logic/Holds.php
+++ b/module/finc/src/finc/ILS/Logic/Holds.php
@@ -31,7 +31,7 @@
 
 namespace finc\ILS\Logic;
 
-use VuFind\ILS\Connection as ILSConnection;
+use VuFind\Exception\ILS as ILSException;
 
 /**
  * Hold Logic Class
@@ -123,6 +123,7 @@ class Holds extends \VuFind\ILS\Logic\Holds
      * @param array  $ids A list of Source Records (if catalog is for a consortium)
      *
      * @return array A sorted results set
+     * @throws ILSException
      */
     public function getHoldings($id, $ids = null)
     {
@@ -199,9 +200,10 @@ class Holds extends \VuFind\ILS\Logic\Holds
      * Process email holds information in holdings and set the links
      * accordingly.
      *
-     * @param array  $holdings Holdings
-     * @param string $id       Record ID
-     * @param array  $patron   Patron
+     * @param array  $holdings          Holdings
+     * @param string $id                Record ID
+     * @param array  $patron            Patron
+     * @param array  $requestsBlocked
      *
      * @return array Modified holdings
      */
diff --git a/module/finc/src/finc/Recommend/EbscoResults.php b/module/finc/src/finc/Recommend/EbscoResults.php
index 4d34f558a1af88e143de5ea4a8e66acc561c43db..fce9d9dab7565bffb392b78a442a2d7a8900e5e7 100644
--- a/module/finc/src/finc/Recommend/EbscoResults.php
+++ b/module/finc/src/finc/Recommend/EbscoResults.php
@@ -30,8 +30,6 @@
  */
 namespace finc\Recommend;
 
-use LosReCaptcha\Service\Exception;
-
 /**
  * Recommendation Module Factory Class
  *
@@ -104,15 +102,15 @@ class EbscoResults implements \VuFind\Recommend\RecommendInterface,
      *
      * @return void
      * @access public
-     * @throws Exception    Isil as namespace for service has not been set yet or
-     *                      is false.
+     * @throws \Exception Isil as namespace for service has not been set yet or
+     *                    is false.
      */
     public function setConfig($settings)
     {
         // Parse out parameters:
         $params = explode(':', $settings);
         if (!isset($params[0]) || (0 < preg_match('/\s/', $params[0]))) {
-            throw new Exception(
+            throw new \Exception(
                 'Isil as namespace for service has not been set yet or is false.'
             );
         }
@@ -156,7 +154,7 @@ class EbscoResults implements \VuFind\Recommend\RecommendInterface,
      *
      * @return void
      * @access public
-     * @throws Exception    JSON type error
+     * @throws \Exception    JSON type error
      */
     public function process($results)
     {
@@ -170,7 +168,7 @@ class EbscoResults implements \VuFind\Recommend\RecommendInterface,
             json_decode($results->getBody(), true)
         );
         if (json_last_error() !== JSON_ERROR_NONE) {
-            throw new Exception ('JSON type error ' . json_last_error_msg());
+            throw new \Exception('JSON type error ' . json_last_error_msg());
         }
     }
 
diff --git a/module/finc/src/finc/RecordDriver/Factory.php b/module/finc/src/finc/RecordDriver/Factory.php
index 1d289901919936af3763aef2a04ee46393a41c33..0b598bf950ea8623db6a643749311f10543c0ce3 100644
--- a/module/finc/src/finc/RecordDriver/Factory.php
+++ b/module/finc/src/finc/RecordDriver/Factory.php
@@ -87,7 +87,7 @@ class Factory
      *
      * @param ServiceManager $sm Service manager.
      *
-     * @return SolrMarcPDA
+     * @return SolrMarcFincPDA
      */
     public static function getSolrMarcFincPDA(ServiceManager $sm)
     {
@@ -230,7 +230,7 @@ class Factory
      *
      * @param ServiceManager $sm Service manager.
      *
-     * @return SolrLidoFinc
+     * @return SolrLido
      */
     public static function getSolrLido(ServiceManager $sm)
     {
diff --git a/module/finc/src/finc/RecordDriver/SolrDefaultFincTrait.php b/module/finc/src/finc/RecordDriver/SolrDefaultFincTrait.php
index 131771f59a9eef2a3ea97e743ddbad6a1df63d4c..c0ebced420a6e41bc3de0026455a7b7b6ce23871 100644
--- a/module/finc/src/finc/RecordDriver/SolrDefaultFincTrait.php
+++ b/module/finc/src/finc/RecordDriver/SolrDefaultFincTrait.php
@@ -598,6 +598,8 @@ trait SolrDefaultFincTrait
      * corporate/corporate_orig/corporate_secondary/corporate_secondary_orig/
      * secondary/secondary_orig keys.
      *
+     * @param array $dataFields
+     *
      * @return array
      */
     public function getDeduplicatedAuthors($dataFields = [])
@@ -1087,7 +1089,7 @@ trait SolrDefaultFincTrait
      *
      * @param string $authordata
      *
-     * @return strings
+     * @return array
      */
     private function _filterAuthorDates( $authordata )
     {
diff --git a/module/finc/src/finc/RecordDriver/SolrMarc.php b/module/finc/src/finc/RecordDriver/SolrMarc.php
index 7f2dd21824de90b04c7c57b013aea08060bf00c2..5e39e43218d15f466f2901929d46748244052333 100644
--- a/module/finc/src/finc/RecordDriver/SolrMarc.php
+++ b/module/finc/src/finc/RecordDriver/SolrMarc.php
@@ -87,6 +87,8 @@ class SolrMarc extends SolrDefault
      * returned as an array of chunks, increasing from least specific to most
      * specific.
      *
+     * @param boolean $extended If dynamic index extension activated
+     *
      * @return array
      */
     public function getAllSubjectHeadings($extended = false)
@@ -1081,6 +1083,7 @@ class SolrMarc extends SolrDefault
      * Get access to the raw File_MARC object.
      *
      * @return \File_MARCBASE
+     * @throws \File_MARC_Exception
      */
     public function getMarcRecord()
     {
diff --git a/module/finc/src/finc/RecordDriver/SolrMarcFincTrait.php b/module/finc/src/finc/RecordDriver/SolrMarcFincTrait.php
index 99e8f2113ec3d564a7c740daf416dcbe8cd7b214..5c70a3747e0118ccd975d50feb0aad651003d721 100644
--- a/module/finc/src/finc/RecordDriver/SolrMarcFincTrait.php
+++ b/module/finc/src/finc/RecordDriver/SolrMarcFincTrait.php
@@ -222,7 +222,9 @@ trait SolrMarcFincTrait
     public function getLocalOrderInformation()
     {
         // loop through all existing LocalMarcFieldOfLibrary
-        if ($fields = $this->getMarcRecord()->getFields($this->getLocalMarcFieldOfLibrary())) {
+        if ($fields = $this->getMarcRecord()->getFields(
+            $this->getLocalMarcFieldOfLibrary())
+        ) {
             foreach($fields as $field) {
                 // return the first occurance of $m
                 if ($field->getSubfield('m')) {
@@ -892,7 +894,9 @@ trait SolrMarcFincTrait
     {
         $retval = [];
 
-        $fields = $this->getMarcRecord()->getFields($this->getLocalMarcFieldOfLibrary());
+        $fields = $this->getMarcRecord()->getFields(
+            $this->getLocalMarcFieldOfLibrary()
+        );
         if (!$fields) {
             return null;
         }
@@ -1709,6 +1713,8 @@ trait SolrMarcFincTrait
      * returned as an array of chunks, increasing from least specific to most
      * specific.
      *
+     * @param boolean $extended If dynamic index extension activated
+     *
      * @return array
      */
     public function getAllSubjectHeadings($extended = false)
diff --git a/module/finc/src/finc/Resolver/Driver/Ezb.php b/module/finc/src/finc/Resolver/Driver/Ezb.php
index 7dd95fbee27abd68fef907dccea412742edcc2de..ac8ff664edf5f096b3083bc00398e3bd13d250e5 100644
--- a/module/finc/src/finc/Resolver/Driver/Ezb.php
+++ b/module/finc/src/finc/Resolver/Driver/Ezb.php
@@ -63,7 +63,7 @@ class Ezb implements DriverInterface, TranslatorAwareInterface
     /**
      * Resolver configuration
      *
-     * @var \Zend\Config\Resolver
+     * @var \Zend\Config\Resolver $resolver
      */
     protected $config;
 
diff --git a/module/finc/src/finc/Resolver/Driver/Factory.php b/module/finc/src/finc/Resolver/Driver/Factory.php
index eae9b98d3875badd5bfdbbcbde1c0e24f8a7fb35..dfdb2ce883576f06a763c2784d8bc5240dd5a844 100644
--- a/module/finc/src/finc/Resolver/Driver/Factory.php
+++ b/module/finc/src/finc/Resolver/Driver/Factory.php
@@ -26,6 +26,7 @@
  * @link     https://vufind.org/wiki/development:plugins:hierarchy_components Wiki
  */
 namespace finc\Resolver\Driver;
+
 use Zend\ServiceManager\ServiceManager;
 
 /**
@@ -62,7 +63,8 @@ class Factory
      *
      * @param ServiceManager $sm Service manager.
      *
-     * @return Redi
+     * @return finc\Resolver\Driver\Redi
+     * @todo Not implemented in finc module yet?
      */
     public static function getRedi(ServiceManager $sm)
     {
diff --git a/module/finc/src/finc/Rewrite/EblRewrite.php b/module/finc/src/finc/Rewrite/EblRewrite.php
index 0036772ca3909590f2a2bc557512dca261e1a0ba..d7a4a3f9515fffe8b55db529aadd18a0fc5850cf 100644
--- a/module/finc/src/finc/Rewrite/EblRewrite.php
+++ b/module/finc/src/finc/Rewrite/EblRewrite.php
@@ -131,7 +131,6 @@ class EblRewrite
      *
      * @return string
      * @access private
-     * @throws Exception    There is no secret key defined in configuration
      */
     private function getEblIdentifier($userid, $timestamp, $statususer)
     {
@@ -145,7 +144,6 @@ class EblRewrite
      *
      * @return string
      * @access private
-     * @throws Exception    There is no secret key defined in configuration
      */
     private function getHashedUser($userid)
     {
diff --git a/module/finc/src/finc/Role/PermissionProvider/Factory.php b/module/finc/src/finc/Role/PermissionProvider/Factory.php
index 4c7ec08627a1c9b34f5aecf608972791a1c96389..53c209190a2c73393e6196bc784cb8662deea683 100644
--- a/module/finc/src/finc/Role/PermissionProvider/Factory.php
+++ b/module/finc/src/finc/Role/PermissionProvider/Factory.php
@@ -46,7 +46,7 @@ class Factory
      *
      * @param ServiceManager $sm Service manager.
      *
-     * @return Username
+     * @return CatUserType
      */
     public static function getCatUserType(ServiceManager $sm)
     {
diff --git a/module/finc/src/finc/View/Helper/Root/BranchInfo.php b/module/finc/src/finc/View/Helper/Root/BranchInfo.php
index 82b7712a833d04e5474a7870de4cf17f1642574f..6e42b1c6813efd1f0db123ce95b1a4e84c740838 100644
--- a/module/finc/src/finc/View/Helper/Root/BranchInfo.php
+++ b/module/finc/src/finc/View/Helper/Root/BranchInfo.php
@@ -58,7 +58,7 @@ class BranchInfo  extends AbstractHelper
     /**
      * Constructor
      *
-     * @param \Zend\Config\Config $config VuFind configuration
+     * @param ServiceLocatorInterface $serviceLocator
      */
     public function __construct(ServiceLocatorInterface $serviceLocator)
     {
diff --git a/module/finc/src/finc/View/Helper/Root/Citation.php b/module/finc/src/finc/View/Helper/Root/Citation.php
index 9466d045c97e3defeef9cdb0f4e41615d80add73..daa6761f032c5df443a0152150b2255dcbf6eab1 100644
--- a/module/finc/src/finc/View/Helper/Root/Citation.php
+++ b/module/finc/src/finc/View/Helper/Root/Citation.php
@@ -351,7 +351,7 @@ class Citation extends \VuFind\View\Helper\Root\Citation
                 $title .= ' : ' . $subtitle;
             }
         }
-        $titleStatement = array();
+        $titleStatement = [];
         $rawTitlestatement = $this->driver->tryMethod('getTitleStatement');
         if (isset($rawTitlestatement)) {
             $titleStatement[] = $rawTitlestatement;
diff --git a/module/finc/src/finc/View/Helper/Root/ExternalCatalogueLink.php b/module/finc/src/finc/View/Helper/Root/ExternalCatalogueLink.php
index cb33cd70fbce78899d954d437a67fbe5ac0522f6..3c61f46425f33726af3ebf775a46e848eec14584 100644
--- a/module/finc/src/finc/View/Helper/Root/ExternalCatalogueLink.php
+++ b/module/finc/src/finc/View/Helper/Root/ExternalCatalogueLink.php
@@ -62,7 +62,7 @@ class ExternalCatalogueLink extends \Zend\View\Helper\AbstractHelper
     /**
      * Current RecordDriver
      *
-     * @var \VuFind\RecordDriver
+     * @var \VuFind\RecordDriver $driver
      */
     protected $driver;
 
diff --git a/module/finc/src/finc/View/Helper/Root/InterlibraryLoanLink.php b/module/finc/src/finc/View/Helper/Root/InterlibraryLoanLink.php
index 9896311b2adc70d881158cb4321a14f9590d3226..e55832591a649631b21c4eef34d29d7aa72165d0 100644
--- a/module/finc/src/finc/View/Helper/Root/InterlibraryLoanLink.php
+++ b/module/finc/src/finc/View/Helper/Root/InterlibraryLoanLink.php
@@ -53,7 +53,7 @@ class InterlibraryLoanLink extends AbstractHelper
         $url_search = "http://flportal.bsz-bw.de/servlet/locator?sigel=15";
         $url_default = "http://flportal.bsz-bw.de/jsp/start.jsp?sigel=15";
 
-        foreach (array('issn', 'isbn') as $signifier) {
+        foreach (['issn', 'isbn'] as $signifier) {
             $method = "getClean" . strtoupper($signifier);
             $$signifier = $driver->$method();
             if (!empty($$signifier)) {
diff --git a/module/finc/src/finc/View/Helper/Root/OpenUrl.php b/module/finc/src/finc/View/Helper/Root/OpenUrl.php
index a6b47243b7833e2f7db019ea80e102011fd7b0f6..b90c1e54d957ac4fda27c9444ca27598359d920e 100644
--- a/module/finc/src/finc/View/Helper/Root/OpenUrl.php
+++ b/module/finc/src/finc/View/Helper/Root/OpenUrl.php
@@ -62,7 +62,7 @@ class OpenUrl extends \Zend\View\Helper\AbstractHelper
     /**
      * Current RecordDriver
      *
-     * @var \VuFind\RecordDriver
+     * @var \VuFind\RecordDriver $driver
      */
     protected $recordDriver;
 
@@ -134,6 +134,7 @@ class OpenUrl extends \Zend\View\Helper\AbstractHelper
      * @param array $params     OpenUrl parameters set so far
      *
      * @return void
+     * @throws \Exception Image based linking is not configured
      */
     protected function addImageBasedParams($imagebased, & $params)
     {
diff --git a/module/finc/src/finc/View/Helper/Root/Permission.php b/module/finc/src/finc/View/Helper/Root/Permission.php
index bb0d10865bd79d665bd0619049def37d6e6dc929..080d9613b88f8da4804894eb29fd4f6028245e7e 100644
--- a/module/finc/src/finc/View/Helper/Root/Permission.php
+++ b/module/finc/src/finc/View/Helper/Root/Permission.php
@@ -26,9 +26,6 @@
  * @link     https://vufind.org/wiki/development Wiki
  */
 namespace finc\View\Helper\Root;
-use Zend\View\Exception\RuntimeException,
-    ZfcRbac\Service\AuthorizationServiceAwareInterface,
-    ZfcRbac\Service\AuthorizationServiceAwareTrait;
 
 /**
  * Permissions view helper
@@ -79,8 +76,8 @@ class Permission extends \Zend\View\Helper\AbstractHelper
         if (!($user = $this->isLoggedIn())) {
             return false;
         }
-
-        return $this->auth != null ? $this->auth->isGranted($permission) : false;
+        return ($this->auth != null)
+            ? $this->auth->isGranted($permission) : false;
     }
     
     /**
diff --git a/module/finc/src/finc/View/Helper/Root/Record.php b/module/finc/src/finc/View/Helper/Root/Record.php
index 78a21b4606f9d15982e23842de4886cfa2535575..7bda76d1e3182351d3b12128b2bf519825310319 100644
--- a/module/finc/src/finc/View/Helper/Root/Record.php
+++ b/module/finc/src/finc/View/Helper/Root/Record.php
@@ -64,7 +64,7 @@ class Record extends \VuFind\View\Helper\Root\Record
     /**
      * Rewriter
      *
-     * @var \finc\Rewrite
+     * @var \finc\Rewrite $rewrite
      */
     protected $rewrite;
 
@@ -80,6 +80,11 @@ class Record extends \VuFind\View\Helper\Root\Record
      *
      * @param \Zend\Config\Config $config VuFind configuration
      * @param \Zend\View\Helper\Url $helper URL helper
+     * @param \VuFind\Auth\Manager $manager AuthManager
+     * @param mixed $rewrite
+     * @param mixed $resolverConfig
+     *
+     * @access public
      */
     public function __construct(
         $config = null,
@@ -241,7 +246,7 @@ class Record extends \VuFind\View\Helper\Root\Record
      *
      * @param array $dates Dates
      *
-     * @return strings
+     * @return mixed
      */
     public function mapDateListToRangeView($dates)
     {
@@ -261,11 +266,11 @@ class Record extends \VuFind\View\Helper\Root\Record
      *
      * @param string $author Author data
      *
-     * @return strings
+     * @return mixed
      */
     public function removeAuthorDates( $author )
     {
-        $match = array();
+        $match = [];
         if (preg_match('/^(\s|.*)\s(fl.\s|d.\s|ca.\s|\*)*\s?(\d{4})\??(\sor\s\d\d?)?\s?(-|–)?\s?(ca.\s|after\s|†)?(\d{1,4})?(.|,)?$/Uu', $author, $match))
         {
             $author = (isset($match[1])) ? trim($match[1]) : $author;
@@ -346,7 +351,7 @@ class Record extends \VuFind\View\Helper\Root\Record
                         // prepare search pattern
                         // should be free of conflicting meta characters
                         $pattern
-                            = str_replace(array('.'), array('\.'), $r['search']);
+                            = str_replace(['.'], ['\.'], $r['search']);
                         $pattern = '/(' . $pattern . ')/i';
                         // replace it only one time
                         $link
diff --git a/module/finc/src/finc/View/Helper/Root/RecordLink.php b/module/finc/src/finc/View/Helper/Root/RecordLink.php
index bbebc9c4169420722ac8f9bbe6148683b1b52eed..53fd5f7820aec28b079f0d360fd5ef28c17b2ea5 100644
--- a/module/finc/src/finc/View/Helper/Root/RecordLink.php
+++ b/module/finc/src/finc/View/Helper/Root/RecordLink.php
@@ -27,6 +27,7 @@
  * @link     https://vufind.org/wiki/development Wiki
  */
 namespace finc\View\Helper\Root;
+
 use VuFindSearch\Query\Query as Query,
     VuFind\Record\Loader as Loader,
     VuFind\Record\Router as Router,
@@ -61,7 +62,7 @@ class RecordLink extends \VuFind\View\Helper\Root\RecordLink
     /**
      * Connection used when searching for fincid
      *
-     * @var VuFindSearch\Service
+     * @var SearchService $searchService
      */
     protected $searchService;
 
@@ -72,8 +73,11 @@ class RecordLink extends \VuFind\View\Helper\Root\RecordLink
      * @param \VuFind\Record\Loader $loader Record loader
      * @param \VuFindSearch\Service $ss     Search service
      */
-    public function __construct(Router $router, Loader $loader, SearchService $ss)
-    {
+    public function __construct(
+        Router $router,
+        Loader $loader,
+        SearchService $ss
+    ) {
         $this->router = $router;
         $this->recordLoader = $loader;
         $this->searchService = $ss;
diff --git a/module/finc/src/finc/View/Helper/Root/ResultFeed.php b/module/finc/src/finc/View/Helper/Root/ResultFeed.php
index 65f26faa3dd7208453075049bfd374513ee94edd..6eebc54b7a8b9f32cd3cdabd0899967bcc23da8e 100644
--- a/module/finc/src/finc/View/Helper/Root/ResultFeed.php
+++ b/module/finc/src/finc/View/Helper/Root/ResultFeed.php
@@ -48,6 +48,7 @@ class ResultFeed extends \VuFind\View\Helper\Root\ResultFeed
      * @param \VuFind\RecordDriver\AbstractBase $record Record to add to feed
      *
      * @return void
+     * @throws \Exception Cannot find URL for record.
      */
     protected function addEntry($feed, $record)
     {
diff --git a/module/finc/src/finc/XSLT/Processor.php b/module/finc/src/finc/XSLT/Processor.php
index be99695a4b67629c709a22fae4a82c64a7038d33..fb4b3ecd29a39c4f0c0a621249538a5214167d69 100644
--- a/module/finc/src/finc/XSLT/Processor.php
+++ b/module/finc/src/finc/XSLT/Processor.php
@@ -44,7 +44,7 @@ class Processor extends \VuFind\XSLT\Processor
      *
      * @param string $xslt   Name of stylesheet (in application/xsl directory)
      * @param string $xml    XML to transform with stylesheet
-     * @param string $params Associative array of XSLT parameters
+     * @param array  $params Associative array of XSLT parameters
      *
      * @return string      Transformed XML
      */
diff --git a/module/finc/tests/bootstrap.php b/module/finc/tests/bootstrap.php
index e450e08de7863b9ec934a9c26f35020534b041f0..16fcfc6117386c4948f11a0a99c05aca2d3e95b3 100644
--- a/module/finc/tests/bootstrap.php
+++ b/module/finc/tests/bootstrap.php
@@ -129,7 +129,8 @@ class Bootstrap
     /**
      * GetConfig
      *
-     * @return Config
+     * @return self::config
+     * @static
      */
     public static function getConfig()
     {