diff --git a/pom.xml b/pom.xml
index 9922d50..ecae40c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -9,14 +9,14 @@
1.0-SNAPSHOT
- 17
- 17
+ 21
+ 21
org.springframework.boot
spring-boot-starter-parent
- 2.7.5
+ 3.3.3
@@ -54,7 +54,7 @@
com.github.calimero
calimero-core
- 2.5
+ 2.5.1
com.luckycatlabs
diff --git a/src/main/java/de/ph87/homeautomation/RepositorySearchHelper.java b/src/main/java/de/ph87/homeautomation/RepositorySearchHelper.java
index 9626a92..35d660e 100644
--- a/src/main/java/de/ph87/homeautomation/RepositorySearchHelper.java
+++ b/src/main/java/de/ph87/homeautomation/RepositorySearchHelper.java
@@ -1,12 +1,12 @@
package de.ph87.homeautomation;
+import jakarta.persistence.criteria.Expression;
+import jakarta.persistence.criteria.Predicate;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Sort;
import org.springframework.data.jpa.domain.Specification;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
-import javax.persistence.criteria.Expression;
-import javax.persistence.criteria.Predicate;
import java.util.Arrays;
import java.util.List;
import java.util.Locale;
diff --git a/src/main/java/de/ph87/homeautomation/bulk/Bulk.java b/src/main/java/de/ph87/homeautomation/bulk/Bulk.java
index 45eadfa..bc8f547 100644
--- a/src/main/java/de/ph87/homeautomation/bulk/Bulk.java
+++ b/src/main/java/de/ph87/homeautomation/bulk/Bulk.java
@@ -1,10 +1,14 @@
package de.ph87.homeautomation.bulk;
-import de.ph87.homeautomation.bulk.entry.*;
-import lombok.*;
+import de.ph87.homeautomation.bulk.entry.BulkEntry;
+import jakarta.persistence.*;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+import lombok.ToString;
-import javax.persistence.*;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.List;
@Entity
@Getter
diff --git a/src/main/java/de/ph87/homeautomation/bulk/BulkFilter.java b/src/main/java/de/ph87/homeautomation/bulk/BulkFilter.java
index 74bf2aa..48251fc 100644
--- a/src/main/java/de/ph87/homeautomation/bulk/BulkFilter.java
+++ b/src/main/java/de/ph87/homeautomation/bulk/BulkFilter.java
@@ -1,9 +1,9 @@
package de.ph87.homeautomation.bulk;
import de.ph87.homeautomation.common.Filter;
+import jakarta.persistence.criteria.Predicate;
import org.springframework.data.jpa.domain.Specification;
-import javax.persistence.criteria.Predicate;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
diff --git a/src/main/java/de/ph87/homeautomation/bulk/entry/BulkEntry.java b/src/main/java/de/ph87/homeautomation/bulk/entry/BulkEntry.java
index 3672c6e..f66f025 100644
--- a/src/main/java/de/ph87/homeautomation/bulk/entry/BulkEntry.java
+++ b/src/main/java/de/ph87/homeautomation/bulk/entry/BulkEntry.java
@@ -1,9 +1,11 @@
package de.ph87.homeautomation.bulk.entry;
-import de.ph87.homeautomation.property.*;
-import lombok.*;
-
-import javax.persistence.*;
+import de.ph87.homeautomation.property.Property;
+import jakarta.persistence.*;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+import lombok.ToString;
@Entity
@Getter
diff --git a/src/main/java/de/ph87/homeautomation/channel/Channel.java b/src/main/java/de/ph87/homeautomation/channel/Channel.java
index f18fc3f..56a51b0 100644
--- a/src/main/java/de/ph87/homeautomation/channel/Channel.java
+++ b/src/main/java/de/ph87/homeautomation/channel/Channel.java
@@ -1,8 +1,8 @@
package de.ph87.homeautomation.channel;
+import jakarta.persistence.*;
import lombok.*;
-import javax.persistence.*;
import java.time.ZonedDateTime;
@Getter
diff --git a/src/main/java/de/ph87/homeautomation/device/devices/Device.java b/src/main/java/de/ph87/homeautomation/device/devices/Device.java
index 7548abc..b8f175e 100644
--- a/src/main/java/de/ph87/homeautomation/device/devices/Device.java
+++ b/src/main/java/de/ph87/homeautomation/device/devices/Device.java
@@ -1,12 +1,11 @@
package de.ph87.homeautomation.device.devices;
+import jakarta.persistence.*;
import lombok.AccessLevel;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
-import javax.persistence.*;
-
@Getter
@Setter
@ToString
diff --git a/src/main/java/de/ph87/homeautomation/device/devices/DeviceShutter.java b/src/main/java/de/ph87/homeautomation/device/devices/DeviceShutter.java
index c399dba..32212a6 100644
--- a/src/main/java/de/ph87/homeautomation/device/devices/DeviceShutter.java
+++ b/src/main/java/de/ph87/homeautomation/device/devices/DeviceShutter.java
@@ -1,13 +1,12 @@
package de.ph87.homeautomation.device.devices;
import de.ph87.homeautomation.property.Property;
+import jakarta.persistence.Entity;
+import jakarta.persistence.ManyToOne;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
-import javax.persistence.Entity;
-import javax.persistence.ManyToOne;
-
@Getter
@Setter
@ToString
diff --git a/src/main/java/de/ph87/homeautomation/device/devices/DeviceStateScene.java b/src/main/java/de/ph87/homeautomation/device/devices/DeviceStateScene.java
index 0efa707..02102aa 100644
--- a/src/main/java/de/ph87/homeautomation/device/devices/DeviceStateScene.java
+++ b/src/main/java/de/ph87/homeautomation/device/devices/DeviceStateScene.java
@@ -1,14 +1,14 @@
package de.ph87.homeautomation.device.devices;
import de.ph87.homeautomation.property.Property;
+import jakarta.persistence.ElementCollection;
+import jakarta.persistence.Entity;
+import jakarta.persistence.FetchType;
+import jakarta.persistence.ManyToOne;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
-import javax.persistence.ElementCollection;
-import javax.persistence.Entity;
-import javax.persistence.FetchType;
-import javax.persistence.ManyToOne;
import java.util.ArrayList;
import java.util.List;
diff --git a/src/main/java/de/ph87/homeautomation/device/devices/DeviceSwitch.java b/src/main/java/de/ph87/homeautomation/device/devices/DeviceSwitch.java
index 6143403..86da4f5 100644
--- a/src/main/java/de/ph87/homeautomation/device/devices/DeviceSwitch.java
+++ b/src/main/java/de/ph87/homeautomation/device/devices/DeviceSwitch.java
@@ -1,13 +1,12 @@
package de.ph87.homeautomation.device.devices;
import de.ph87.homeautomation.property.Property;
+import jakarta.persistence.Entity;
+import jakarta.persistence.ManyToOne;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
-import javax.persistence.Entity;
-import javax.persistence.ManyToOne;
-
@Getter
@Setter
@ToString
diff --git a/src/main/java/de/ph87/homeautomation/knx/group/KnxGroup.java b/src/main/java/de/ph87/homeautomation/knx/group/KnxGroup.java
index 6ba7aa9..5c223ca 100644
--- a/src/main/java/de/ph87/homeautomation/knx/group/KnxGroup.java
+++ b/src/main/java/de/ph87/homeautomation/knx/group/KnxGroup.java
@@ -2,12 +2,12 @@ package de.ph87.homeautomation.knx.group;
import de.ph87.homeautomation.channel.Channel;
import de.ph87.homeautomation.channel.IChannelOwner;
+import jakarta.persistence.Column;
+import jakarta.persistence.Embedded;
+import jakarta.persistence.Entity;
import lombok.*;
import tuwien.auto.calimero.GroupAddress;
-import javax.persistence.Column;
-import javax.persistence.Embedded;
-import javax.persistence.Entity;
import java.time.ZonedDateTime;
@Getter
diff --git a/src/main/java/de/ph87/homeautomation/knx/group/KnxGroupLinkInfo.java b/src/main/java/de/ph87/homeautomation/knx/group/KnxGroupLinkInfo.java
index e410107..7f7d4c4 100644
--- a/src/main/java/de/ph87/homeautomation/knx/group/KnxGroupLinkInfo.java
+++ b/src/main/java/de/ph87/homeautomation/knx/group/KnxGroupLinkInfo.java
@@ -1,11 +1,11 @@
package de.ph87.homeautomation.knx.group;
+import jakarta.persistence.Embeddable;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import lombok.extern.slf4j.Slf4j;
-import javax.persistence.Embeddable;
import java.time.ZonedDateTime;
@Slf4j
diff --git a/src/main/java/de/ph87/homeautomation/knx/group/KnxTelegram.java b/src/main/java/de/ph87/homeautomation/knx/group/KnxTelegram.java
index aee07eb..19f94a0 100644
--- a/src/main/java/de/ph87/homeautomation/knx/group/KnxTelegram.java
+++ b/src/main/java/de/ph87/homeautomation/knx/group/KnxTelegram.java
@@ -1,11 +1,11 @@
package de.ph87.homeautomation.knx.group;
+import jakarta.persistence.Embeddable;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.ToString;
import tuwien.auto.calimero.IndividualAddress;
-import javax.persistence.Embeddable;
import java.time.ZonedDateTime;
@Getter
diff --git a/src/main/java/de/ph87/homeautomation/property/Property.java b/src/main/java/de/ph87/homeautomation/property/Property.java
index 1eb3fa8..b5bd623 100644
--- a/src/main/java/de/ph87/homeautomation/property/Property.java
+++ b/src/main/java/de/ph87/homeautomation/property/Property.java
@@ -1,10 +1,9 @@
package de.ph87.homeautomation.property;
import de.ph87.homeautomation.channel.Channel;
+import jakarta.persistence.*;
import lombok.*;
-import javax.persistence.*;
-
@Getter
@Setter
@ToString
diff --git a/src/main/java/de/ph87/homeautomation/scene/Scene.java b/src/main/java/de/ph87/homeautomation/scene/Scene.java
index dd9ec8e..cf66c3c 100644
--- a/src/main/java/de/ph87/homeautomation/scene/Scene.java
+++ b/src/main/java/de/ph87/homeautomation/scene/Scene.java
@@ -1,12 +1,11 @@
package de.ph87.homeautomation.scene;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.Id;
import lombok.*;
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
-
@Getter
@Setter
@ToString
diff --git a/src/main/java/de/ph87/homeautomation/schedule/Schedule.java b/src/main/java/de/ph87/homeautomation/schedule/Schedule.java
index b0c8498..ce8c31b 100644
--- a/src/main/java/de/ph87/homeautomation/schedule/Schedule.java
+++ b/src/main/java/de/ph87/homeautomation/schedule/Schedule.java
@@ -1,9 +1,9 @@
package de.ph87.homeautomation.schedule;
import de.ph87.homeautomation.schedule.entry.ScheduleEntry;
+import jakarta.persistence.*;
import lombok.*;
-import javax.persistence.*;
import java.util.HashSet;
import java.util.Set;
diff --git a/src/main/java/de/ph87/homeautomation/schedule/astro/Astro.java b/src/main/java/de/ph87/homeautomation/schedule/astro/Astro.java
index 393b969..9763d57 100644
--- a/src/main/java/de/ph87/homeautomation/schedule/astro/Astro.java
+++ b/src/main/java/de/ph87/homeautomation/schedule/astro/Astro.java
@@ -1,5 +1,6 @@
package de.ph87.homeautomation.schedule.astro;
+import jakarta.persistence.*;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
@@ -7,8 +8,6 @@ import lombok.ToString;
import org.springframework.lang.NonNull;
import org.springframework.lang.Nullable;
-import javax.persistence.*;
-
@Entity
@Getter
@ToString
diff --git a/src/main/java/de/ph87/homeautomation/schedule/entry/ScheduleEntry.java b/src/main/java/de/ph87/homeautomation/schedule/entry/ScheduleEntry.java
index d691fa2..93000cd 100644
--- a/src/main/java/de/ph87/homeautomation/schedule/entry/ScheduleEntry.java
+++ b/src/main/java/de/ph87/homeautomation/schedule/entry/ScheduleEntry.java
@@ -4,12 +4,12 @@ import com.luckycatlabs.sunrisesunset.Zenith;
import de.ph87.homeautomation.bulk.Bulk;
import de.ph87.homeautomation.property.Property;
import de.ph87.homeautomation.schedule.Schedule;
+import jakarta.persistence.*;
import lombok.AccessLevel;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
-import javax.persistence.*;
import java.time.ZonedDateTime;
import java.util.Random;
diff --git a/src/main/java/de/ph87/homeautomation/schedule/entry/ScheduleNextExecutionDto.java b/src/main/java/de/ph87/homeautomation/schedule/entry/ScheduleNextExecutionDto.java
deleted file mode 100644
index 04c2aee..0000000
--- a/src/main/java/de/ph87/homeautomation/schedule/entry/ScheduleNextExecutionDto.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package de.ph87.homeautomation.schedule.entry;
-
-import de.ph87.homeautomation.schedule.Schedule;
-import lombok.Getter;
-
-import java.time.ZonedDateTime;
-import java.util.Comparator;
-import java.util.Optional;
-
-@Getter
-public class ScheduleNextExecutionDto {
-
- public final String name;
-
- public final ZonedDateTime nextTimestamp;
-
- public final double numberValue;
-
- private ScheduleNextExecutionDto(final Schedule schedule, final ScheduleEntry entry) {
- this.name = schedule.getTitle();
- this.nextTimestamp = entry.getNextFuzzyTimestamp();
- this.numberValue = entry.getValue();
- }
-
- public static Optional create(final Schedule schedule, final ZonedDateTime now) {
- return schedule.getEntries().stream()
- .filter(entry -> entry.getNextFuzzyTimestamp() != null && entry.getNextFuzzyTimestamp().isAfter(now))
- .min(Comparator.comparing(ScheduleEntry::getNextFuzzyTimestamp))
- .map(scheduleEntry -> new ScheduleNextExecutionDto(schedule, scheduleEntry));
- }
-
-}
diff --git a/src/main/java/de/ph87/homeautomation/shared/AbstractThreadService.java b/src/main/java/de/ph87/homeautomation/shared/AbstractThreadService.java
index e12ea0f..44508fb 100644
--- a/src/main/java/de/ph87/homeautomation/shared/AbstractThreadService.java
+++ b/src/main/java/de/ph87/homeautomation/shared/AbstractThreadService.java
@@ -1,13 +1,12 @@
package de.ph87.homeautomation.shared;
+import jakarta.annotation.PreDestroy;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.context.event.ApplicationStartedEvent;
import org.springframework.context.event.EventListener;
import org.springframework.stereotype.Service;
-import javax.annotation.PreDestroy;
-
import static de.ph87.homeautomation.shared.Helpers.dhms;
@Slf4j