diff --git a/database-4_test.go b/database-4_test.go
index 1b1f11980a565f9fbf8a43bc5f9e615b0f9e0a16..7b9e78853450832bd6e00ff03f1f83274d50ec9b 100644
--- a/database-4_test.go
+++ b/database-4_test.go
@@ -13,8 +13,9 @@ import (
 func TestWriteToDB4(t *testing.T) {
 
 	db, err := gorm.Open(sqlite.Open("file::memory:?cache=shared"), &gorm.Config{})
+	//db, err := gorm.Open(sqlite.Open("file:/home/vs/workspaces/alvine/cloud/framework/dummy.sqlite"), &gorm.Config{})
 	if err != nil {
-		t.Fatalf("a error occurred while opening the database: %v", err)
+		t.Fatalf("an error occurred while opening the database: %v", err)
 	}
 
 	manager := NewManager()
@@ -45,13 +46,13 @@ func TestWriteToDB4(t *testing.T) {
 	err = manager.ScheduleJob(job, scheduler)
 	assert.Nil(t, err)
 
-	time.Sleep(200 * time.Millisecond)
-
-	assert.Equal(t, 21, job.GetStats().RunCount)
+	time.Sleep(100 * time.Millisecond)
 
+	Info("WaitSync")
 	manager.WaitSync()
+	assert.Equal(t, 21, job.GetStats().RunCount)
 
-	// check is stats are the values above
+	// check the stats are the values above
 	var tmpJob JobPersistence
 
 	err = db.Preload("Stats").First(&tmpJob, "id = ?", "job3").Error
diff --git a/database.go b/database.go
index 6ce44a0bc70a291cfcaf1b7d261b953ca377cd86..e8591df9bb641a1d579f92a4462a20304dc8545a 100644
--- a/database.go
+++ b/database.go
@@ -88,7 +88,7 @@ func (s *JobSyncer) ResetStats(job GenericJob) error {
 	if s.manager == nil || s.manager.database == nil {
 		return ErrNoDatabaseConnection
 	}
-	return saveJob(job, s.manager.database)
+	return updateJob(job, s.manager.database)
 
 }
 
@@ -137,13 +137,20 @@ func update(job *JobPersistence, db *gorm.DB) error {
 		return ErrNoDatabaseConnection
 	}
 
-	permJob := job.GetPersistence()
-
 	return db.Transaction(func(tx *gorm.DB) error {
 
-		if permJob.Stats != (JobStats{}) {
-			if err := tx.Model(&permJob).Select("Stats").Updates(map[string]interface{}{"stats": permJob.Stats}).Error; err != nil {
-				return err
+		if job.Stats != (JobStats{}) {
+			Info("Updating stats for job %s", job.ID)
+
+			if job.Stats.RunCount == 0 {
+				Info("Stats runCount is 0, skipping update")
+			}
+
+			if err := tx.Model(job.Stats).
+				Select("*").
+				Omit("job_id", "created_at").
+				Updates(job.Stats).Error; err != nil {
+				return err // Fehler beim Update
 			}
 		}
 
@@ -180,6 +187,11 @@ func save(job *JobPersistence, db *gorm.DB) error {
 
 		if job.Stats != (JobStats{}) {
 			job.Stats.JobID = job.ID
+
+			if job.Stats.RunCount == 0 {
+				Info("Stats runCount is 0, skipping update")
+			}
+
 			if err := tx.Save(&job.Stats).Error; err != nil {
 				return err
 			}
diff --git a/event-bus.go b/event-bus.go
index 8715b4ed834bb205666d50c93734cd8b4271f4e6..b05f0a4889b1fe66c9fd1cea5ffd8c9928550d50 100644
--- a/event-bus.go
+++ b/event-bus.go
@@ -132,6 +132,7 @@ func (eb *EventBus) Publish(name EventName, data any) {
 
 				defer func() {
 					if r := recover(); r != nil {
+						Error("EventBus: publish panic: %v", r)
 						eb.SetPublishError(msgID, fmt.Errorf("publish panic: %v", r))
 					}
 				}()