diff --git a/src/main/java/org/olat/core/commons/services/taskexecutor/_spring/taskExecutorCorecontext.xml b/src/main/java/org/olat/core/commons/services/taskexecutor/_spring/taskExecutorCorecontext.xml
index 41bb7c78a64696b7a1e4026c501c5376b173a683..f9150b090e074dc7c11618cfc386c81c67f99249 100644
--- a/src/main/java/org/olat/core/commons/services/taskexecutor/_spring/taskExecutorCorecontext.xml
+++ b/src/main/java/org/olat/core/commons/services/taskexecutor/_spring/taskExecutorCorecontext.xml
@@ -5,7 +5,7 @@
   http://www.springframework.org/schema/beans 
   http://www.springframework.org/schema/beans/spring-beans.xsd">
 
-	<bean id="taskExecutorManager" class="org.olat.core.commons.services.taskexecutor.manager.TaskExecutorManagerImpl">
+	<bean id="taskExecutorManager" class="org.olat.core.commons.services.taskexecutor.manager.TaskExecutorManagerImpl" destroy-method="shutdown">
 		<constructor-arg index="0" ref="mpTaskExecutorService" />
 		<constructor-arg index="1" ref="sequentialTaskExecutorService" />
 		<constructor-arg index="2" ref="lowPriorityTaskSpringExecutorService" />
diff --git a/src/main/java/org/olat/core/commons/services/taskexecutor/manager/TaskExecutorManagerImpl.java b/src/main/java/org/olat/core/commons/services/taskexecutor/manager/TaskExecutorManagerImpl.java
index 03b4c3221b25b850a57d9d00f4a5485abdf66ab4..14213bc6b463a5e390598561a64b8f6f68443ab2 100644
--- a/src/main/java/org/olat/core/commons/services/taskexecutor/manager/TaskExecutorManagerImpl.java
+++ b/src/main/java/org/olat/core/commons/services/taskexecutor/manager/TaskExecutorManagerImpl.java
@@ -112,8 +112,9 @@ public class TaskExecutorManagerImpl implements TaskExecutorManager {
 	}
 
 	public void shutdown() {
-		taskExecutor.shutdown();
-		sequentialTaskExecutor.shutdown();
+		taskExecutor.shutdownNow();
+		sequentialTaskExecutor.shutdownNow();
+		lowPriorityTaskExecutor.shutdownNow();
 	}
 	
 	@Override
diff --git a/src/main/java/org/olat/core/util/mail/_spring/mailContext.xml b/src/main/java/org/olat/core/util/mail/_spring/mailContext.xml
index b864cac3ad13e1dcce943712d9a7bfa6a3c6c666..8d6f85d75699e48b75e857b5021dcf97c5dafef6 100644
--- a/src/main/java/org/olat/core/util/mail/_spring/mailContext.xml
+++ b/src/main/java/org/olat/core/util/mail/_spring/mailContext.xml
@@ -13,11 +13,12 @@
 		<property name="className" value="org.olat.core.util.mail.ui.SendDocumentsByEMailController"/>
 	</bean>
 	
-		<bean id="mailAsyncExecutorService" class="org.springframework.core.task.support.ExecutorServiceAdapter">
+	<bean id="mailAsyncExecutorService" class="org.springframework.core.task.support.ExecutorServiceAdapter">
 		<constructor-arg index="0" ref="mailAsyncExecutor" />
 	</bean>
 	
 	<bean id="mailAsyncExecutor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
+		<property name="waitForTasksToCompleteOnShutdown" value="true" />
 		<property name="corePoolSize" value="1" />
 		<property name="maxPoolSize" value="1" />
 		<property name="queueCapacity" value="2000" />
diff --git a/src/main/java/org/olat/course/nodes/livestream/manager/LiveStreamServiceImpl.java b/src/main/java/org/olat/course/nodes/livestream/manager/LiveStreamServiceImpl.java
index 19bc4eaf66cff84dec993aba247130341cb1eae5..482eaf2cf22bc204aa4c3dc6e8a390cde77904f3 100644
--- a/src/main/java/org/olat/course/nodes/livestream/manager/LiveStreamServiceImpl.java
+++ b/src/main/java/org/olat/course/nodes/livestream/manager/LiveStreamServiceImpl.java
@@ -51,6 +51,7 @@ import org.olat.course.nodes.livestream.LiveStreamService;
 import org.olat.course.nodes.livestream.model.LiveStreamEventImpl;
 import org.olat.repository.RepositoryEntry;
 import org.olat.repository.RepositoryEntryRef;
+import org.springframework.beans.factory.DisposableBean;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.scheduling.concurrent.CustomizableThreadFactory;
 import org.springframework.stereotype.Service;
@@ -62,7 +63,7 @@ import org.springframework.stereotype.Service;
  *
  */
 @Service
-public class LiveStreamServiceImpl implements LiveStreamService {
+public class LiveStreamServiceImpl implements LiveStreamService, DisposableBean {
 	
 	private static final Logger log = Tracing.createLoggerFor(LiveStreamServiceImpl.class);
 	
@@ -84,6 +85,13 @@ public class LiveStreamServiceImpl implements LiveStreamService {
 		return scheduler;
 	}
 
+	@Override
+	public void destroy() throws Exception {
+		if(scheduler != null) {
+			scheduler.shutdownNow();
+		}
+	}
+
 	@Override
 	public List<? extends LiveStreamEvent> getRunningEvents(CourseCalendars calendars, int bufferBeforeMin,
 			int bufferAfterMin) {