diff --git a/src/myaktion/service/campaign.go b/src/myaktion/service/campaign.go
index 901d8588d3dcaa4f4bb8bb25ec74d9585e968ace..58234e3117333060ac34bdc1d5a3b94c23789316 100644
--- a/src/myaktion/service/campaign.go
+++ b/src/myaktion/service/campaign.go
@@ -1,23 +1,12 @@
 package service
 
 import (
-	"fmt"
-
 	log "github.com/sirupsen/logrus"
 
 	"gitlab.reutlingen-university.de/albrecht/myaktion-go/src/myaktion/db"
 	"gitlab.reutlingen-university.de/albrecht/myaktion-go/src/myaktion/model"
 )
 
-var (
-	campaignStore map[uint]*model.Campaign
-	actCampaignId uint = 1
-)
-
-func init() {
-	campaignStore = make(map[uint]*model.Campaign)
-}
-
 func CreateCampaign(campaign *model.Campaign) error {
 	result := db.DB.Create(campaign)
 	if result.Error != nil {
@@ -40,12 +29,13 @@ func GetCampaigns() ([]model.Campaign, error) {
 }
 
 func GetCampaign(id uint) (*model.Campaign, error) {
-	campaign := campaignStore[id]
-	if campaign == nil {
-		return nil, fmt.Errorf("no campaign with ID %d", id)
+	var campaign model.Campaign
+	result := db.DB.Preload("Donations").First(&campaign, id)
+	if result.Error != nil {
+		return nil, result.Error
 	}
 	log.Tracef("Retrieved: %v", campaign)
-	return campaign, nil
+	return &campaign, nil
 }
 
 func UpdateCampaign(id uint, campaign *model.Campaign) (*model.Campaign, error) {
@@ -57,6 +47,7 @@ func UpdateCampaign(id uint, campaign *model.Campaign) (*model.Campaign, error)
 	existingCampaign.OrganizerName = campaign.OrganizerName
 	existingCampaign.TargetAmount = campaign.TargetAmount
 	existingCampaign.DonationMinimum = campaign.DonationMinimum
+	db.DB.Save(&existingCampaign)
 	entry := log.WithField("ID", id)
 	entry.Info("Successfully updated campaign.")
 	entry.Tracef("Updated: %v", campaign)
@@ -68,7 +59,8 @@ func DeleteCampaign(id uint) (*model.Campaign, error) {
 	if err != nil {
 		return campaign, err
 	}
-	delete(campaignStore, id)
+	db.DB.Delete(&campaign, id)
+
 	entry := log.WithField("ID", id)
 	entry.Info("Successfully deleted campaign.")
 	entry.Tracef("Deleted: %v", campaign)
diff --git a/src/myaktion/service/donation.go b/src/myaktion/service/donation.go
index 32c19a96ac4529762eed9bb038c8bba6122f7642..1bcbfee486ad145d264cb794188220fb56c7ceca 100644
--- a/src/myaktion/service/donation.go
+++ b/src/myaktion/service/donation.go
@@ -3,6 +3,7 @@ package service
 import (
 	log "github.com/sirupsen/logrus"
 
+	"gitlab.reutlingen-university.de/albrecht/myaktion-go/src/myaktion/db"
 	"gitlab.reutlingen-university.de/albrecht/myaktion-go/src/myaktion/model"
 )
 
@@ -12,6 +13,7 @@ func AddDonation(campaignId uint, donation *model.Donation) error {
 		return err
 	}
 	campaign.Donations = append(campaign.Donations, *donation)
+	db.DB.Save(&campaign)
 	entry := log.WithField("ID", campaignId)
 	entry.Info("Successfully added new donation to campaign.")
 	entry.Tracef("Stored: %v", donation)
diff --git a/tests.txt b/tests.txt
index a2985c2068df9f178f6049560f3fbf1840fa77a8..72c773ab7be83cf7cd1f9c7cf5abe55114c5613b 100644
--- a/tests.txt
+++ b/tests.txt
@@ -15,4 +15,4 @@ curl -X DELETE localhost:8000/campaigns/1
 curl -X PUT -H "Content-Type: application/json" -d '{"name":"new Name","organizerName":"Thomas","donationMinimum":2,"targetAmount":100,"account":{"name":"Martin","bankName":"DKB","number":"123456"}}' localhost:8000/campaigns/1 
 
 # AddDonation
-curs -H "Content-Type: application/json" -d '{"amount": 12.23,"DonorName":"Stefan","ReceiptRequested":false}'
\ No newline at end of file
+curl -H "Content-Type: application/json" -d '{"CampaignID":1,"amount":12.23,"DonorName":"Stefan","ReceiptRequested":false,"Status":"TRANSFERRED"}'
\ No newline at end of file