diff --git a/composer.lock b/composer.lock
index 5f19d34a2269128ff994dc7ea4825d62ca9de72f..95515ffaf377f51012f53e18d7cab3706d46e5c7 100644
--- a/composer.lock
+++ b/composer.lock
@@ -917,21 +917,21 @@
         },
         {
             "name": "myclabs/php-enum",
-            "version": "1.6.6",
+            "version": "1.7.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/myclabs/php-enum.git",
-                "reference": "32c4202886c51fbe5cc3a7c34ec5c9a4a790345e"
+                "reference": "f46847626b8739de22e4ebc6b56010f317d4448d"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/myclabs/php-enum/zipball/32c4202886c51fbe5cc3a7c34ec5c9a4a790345e",
-                "reference": "32c4202886c51fbe5cc3a7c34ec5c9a4a790345e",
+                "url": "https://api.github.com/repos/myclabs/php-enum/zipball/f46847626b8739de22e4ebc6b56010f317d4448d",
+                "reference": "f46847626b8739de22e4ebc6b56010f317d4448d",
                 "shasum": ""
             },
             "require": {
                 "ext-json": "*",
-                "php": ">=5.4"
+                "php": ">=7.1"
             },
             "require-dev": {
                 "phpunit/phpunit": "^4.8.35|^5.7|^6.0",
@@ -958,31 +958,32 @@
             "keywords": [
                 "enum"
             ],
-            "time": "2019-02-04T21:18:49+00:00"
+            "time": "2019-05-05T10:12:03+00:00"
         },
         {
             "name": "ocramius/package-versions",
-            "version": "1.2.0",
+            "version": "1.4.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/Ocramius/PackageVersions.git",
-                "reference": "ad8a245decad4897cc6b432743913dad0d69753c"
+                "reference": "a4d4b60d0e60da2487bd21a2c6ac089f85570dbb"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/Ocramius/PackageVersions/zipball/ad8a245decad4897cc6b432743913dad0d69753c",
-                "reference": "ad8a245decad4897cc6b432743913dad0d69753c",
+                "url": "https://api.github.com/repos/Ocramius/PackageVersions/zipball/a4d4b60d0e60da2487bd21a2c6ac089f85570dbb",
+                "reference": "a4d4b60d0e60da2487bd21a2c6ac089f85570dbb",
                 "shasum": ""
             },
             "require": {
-                "composer-plugin-api": "^1.0",
-                "php": "~7.0"
+                "composer-plugin-api": "^1.0.0",
+                "php": "^7.1.0"
             },
             "require-dev": {
-                "composer/composer": "^1.3",
+                "composer/composer": "^1.6.3",
+                "doctrine/coding-standard": "^5.0.1",
                 "ext-zip": "*",
-                "humbug/humbug": "dev-master",
-                "phpunit/phpunit": "^6.4"
+                "infection/infection": "^0.7.1",
+                "phpunit/phpunit": "^7.0.0"
             },
             "type": "composer-plugin",
             "extra": {
@@ -1007,7 +1008,7 @@
                 }
             ],
             "description": "Composer plugin that provides efficient querying for installed package versions (no runtime IO)",
-            "time": "2017-11-24T11:07:03+00:00"
+            "time": "2019-02-21T12:16:21+00:00"
         },
         {
             "name": "ocramius/proxy-manager",
@@ -1183,16 +1184,16 @@
         },
         {
             "name": "pear/archive_tar",
-            "version": "1.4.6",
+            "version": "1.4.7",
             "source": {
                 "type": "git",
                 "url": "https://github.com/pear/Archive_Tar.git",
-                "reference": "b8e33f9063a7cd1d20f079014f8382b3a7aee47e"
+                "reference": "7e48add6f8edc3027dd98ad15964b1a28fd0c845"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/pear/Archive_Tar/zipball/b8e33f9063a7cd1d20f079014f8382b3a7aee47e",
-                "reference": "b8e33f9063a7cd1d20f079014f8382b3a7aee47e",
+                "url": "https://api.github.com/repos/pear/Archive_Tar/zipball/7e48add6f8edc3027dd98ad15964b1a28fd0c845",
+                "reference": "7e48add6f8edc3027dd98ad15964b1a28fd0c845",
                 "shasum": ""
             },
             "require": {
@@ -1245,7 +1246,7 @@
                 "archive",
                 "tar"
             ],
-            "time": "2019-02-01T11:10:38+00:00"
+            "time": "2019-04-08T13:15:55+00:00"
         },
         {
             "name": "pear/console_getopt",
@@ -1466,16 +1467,16 @@
         },
         {
             "name": "pear/pear-core-minimal",
-            "version": "v1.10.7",
+            "version": "v1.10.9",
             "source": {
                 "type": "git",
                 "url": "https://github.com/pear/pear-core-minimal.git",
-                "reference": "19a3e0fcd50492c4357372f623f55f1b144346da"
+                "reference": "742be8dd68c746a01e4b0a422258e9c9cae1c37f"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/pear/pear-core-minimal/zipball/19a3e0fcd50492c4357372f623f55f1b144346da",
-                "reference": "19a3e0fcd50492c4357372f623f55f1b144346da",
+                "url": "https://api.github.com/repos/pear/pear-core-minimal/zipball/742be8dd68c746a01e4b0a422258e9c9cae1c37f",
+                "reference": "742be8dd68c746a01e4b0a422258e9c9cae1c37f",
                 "shasum": ""
             },
             "require": {
@@ -1506,7 +1507,7 @@
                 }
             ],
             "description": "Minimal set of PEAR core files to be used as composer dependency",
-            "time": "2018-12-05T20:03:52+00:00"
+            "time": "2019-03-13T18:15:44+00:00"
         },
         {
             "name": "pear/pear_exception",
@@ -2480,7 +2481,7 @@
         },
         {
             "name": "symfony/expression-language",
-            "version": "v3.4.22",
+            "version": "v3.4.28",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/expression-language.git",
@@ -2588,16 +2589,16 @@
         },
         {
             "name": "symfony/options-resolver",
-            "version": "v3.4.22",
+            "version": "v3.4.28",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/options-resolver.git",
-                "reference": "0f1cbaee6b356e72c0e025f9a4e9d76a25bf4793"
+                "reference": "ed3b397f9c07c8ca388b2a1ef744403b4d4ecc44"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/options-resolver/zipball/0f1cbaee6b356e72c0e025f9a4e9d76a25bf4793",
-                "reference": "0f1cbaee6b356e72c0e025f9a4e9d76a25bf4793",
+                "url": "https://api.github.com/repos/symfony/options-resolver/zipball/ed3b397f9c07c8ca388b2a1ef744403b4d4ecc44",
+                "reference": "ed3b397f9c07c8ca388b2a1ef744403b4d4ecc44",
                 "shasum": ""
             },
             "require": {
@@ -2638,7 +2639,7 @@
                 "configuration",
                 "options"
             ],
-            "time": "2019-01-16T09:39:14+00:00"
+            "time": "2019-04-10T16:00:48+00:00"
         },
         {
             "name": "symfony/polyfill-apcu",
@@ -2756,16 +2757,16 @@
         },
         {
             "name": "symfony/polyfill-mbstring",
-            "version": "v1.10.0",
+            "version": "v1.11.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/polyfill-mbstring.git",
-                "reference": "c79c051f5b3a46be09205c73b80b346e4153e494"
+                "reference": "fe5e94c604826c35a32fa832f35bd036b6799609"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/c79c051f5b3a46be09205c73b80b346e4153e494",
-                "reference": "c79c051f5b3a46be09205c73b80b346e4153e494",
+                "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/fe5e94c604826c35a32fa832f35bd036b6799609",
+                "reference": "fe5e94c604826c35a32fa832f35bd036b6799609",
                 "shasum": ""
             },
             "require": {
@@ -2777,7 +2778,7 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.9-dev"
+                    "dev-master": "1.11-dev"
                 }
             },
             "autoload": {
@@ -2811,7 +2812,7 @@
                 "portable",
                 "shim"
             ],
-            "time": "2018-09-21T13:07:52+00:00"
+            "time": "2019-02-06T07:57:58+00:00"
         },
         {
             "name": "symfony/polyfill-php70",
@@ -5822,16 +5823,16 @@
         },
         {
             "name": "zendframework/zend-uri",
-            "version": "2.6.2",
+            "version": "2.7.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/zendframework/zend-uri.git",
-                "reference": "2b0bc8b999b9b417f2c59e14511e669aa4b6286f"
+                "reference": "b2785cd38fe379a784645449db86f21b7739b1ee"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/zendframework/zend-uri/zipball/2b0bc8b999b9b417f2c59e14511e669aa4b6286f",
-                "reference": "2b0bc8b999b9b417f2c59e14511e669aa4b6286f",
+                "url": "https://api.github.com/repos/zendframework/zend-uri/zipball/b2785cd38fe379a784645449db86f21b7739b1ee",
+                "reference": "b2785cd38fe379a784645449db86f21b7739b1ee",
                 "shasum": ""
             },
             "require": {
@@ -5846,8 +5847,8 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "2.6.x-dev",
-                    "dev-develop": "2.7.x-dev"
+                    "dev-master": "2.7.x-dev",
+                    "dev-develop": "2.8.x-dev"
                 }
             },
             "autoload": {
@@ -5865,7 +5866,7 @@
                 "uri",
                 "zf"
             ],
-            "time": "2019-02-26T21:06:10+00:00"
+            "time": "2019-02-27T21:39:04+00:00"
         },
         {
             "name": "zendframework/zend-validator",
@@ -6477,16 +6478,16 @@
         },
         {
             "name": "composer/semver",
-            "version": "1.4.2",
+            "version": "1.5.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/composer/semver.git",
-                "reference": "c7cb9a2095a074d131b65a8a0cd294479d785573"
+                "reference": "46d9139568ccb8d9e7cdd4539cab7347568a5e2e"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/composer/semver/zipball/c7cb9a2095a074d131b65a8a0cd294479d785573",
-                "reference": "c7cb9a2095a074d131b65a8a0cd294479d785573",
+                "url": "https://api.github.com/repos/composer/semver/zipball/46d9139568ccb8d9e7cdd4539cab7347568a5e2e",
+                "reference": "46d9139568ccb8d9e7cdd4539cab7347568a5e2e",
                 "shasum": ""
             },
             "require": {
@@ -6535,20 +6536,20 @@
                 "validation",
                 "versioning"
             ],
-            "time": "2016-08-30T16:08:34+00:00"
+            "time": "2019-03-19T17:25:45+00:00"
         },
         {
             "name": "composer/xdebug-handler",
-            "version": "1.3.2",
+            "version": "1.3.3",
             "source": {
                 "type": "git",
                 "url": "https://github.com/composer/xdebug-handler.git",
-                "reference": "d17708133b6c276d6e42ef887a877866b909d892"
+                "reference": "46867cbf8ca9fb8d60c506895449eb799db1184f"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/d17708133b6c276d6e42ef887a877866b909d892",
-                "reference": "d17708133b6c276d6e42ef887a877866b909d892",
+                "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/46867cbf8ca9fb8d60c506895449eb799db1184f",
+                "reference": "46867cbf8ca9fb8d60c506895449eb799db1184f",
                 "shasum": ""
             },
             "require": {
@@ -6579,325 +6580,38 @@
                 "Xdebug",
                 "performance"
             ],
-            "time": "2019-01-28T20:25:53+00:00"
-        },
-        {
-            "name": "doctrine/collections",
-            "version": "v1.5.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/doctrine/collections.git",
-                "reference": "a01ee38fcd999f34d9bfbcee59dbda5105449cbf"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/doctrine/collections/zipball/a01ee38fcd999f34d9bfbcee59dbda5105449cbf",
-                "reference": "a01ee38fcd999f34d9bfbcee59dbda5105449cbf",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^7.1"
-            },
-            "require-dev": {
-                "doctrine/coding-standard": "~0.1@dev",
-                "phpunit/phpunit": "^5.7"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.3.x-dev"
-                }
-            },
-            "autoload": {
-                "psr-0": {
-                    "Doctrine\\Common\\Collections\\": "lib/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Roman Borschel",
-                    "email": "roman@code-factory.org"
-                },
-                {
-                    "name": "Benjamin Eberlei",
-                    "email": "kontakt@beberlei.de"
-                },
-                {
-                    "name": "Guilherme Blanco",
-                    "email": "guilhermeblanco@gmail.com"
-                },
-                {
-                    "name": "Jonathan Wage",
-                    "email": "jonwage@gmail.com"
-                },
-                {
-                    "name": "Johannes Schmitt",
-                    "email": "schmittjoh@gmail.com"
-                }
-            ],
-            "description": "Collections Abstraction library",
-            "homepage": "http://www.doctrine-project.org",
-            "keywords": [
-                "array",
-                "collections",
-                "iterator"
-            ],
-            "time": "2017-07-22T10:37:32+00:00"
-        },
-        {
-            "name": "doctrine/common",
-            "version": "v2.10.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/doctrine/common.git",
-                "reference": "30e33f60f64deec87df728c02b107f82cdafad9d"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/doctrine/common/zipball/30e33f60f64deec87df728c02b107f82cdafad9d",
-                "reference": "30e33f60f64deec87df728c02b107f82cdafad9d",
-                "shasum": ""
-            },
-            "require": {
-                "doctrine/annotations": "^1.0",
-                "doctrine/cache": "^1.0",
-                "doctrine/collections": "^1.0",
-                "doctrine/event-manager": "^1.0",
-                "doctrine/inflector": "^1.0",
-                "doctrine/lexer": "^1.0",
-                "doctrine/persistence": "^1.1",
-                "doctrine/reflection": "^1.0",
-                "php": "^7.1"
-            },
-            "require-dev": {
-                "doctrine/coding-standard": "^1.0",
-                "phpunit/phpunit": "^6.3",
-                "squizlabs/php_codesniffer": "^3.0",
-                "symfony/phpunit-bridge": "^4.0.5"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "2.10.x-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Doctrine\\Common\\": "lib/Doctrine/Common"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Roman Borschel",
-                    "email": "roman@code-factory.org"
-                },
-                {
-                    "name": "Benjamin Eberlei",
-                    "email": "kontakt@beberlei.de"
-                },
-                {
-                    "name": "Guilherme Blanco",
-                    "email": "guilhermeblanco@gmail.com"
-                },
-                {
-                    "name": "Jonathan Wage",
-                    "email": "jonwage@gmail.com"
-                },
-                {
-                    "name": "Johannes Schmitt",
-                    "email": "schmittjoh@gmail.com"
-                },
-                {
-                    "name": "Marco Pivetta",
-                    "email": "ocramius@gmail.com"
-                }
-            ],
-            "description": "PHP Doctrine Common project is a library that provides additional functionality that other Doctrine projects depend on such as better reflection support, persistence interfaces, proxies, event system and much more.",
-            "homepage": "https://www.doctrine-project.org/projects/common.html",
-            "keywords": [
-                "common",
-                "doctrine",
-                "php"
-            ],
-            "time": "2018-11-21T01:24:55+00:00"
-        },
-        {
-            "name": "doctrine/event-manager",
-            "version": "v1.0.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/doctrine/event-manager.git",
-                "reference": "a520bc093a0170feeb6b14e9d83f3a14452e64b3"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/doctrine/event-manager/zipball/a520bc093a0170feeb6b14e9d83f3a14452e64b3",
-                "reference": "a520bc093a0170feeb6b14e9d83f3a14452e64b3",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^7.1"
-            },
-            "conflict": {
-                "doctrine/common": "<2.9@dev"
-            },
-            "require-dev": {
-                "doctrine/coding-standard": "^4.0",
-                "phpunit/phpunit": "^7.0"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.0.x-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Doctrine\\Common\\": "lib/Doctrine/Common"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Roman Borschel",
-                    "email": "roman@code-factory.org"
-                },
-                {
-                    "name": "Benjamin Eberlei",
-                    "email": "kontakt@beberlei.de"
-                },
-                {
-                    "name": "Guilherme Blanco",
-                    "email": "guilhermeblanco@gmail.com"
-                },
-                {
-                    "name": "Jonathan Wage",
-                    "email": "jonwage@gmail.com"
-                },
-                {
-                    "name": "Johannes Schmitt",
-                    "email": "schmittjoh@gmail.com"
-                },
-                {
-                    "name": "Marco Pivetta",
-                    "email": "ocramius@gmail.com"
-                }
-            ],
-            "description": "Doctrine Event Manager component",
-            "homepage": "https://www.doctrine-project.org/projects/event-manager.html",
-            "keywords": [
-                "event",
-                "eventdispatcher",
-                "eventmanager"
-            ],
-            "time": "2018-06-11T11:59:03+00:00"
-        },
-        {
-            "name": "doctrine/inflector",
-            "version": "v1.3.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/doctrine/inflector.git",
-                "reference": "5527a48b7313d15261292c149e55e26eae771b0a"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/doctrine/inflector/zipball/5527a48b7313d15261292c149e55e26eae771b0a",
-                "reference": "5527a48b7313d15261292c149e55e26eae771b0a",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^7.1"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^6.2"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.3.x-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Doctrine\\Common\\Inflector\\": "lib/Doctrine/Common/Inflector"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Roman Borschel",
-                    "email": "roman@code-factory.org"
-                },
-                {
-                    "name": "Benjamin Eberlei",
-                    "email": "kontakt@beberlei.de"
-                },
-                {
-                    "name": "Guilherme Blanco",
-                    "email": "guilhermeblanco@gmail.com"
-                },
-                {
-                    "name": "Jonathan Wage",
-                    "email": "jonwage@gmail.com"
-                },
-                {
-                    "name": "Johannes Schmitt",
-                    "email": "schmittjoh@gmail.com"
-                }
-            ],
-            "description": "Common String Manipulations with regard to casing and singular/plural rules.",
-            "homepage": "http://www.doctrine-project.org",
-            "keywords": [
-                "inflection",
-                "pluralize",
-                "singularize",
-                "string"
-            ],
-            "time": "2018-01-09T20:05:19+00:00"
+            "time": "2019-05-27T17:52:04+00:00"
         },
         {
             "name": "doctrine/instantiator",
-            "version": "1.0.5",
+            "version": "1.2.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/doctrine/instantiator.git",
-                "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d"
+                "reference": "a2c590166b2133a4633738648b6b064edae0814a"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d",
-                "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d",
+                "url": "https://api.github.com/repos/doctrine/instantiator/zipball/a2c590166b2133a4633738648b6b064edae0814a",
+                "reference": "a2c590166b2133a4633738648b6b064edae0814a",
                 "shasum": ""
             },
             "require": {
-                "php": ">=5.3,<8.0-DEV"
+                "php": "^7.1"
             },
             "require-dev": {
-                "athletic/athletic": "~0.1.8",
+                "doctrine/coding-standard": "^6.0",
                 "ext-pdo": "*",
                 "ext-phar": "*",
-                "phpunit/phpunit": "~4.0",
-                "squizlabs/php_codesniffer": "~2.0"
+                "phpbench/phpbench": "^0.13",
+                "phpstan/phpstan-phpunit": "^0.11",
+                "phpstan/phpstan-shim": "^0.11",
+                "phpunit/phpunit": "^7.0"
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.0.x-dev"
+                    "dev-master": "1.2.x-dev"
                 }
             },
             "autoload": {
@@ -6917,169 +6631,12 @@
                 }
             ],
             "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
-            "homepage": "https://github.com/doctrine/instantiator",
+            "homepage": "https://www.doctrine-project.org/projects/instantiator.html",
             "keywords": [
                 "constructor",
                 "instantiate"
             ],
-            "time": "2015-06-14T21:17:01+00:00"
-        },
-        {
-            "name": "doctrine/persistence",
-            "version": "v1.1.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/doctrine/persistence.git",
-                "reference": "c0f1c17602afc18b4cbd8e1c8125f264c9cf7d38"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/doctrine/persistence/zipball/c0f1c17602afc18b4cbd8e1c8125f264c9cf7d38",
-                "reference": "c0f1c17602afc18b4cbd8e1c8125f264c9cf7d38",
-                "shasum": ""
-            },
-            "require": {
-                "doctrine/annotations": "^1.0",
-                "doctrine/cache": "^1.0",
-                "doctrine/collections": "^1.0",
-                "doctrine/event-manager": "^1.0",
-                "doctrine/reflection": "^1.0",
-                "php": "^7.1"
-            },
-            "conflict": {
-                "doctrine/common": "<2.10@dev"
-            },
-            "require-dev": {
-                "doctrine/coding-standard": "^5.0",
-                "phpstan/phpstan": "^0.8",
-                "phpunit/phpunit": "^7.0"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.1.x-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Doctrine\\Common\\": "lib/Doctrine/Common"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Roman Borschel",
-                    "email": "roman@code-factory.org"
-                },
-                {
-                    "name": "Benjamin Eberlei",
-                    "email": "kontakt@beberlei.de"
-                },
-                {
-                    "name": "Guilherme Blanco",
-                    "email": "guilhermeblanco@gmail.com"
-                },
-                {
-                    "name": "Jonathan Wage",
-                    "email": "jonwage@gmail.com"
-                },
-                {
-                    "name": "Johannes Schmitt",
-                    "email": "schmittjoh@gmail.com"
-                },
-                {
-                    "name": "Marco Pivetta",
-                    "email": "ocramius@gmail.com"
-                }
-            ],
-            "description": "The Doctrine Persistence project is a set of shared interfaces and functionality that the different Doctrine object mappers share.",
-            "homepage": "https://doctrine-project.org/projects/persistence.html",
-            "keywords": [
-                "mapper",
-                "object",
-                "odm",
-                "orm",
-                "persistence"
-            ],
-            "time": "2018-11-21T00:33:13+00:00"
-        },
-        {
-            "name": "doctrine/reflection",
-            "version": "v1.0.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/doctrine/reflection.git",
-                "reference": "02538d3f95e88eb397a5f86274deb2c6175c2ab6"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/doctrine/reflection/zipball/02538d3f95e88eb397a5f86274deb2c6175c2ab6",
-                "reference": "02538d3f95e88eb397a5f86274deb2c6175c2ab6",
-                "shasum": ""
-            },
-            "require": {
-                "doctrine/annotations": "^1.0",
-                "ext-tokenizer": "*",
-                "php": "^7.1"
-            },
-            "require-dev": {
-                "doctrine/coding-standard": "^4.0",
-                "doctrine/common": "^2.8",
-                "phpstan/phpstan": "^0.9.2",
-                "phpstan/phpstan-phpunit": "^0.9.4",
-                "phpunit/phpunit": "^7.0",
-                "squizlabs/php_codesniffer": "^3.0"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.0.x-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Doctrine\\Common\\": "lib/Doctrine/Common"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Roman Borschel",
-                    "email": "roman@code-factory.org"
-                },
-                {
-                    "name": "Benjamin Eberlei",
-                    "email": "kontakt@beberlei.de"
-                },
-                {
-                    "name": "Guilherme Blanco",
-                    "email": "guilhermeblanco@gmail.com"
-                },
-                {
-                    "name": "Jonathan Wage",
-                    "email": "jonwage@gmail.com"
-                },
-                {
-                    "name": "Johannes Schmitt",
-                    "email": "schmittjoh@gmail.com"
-                },
-                {
-                    "name": "Marco Pivetta",
-                    "email": "ocramius@gmail.com"
-                }
-            ],
-            "description": "Doctrine Reflection component",
-            "homepage": "https://www.doctrine-project.org/projects/reflection.html",
-            "keywords": [
-                "reflection"
-            ],
-            "time": "2018-06-14T14:45:07+00:00"
+            "time": "2019-03-17T17:37:11+00:00"
         },
         {
             "name": "friendsofphp/php-cs-fixer",
@@ -7238,25 +6795,28 @@
         },
         {
             "name": "myclabs/deep-copy",
-            "version": "1.7.0",
+            "version": "1.9.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/myclabs/DeepCopy.git",
-                "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e"
+                "reference": "e6828efaba2c9b79f4499dae1d66ef8bfa7b2b72"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e",
-                "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e",
+                "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/e6828efaba2c9b79f4499dae1d66ef8bfa7b2b72",
+                "reference": "e6828efaba2c9b79f4499dae1d66ef8bfa7b2b72",
                 "shasum": ""
             },
             "require": {
-                "php": "^5.6 || ^7.0"
+                "php": "^7.1"
+            },
+            "replace": {
+                "myclabs/deep-copy": "self.version"
             },
             "require-dev": {
                 "doctrine/collections": "^1.0",
                 "doctrine/common": "^2.6",
-                "phpunit/phpunit": "^4.1"
+                "phpunit/phpunit": "^7.1"
             },
             "type": "library",
             "autoload": {
@@ -7279,7 +6839,7 @@
                 "object",
                 "object graph"
             ],
-            "time": "2017-10-19T19:58:43+00:00"
+            "time": "2019-04-07T13:18:21+00:00"
         },
         {
             "name": "pdepend/pdepend",
@@ -7591,16 +7151,16 @@
         },
         {
             "name": "phpspec/prophecy",
-            "version": "1.8.0",
+            "version": "1.8.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/phpspec/prophecy.git",
-                "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06"
+                "reference": "1927e75f4ed19131ec9bcc3b002e07fb1173ee76"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/phpspec/prophecy/zipball/4ba436b55987b4bf311cb7c6ba82aa528aac0a06",
-                "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06",
+                "url": "https://api.github.com/repos/phpspec/prophecy/zipball/1927e75f4ed19131ec9bcc3b002e07fb1173ee76",
+                "reference": "1927e75f4ed19131ec9bcc3b002e07fb1173ee76",
                 "shasum": ""
             },
             "require": {
@@ -7621,8 +7181,8 @@
                 }
             },
             "autoload": {
-                "psr-0": {
-                    "Prophecy\\": "src/"
+                "psr-4": {
+                    "Prophecy\\": "src/Prophecy"
                 }
             },
             "notification-url": "https://packagist.org/downloads/",
@@ -7650,7 +7210,7 @@
                 "spy",
                 "stub"
             ],
-            "time": "2018-08-05T17:53:17+00:00"
+            "time": "2019-06-13T12:50:23+00:00"
         },
         {
             "name": "phpunit/php-code-coverage",
@@ -8746,16 +8306,16 @@
         },
         {
             "name": "symfony/config",
-            "version": "v3.4.22",
+            "version": "v3.4.28",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/config.git",
-                "reference": "c9bc510c217075d42d4a927e285917d0c2001cf4"
+                "reference": "177a276c01575253c95cefe0866e3d1b57637fe0"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/config/zipball/c9bc510c217075d42d4a927e285917d0c2001cf4",
-                "reference": "c9bc510c217075d42d4a927e285917d0c2001cf4",
+                "url": "https://api.github.com/repos/symfony/config/zipball/177a276c01575253c95cefe0866e3d1b57637fe0",
+                "reference": "177a276c01575253c95cefe0866e3d1b57637fe0",
                 "shasum": ""
             },
             "require": {
@@ -8806,20 +8366,20 @@
             ],
             "description": "Symfony Config Component",
             "homepage": "https://symfony.com",
-            "time": "2019-01-30T11:33:42+00:00"
+            "time": "2019-02-23T15:06:07+00:00"
         },
         {
             "name": "symfony/console",
-            "version": "v3.4.23",
+            "version": "v3.4.28",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/console.git",
-                "reference": "71ce77f37af0c5ffb9590e43cc4f70e426945c5e"
+                "reference": "8e1d1e406dd31727fa70cd5a99cda202e9d6a5c6"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/console/zipball/71ce77f37af0c5ffb9590e43cc4f70e426945c5e",
-                "reference": "71ce77f37af0c5ffb9590e43cc4f70e426945c5e",
+                "url": "https://api.github.com/repos/symfony/console/zipball/8e1d1e406dd31727fa70cd5a99cda202e9d6a5c6",
+                "reference": "8e1d1e406dd31727fa70cd5a99cda202e9d6a5c6",
                 "shasum": ""
             },
             "require": {
@@ -8878,11 +8438,11 @@
             ],
             "description": "Symfony Console Component",
             "homepage": "https://symfony.com",
-            "time": "2019-02-23T15:06:07+00:00"
+            "time": "2019-05-09T08:42:51+00:00"
         },
         {
             "name": "symfony/css-selector",
-            "version": "v3.4.22",
+            "version": "v3.4.28",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/css-selector.git",
@@ -8935,16 +8495,16 @@
         },
         {
             "name": "symfony/debug",
-            "version": "v3.4.23",
+            "version": "v3.4.28",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/debug.git",
-                "reference": "8d8a9e877b3fcdc50ddecf8dcea146059753f782"
+                "reference": "671fc55bd14800668b1d0a3708c3714940e30a8c"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/debug/zipball/8d8a9e877b3fcdc50ddecf8dcea146059753f782",
-                "reference": "8d8a9e877b3fcdc50ddecf8dcea146059753f782",
+                "url": "https://api.github.com/repos/symfony/debug/zipball/671fc55bd14800668b1d0a3708c3714940e30a8c",
+                "reference": "671fc55bd14800668b1d0a3708c3714940e30a8c",
                 "shasum": ""
             },
             "require": {
@@ -8987,20 +8547,20 @@
             ],
             "description": "Symfony Debug Component",
             "homepage": "https://symfony.com",
-            "time": "2019-02-24T15:45:11+00:00"
+            "time": "2019-05-18T13:32:47+00:00"
         },
         {
             "name": "symfony/dependency-injection",
-            "version": "v3.4.22",
+            "version": "v3.4.28",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/dependency-injection.git",
-                "reference": "b514f5b765cf3e4a56e9d8ebacf14b117f7a0ee1"
+                "reference": "8f2a0452f086a66f6d6cf53a432867b575887768"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/b514f5b765cf3e4a56e9d8ebacf14b117f7a0ee1",
-                "reference": "b514f5b765cf3e4a56e9d8ebacf14b117f7a0ee1",
+                "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/8f2a0452f086a66f6d6cf53a432867b575887768",
+                "reference": "8f2a0452f086a66f6d6cf53a432867b575887768",
                 "shasum": ""
             },
             "require": {
@@ -9058,20 +8618,20 @@
             ],
             "description": "Symfony DependencyInjection Component",
             "homepage": "https://symfony.com",
-            "time": "2019-01-30T17:48:51+00:00"
+            "time": "2019-05-19T14:11:39+00:00"
         },
         {
             "name": "symfony/event-dispatcher",
-            "version": "v3.4.22",
+            "version": "v3.4.28",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/event-dispatcher.git",
-                "reference": "ed5be1663fa66623b3a7004d5d51a14c4045399b"
+                "reference": "a088aafcefb4eef2520a290ed82e4374092a6dff"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/ed5be1663fa66623b3a7004d5d51a14c4045399b",
-                "reference": "ed5be1663fa66623b3a7004d5d51a14c4045399b",
+                "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/a088aafcefb4eef2520a290ed82e4374092a6dff",
+                "reference": "a088aafcefb4eef2520a290ed82e4374092a6dff",
                 "shasum": ""
             },
             "require": {
@@ -9121,11 +8681,11 @@
             ],
             "description": "Symfony EventDispatcher Component",
             "homepage": "https://symfony.com",
-            "time": "2019-01-16T13:27:11+00:00"
+            "time": "2019-04-02T08:51:52+00:00"
         },
         {
             "name": "symfony/filesystem",
-            "version": "v3.4.23",
+            "version": "v3.4.28",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/filesystem.git",
@@ -9175,16 +8735,16 @@
         },
         {
             "name": "symfony/finder",
-            "version": "v3.4.23",
+            "version": "v3.4.28",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/finder.git",
-                "reference": "fcdde4aa38f48190ce70d782c166f23930084f9b"
+                "reference": "fa5d962a71f2169dfe1cbae217fa5a2799859f6c"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/finder/zipball/fcdde4aa38f48190ce70d782c166f23930084f9b",
-                "reference": "fcdde4aa38f48190ce70d782c166f23930084f9b",
+                "url": "https://api.github.com/repos/symfony/finder/zipball/fa5d962a71f2169dfe1cbae217fa5a2799859f6c",
+                "reference": "fa5d962a71f2169dfe1cbae217fa5a2799859f6c",
                 "shasum": ""
             },
             "require": {
@@ -9220,20 +8780,20 @@
             ],
             "description": "Symfony Finder Component",
             "homepage": "https://symfony.com",
-            "time": "2019-02-22T14:44:53+00:00"
+            "time": "2019-05-24T12:25:55+00:00"
         },
         {
             "name": "symfony/polyfill-php72",
-            "version": "v1.10.0",
+            "version": "v1.11.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/polyfill-php72.git",
-                "reference": "9050816e2ca34a8e916c3a0ae8b9c2fccf68b631"
+                "reference": "ab50dcf166d5f577978419edd37aa2bb8eabce0c"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/9050816e2ca34a8e916c3a0ae8b9c2fccf68b631",
-                "reference": "9050816e2ca34a8e916c3a0ae8b9c2fccf68b631",
+                "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/ab50dcf166d5f577978419edd37aa2bb8eabce0c",
+                "reference": "ab50dcf166d5f577978419edd37aa2bb8eabce0c",
                 "shasum": ""
             },
             "require": {
@@ -9242,7 +8802,7 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.9-dev"
+                    "dev-master": "1.11-dev"
                 }
             },
             "autoload": {
@@ -9275,20 +8835,20 @@
                 "portable",
                 "shim"
             ],
-            "time": "2018-09-21T13:07:52+00:00"
+            "time": "2019-02-06T07:57:58+00:00"
         },
         {
             "name": "symfony/process",
-            "version": "v3.4.23",
+            "version": "v3.4.28",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/process.git",
-                "reference": "009f8dda80930e89e8344a4e310b08f9ff07dd2e"
+                "reference": "afe411c2a6084f25cff55a01d0d4e1474c97ff13"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/process/zipball/009f8dda80930e89e8344a4e310b08f9ff07dd2e",
-                "reference": "009f8dda80930e89e8344a4e310b08f9ff07dd2e",
+                "url": "https://api.github.com/repos/symfony/process/zipball/afe411c2a6084f25cff55a01d0d4e1474c97ff13",
+                "reference": "afe411c2a6084f25cff55a01d0d4e1474c97ff13",
                 "shasum": ""
             },
             "require": {
@@ -9324,11 +8884,11 @@
             ],
             "description": "Symfony Process Component",
             "homepage": "https://symfony.com",
-            "time": "2019-01-16T13:27:11+00:00"
+            "time": "2019-05-22T12:54:11+00:00"
         },
         {
             "name": "symfony/stopwatch",
-            "version": "v3.4.22",
+            "version": "v3.4.28",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/stopwatch.git",
@@ -9417,16 +8977,16 @@
         },
         {
             "name": "theseer/tokenizer",
-            "version": "1.1.0",
+            "version": "1.1.3",
             "source": {
                 "type": "git",
                 "url": "https://github.com/theseer/tokenizer.git",
-                "reference": "cb2f008f3f05af2893a87208fe6a6c4985483f8b"
+                "reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/theseer/tokenizer/zipball/cb2f008f3f05af2893a87208fe6a6c4985483f8b",
-                "reference": "cb2f008f3f05af2893a87208fe6a6c4985483f8b",
+                "url": "https://api.github.com/repos/theseer/tokenizer/zipball/11336f6f84e16a720dae9d8e6ed5019efa85a0f9",
+                "reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9",
                 "shasum": ""
             },
             "require": {
@@ -9453,7 +9013,7 @@
                 }
             ],
             "description": "A small library for converting tokenized PHP source code into XML and potentially other formats",
-            "time": "2017-04-07T12:08:54+00:00"
+            "time": "2019-06-13T22:48:21+00:00"
         }
     ],
     "aliases": [],
diff --git a/fid/config/vufind/fid.ini b/fid/config/vufind/fid.ini
index 1307453b84bb97eecf21fbbc0f0fa9848614d626..849eafe4edef9e5f6245714de74eb9e0ef4b4894 100644
--- a/fid/config/vufind/fid.ini
+++ b/fid/config/vufind/fid.ini
@@ -1,2 +1,6 @@
 [Client]
-baseUrl = http://172.18.113.133/bbi-alpha.1
\ No newline at end of file
+baseUrl = http://172.18.113.133/bbi-alpha.3
+
+[Security]
+access_levels[] = limited_access
+access_levels[] = full_access
\ No newline at end of file
diff --git a/module/fid/config/module.config.php b/module/fid/config/module.config.php
index c3b4267b42ac5d9b84041e21cc2d38783a42d232..d07e068a9a61af254c60eeb7a5246394270bfbc0 100644
--- a/module/fid/config/module.config.php
+++ b/module/fid/config/module.config.php
@@ -40,6 +40,7 @@ use VuFind\Auth\ILSAuthenticator as BaseILSAuthenticator;
 use VuFind\Db\Row\User as BaseUser;
 use VuFind\Db\Row\UserFactory;
 use Zend\Mvc\I18n\Translator;
+use Zend\Mvc\Plugin\FlashMessenger\FlashMessenger;
 use Zend\ServiceManager\Factory\InvokableFactory;
 
 return [
@@ -52,11 +53,17 @@ return [
         ErrorListener::class,
         LocaleListener::class,
     ],
-    'view_helpers'    => array(
-        'invokables' => array(
+    'view_helpers'    => [
+        'invokables' => [
             'formLabel' => RegistrationFormLabel::class,
-        ),
-    ),
+        ],
+    ],
+    // TODO: add alias to vufind core
+    'controller_plugins' => [
+        'aliases' => [
+            'flashmessenger' => FlashMessenger::class,
+        ]
+    ],
     'service_manager' => [
         'aliases'    => [
             BaseILSAuthenticator::class => ILSAuthenticator::class,
diff --git a/module/fid/src/Controller/UserController.php b/module/fid/src/Controller/UserController.php
index c726f461f9c8ca0d53e2c74b5abef3818b0681fa..95acbf2586ec1036829d0f0e7d44f8ce5059a273 100644
--- a/module/fid/src/Controller/UserController.php
+++ b/module/fid/src/Controller/UserController.php
@@ -30,6 +30,7 @@ use fid\FormModel\UserUpdateModel;
 use fid\Service\Client;
 use fid\Service\ClientException;
 use fid\Service\DataTransferObject\Library;
+use fid\Service\DataTransferObject\Permission;
 use fid\Service\DataTransferObject\User;
 use Symfony\Component\Serializer\SerializerAwareTrait;
 use Symfony\Component\Serializer\SerializerInterface;
@@ -68,6 +69,11 @@ class UserController extends AbstractBase
      */
     protected $client;
 
+    /**
+     * @var array
+     */
+    protected $config;
+
     /**
      * RegistrationController constructor.
      *
@@ -76,19 +82,22 @@ class UserController extends AbstractBase
      * @param Authenticator           $authenticator
      * @param AnnotationBuilder       $builder
      * @param Client                  $client
+     * @param array                   $config
      */
     public function __construct(
         ServiceLocatorInterface $serviceLocator,
         SerializerInterface $serializer,
         Authenticator $authenticator,
         AnnotationBuilder $builder,
-        Client $client
+        Client $client,
+        array $config
     ) {
         parent::__construct($serviceLocator);
         $this->authenticator = $authenticator;
         $this->serializer = $serializer;
         $this->builder = $builder;
         $this->client = $client;
+        $this->config = $config;
     }
 
     /**
@@ -164,7 +173,8 @@ class UserController extends AbstractBase
         }
 
         $view = $this->createViewModel();
-        $view->setVariables(compact('form', 'libraries'));
+        $accessLevels = $this->config['Security']['access_levels'];
+        $view->setVariables(compact('form', 'accessLevels', 'libraries'));
         $view->setTemplate('fid/user/create');
 
         return $view;
@@ -343,6 +353,7 @@ class UserController extends AbstractBase
         $user->setUsername($username = $model->getUsername());
         $user->setPassword($password = $model->getPassword());
         $user->setHomeLibrary($model->getHomeLibrary());
+        $user->setPermissions([$model->getAccessLevel() => 'requested']);
         $user->setSalutation($model->getSalutation());
         $user->setAcademicTitle($model->getAcademicTitle());
         $user->setFirstname($model->getFirstname());
@@ -396,7 +407,12 @@ class UserController extends AbstractBase
             $message = $this->translate('fid::user_update_success');
             $messenger->addSuccessMessage($message);
         } catch (ClientException $exception) {
-            $message = $this->translate('fid::user_update_error');
+            if (in_array($exception->getCode(), [403])) {
+                $message = $this->translate('fid::user_update_error_' . $exception->getCode());
+            } else {
+                $message = $this->translate('fid::user_update_error');
+            }
+
             $messenger->addErrorMessage($message);
         }
 
@@ -442,7 +458,7 @@ class UserController extends AbstractBase
         try {
             $user = $this->client->requestUserDetails();
             $user->setPassword($password = $model->getPassword());
-            $this->client->requestUserUpdate($user);
+            $this->client->requestUserPasswordUpdate($user);
             $message = $this->translate('fid::password_change_success');
             $message = sprintf($message, $username = $user->getUsername());
             $messenger->addSuccessMessage($message);
diff --git a/module/fid/src/Controller/UserControllerFactory.php b/module/fid/src/Controller/UserControllerFactory.php
index 3e029c1210dfd02520cbbe53d89f869125737c33..6706b160fb3ee80b7f6e7290a5b9e0be7c9be989 100644
--- a/module/fid/src/Controller/UserControllerFactory.php
+++ b/module/fid/src/Controller/UserControllerFactory.php
@@ -26,6 +26,7 @@ use fid\Service\Client;
 use Psr\Container\ContainerInterface;
 use Symfony\Component\Serializer\SerializerInterface;
 use VuFind\Auth\Manager as AuthManager;
+use VuFind\Config\PluginManager;
 use Zend\Form\Annotation\AnnotationBuilder;
 use Zend\ServiceManager\ServiceLocatorInterface;
 use Zend\Validator\ValidatorPluginManager;
@@ -54,7 +55,9 @@ class UserControllerFactory
         /** @var SerializerInterface $serializer */
         $serializer = $container->get(SerializerInterface::class);
 
+        $config = $container->get(PluginManager::class)->get('fid')->toArray();
+
         return new UserController($container, $serializer, $authManager,
-            $builder, $client);
+            $builder, $client, $config);
     }
 }
\ No newline at end of file
diff --git a/module/fid/src/FormModel/UserCreateModel.php b/module/fid/src/FormModel/UserCreateModel.php
index ab2ae8adbd01c8e331576868983747e6ec419fd1..b70d5b33765d652f6ca58e3d28ff40057ff04127 100644
--- a/module/fid/src/FormModel/UserCreateModel.php
+++ b/module/fid/src/FormModel/UserCreateModel.php
@@ -155,6 +155,17 @@ class UserCreateModel
      */
     protected $homeLibrary;
 
+    /**
+     * @var string
+     * @Annotation\Type("Zend\Form\Element\Radio")
+     * @Annotation\Required(true)
+     * @Annotation\Options({
+     *     "label": "label_access_level",
+     *     "disable_inarray_validator": true
+     * })
+     */
+    protected $accessLevel;
+
     /**
      * @var int|null
      * @Annotation\Type("Zend\Form\Element\Number")
@@ -318,6 +329,23 @@ class UserCreateModel
         $this->yearOfBirth = $yearOfBirth;
     }
 
+
+    /**
+     * @return string
+     */
+    public function getAccessLevel(): string
+    {
+        return $this->accessLevel;
+    }
+
+    /**
+     * @param string $accessLevel
+     */
+    public function setAccessLevel(string $accessLevel): void
+    {
+        $this->accessLevel = $accessLevel;
+    }
+
     /**
      * @return bool
      */
diff --git a/module/fid/src/Service/Client.php b/module/fid/src/Service/Client.php
index 9211f4e79a849affb6d3a73c63a689cbeaff194a..32eb30ff41e86f0b9044905a69bce1dcac942c66 100644
--- a/module/fid/src/Service/Client.php
+++ b/module/fid/src/Service/Client.php
@@ -303,19 +303,19 @@ class Client
      */
     public function requestUserUpdate(User $user): User
     {
-        $body = $this->serializer->serialize($user, 'json',
-            ['groups' => ['user:update:request']]);
-        $request = $this->buildRequest('put', "users/{$user->getId()}", $body);
-        $response = $this->sendAuthenticatedRequest($request);
-
-        if ($response->getStatusCode() !== 200) {
-            $this->throwException($response);
-        }
-        /** @var User $result */
-        $result = $this->serializer->deserialize((string)$response->getBody(),
-            User::class, 'json', ['groups' => ['user:update:response']]);
+        return $this->doRequestUserUpdate($user, ['user:update:request']);
+    }
 
-        return $this->session['user'] = $result;
+    /**
+     * @param User $user
+     *
+     * @return User
+     * @throws ClientException
+     */
+    public function requestUserPasswordUpdate(User $user): User
+    {
+        return $this->doRequestUserUpdate($user,
+            ['user:update-password:request']);
     }
 
     /**
@@ -345,6 +345,29 @@ class Client
         return $this->session['libraries'] = array_combine($keys, $list);
     }
 
+    /**
+     * @param User  $user
+     * @param array $groups
+     *
+     * @return User
+     * @throws ClientException
+     */
+    protected function doRequestUserUpdate(User $user, array $groups): User
+    {
+        $body = $this->serializer->serialize($user, 'json', compact('groups'));
+        $request = $this->buildRequest('put', "users/{$user->getId()}", $body);
+        $response = $this->sendAuthenticatedRequest($request);
+
+        if ($response->getStatusCode() !== 200) {
+            $this->throwException($response);
+        }
+        /** @var User $result */
+        $result = $this->serializer->deserialize((string)$response->getBody(),
+            User::class, 'json', ['groups' => ['user:update:response']]);
+
+        return $this->session['user'] = $result;
+    }
+
 
     /**
      * @return Logon
diff --git a/module/fid/src/Service/DataTransferObject/User.php b/module/fid/src/Service/DataTransferObject/User.php
index 946aeaee983d74c3cf388716b81ad66b31bcbefe..fc5695d8aa542af7ed7874b8b09b146e13eb4f7d 100644
--- a/module/fid/src/Service/DataTransferObject/User.php
+++ b/module/fid/src/Service/DataTransferObject/User.php
@@ -51,8 +51,7 @@ class User
      * @Groups({
      *     "user:details:response",
      *     "user:creation:request",
-     *     "user:update:request",
-     *     "user:update:response",
+     *     "user:update-password:request"
      * })
      */
     protected $password;
@@ -165,6 +164,18 @@ class User
      */
     protected $addresses = [];
 
+    /**
+     * @var array[]
+     * @Groups({
+     *     "user:details:response",
+     *     "user:creation:request",
+     *     "user:creation:response",
+     *     "user:update:request",
+     *     "user:update:response"
+     * })
+     */
+    protected $permissions = [];
+
     /**
      * @return string|null
      */
@@ -361,4 +372,19 @@ class User
             $address->setUser($this);
         }
     }
+    /**
+     * @return array[]
+     */
+    public function getPermissions(): array
+    {
+        return $this->permissions;
+    }
+
+    /**
+     * @param array[] $permissions
+     */
+    public function setPermissions(array $permissions): void
+    {
+        $this->permissions = $permissions;
+    }
 }
diff --git a/module/fid/src/VuFind/Auth/ILSAuthenticator.php b/module/fid/src/VuFind/Auth/ILSAuthenticator.php
index 912da0374f3a067eb6e8a79d2e6720f0b953249d..01f53ebca0ca47f0b8961964dfe2a34f78be57dd 100644
--- a/module/fid/src/VuFind/Auth/ILSAuthenticator.php
+++ b/module/fid/src/VuFind/Auth/ILSAuthenticator.php
@@ -54,10 +54,12 @@ class ILSAuthenticator
         }
 
         $data = [
+            'permissions' => $user->getPermissions(),
             'username'  => $user->getUsername(),
             'firstname' => $user->getFirstname(),
             'lastname'  => $user->getLastname(),
-            'email'     => $user->getUsername()
+            'email'     => $user->getUsername(),
+            'user' => $user
         ];
 
         if ($address = $user->getAddresses()[0] ?? null) {
diff --git a/themes/fid/languages/de.ini b/themes/fid/languages/de.ini
new file mode 100644
index 0000000000000000000000000000000000000000..9703f4ce4e3068eab46c7f37d1d5afc960bb0a6c
--- /dev/null
+++ b/themes/fid/languages/de.ini
@@ -0,0 +1 @@
+Username = E-Mail-Adresse
\ No newline at end of file
diff --git a/themes/fid/languages/en.ini b/themes/fid/languages/en.ini
new file mode 100644
index 0000000000000000000000000000000000000000..8442ea4dba84c48c2f4fe53966ed3cc075db6677
--- /dev/null
+++ b/themes/fid/languages/en.ini
@@ -0,0 +1 @@
+Username = Email address
\ No newline at end of file
diff --git a/themes/fid/languages/fid/de.ini b/themes/fid/languages/fid/de.ini
index e8d9cff11b8b259cb28bdb1213c07d8c5d91a309..44d6622ce9a6478dcdb4a927028788b100685753 100644
--- a/themes/fid/languages/fid/de.ini
+++ b/themes/fid/languages/fid/de.ini
@@ -22,8 +22,9 @@ label_college = "Hochschule"
 label_password = "Passwort"
 label_password_confirmation = "Passwort wiederholen"
 label_access_level = "Ich gehöre folgender Nutzergruppe an"
-label_access_level_default = "HochschullehrerInnen, wissenschaftliche MitarbeiterInnen, Mitglied einer Fachgesellschaft, DoktorandInnen, StipendiatInnen oder externe WissenschaftlerInnen (z. B. Lehrbeauftragte)"
-label_access_level_other = "Studierende, Sonstige"
+label_access_level_full_access = "HochschullehrerInnen, wissenschaftliche MitarbeiterInnen, Mitglied einer Fachgesellschaft, DoktorandInnen, StipendiatInnen oder externe WissenschaftlerInnen (z. B. Lehrbeauftragte)"
+label_access_level_limited_access = "Studierende, Sonstige"
+label_access_level_unknown = "Unbekannte oder unbestätigte Gruppe(n)."
 
 label_delivery_address = "Privatadresse als Lieferadresse verwenden"
 Business = "Dienstadresse"
@@ -56,6 +57,7 @@ user_create_error_autologon = "Vielen Dank. Ihre Registrierung war erfolgreich.
 user_create_success = "Vielen Dank für Ihre Registrierung."
 
 user_update_error = "Es ist ein unerwarteter Fehler beim Aktualisieren Ihres Profils aufgetreten."
+user_update_error_403 = "Es ist ein Fehler beim Aktualisieren Ihres Profils aufgetreten: Keine Berechtigung."
 user_update_error_expired = "Bitte loggen Sie sich ein, um Ihr Profil zu editieren."
 user_update_success = "Ihr Profil wurde erfolgreich aktualisiert."
 
@@ -69,3 +71,5 @@ password_change_error_autologon = "Ihr Passwort wurde gespeichert. Jedoch ist ei
 password_change_success = "Passwort erfolgreich gespeichert."
 
 Edit Account = "Profildaten ändern"
+
+access_level_requested = "Ihre Zugehörigkeit zur unten stehenden Gruppe wird derzeit noch überprüft."
\ No newline at end of file
diff --git a/themes/fid/languages/fid/en.ini b/themes/fid/languages/fid/en.ini
index 865c3ab2300fbb1db052075b0a2e892f0a0d40bf..5f4b131105dd8331b10d4924b419f345667e9fa5 100644
--- a/themes/fid/languages/fid/en.ini
+++ b/themes/fid/languages/fid/en.ini
@@ -22,8 +22,9 @@ label_year_of_birth = "Year of birth (YYYY)"
 label_job_title = "Occupation"
 label_college = "University"
 label_access_level = "Please select your membership level"
-label_access_level_default = "Professor, Research Associate/Assistant, Member of an Academic Association, PhD Student (also Scholarships), (Visiting) Lecturer"
-label_access_level_other = "Student, Other"
+label_access_level_full_access = "Professor, Research Associate/Assistant, Member of an Academic Association, PhD Student (also Scholarships), (Visiting) Lecturer"
+label_access_level_limited_access = "Student, Other"
+label_access_level_unknown = "Unknown or ungranted user group(s)."
 
 label_delivery_address = "Use the following address for deliveries"
 Business = "Office Address"
@@ -57,6 +58,7 @@ user_create_success = "We have received your registration."
 
 user_update_success = "Your profile has been successfully updated."
 user_update_error = "An unexpected error has occurred when updating your profile."
+user_update_error_403 = "An error has occurred when updating your profile: Forbidden."
 user_update_error_expired = "Please log in to edit your profile."
 
 password_reset_error = "An unexpected error has occurred."
@@ -69,3 +71,5 @@ password_change_error_expired = "The link has already expired."
 password_change_error_autologon = "You password has been update. However, an unexpected error has occurred during the process of logging on."
 
 Edit Account = "Edit Account"
+
+access_level_requested = "Your membership status regarding the group below is currently being verified."
\ No newline at end of file
diff --git a/themes/fid/scss/compiled.scss b/themes/fid/scss/compiled.scss
index 007403874441d35eb7d691f85fc7497e4737c7e3..9f6357ce4c11d67119bd3ac177b7eb6bdfcb0a12 100644
--- a/themes/fid/scss/compiled.scss
+++ b/themes/fid/scss/compiled.scss
@@ -18,27 +18,46 @@
 @import 'customVariables';
 @import 'customMixins';
 
-//.navbar {
-//  max-height: $navbar-height;
-//}
-//
-//.mainbody {
-//  margin-left: $content-left-padding;
-//  margin-right: $content-right-padding;
-//}
-//
-//.form-control {
-//  margin-right: $margin-right-width;
-//  max-width: $input-max-width;
-//}
-//
-//.btn {
-//  margin-left: $button-left-margin;
-//  margin-right: $button-right-margin;
-//}
-//
-form input:focus:required:invalid {
-  box-shadow: 0 0 2px 1px rgba(255,0,0,0.9);
+.fid-user-create-form {
+  padding: 10px 0;
+
+  h2 {
+    padding-bottom: 10px;
+  }
+
+  .form-control {
+    margin: 0;
+  }
+
+  .form-group {
+    & > .col-md-4, .col-md-6, .col-md-8, .col-md-10 {
+      padding: 0;
+    }
+
+    &:after {
+      display: table;
+      content: " ";
+      clear: both;
+    }
+
+    &.eula > :first-child * {
+      display: inline;
+    }
+  }
+
+  input[type=checkbox] {
+    margin-top: 0;
+    margin-right: 10px;
+    vertical-align: middle;
+    display: inline-block;
+  }
+
+  input[type=radio] {
+    margin-top: 0;
+    margin-right: 10px;
+    vertical-align: middle;
+    display: inline-block;
+  }
 }
 
 .registration {
@@ -47,6 +66,4 @@ form input:focus:required:invalid {
     margin-right: $margin-right-width;
     padding-left: $margin-right-width;
   }
-}
-
-
+}
\ No newline at end of file
diff --git a/themes/fid/templates/fid/user/create.phtml b/themes/fid/templates/fid/user/create.phtml
index 311209527653764865eefc0a061fb42b1fca95fa..35a227f3e846323370b0ecb4cc04cdae60720eaf 100644
--- a/themes/fid/templates/fid/user/create.phtml
+++ b/themes/fid/templates/fid/user/create.phtml
@@ -57,27 +57,24 @@ $formElementErrors->setTranslator($translator);
 $form = $this->form;
 $form->setAttribute('method', 'post');
 $form->setAttribute('action', $this->url('fid/user/create'));
-$form->setAttribute('class', 'form-horizontal registration');
+$form->setAttribute('class', 'fid-user-create-form registration');
 $form->prepare();
 
 $this->headTitle($this->translate('Profile Form'));
 $this->headTitle($this->translate("fid::user_create_form_title"));
 ?>
 
-<h2><?= $this->translate("fid::user_create_form_title") ?></h2>
-
-<div class="subito-pg">
-    * <?=$this->transEsc("This field is required")?>
-</div>
-
 <?= $this->flashmessages() ?>
 <?= $this->form()->openTag($form) ?>
-<br/>
+<h2><?= $this->translate("fid::user_create_form_title") ?></h2>
+    <div class="subito-pg">
+        * <?=$this->transEsc("This field is required")?>
+    </div>
 <? /* username */ ?>
 <?php
 /** @var Element\Text $elemUsername */
 $elemUsername = $form->get('username');
-$elemUsername->setLabelAttributes(['class' => 'inline col-md-4 col-sm-10']);
+$elemUsername->setLabelAttributes(['class' => 'col-md-4']);
 $elemUsername->setAttributes(['class' => 'form-control', 'disabled' => 1]);
 ?>
 <div class="form-group">
@@ -95,7 +92,7 @@ $elemUsername->setAttributes(['class' => 'form-control', 'disabled' => 1]);
 <?php
 /** @var Element\Password $elemPassword */
 $elemPassword = $form->get('password');
-$elemPassword->setLabelAttributes(['class' => 'inline col-md-4 col-sm-10']);
+$elemPassword->setLabelAttributes(['class' => 'col-md-4']);
 $elemPassword->setAttributes(['class' => 'form-control']);
 ?>
 <div class="form-group">
@@ -108,7 +105,7 @@ $elemPassword->setAttributes(['class' => 'form-control']);
 <?php
 /** @var Element\Password $elemPasswordConfirmation */
 $elemPasswordConfirmation = $form->get('passwordConfirmation');
-$elemPasswordConfirmation->setLabelAttributes(['class' => 'inline col-md-4 col-sm-10']);
+$elemPasswordConfirmation->setLabelAttributes(['class' => 'col-md-4']);
 $elemPasswordConfirmation->setAttributes(['class' => 'form-control']);
 ?>
 <div class="form-group">
@@ -121,8 +118,8 @@ $elemPasswordConfirmation->setAttributes(['class' => 'form-control']);
 <?php
 /** @var Element\Select $elemHomeLibrary */
 $elemHomeLibrary = $form->get('homeLibrary');
-$elemHomeLibrary->setLabelAttributes(['class' => 'inline col-md-4 col-sm-10']);
-$elemHomeLibrary->setAttributes(['class' => 'inline col-sm-6']);
+$elemHomeLibrary->setLabelAttributes(['class' => 'col-md-4']);
+$elemHomeLibrary->setAttributes(['class' => 'form-control']);
 $elemHomeLibrary->setValueOptions($this->libraries);
 ?>
 <div class="form-group">
@@ -135,20 +132,19 @@ $elemHomeLibrary->setValueOptions($this->libraries);
 <?php
 /** @var Element\Select $elemSalutation */
 $elemSalutation = $form->get('salutation');
-$elemSalutation->setLabelAttributes(['class' => 'inline col-md-4 col-sm-10']);
-$elemSalutation->setAttributes(['class' => 'inline col-sm-2']);
+$elemSalutation->setLabelAttributes(['class' => 'col-md-4']);
+$elemSalutation->setAttributes(['class' => 'form-control']);
 ?>
 <div class="form-group">
     <?= $this->formLabel($elemSalutation) ?>
     <?= $this->formSelect($elemSalutation) ?>
-
 </div>
 
 <? /* academic title */ ?>
 <?php
 /** @var Element\Text $elemAcademicTitle */
 $elemAcademicTitle = $form->get('academicTitle');
-$elemAcademicTitle->setLabelAttributes(['class' => 'inline col-md-4 col-sm-10']);
+$elemAcademicTitle->setLabelAttributes(['class' => 'col-md-4']);
 $elemAcademicTitle->setAttributes(['class' => 'form-control']);
 ?>
 <div class="form-group">
@@ -160,7 +156,7 @@ $elemAcademicTitle->setAttributes(['class' => 'form-control']);
 <?php
 /** @var Element\Text $elemFirstname */
 $elemFirstname = $form->get('firstname');
-$elemFirstname->setLabelAttributes(['class' => 'inline col-md-4 col-sm-10']);
+$elemFirstname->setLabelAttributes(['class' => 'col-md-4']);
 $elemFirstname->setAttributes(['class' => 'form-control']);
 ?>
 <div class="form-group">
@@ -173,7 +169,7 @@ $elemFirstname->setAttributes(['class' => 'form-control']);
 <?php
 /** @var Element\Text $elemLastname */
 $elemLastname = $form->get('lastname');
-$elemLastname->setLabelAttributes(['class' => 'inline col-md-4 col-sm-10']);
+$elemLastname->setLabelAttributes(['class' => 'col-md-4']);
 $elemLastname->setAttributes(['class' => 'form-control']);
 ?>
 <div class="form-group">
@@ -186,7 +182,7 @@ $elemLastname->setAttributes(['class' => 'form-control']);
 <?php
 /** @var Element\Text $elemYearOfBirth */
 $elemYearOfBirth = $form->get('yearOfBirth');
-$elemYearOfBirth->setLabelAttributes(['class' => 'inline col-md-4 col-sm-10']);
+$elemYearOfBirth->setLabelAttributes(['class' => 'col-md-4']);
 $elemYearOfBirth->setAttributes(['class' => 'form-control']);
 ?>
 <div class="form-group">
@@ -199,7 +195,7 @@ $elemYearOfBirth->setAttributes(['class' => 'form-control']);
 <?php
 /** @var Element\Text $elemCollege */
 $elemCollege = $form->get('college');
-$elemCollege->setLabelAttributes(['class' => 'inline col-md-4 col-sm-10']);
+$elemCollege->setLabelAttributes(['class' => 'col-md-4']);
 $elemCollege->setAttributes(['class' => 'form-control']);
 ?>
 <div class="form-group">
@@ -212,7 +208,7 @@ $elemCollege->setAttributes(['class' => 'form-control']);
 <?php
 /** @var Element\Text $elemJobTitle */
 $elemJobTitle = $form->get('jobTitle');
-$elemJobTitle->setLabelAttributes(['class' => 'inline col-md-4 col-sm-10']);
+$elemJobTitle->setLabelAttributes(['class' => 'col-md-4']);
 $elemJobTitle->setAttributes(['class' => 'form-control']);
 ?>
 <div class="form-group">
@@ -221,27 +217,47 @@ $elemJobTitle->setAttributes(['class' => 'form-control']);
     <?= $this->formElementErrors($elemJobTitle) ?>
 </div>
 
+<? /* role (user group)  */ ?>
+<?php
+/** @var Element\Radio $accessLevel */
+$accessLevel = $form->get('accessLevel');
+$accessLevelValueOptions = array_map(function ($accessLevel) {
+    return "label_access_level_$accessLevel";
+}, array_combine($this->accessLevels, $this->accessLevels));
+$accessLevel->setValueOptions($accessLevelValueOptions);
+?>
+<div class="form-group">
+    <div class="col-md-4">
+        <?= $this->formLabel($accessLevel) ?>
+    </div>
+    <div class="col-md-8">
+        <?= $this->formRadio($accessLevel) ?>
+    </div>
+    <?= $this->formElementErrors($accessLevel) ?>
+</div>
+
 <? /* eula privacy policy */ ?>
 <?php
 /** @var Checkbox $elemEulaAccepted */
 $elemEulaAccepted = $form->get('eulaAccepted');
 $elemEulaAccepted->setAttribute('id', $elemEulaAccepted->getAttribute('name') ?? 'eulaAccepted');
-$elemEulaAccepted->setAttributes(['class' => 'inline']);
-$elemEulaAccepted->setLabelAttributes(['class' => 'inline']);
 ?>
-<br />
-<div class="no-margin-l">
-    <?= $this->formElement($elemEulaAccepted) ?>
-    <?= $this->formLabel()->openTag($elemEulaAccepted) ?>
-    <?= $this->translate("fid::policy_text") ?>
-    <?php $url = $this->url('fid/user/policy') ?>
-    <a target="_blank" href="<?= $url ?>">
-        <?= $this->translate("fid::policy") ?>
-    </a>
-    <?= $this->translate("fid::terms_text") ?>
-    <?php $url = $this->url('fid/user/terms') ?>
-    <a target="_blank" href="<?= $url ?>"><?= $this->translate("fid::terms") ?>.</a>
-    <?= $this->formLabel()->closeTag($elemEulaAccepted) ?>
+<div class="form-group eula">
+    <div>
+        <?= $this->formElement($elemEulaAccepted) ?>
+        <?= $this->formLabel()->openTag($elemEulaAccepted) ?>
+        <?= $this->translate("fid::policy_text") ?>
+        <?php $url = $this->url('fid/user/policy') ?>
+        <a data-lightbox href="<?= $url ?>">
+            <?= $this->translate("fid::policy") ?>
+        </a>
+        <?= $this->translate("fid::terms_text") ?>
+        <?php $url = $this->url('fid/user/terms') ?>
+        <a data-lightbox href="<?= $url ?>">
+            <?= $this->translate("fid::terms") ?>
+        </a>.
+        <?= $this->formLabel()->closeTag($elemEulaAccepted) ?>
+    </div>
     <?= $this->formElementErrors($elemEulaAccepted) ?>
 </div>
 
@@ -249,10 +265,10 @@ $elemEulaAccepted->setLabelAttributes(['class' => 'inline']);
 <?php
 /** @var Submit $elemSubmit */
 $elemSubmit = $form->get('submit');
-$elemSubmit->setAttributes(['class' => 'btn btn-primary right']);
+$elemSubmit->setAttributes(['class' => 'btn btn-primary']);
 ?>
 <div class="form-group">
-    <div class="col-lg-11 col-md-9 col-sm-11 col-xs-12">
+    <div class="">
         <?= $this->formSubmit($elemSubmit) ?>
     </div>
 </div>
diff --git a/themes/fid/templates/fid/user/update.phtml b/themes/fid/templates/fid/user/update.phtml
index 9b2c8b78fe50e9b797eb0234cadcd9fbed733ad5..1ac47e76d9dc849de69f5b9c57b97194d7bca803 100644
--- a/themes/fid/templates/fid/user/update.phtml
+++ b/themes/fid/templates/fid/user/update.phtml
@@ -161,6 +161,7 @@ $elemYearOfBirth->setValue($user->getYearOfBirth());
 $elemCollege = $form->get('college');
 $elemCollege->setLabelAttributes(['class' => 'inline col-md-4 col-sm-10']);
 $elemCollege->setAttributes(['class' => 'form-control']);
+$elemCollege->setValue($user->getCollege());
 ?>
 <div class="form-group">
     <?= $this->formLabel($elemCollege) ?>
diff --git a/themes/fid/templates/myresearch/profile.phtml b/themes/fid/templates/myresearch/profile.phtml
index 71e700165739a830a123d4f367df813c8f9a102d..e0279b2c5aff0b171ddf3f2acec1b3b147b7a1c8 100644
--- a/themes/fid/templates/myresearch/profile.phtml
+++ b/themes/fid/templates/myresearch/profile.phtml
@@ -8,16 +8,33 @@ $this->layout()->breadcrumbs = '<li><a href="' . $this->url('myresearch-home') .
 
 // Template for use by the renderArray helper:
 $arrTemplate = '<tr><th>%%LABEL%%:</th><td> %%VALUE%%</td></tr>';
+
+$profile = $this->profile;
+if (is_array($profile)) {
+    $permissions = $profile['user']->getPermissions();
+    foreach (array_reverse($permissions) as $permission => $status) {
+        if (in_array($status, ['granted', 'requested'])) {
+            break;
+        }
+    }
+
+    if ($status === 'requested') {
+        $this->flashMessenger()->getPluginFlashMessenger()
+            ->addInfoMessage($this->translate('fid::access_level_requested'));
+    }
+
+    $profile['group'] = $this->translate('fid::label_access_level_' . $permission);
+}
 ?>
 
 <div class="<?=$this->layoutClass('mainbody')?>">
   <h2><?=$this->transEsc('Your Profile')?></h2>
   <?=$this->flashmessages();?>
-
   <?php if (is_array($this->profile)): ?>
     <table class="table table-striped">
       <?=$this->renderArray(
-        $arrTemplate, $this->profile,
+        $arrTemplate,
+        $profile,
         [
           $this->transEsc('First Name') => 'firstname',
           $this->transEsc('Last Name') => 'lastname',