Index: eprms-model/pom.xml
===================================================================
--- eprms-model/pom.xml	(revision c8c70ae428c82b4b43133a0bfdca5e92baf2f2c2)
+++ eprms-model/pom.xml	(revision ca4cdc149e6cd5f671baa2f6a000db64c909dcbe)
@@ -6,5 +6,5 @@
 	<groupId>info.ajanovski.eprms</groupId>
 	<artifactId>model</artifactId>
-	<version>0.0.11-SNAPSHOT</version>
+	<version>0.0.12-SNAPSHOT</version>
 
 	<name>EPRMS - Educational Project and Resource Management System - Model</name>
@@ -26,7 +26,7 @@
 
 	<properties>
-		<maven.compiler.source>17</maven.compiler.source>
-		<maven.compiler.target>17</maven.compiler.target>
-		<java.version>17</java.version>
+		<maven.compiler.source>21</maven.compiler.source>
+		<maven.compiler.target>21</maven.compiler.target>
+		<java.version>21</java.version>
 
 		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
Index: eprms-tap/pom.xml
===================================================================
--- eprms-tap/pom.xml	(revision c8c70ae428c82b4b43133a0bfdca5e92baf2f2c2)
+++ eprms-tap/pom.xml	(revision ca4cdc149e6cd5f671baa2f6a000db64c909dcbe)
@@ -1,11 +1,12 @@
 <project
-	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"
+	xmlns="http://maven.apache.org/POM/4.0.0"
 	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-	xmlns="http://maven.apache.org/POM/4.0.0">
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"
+>
 	<modelVersion>4.0.0</modelVersion>
 	<parent>
 		<groupId>org.springframework.boot</groupId>
 		<artifactId>spring-boot-starter-parent</artifactId>
-		<version>2.7.18</version>
+		<version>3.1.3</version>
 		<relativePath />
 	</parent>
@@ -13,5 +14,5 @@
 	<groupId>info.ajanovski.eprms</groupId>
 	<artifactId>eprms-tap</artifactId>
-	<version>0.0.13-SNAPSHOT</version>
+	<version>0.0.14-SNAPSHOT-jakarta</version>
 	<name>EPRMS - Educational Project and Resource Management System</name>
 
@@ -36,21 +37,22 @@
 		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
 
-		<maven-compiler-version>3.12.1</maven-compiler-version>
-		<maven-surefire-version>3.2.3</maven-surefire-version>
-		<maven.compiler.source>17</maven.compiler.source>
-		<maven.compiler.target>17</maven.compiler.target>
-		<java.version>17</java.version>
-
-		<spring-boot-version>2.7.18</spring-boot-version>
-		<tapestry-version>5.8.4</tapestry-version>
-		<jackson-version>2.13.5</jackson-version>
-		<log4j-version>2.23.0</log4j-version>
-		<junit-version>5.10.2</junit-version>
-		<yasson-version>3.0.3</yasson-version>
-		<servlet-version>4.0.1</servlet-version>
+		<maven-compiler-version>3.13.0</maven-compiler-version>
+		<maven-surefire-version>3.5.0</maven-surefire-version>
+		<maven-enforcer-version>3.0.0</maven-enforcer-version>
+		<maven.compiler.source>21</maven.compiler.source>
+		<maven.compiler.target>21</maven.compiler.target>
+		<java.version>21</java.version>
+
+		<spring-boot-version>3.1.3</spring-boot-version>
+		<tapestry-version>5.9.0-preview-2</tapestry-version>
+		<jackson-version>2.13.1</jackson-version>
+		<log4j-version>2.24.0</log4j-version>
+		<junit-version>5.8.2</junit-version>
+		<yasson-version>2.0.4</yasson-version>
+		<servlet-version>5.0.0</servlet-version>
 		<json-version>1.1.4</json-version>
 
-		<postgresql-version>42.7.2</postgresql-version>
-		<cas-client-version>3.6.4</cas-client-version>
+		<postgresql-version>42.7.4</postgresql-version>
+		<cas-client-version>4.0.4</cas-client-version>
 
 	</properties>
@@ -67,10 +69,10 @@
 			<groupId>info.ajanovski.eprms</groupId>
 			<artifactId>model</artifactId>
-			<version>0.0.11-SNAPSHOT</version>
+			<version>0.0.12-SNAPSHOT</version>
 		</dependency>
 		<dependency>
 			<groupId>info.ajanovski.eprms</groupId>
 			<artifactId>mq</artifactId>
-			<version>0.0.2-SNAPSHOT</version>
+			<version>0.0.3-SNAPSHOT</version>
 		</dependency>
 		<!-- Spring -->
@@ -114,5 +116,5 @@
 		<dependency>
 			<groupId>org.apache.tapestry</groupId>
-			<artifactId>tapestry-core</artifactId>
+			<artifactId>tapestry-core-jakarta</artifactId>
 			<version>${tapestry-version}</version>
 			<scope>compile</scope>
@@ -121,5 +123,5 @@
 		<dependency>
 			<groupId>org.apache.tapestry</groupId>
-			<artifactId>tapestry-webresources</artifactId>
+			<artifactId>tapestry-webresources-jakarta</artifactId>
 			<version>${tapestry-version}</version>
 			<scope>compile</scope>
@@ -130,5 +132,5 @@
         <dependency>
             <groupId>org.apache.tapestry</groupId>
-            <artifactId>tapestry-spring</artifactId>
+            <artifactId>tapestry-spring-jakarta</artifactId>
             <version>${tapestry-version}</version>
             <scope>compile</scope>
@@ -137,5 +139,5 @@
 		<dependency>
 			<groupId>org.apache.tapestry</groupId>
-			<artifactId>tapestry-hibernate</artifactId>
+			<artifactId>tapestry-hibernate-jakarta</artifactId>
 			<version>${tapestry-version}</version>
 			<scope>compile</scope>
@@ -149,5 +151,5 @@
 		<dependency>
 			<groupId>org.apache.tapestry</groupId>
-			<artifactId>tapestry-upload</artifactId>
+			<artifactId>tapestry-upload-jakarta</artifactId>
 			<version>${tapestry-version}</version>
 			<scope>compile</scope>
@@ -156,5 +158,5 @@
 		<dependency>
 			<groupId>org.apache.tapestry</groupId>
-			<artifactId>tapestry-test</artifactId>
+			<artifactId>tapestry-test-jakarta</artifactId>
 			<version>${tapestry-version}</version>
 			<scope>test</scope>
@@ -203,6 +205,6 @@
 		</dependency>
 		<dependency>
-			<groupId>javax.servlet</groupId>
-			<artifactId>javax.servlet-api</artifactId>
+			<groupId>jakarta.servlet</groupId>
+			<artifactId>jakarta.servlet-api</artifactId>
 			<version>${servlet-version}</version>
 			<scope>provided</scope>
@@ -218,14 +220,14 @@
 			<groupId>com.zaxxer</groupId>
 			<artifactId>HikariCP</artifactId>
-			<version>5.1.0</version>
+			<version>6.2.1</version>
 		</dependency>
 		<dependency>
 			<groupId>org.hibernate</groupId>
 			<artifactId>hibernate-hikaricp</artifactId>
-			<version>5.6.15.Final</version>
-		</dependency>
-
-		<dependency>
-			<groupId>org.jasig.cas.client</groupId>
+			<version>5.4.33.Final</version>
+		</dependency>
+
+		<dependency>
+			<groupId>org.apereo.cas.client</groupId>
 			<artifactId>cas-client-core</artifactId>
 			<version>${cas-client-version}</version>
@@ -242,5 +244,5 @@
 			<groupId>org.webjars</groupId>
 			<artifactId>webjars-locator</artifactId>
-			<version>0.48</version>
+			<version>0.52</version>
 		</dependency>
 		<dependency>
@@ -264,6 +266,28 @@
 			<version>1.205.0</version>
 		</dependency>
-
+		<!-- jaxb for error -->
+		<dependency>
+			<groupId>jakarta.xml.bind</groupId>
+			<artifactId>jakarta.xml.bind-api</artifactId>
+			<version>2.3.3</version>
+		</dependency>
+
+		<!-- Runtime, com.sun.xml.bind module -->
+		<dependency>
+			<groupId>org.glassfish.jaxb</groupId>
+			<artifactId>jaxb-runtime</artifactId>
+			<version>2.3.9</version>
+		</dependency>
 	</dependencies>
+
+	<dependencyManagement>
+		<dependencies>
+			<dependency>
+				<groupId>org.hibernate.orm</groupId>
+				<artifactId>hibernate-core</artifactId>
+				<version>5.4.33.Final</version>
+			</dependency>
+		</dependencies>
+	</dependencyManagement>
 
 	<build>
@@ -331,5 +355,5 @@
 				<groupId>org.apache.maven.plugins</groupId>
 				<artifactId>maven-enforcer-plugin</artifactId>
-				<version>3.0.0</version>
+				<version>${maven-enforcer-version}</version>
 				<executions>
 					<execution>
@@ -404,5 +428,6 @@
 									<type>jar</type>
 									<includes>META-INF/resources/webjars/**/*</includes>
-									<outputDirectory>${project.basedir}/target/classes/META-INF/assets/</outputDirectory>
+									<outputDirectory>
+										${project.basedir}/target/classes/META-INF/assets/</outputDirectory>
 								</artifactItem>
 								<artifactItem>
@@ -411,5 +436,6 @@
 									<type>jar</type>
 									<includes>META-INF/resources/webjars/**/*</includes>
-									<outputDirectory>${project.basedir}/target/classes/META-INF/assets/</outputDirectory>
+									<outputDirectory>
+										${project.basedir}/target/classes/META-INF/assets/</outputDirectory>
 								</artifactItem>
 								<artifactItem>
@@ -418,5 +444,6 @@
 									<type>jar</type>
 									<includes>META-INF/resources/webjars/**/*</includes>
-									<outputDirectory>${project.basedir}/target/classes/META-INF/assets/</outputDirectory>
+									<outputDirectory>
+										${project.basedir}/target/classes/META-INF/assets/</outputDirectory>
 								</artifactItem>
 								<artifactItem>
@@ -425,5 +452,6 @@
 									<type>jar</type>
 									<includes>META-INF/resources/webjars/**/*</includes>
-									<outputDirectory>${project.basedir}/target/classes/META-INF/assets/</outputDirectory>
+									<outputDirectory>
+										${project.basedir}/target/classes/META-INF/assets/</outputDirectory>
 								</artifactItem>
 							</artifactItems>
Index: eprms-tap/src/main/java/info/ajanovski/eprms/tap/AppConfiguration.java
===================================================================
--- eprms-tap/src/main/java/info/ajanovski/eprms/tap/AppConfiguration.java	(revision c8c70ae428c82b4b43133a0bfdca5e92baf2f2c2)
+++ eprms-tap/src/main/java/info/ajanovski/eprms/tap/AppConfiguration.java	(revision ca4cdc149e6cd5f671baa2f6a000db64c909dcbe)
@@ -23,19 +23,13 @@
 import java.util.EnumSet;
 
-import javax.servlet.DispatcherType;
-import javax.servlet.ServletContext;
-import javax.servlet.ServletException;
-import javax.servlet.SessionTrackingMode;
-
 import org.apache.tapestry5.TapestryFilter;
-import org.jasig.cas.client.authentication.AuthenticationFilter;
-import org.jasig.cas.client.session.SingleSignOutFilter;
-import org.jasig.cas.client.session.SingleSignOutHttpSessionListener;
-import org.jasig.cas.client.util.HttpServletRequestWrapperFilter;
-import org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter;
-import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
+import org.apereo.cas.client.authentication.AuthenticationFilter;
+import org.apereo.cas.client.session.SingleSignOutFilter;
+import org.apereo.cas.client.session.SingleSignOutHttpSessionListener;
+import org.apereo.cas.client.util.HttpServletRequestWrapperFilter;
+import org.apereo.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter;
 import org.springframework.boot.web.server.ErrorPage;
+import org.springframework.boot.web.server.ErrorPageRegistrar;
 import org.springframework.boot.web.servlet.ServletContextInitializer;
-import org.springframework.boot.web.servlet.server.ConfigurableServletWebServerFactory;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.ComponentScan;
@@ -45,4 +39,8 @@
 import info.ajanovski.eprms.tap.util.AppConfig;
 import info.ajanovski.eprms.tap.util.UTF8Filter;
+import jakarta.servlet.DispatcherType;
+import jakarta.servlet.ServletContext;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.SessionTrackingMode;
 
 @Configuration
@@ -59,4 +57,5 @@
 						"info.ajanovski.eprms.tap.services.DevelopmentModule");
 				servletContext.setInitParameter("tapestry.qa-modules", "info.ajanovski.eprms.tap.services.QaModule");
+                //servletContext.setInitParameter("tapestry.use-external-spring-context", "true");
 
 				servletContext.setInitParameter("artifactParameterName", "ticket");
@@ -89,4 +88,6 @@
 				servletContext.addListener(SingleSignOutHttpSessionListener.class);
 
+                //servletContext.addFilter("app", TapestrySpringFilter.class).addMappingForUrlPatterns(EnumSet.of(DispatcherType.REQUEST, DispatcherType.ERROR), false, "/*");
+
 				servletContext.setSessionTrackingModes(EnumSet.of(SessionTrackingMode.COOKIE));
 			}
@@ -94,10 +95,17 @@
 	}
 
-	@Bean
-	public ConfigurableServletWebServerFactory webServerFactory() {
-		TomcatServletWebServerFactory factory = new TomcatServletWebServerFactory();
-		factory.addErrorPages(new ErrorPage(HttpStatus.NOT_FOUND, "/error404"));
-		return factory;
-	}
+    @Bean
+    public ErrorPageRegistrar errorPageRegistrar() {
+        return registry -> {
+            registry.addErrorPages(new ErrorPage(HttpStatus.NOT_FOUND, "/error404"));
+        };
+    }
+
+    //	@Bean
+//	public ConfigurableServletWebServerFactory webServerFactory() {
+//		TomcatServletWebServerFactory factory = new TomcatServletWebServerFactory();
+//		factory.addErrorPages(new ErrorPage(HttpStatus.NOT_FOUND, "/error404"));
+//		return factory;
+//	}
 
 //	@Bean(name = "messageSource")
Index: eprms-tap/src/main/java/info/ajanovski/eprms/tap/components/ModalBox.java
===================================================================
--- eprms-tap/src/main/java/info/ajanovski/eprms/tap/components/ModalBox.java	(revision c8c70ae428c82b4b43133a0bfdca5e92baf2f2c2)
+++ eprms-tap/src/main/java/info/ajanovski/eprms/tap/components/ModalBox.java	(revision ca4cdc149e6cd5f671baa2f6a000db64c909dcbe)
@@ -3,5 +3,4 @@
 //Based on http://readyareyou.blogspot.com.au/2012/11/tapestry5-bootstrap-modal-dialog.html .
 
-import javax.inject.Inject;
 
 import org.apache.tapestry5.BindingConstants;
@@ -10,8 +9,10 @@
 import org.apache.tapestry5.annotations.Parameter;
 import org.apache.tapestry5.http.services.Request;
+import org.apache.tapestry5.ioc.annotations.Inject;
 import org.apache.tapestry5.json.JSONObject;
 import org.apache.tapestry5.services.ajax.AjaxResponseRenderer;
 import org.apache.tapestry5.services.ajax.JavaScriptCallback;
 import org.apache.tapestry5.services.javascript.JavaScriptSupport;
+
 
 @Import(module = { "ModalBox" })
Index: eprms-tap/src/main/java/info/ajanovski/eprms/tap/data/PersonDaoImpl.java
===================================================================
--- eprms-tap/src/main/java/info/ajanovski/eprms/tap/data/PersonDaoImpl.java	(revision c8c70ae428c82b4b43133a0bfdca5e92baf2f2c2)
+++ eprms-tap/src/main/java/info/ajanovski/eprms/tap/data/PersonDaoImpl.java	(revision ca4cdc149e6cd5f671baa2f6a000db64c909dcbe)
@@ -24,9 +24,8 @@
 import java.util.List;
 
-import javax.persistence.Query;
-
 import org.apache.tapestry5.ioc.annotations.Inject;
 import org.hibernate.Session;
 import org.hibernate.exception.DataException;
+import org.hibernate.query.Query;
 import org.slf4j.Logger;
 
Index: eprms-tap/src/main/java/info/ajanovski/eprms/tap/data/ProjectDaoImpl.java
===================================================================
--- eprms-tap/src/main/java/info/ajanovski/eprms/tap/data/ProjectDaoImpl.java	(revision c8c70ae428c82b4b43133a0bfdca5e92baf2f2c2)
+++ eprms-tap/src/main/java/info/ajanovski/eprms/tap/data/ProjectDaoImpl.java	(revision ca4cdc149e6cd5f671baa2f6a000db64c909dcbe)
@@ -24,6 +24,5 @@
 import java.util.List;
 
-import javax.inject.Inject;
-
+import org.apache.tapestry5.ioc.annotations.Inject;
 import org.hibernate.Session;
 
Index: eprms-tap/src/main/java/info/ajanovski/eprms/tap/pages/admin/ManageActivities.java
===================================================================
--- eprms-tap/src/main/java/info/ajanovski/eprms/tap/pages/admin/ManageActivities.java	(revision c8c70ae428c82b4b43133a0bfdca5e92baf2f2c2)
+++ eprms-tap/src/main/java/info/ajanovski/eprms/tap/pages/admin/ManageActivities.java	(revision ca4cdc149e6cd5f671baa2f6a000db64c909dcbe)
@@ -2,6 +2,4 @@
 
 import java.util.List;
-
-import javax.inject.Inject;
 
 import org.apache.tapestry5.SelectModel;
@@ -11,4 +9,5 @@
 import org.apache.tapestry5.corelib.components.Zone;
 import org.apache.tapestry5.hibernate.annotations.CommitAfter;
+import org.apache.tapestry5.ioc.annotations.Inject;
 import org.apache.tapestry5.services.SelectModelFactory;
 
Index: eprms-tap/src/main/java/info/ajanovski/eprms/tap/pages/admin/ManageActivityTypes.java
===================================================================
--- eprms-tap/src/main/java/info/ajanovski/eprms/tap/pages/admin/ManageActivityTypes.java	(revision c8c70ae428c82b4b43133a0bfdca5e92baf2f2c2)
+++ eprms-tap/src/main/java/info/ajanovski/eprms/tap/pages/admin/ManageActivityTypes.java	(revision ca4cdc149e6cd5f671baa2f6a000db64c909dcbe)
@@ -2,6 +2,4 @@
 
 import java.util.List;
-
-import javax.inject.Inject;
 
 import org.apache.tapestry5.SelectModel;
@@ -12,4 +10,5 @@
 import org.apache.tapestry5.hibernate.annotations.CommitAfter;
 import org.apache.tapestry5.http.services.Request;
+import org.apache.tapestry5.ioc.annotations.Inject;
 import org.apache.tapestry5.services.SelectModelFactory;
 import org.apache.tapestry5.services.ajax.AjaxResponseRenderer;
Index: eprms-tap/src/main/java/info/ajanovski/eprms/tap/pages/admin/ManagePersons.java
===================================================================
--- eprms-tap/src/main/java/info/ajanovski/eprms/tap/pages/admin/ManagePersons.java	(revision c8c70ae428c82b4b43133a0bfdca5e92baf2f2c2)
+++ eprms-tap/src/main/java/info/ajanovski/eprms/tap/pages/admin/ManagePersons.java	(revision ca4cdc149e6cd5f671baa2f6a000db64c909dcbe)
@@ -3,6 +3,4 @@
 import java.util.List;
 import java.util.stream.Collectors;
-
-import javax.inject.Inject;
 
 import org.apache.tapestry5.SelectModel;
@@ -13,4 +11,5 @@
 import org.apache.tapestry5.corelib.components.Form;
 import org.apache.tapestry5.hibernate.annotations.CommitAfter;
+import org.apache.tapestry5.ioc.annotations.Inject;
 import org.apache.tapestry5.services.SelectModelFactory;
 import org.slf4j.Logger;
Index: eprms-tap/src/main/java/info/ajanovski/eprms/tap/pages/user/MyProfile.java
===================================================================
--- eprms-tap/src/main/java/info/ajanovski/eprms/tap/pages/user/MyProfile.java	(revision c8c70ae428c82b4b43133a0bfdca5e92baf2f2c2)
+++ eprms-tap/src/main/java/info/ajanovski/eprms/tap/pages/user/MyProfile.java	(revision ca4cdc149e6cd5f671baa2f6a000db64c909dcbe)
@@ -21,10 +21,9 @@
 package info.ajanovski.eprms.tap.pages.user;
 
-import javax.inject.Inject;
-
 import org.apache.tapestry5.annotations.Persist;
 import org.apache.tapestry5.annotations.Property;
 import org.apache.tapestry5.annotations.SessionState;
 import org.apache.tapestry5.hibernate.annotations.CommitAfter;
+import org.apache.tapestry5.ioc.annotations.Inject;
 
 import info.ajanovski.eprms.model.entities.Person;
Index: eprms-tap/src/main/java/info/ajanovski/eprms/tap/pages/user/MyProjectReports.java
===================================================================
--- eprms-tap/src/main/java/info/ajanovski/eprms/tap/pages/user/MyProjectReports.java	(revision c8c70ae428c82b4b43133a0bfdca5e92baf2f2c2)
+++ eprms-tap/src/main/java/info/ajanovski/eprms/tap/pages/user/MyProjectReports.java	(revision ca4cdc149e6cd5f671baa2f6a000db64c909dcbe)
@@ -3,6 +3,4 @@
 import java.util.Date;
 import java.util.List;
-
-import javax.inject.Inject;
 
 import org.apache.tapestry5.annotations.Import;
@@ -14,4 +12,5 @@
 import org.apache.tapestry5.hibernate.annotations.CommitAfter;
 import org.apache.tapestry5.http.services.Request;
+import org.apache.tapestry5.ioc.annotations.Inject;
 import org.apache.tapestry5.services.ajax.AjaxResponseRenderer;
 import org.slf4j.Logger;
Index: eprms-tap/src/main/java/info/ajanovski/eprms/tap/pages/user/MyProjects.java
===================================================================
--- eprms-tap/src/main/java/info/ajanovski/eprms/tap/pages/user/MyProjects.java	(revision c8c70ae428c82b4b43133a0bfdca5e92baf2f2c2)
+++ eprms-tap/src/main/java/info/ajanovski/eprms/tap/pages/user/MyProjects.java	(revision ca4cdc149e6cd5f671baa2f6a000db64c909dcbe)
@@ -6,6 +6,4 @@
 import java.util.List;
 import java.util.stream.Collectors;
-
-import javax.inject.Inject;
 
 import org.apache.tapestry5.SelectModel;
@@ -18,4 +16,5 @@
 import org.apache.tapestry5.hibernate.annotations.CommitAfter;
 import org.apache.tapestry5.http.services.Request;
+import org.apache.tapestry5.ioc.annotations.Inject;
 import org.apache.tapestry5.services.SelectModelFactory;
 import org.apache.tapestry5.services.ajax.AjaxResponseRenderer;
@@ -39,5 +38,4 @@
 import info.ajanovski.eprms.tap.services.ProjectManager;
 import info.ajanovski.eprms.tap.services.SystemConfigService;
-import info.ajanovski.eprms.tap.util.AppConstants;
 import info.ajanovski.eprms.tap.util.UserInfo;
 
Index: eprms-tap/src/main/java/info/ajanovski/eprms/tap/services/AppModule.java
===================================================================
--- eprms-tap/src/main/java/info/ajanovski/eprms/tap/services/AppModule.java	(revision c8c70ae428c82b4b43133a0bfdca5e92baf2f2c2)
+++ eprms-tap/src/main/java/info/ajanovski/eprms/tap/services/AppModule.java	(revision ca4cdc149e6cd5f671baa2f6a000db64c909dcbe)
@@ -49,4 +49,5 @@
 import org.apache.tapestry5.services.ComponentRequestFilter;
 import org.apache.tapestry5.services.ComponentSource;
+import org.apache.tapestry5.services.ExceptionReporter;
 import org.apache.tapestry5.services.PersistentLocale;
 import org.hibernate.Session;
@@ -194,5 +195,4 @@
 						userInfo.setUserRoles(userRoles);
 						logger.debug("userInfo is now initialized");
-
 					}
 
@@ -201,5 +201,5 @@
 				} catch (Exception e) {
 					if (userInfo.getUserName() != null) {
-						logger.error("userName {} is not found", userInfo.getUserName());
+						logger.error("userName {} is not found {}", userInfo.getUserName(), e);
 					} else {
 						logger.error("userName is empty");
@@ -222,5 +222,5 @@
 	public static void provideBeanValidatorConfigurer(OrderedConfiguration<BeanValidatorConfigurer> configuration) {
 		configuration.add("noXMLBeanValidatorConfigurer", new BeanValidatorConfigurer() {
-			public void configure(javax.validation.Configuration<?> configuration) {
+			public void configure(jakarta.validation.Configuration<?> configuration) {
 				configuration.ignoreXmlConfiguration();
 			}
@@ -232,3 +232,17 @@
 	}
 
+	/**
+	 * By default, Tapestry's ExceptionReporter implementation writes verbose text
+	 * files to the "build/exceptions" directory. This replaces that implementation
+	 * with one that does nothing. (The exceptions still get logged elsewhere.)
+	 */
+	@Decorate(serviceInterface = ExceptionReporter.class)
+	public static ExceptionReporter preventExceptionFileWriting(final ExceptionReporter exceptionReporter) {
+		return new ExceptionReporter() {
+			@Override
+			public void reportException(Throwable exception) {
+			}
+		};
+	}
+
 }
Index: eprms-tap/src/main/java/info/ajanovski/eprms/tap/services/ProjectManagerImpl.java
===================================================================
--- eprms-tap/src/main/java/info/ajanovski/eprms/tap/services/ProjectManagerImpl.java	(revision c8c70ae428c82b4b43133a0bfdca5e92baf2f2c2)
+++ eprms-tap/src/main/java/info/ajanovski/eprms/tap/services/ProjectManagerImpl.java	(revision ca4cdc149e6cd5f671baa2f6a000db64c909dcbe)
@@ -27,5 +27,5 @@
 import java.util.stream.Collectors;
 
-import javax.inject.Inject;
+import org.apache.tapestry5.ioc.annotations.Inject;
 
 import info.ajanovski.eprms.model.entities.Activity;
Index: eprms-tap/src/main/java/info/ajanovski/eprms/tap/util/AppConfig.java
===================================================================
--- eprms-tap/src/main/java/info/ajanovski/eprms/tap/util/AppConfig.java	(revision c8c70ae428c82b4b43133a0bfdca5e92baf2f2c2)
+++ eprms-tap/src/main/java/info/ajanovski/eprms/tap/util/AppConfig.java	(revision ca4cdc149e6cd5f671baa2f6a000db64c909dcbe)
@@ -5,6 +5,5 @@
 import java.util.ResourceBundle;
 
-import javax.inject.Inject;
-
+import org.apache.tapestry5.ioc.annotations.Inject;
 import org.slf4j.Logger;
 
Index: eprms-tap/src/main/java/info/ajanovski/eprms/tap/util/UTF8Filter.java
===================================================================
--- eprms-tap/src/main/java/info/ajanovski/eprms/tap/util/UTF8Filter.java	(revision c8c70ae428c82b4b43133a0bfdca5e92baf2f2c2)
+++ eprms-tap/src/main/java/info/ajanovski/eprms/tap/util/UTF8Filter.java	(revision ca4cdc149e6cd5f671baa2f6a000db64c909dcbe)
@@ -23,10 +23,10 @@
 import java.io.IOException;
 
-import javax.servlet.Filter;
-import javax.servlet.FilterChain;
-import javax.servlet.FilterConfig;
-import javax.servlet.ServletException;
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletResponse;
+import jakarta.servlet.Filter;
+import jakarta.servlet.FilterChain;
+import jakarta.servlet.FilterConfig;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.ServletRequest;
+import jakarta.servlet.ServletResponse;
 
 public class UTF8Filter implements Filter {
