diff --git a/pom.xml b/pom.xml
index da5ad8bfc2b71281442abb5e46d692bfeb22ab99..cc5f0eed0c6b8873440d184dde851b6630f9b30f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -696,7 +696,7 @@
                             </ports>
                             <environment>
                                 <SPRING_OUTPUT_ANSI_ENABLED>ALWAYS</SPRING_OUTPUT_ANSI_ENABLED>
-                                <JHIPSTER_SLEEP>0</JHIPSTER_SLEEP>
+                                <JHIPSTER_SLEEP>6</JHIPSTER_SLEEP>
                             </environment>
                             <creationTime>USE_CURRENT_TIMESTAMP</creationTime>
                             <user>1000</user>
diff --git a/src/main/docker/app.yml b/src/main/docker/app.yml
index 9bfd361f663ebb1391cdc2db3378375edd4a6c51..c9631e683f0d0b9074c4a312d5960834929a3fad 100644
--- a/src/main/docker/app.yml
+++ b/src/main/docker/app.yml
@@ -9,7 +9,7 @@ services:
       - MANAGEMENT_METRICS_EXPORT_PROMETHEUS_ENABLED=true
       - SPRING_DATASOURCE_URL=jdbc:mysql://gitsearch-mysql:3306/gitsearch?useUnicode=true&characterEncoding=utf8&useSSL=false&useLegacyDatetimeCode=false&serverTimezone=UTC&createDatabaseIfNotExist=true
       - SPRING_LIQUIBASE_URL=jdbc:mysql://gitsearch-mysql:3306/gitsearch?useUnicode=true&characterEncoding=utf8&useSSL=false&useLegacyDatetimeCode=false&serverTimezone=UTC&createDatabaseIfNotExist=true
-      - JHIPSTER_SLEEP=30 # gives time for other services to boot before the application
+      - JHIPSTER_SLEEP=5 # gives small time for other services to boot before the application
       - SPRING_ELASTICSEARCH_URIS=http://gitsearch-elasticsearch:9200
     # If you want to expose these ports outside your dev PC,
     # remove the "127.0.0.1:" prefix
diff --git a/src/main/docker/gitsearch.yml b/src/main/docker/gitsearch.yml
index 4fd5e1d6e26ff5ddec4e2702413ee56e8a56d891..bffb3c353b3833b38f8ef95a592c58f885877225 100644
--- a/src/main/docker/gitsearch.yml
+++ b/src/main/docker/gitsearch.yml
@@ -10,7 +10,7 @@ services:
       - SPRING_PROFILES_ACTIVE=${SPRING_PROFILES_ACTIVE}
       - MANAGEMENT_METRICS_EXPORT_PROMETHEUS_ENABLED=true
       - SPRING_DATASOURCE_URL=jdbc:mysql://sharing_mysql:3306/gitsearch?useUnicode=true&characterEncoding=utf8&useSSL=false&useLegacyDatetimeCode=false&serverTimezone=UTC&createDatabaseIfNotExist=true
-      - JHIPSTER_SLEEP=10 # gives time for other services to boot before the application
+      - JHIPSTER_SLEEP=5 # gives a small time for other services to boot before the application
       - SPRING_DATA_JEST_URI=http://sharing_elasticsearch:9200
       - SPRING_ELASTICSEARCH_REST_URIS=http://sharing_elasticsearch:9200
       # see https://stackoverflow.com/questions/62676762/how-can-a-variable-set-in-the-docker-env-file-be-used-in-application-yml
diff --git a/src/main/java/at/ac/uibk/gitsearch/config/SecurityConfiguration.java b/src/main/java/at/ac/uibk/gitsearch/config/SecurityConfiguration.java
index 869137c06cf6f2473a9d33f719a0ebf0f47961aa..e2e5d545de9a20caa92660c8888eb86ddef51306 100644
--- a/src/main/java/at/ac/uibk/gitsearch/config/SecurityConfiguration.java
+++ b/src/main/java/at/ac/uibk/gitsearch/config/SecurityConfiguration.java
@@ -68,6 +68,8 @@ import org.springframework.security.oauth2.server.resource.authentication.JwtAut
 import org.springframework.security.web.authentication.AuthenticationSuccessHandler;
 import org.springframework.security.web.csrf.CookieCsrfTokenRepository;
 import org.springframework.security.web.csrf.CsrfFilter;
+import org.springframework.security.web.firewall.HttpFirewall;
+import org.springframework.security.web.firewall.StrictHttpFirewall;
 import org.springframework.security.web.header.writers.ReferrerPolicyHeaderWriter;
 import org.springframework.util.LinkedMultiValueMap;
 import org.springframework.util.MultiValueMap;
@@ -108,6 +110,13 @@ public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
         return new BCryptPasswordEncoder();
     }
 
+    @Bean
+    public HttpFirewall getHttpFirewall() {
+        StrictHttpFirewall strictHttpFirewall = new StrictHttpFirewall();
+        strictHttpFirewall.setAllowSemicolon(true);
+        return strictHttpFirewall;
+    }
+
     @Override
     public void configure(WebSecurity web) {
         web
diff --git a/src/main/java/at/ac/uibk/gitsearch/repository/AuditEventConverter.java b/src/main/java/at/ac/uibk/gitsearch/repository/AuditEventConverter.java
index c04e8e70bf9c5061e2a9eb659cc5f856ce767a86..d09c6def6e1c031dab348493357e17c262e51994 100644
--- a/src/main/java/at/ac/uibk/gitsearch/repository/AuditEventConverter.java
+++ b/src/main/java/at/ac/uibk/gitsearch/repository/AuditEventConverter.java
@@ -82,7 +82,11 @@ public class AuditEventConverter {
                 if (entry.getValue() instanceof WebAuthenticationDetails) {
                     WebAuthenticationDetails authenticationDetails = (WebAuthenticationDetails) entry.getValue();
                     results.put("remoteAddress", authenticationDetails.getRemoteAddress());
-                    results.put("sessionId", authenticationDetails.getSessionId());
+                    String sessionId = authenticationDetails.getSessionId();
+                    if (sessionId == null) {
+                        sessionId = "unknown";
+                    }
+                    results.put("sessionId", sessionId);
                 } else {
                     results.put(entry.getKey(), Objects.toString(entry.getValue()));
                 }
diff --git a/src/main/java/at/ac/uibk/gitsearch/service/MessageService.java b/src/main/java/at/ac/uibk/gitsearch/service/MessageService.java
index 2eb3334f10991e8f0532080d3d226bd2c6e195e8..7f57fda8c40c53fd0b1042d23761da11f2e0960d 100644
--- a/src/main/java/at/ac/uibk/gitsearch/service/MessageService.java
+++ b/src/main/java/at/ac/uibk/gitsearch/service/MessageService.java
@@ -36,6 +36,9 @@ public class MessageService {
     BroadCastMessageDTO[] messages = null;
 
     public BroadCastMessageDTO[] getMessages() {
+        if (messages == null) {
+            return new BroadCastMessageDTO[] {};
+        }
         return messages.clone();
     }
 
diff --git a/src/main/java/at/ac/uibk/gitsearch/service/SearchService.java b/src/main/java/at/ac/uibk/gitsearch/service/SearchService.java
index e48fe5a6c09b91ab251800e107f536b07ab257b7..094b3499d572f87d93f6d3e99cfff3140d3638ca 100644
--- a/src/main/java/at/ac/uibk/gitsearch/service/SearchService.java
+++ b/src/main/java/at/ac/uibk/gitsearch/service/SearchService.java
@@ -244,7 +244,7 @@ public class SearchService {
                 }
                 String httpUrlToRepo = metaData.getProject().getUrl();
                 String commitId = metaData.getFile().getCommit_id();
-                String baseRepoURL = httpUrlToRepo + "/-/raw/" + commitId;
+                String baseRepoURL = httpUrlToRepo + "/-/raw/" + commitId + "/";
                 final URI resolvedImageUrl = new URI(baseRepoURL).resolve(url);
                 metaData.getMetadata().setImage(resolvedImageUrl.toASCIIString());
                 return;
diff --git a/src/main/java/at/ac/uibk/gitsearch/service/dto/BroadCastMessageDTO.java b/src/main/java/at/ac/uibk/gitsearch/service/dto/BroadCastMessageDTO.java
index 79b639788be41d95338c63dd4fea2e92d8d8becb..a049b15c6d3a3029f732e343962adc8b57472a4c 100644
--- a/src/main/java/at/ac/uibk/gitsearch/service/dto/BroadCastMessageDTO.java
+++ b/src/main/java/at/ac/uibk/gitsearch/service/dto/BroadCastMessageDTO.java
@@ -15,4 +15,5 @@ public class BroadCastMessageDTO {
     public String target_path; // "*/welcome",
     public String broadcast_type; // "banner",
     public boolean dismissable; // false
+    public int[] target_access_levels; // [10, 30]
 }
diff --git a/src/main/webapp/app/shared/service/message-service.ts b/src/main/webapp/app/shared/service/message-service.ts
index a87cc54fce553f31e43958d7ef5d592602273643..2881264f3cab4ae4a6aef9f56ccc22d7409a5da5 100644
--- a/src/main/webapp/app/shared/service/message-service.ts
+++ b/src/main/webapp/app/shared/service/message-service.ts
@@ -15,6 +15,7 @@ export interface BroadCastMessage {
   target_path: string; // "*/welcome",
   broadcast_type: string; // "banner",
   dismissable: boolean; // false
+  target_access_levels: number[];
 }
 
 /**