diff --git a/src/myaktion/service/campaign.go b/src/myaktion/service/campaign.go
index 33632a8c58f6e3468742c33c58443ee37926fb1c..6205e87afc7b0f73b52d0fc9f7f1ab8e7571199e 100644
--- a/src/myaktion/service/campaign.go
+++ b/src/myaktion/service/campaign.go
@@ -5,6 +5,7 @@ import (
 
 	log "github.com/sirupsen/logrus"
 
+	"gitlab.reutlingen-university.de/go-exercises/myaktion-go/src/myaktion/db"
 	"gitlab.reutlingen-university.de/go-exercises/myaktion-go/src/myaktion/model"
 )
 
@@ -18,19 +19,22 @@ func init() {
 }
 
 func CreateCampaign(campaign *model.Campaign) error {
-	campaign.ID = actCampaignId
-	campaignStore[actCampaignId] = campaign
-	actCampaignId += 1
-	log.Printf("Successfully stored new campaign with ID %v in database.", campaign.ID)
-	log.Printf("Stored: %v", campaign)
+	result := db.DB.Create(campaign)
+	if result.Error != nil {
+		return result.Error
+	}
+	log.Infof("Successfully stored new campaign with ID %v in database.", campaign.ID)
+	log.Tracef("Stored: %v", campaign)
 	return nil
 }
 
 func GetCampaigns() ([]model.Campaign, error) {
 	var campaigns []model.Campaign
-	for _, campaign := range campaignStore {
-		campaigns = append(campaigns, *campaign)
+	result := db.DB.Preload("Donations").Find(&campaigns)
+	if result.Error != nil {
+		return nil, result.Error
 	}
+	log.Tracef("Retrieved: %v", campaigns)
 	return campaigns, nil
 }