diff --git a/docker-compose.yml b/docker-compose.yml
index 9df5077c454b5d8978e5e15f7d91f65a726283d6..8f1eb50b2e1c42b2262e02a25755841772888d36 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -1,22 +1,20 @@
-services:
-  banktransfer:
-    build:
-      context: ./src
-      dockerfile: banktransfer/Dockerfile
-    ports:
-      - "9111:9111"
-  myaktion:
-    build:
-      context: ./src
-      dockerfile: myaktion/Dockerfile
-    ports:
-      - "8000:8000"
-    environment:
-      - DB_CONNECT=mariadb:3306
-      - BANKTRANSFER_CONNECT=banktransfer:9111
-      - LOG_LEVEL=info # change to trace for debugging
-  mariadb:
-    image: mariadb:10.5
-    environment:
-      - MYSQL_ROOT_PASSWORD=root
-      - MYSQL_DATABASE=myaktion
+services:
+  banktransfer:
+    build:
+      context: ./src
+      dockerfile: banktransfer/Dockerfile
+  myaktion:
+    build:
+      context: ./src
+      dockerfile: myaktion/Dockerfile
+    ports:
+      - "8000:8000"
+    environment:
+      - DB_CONNECT=mariadb:3306
+      - BANKTRANSFER_CONNECT=banktransfer:9111
+      - LOG_LEVEL=info # change to trace for debugging
+  mariadb:
+    image: mariadb:10.5
+    environment:
+      - MYSQL_ROOT_PASSWORD=root
+      - MYSQL_DATABASE=myaktion
\ No newline at end of file
diff --git a/go.work b/go.work
index 8c0bf0598f64a8b8d107b405572ecced09b2df65..0471fe4939d682c6a2df735a2b9a0ccba366724d 100644
--- a/go.work
+++ b/go.work
@@ -1,6 +1,4 @@
 go 1.20
 
-use (
-	./src/banktransfer
-	./src/myaktion
-)
+use ./src/myaktion
+use ./src/banktransfer
\ No newline at end of file
diff --git a/go.work.sum b/go.work.sum
index c83d37e6e22868229f182b317609c0738cd8eebb..a5044ec15a4c3501c9662f1b3e2d99a190752eb2 100644
--- a/go.work.sum
+++ b/go.work.sum
@@ -1,5 +1,7 @@
-github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
-github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
-github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
-github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
-gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
+golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc=
+golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
+google.golang.org/genproto v0.0.0-20230306155012-7f2fa6fef1f4/go.mod h1:NWraEVixdDnqcqQ30jipen1STv2r/n24Wb7twVTGR4s=
+google.golang.org/grpc v1.55.0/go.mod h1:iYEXKGkEBhg1PjZQvoYEVPTDkHo1/bjTnfwTeGONTY8=
+google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
+google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
diff --git a/src/banktransfer/go.mod b/src/banktransfer/go.mod
index cd0ad4ec63ccfb3cf80760022adbca5915322a26..ee8fafd6ca98e4e4d1ca36e58549fd21dd4328cd 100644
--- a/src/banktransfer/go.mod
+++ b/src/banktransfer/go.mod
@@ -3,13 +3,13 @@ module gitlab.reutlingen-university.de/albrecht/myaktion-go/src/banktransfer
 go 1.20
 
 require (
-	github.com/golang/protobuf v1.5.3
-	github.com/sirupsen/logrus v1.9.3
+	github.com/sirupsen/logrus v1.9.0
 	google.golang.org/grpc v1.55.0
 	google.golang.org/protobuf v1.30.0
 )
 
 require (
+	github.com/golang/protobuf v1.5.3 // indirect
 	golang.org/x/net v0.8.0 // indirect
 	golang.org/x/sys v0.6.0 // indirect
 	golang.org/x/text v0.8.0 // indirect
diff --git a/src/banktransfer/go.sum b/src/banktransfer/go.sum
index 4367155d74fb46316a881782b9aeb58be21d8c10..fb01c1e07192678cd415679aee90e5d3ff41b917 100644
--- a/src/banktransfer/go.sum
+++ b/src/banktransfer/go.sum
@@ -8,8 +8,8 @@ github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/
 github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38=
 github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
 github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
-github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ=
-github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
+github.com/sirupsen/logrus v1.9.0 h1:trlNQbNUG3OdDrDil03MCb1H2o9nJ1x4/5LYw7byDE0=
+github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
 github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
 github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY=
 github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
diff --git a/src/banktransfer/grpc/banktransfer/banktransfer.pb.go b/src/banktransfer/grpc/banktransfer/banktransfer.pb.go
index 0fe9fbc77f00a2edf90e32dffd7f2feb427f15c4..93f5ffc07e107e63fba5d273c5a69c674dad5d0e 100644
--- a/src/banktransfer/grpc/banktransfer/banktransfer.pb.go
+++ b/src/banktransfer/grpc/banktransfer/banktransfer.pb.go
@@ -1,15 +1,15 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // versions:
-// 	protoc-gen-go v1.30.0
-// 	protoc        v3.12.4
+// 	protoc-gen-go v1.26.0
+// 	protoc        v3.17.0
 // source: banktransfer/banktransfer.proto
 
 package banktransfer
 
 import (
-	empty "github.com/golang/protobuf/ptypes/empty"
 	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
 	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	emptypb "google.golang.org/protobuf/types/known/emptypb"
 	reflect "reflect"
 	sync "sync"
 )
@@ -258,14 +258,14 @@ var file_banktransfer_banktransfer_proto_rawDesc = []byte{
 	0x6e, 0x6b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x2e, 0x50, 0x72, 0x6f, 0x63, 0x65,
 	0x73, 0x73, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x1a, 0x19, 0x2e,
 	0x62, 0x61, 0x6e, 0x6b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x2e, 0x54, 0x72, 0x61,
-	0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x00, 0x28, 0x01, 0x30, 0x01, 0x42, 0x59,
-	0x5a, 0x57, 0x67, 0x69, 0x74, 0x6c, 0x61, 0x62, 0x2e, 0x72, 0x65, 0x75, 0x74, 0x6c, 0x69, 0x6e,
+	0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x00, 0x28, 0x01, 0x30, 0x01, 0x42, 0x64,
+	0x5a, 0x62, 0x67, 0x69, 0x74, 0x6c, 0x61, 0x62, 0x2e, 0x72, 0x65, 0x75, 0x74, 0x6c, 0x69, 0x6e,
 	0x67, 0x65, 0x6e, 0x2d, 0x75, 0x6e, 0x69, 0x76, 0x65, 0x72, 0x73, 0x69, 0x74, 0x79, 0x2e, 0x64,
-	0x65, 0x2f, 0x61, 0x6c, 0x62, 0x72, 0x65, 0x63, 0x68, 0x74, 0x2f, 0x6d, 0x79, 0x61, 0x6b, 0x74,
-	0x69, 0x6f, 0x6e, 0x2d, 0x67, 0x6f, 0x2f, 0x73, 0x72, 0x63, 0x2f, 0x62, 0x61, 0x6e, 0x6b, 0x74,
-	0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x62, 0x61, 0x6e,
-	0x6b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x33,
+	0x65, 0x2f, 0x67, 0x6f, 0x2d, 0x65, 0x78, 0x65, 0x72, 0x63, 0x69, 0x73, 0x65, 0x73, 0x2f, 0x6d,
+	0x79, 0x61, 0x6b, 0x74, 0x69, 0x6f, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x73, 0x73, 0x32, 0x30, 0x32,
+	0x33, 0x2f, 0x73, 0x72, 0x63, 0x2f, 0x62, 0x61, 0x6e, 0x6b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66,
+	0x65, 0x72, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x62, 0x61, 0x6e, 0x6b, 0x74, 0x72, 0x61, 0x6e,
+	0x73, 0x66, 0x65, 0x72, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 }
 
 var (
@@ -285,7 +285,7 @@ var file_banktransfer_banktransfer_proto_goTypes = []interface{}{
 	(*Account)(nil),            // 0: banktransfer.Account
 	(*Transaction)(nil),        // 1: banktransfer.Transaction
 	(*ProcessingResponse)(nil), // 2: banktransfer.ProcessingResponse
-	(*empty.Empty)(nil),        // 3: google.protobuf.Empty
+	(*emptypb.Empty)(nil),      // 3: google.protobuf.Empty
 }
 var file_banktransfer_banktransfer_proto_depIdxs = []int32{
 	0, // 0: banktransfer.Transaction.from_account:type_name -> banktransfer.Account
diff --git a/src/banktransfer/grpc/banktransfer/banktransfer.proto b/src/banktransfer/grpc/banktransfer/banktransfer.proto
index a6ea937d1fde43ef2cfc5babc3dfc9a1a26bbf77..c7de1c3c8a9a84cc57a1b69aa73baeb6687d7f1d 100644
--- a/src/banktransfer/grpc/banktransfer/banktransfer.proto
+++ b/src/banktransfer/grpc/banktransfer/banktransfer.proto
@@ -11,19 +11,21 @@ service BankTransfer {
     rpc ProcessTransactions (stream ProcessingResponse) returns (stream Transaction) {}
 }
 
-message Account {
-	string name = 1;
-	string bank_name =2;
-	string number = 3;
-	}
-	message Transaction {
-	int32 id = 1;
-	int32 donation_id = 2;
-	float amount = 3;
-	string reference = 4;
-	Account from_account = 5;
-	Account to_account = 6;
-	}
-	message ProcessingResponse {
-	int32 id = 1;
-}
\ No newline at end of file
+message Account  {
+    string name = 1;
+    string bank_name =2;
+    string number = 3;
+}
+
+message Transaction  {
+    int32 id = 1;
+    int32 donation_id = 2;
+    float amount = 3;
+    string reference = 4;
+    Account from_account = 5;
+    Account to_account = 6;
+}
+
+message ProcessingResponse {
+    int32 id = 1;
+}
diff --git a/src/banktransfer/grpc/banktransfer/banktransfer_grpc.pb.go b/src/banktransfer/grpc/banktransfer/banktransfer_grpc.pb.go
index edc2f69bb4c4cb43109851e8c35fe280e995c79a..02af0f7c343852c91d51beb9b2850b4e8be423fb 100644
--- a/src/banktransfer/grpc/banktransfer/banktransfer_grpc.pb.go
+++ b/src/banktransfer/grpc/banktransfer/banktransfer_grpc.pb.go
@@ -1,17 +1,13 @@
 // Code generated by protoc-gen-go-grpc. DO NOT EDIT.
-// versions:
-// - protoc-gen-go-grpc v1.3.0
-// - protoc             v3.12.4
-// source: banktransfer/banktransfer.proto
 
 package banktransfer
 
 import (
 	context "context"
-	empty "github.com/golang/protobuf/ptypes/empty"
 	grpc "google.golang.org/grpc"
 	codes "google.golang.org/grpc/codes"
 	status "google.golang.org/grpc/status"
+	emptypb "google.golang.org/protobuf/types/known/emptypb"
 )
 
 // This is a compile-time assertion to ensure that this generated file
@@ -19,16 +15,11 @@ import (
 // Requires gRPC-Go v1.32.0 or later.
 const _ = grpc.SupportPackageIsVersion7
 
-const (
-	BankTransfer_TransferMoney_FullMethodName       = "/banktransfer.BankTransfer/TransferMoney"
-	BankTransfer_ProcessTransactions_FullMethodName = "/banktransfer.BankTransfer/ProcessTransactions"
-)
-
 // BankTransferClient is the client API for BankTransfer service.
 //
 // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
 type BankTransferClient interface {
-	TransferMoney(ctx context.Context, in *Transaction, opts ...grpc.CallOption) (*empty.Empty, error)
+	TransferMoney(ctx context.Context, in *Transaction, opts ...grpc.CallOption) (*emptypb.Empty, error)
 	ProcessTransactions(ctx context.Context, opts ...grpc.CallOption) (BankTransfer_ProcessTransactionsClient, error)
 }
 
@@ -40,9 +31,9 @@ func NewBankTransferClient(cc grpc.ClientConnInterface) BankTransferClient {
 	return &bankTransferClient{cc}
 }
 
-func (c *bankTransferClient) TransferMoney(ctx context.Context, in *Transaction, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, BankTransfer_TransferMoney_FullMethodName, in, out, opts...)
+func (c *bankTransferClient) TransferMoney(ctx context.Context, in *Transaction, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, "/banktransfer.BankTransfer/TransferMoney", in, out, opts...)
 	if err != nil {
 		return nil, err
 	}
@@ -50,7 +41,7 @@ func (c *bankTransferClient) TransferMoney(ctx context.Context, in *Transaction,
 }
 
 func (c *bankTransferClient) ProcessTransactions(ctx context.Context, opts ...grpc.CallOption) (BankTransfer_ProcessTransactionsClient, error) {
-	stream, err := c.cc.NewStream(ctx, &BankTransfer_ServiceDesc.Streams[0], BankTransfer_ProcessTransactions_FullMethodName, opts...)
+	stream, err := c.cc.NewStream(ctx, &BankTransfer_ServiceDesc.Streams[0], "/banktransfer.BankTransfer/ProcessTransactions", opts...)
 	if err != nil {
 		return nil, err
 	}
@@ -84,7 +75,7 @@ func (x *bankTransferProcessTransactionsClient) Recv() (*Transaction, error) {
 // All implementations must embed UnimplementedBankTransferServer
 // for forward compatibility
 type BankTransferServer interface {
-	TransferMoney(context.Context, *Transaction) (*empty.Empty, error)
+	TransferMoney(context.Context, *Transaction) (*emptypb.Empty, error)
 	ProcessTransactions(BankTransfer_ProcessTransactionsServer) error
 	mustEmbedUnimplementedBankTransferServer()
 }
@@ -93,7 +84,7 @@ type BankTransferServer interface {
 type UnimplementedBankTransferServer struct {
 }
 
-func (UnimplementedBankTransferServer) TransferMoney(context.Context, *Transaction) (*empty.Empty, error) {
+func (UnimplementedBankTransferServer) TransferMoney(context.Context, *Transaction) (*emptypb.Empty, error) {
 	return nil, status.Errorf(codes.Unimplemented, "method TransferMoney not implemented")
 }
 func (UnimplementedBankTransferServer) ProcessTransactions(BankTransfer_ProcessTransactionsServer) error {
@@ -122,7 +113,7 @@ func _BankTransfer_TransferMoney_Handler(srv interface{}, ctx context.Context, d
 	}
 	info := &grpc.UnaryServerInfo{
 		Server:     srv,
-		FullMethod: BankTransfer_TransferMoney_FullMethodName,
+		FullMethod: "/banktransfer.BankTransfer/TransferMoney",
 	}
 	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 		return srv.(BankTransferServer).TransferMoney(ctx, req.(*Transaction))
diff --git a/src/banktransfer/main.go b/src/banktransfer/main.go
index a76a5a7ff81aca9f67e4441cd71b9882ad294eb5..01c9753908b2ede887a45ba42c21de4089e89bfa 100644
--- a/src/banktransfer/main.go
+++ b/src/banktransfer/main.go
@@ -12,6 +12,7 @@ import (
 )
 
 func init() {
+	// init logger
 	log.SetFormatter(&log.TextFormatter{})
 	log.SetReportCaller(true)
 	level, err := log.ParseLevel(os.Getenv("LOG_LEVEL"))
diff --git a/src/banktransfer/service/banktransfer.go b/src/banktransfer/service/banktransfer.go
index 5aef1c2b41f4e52ce23d4ecf00534a2cc4b8fd41..8b840cf00cccc0c8d6268c11e18e3579e490c4a0 100644
--- a/src/banktransfer/service/banktransfer.go
+++ b/src/banktransfer/service/banktransfer.go
@@ -29,9 +29,10 @@ func NewBankTransferService() *BankTransferService {
 		stop:       make(chan struct{}),
 	}
 }
+
 func (s *BankTransferService) TransferMoney(_ context.Context, transaction *banktransfer.Transaction) (*emptypb.Empty, error) {
 	entry := log.WithField("transaction", transaction)
-	entry.Info("Received transaction")
+	entry.Info(("Received transaction"))
 	s.processTransaction(transaction)
 	return &emptypb.Empty{}, nil
 }
@@ -47,6 +48,10 @@ func (s *BankTransferService) processTransaction(transaction *banktransfer.Trans
 	}(*transaction)
 }
 
+func (s *BankTransferService) getUniqueId() int32 {
+	return atomic.AddInt32(&s.counter, 1)
+}
+
 func (s *BankTransferService) ProcessTransactions(stream banktransfer.BankTransfer_ProcessTransactionsServer) error {
 	return func() error {
 		for {
@@ -91,9 +96,6 @@ func (s *BankTransferService) requeueTransaction(transaction *banktransfer.Trans
 	}(*transaction)
 }
 
-func (s *BankTransferService) getUniqueId() int32 {
-	return atomic.AddInt32(&s.counter, 1)
-}
 func (s *BankTransferService) Start() {
 	log.Info("Starting banktransfer service")
 	go func() {
diff --git a/src/myaktion/client/banktransfer.go b/src/myaktion/client/banktransfer.go
index b6f66b5b3d27519da635194a2a67b06ac8adff36..99151ce5e41ece5dfd0f346fea4d6198f8dc170d 100644
--- a/src/myaktion/client/banktransfer.go
+++ b/src/myaktion/client/banktransfer.go
@@ -3,14 +3,12 @@ package client
 import (
 	"context"
 	"os"
-	"time"
 
 	log "github.com/sirupsen/logrus"
 	"google.golang.org/grpc"
 )
 
 var (
-	TimeoutLimitation  = time.Second * 10
 	bankTransferTarget = os.Getenv("BANKTRANSFER_CONNECT")
 )
 
diff --git a/src/myaktion/client/banktransfer/banktransfer.pb.go b/src/myaktion/client/banktransfer/banktransfer.pb.go
index 0fe9fbc77f00a2edf90e32dffd7f2feb427f15c4..93f5ffc07e107e63fba5d273c5a69c674dad5d0e 100644
--- a/src/myaktion/client/banktransfer/banktransfer.pb.go
+++ b/src/myaktion/client/banktransfer/banktransfer.pb.go
@@ -1,15 +1,15 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // versions:
-// 	protoc-gen-go v1.30.0
-// 	protoc        v3.12.4
+// 	protoc-gen-go v1.26.0
+// 	protoc        v3.17.0
 // source: banktransfer/banktransfer.proto
 
 package banktransfer
 
 import (
-	empty "github.com/golang/protobuf/ptypes/empty"
 	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
 	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	emptypb "google.golang.org/protobuf/types/known/emptypb"
 	reflect "reflect"
 	sync "sync"
 )
@@ -258,14 +258,14 @@ var file_banktransfer_banktransfer_proto_rawDesc = []byte{
 	0x6e, 0x6b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x2e, 0x50, 0x72, 0x6f, 0x63, 0x65,
 	0x73, 0x73, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x1a, 0x19, 0x2e,
 	0x62, 0x61, 0x6e, 0x6b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x2e, 0x54, 0x72, 0x61,
-	0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x00, 0x28, 0x01, 0x30, 0x01, 0x42, 0x59,
-	0x5a, 0x57, 0x67, 0x69, 0x74, 0x6c, 0x61, 0x62, 0x2e, 0x72, 0x65, 0x75, 0x74, 0x6c, 0x69, 0x6e,
+	0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x00, 0x28, 0x01, 0x30, 0x01, 0x42, 0x64,
+	0x5a, 0x62, 0x67, 0x69, 0x74, 0x6c, 0x61, 0x62, 0x2e, 0x72, 0x65, 0x75, 0x74, 0x6c, 0x69, 0x6e,
 	0x67, 0x65, 0x6e, 0x2d, 0x75, 0x6e, 0x69, 0x76, 0x65, 0x72, 0x73, 0x69, 0x74, 0x79, 0x2e, 0x64,
-	0x65, 0x2f, 0x61, 0x6c, 0x62, 0x72, 0x65, 0x63, 0x68, 0x74, 0x2f, 0x6d, 0x79, 0x61, 0x6b, 0x74,
-	0x69, 0x6f, 0x6e, 0x2d, 0x67, 0x6f, 0x2f, 0x73, 0x72, 0x63, 0x2f, 0x62, 0x61, 0x6e, 0x6b, 0x74,
-	0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x62, 0x61, 0x6e,
-	0x6b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x33,
+	0x65, 0x2f, 0x67, 0x6f, 0x2d, 0x65, 0x78, 0x65, 0x72, 0x63, 0x69, 0x73, 0x65, 0x73, 0x2f, 0x6d,
+	0x79, 0x61, 0x6b, 0x74, 0x69, 0x6f, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x73, 0x73, 0x32, 0x30, 0x32,
+	0x33, 0x2f, 0x73, 0x72, 0x63, 0x2f, 0x62, 0x61, 0x6e, 0x6b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66,
+	0x65, 0x72, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x62, 0x61, 0x6e, 0x6b, 0x74, 0x72, 0x61, 0x6e,
+	0x73, 0x66, 0x65, 0x72, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 }
 
 var (
@@ -285,7 +285,7 @@ var file_banktransfer_banktransfer_proto_goTypes = []interface{}{
 	(*Account)(nil),            // 0: banktransfer.Account
 	(*Transaction)(nil),        // 1: banktransfer.Transaction
 	(*ProcessingResponse)(nil), // 2: banktransfer.ProcessingResponse
-	(*empty.Empty)(nil),        // 3: google.protobuf.Empty
+	(*emptypb.Empty)(nil),      // 3: google.protobuf.Empty
 }
 var file_banktransfer_banktransfer_proto_depIdxs = []int32{
 	0, // 0: banktransfer.Transaction.from_account:type_name -> banktransfer.Account
diff --git a/src/myaktion/client/banktransfer/banktransfer.proto b/src/myaktion/client/banktransfer/banktransfer.proto
index a6ea937d1fde43ef2cfc5babc3dfc9a1a26bbf77..c7de1c3c8a9a84cc57a1b69aa73baeb6687d7f1d 100644
--- a/src/myaktion/client/banktransfer/banktransfer.proto
+++ b/src/myaktion/client/banktransfer/banktransfer.proto
@@ -11,19 +11,21 @@ service BankTransfer {
     rpc ProcessTransactions (stream ProcessingResponse) returns (stream Transaction) {}
 }
 
-message Account {
-	string name = 1;
-	string bank_name =2;
-	string number = 3;
-	}
-	message Transaction {
-	int32 id = 1;
-	int32 donation_id = 2;
-	float amount = 3;
-	string reference = 4;
-	Account from_account = 5;
-	Account to_account = 6;
-	}
-	message ProcessingResponse {
-	int32 id = 1;
-}
\ No newline at end of file
+message Account  {
+    string name = 1;
+    string bank_name =2;
+    string number = 3;
+}
+
+message Transaction  {
+    int32 id = 1;
+    int32 donation_id = 2;
+    float amount = 3;
+    string reference = 4;
+    Account from_account = 5;
+    Account to_account = 6;
+}
+
+message ProcessingResponse {
+    int32 id = 1;
+}
diff --git a/src/myaktion/client/banktransfer/banktransfer_grpc.pb.go b/src/myaktion/client/banktransfer/banktransfer_grpc.pb.go
index edc2f69bb4c4cb43109851e8c35fe280e995c79a..02af0f7c343852c91d51beb9b2850b4e8be423fb 100644
--- a/src/myaktion/client/banktransfer/banktransfer_grpc.pb.go
+++ b/src/myaktion/client/banktransfer/banktransfer_grpc.pb.go
@@ -1,17 +1,13 @@
 // Code generated by protoc-gen-go-grpc. DO NOT EDIT.
-// versions:
-// - protoc-gen-go-grpc v1.3.0
-// - protoc             v3.12.4
-// source: banktransfer/banktransfer.proto
 
 package banktransfer
 
 import (
 	context "context"
-	empty "github.com/golang/protobuf/ptypes/empty"
 	grpc "google.golang.org/grpc"
 	codes "google.golang.org/grpc/codes"
 	status "google.golang.org/grpc/status"
+	emptypb "google.golang.org/protobuf/types/known/emptypb"
 )
 
 // This is a compile-time assertion to ensure that this generated file
@@ -19,16 +15,11 @@ import (
 // Requires gRPC-Go v1.32.0 or later.
 const _ = grpc.SupportPackageIsVersion7
 
-const (
-	BankTransfer_TransferMoney_FullMethodName       = "/banktransfer.BankTransfer/TransferMoney"
-	BankTransfer_ProcessTransactions_FullMethodName = "/banktransfer.BankTransfer/ProcessTransactions"
-)
-
 // BankTransferClient is the client API for BankTransfer service.
 //
 // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
 type BankTransferClient interface {
-	TransferMoney(ctx context.Context, in *Transaction, opts ...grpc.CallOption) (*empty.Empty, error)
+	TransferMoney(ctx context.Context, in *Transaction, opts ...grpc.CallOption) (*emptypb.Empty, error)
 	ProcessTransactions(ctx context.Context, opts ...grpc.CallOption) (BankTransfer_ProcessTransactionsClient, error)
 }
 
@@ -40,9 +31,9 @@ func NewBankTransferClient(cc grpc.ClientConnInterface) BankTransferClient {
 	return &bankTransferClient{cc}
 }
 
-func (c *bankTransferClient) TransferMoney(ctx context.Context, in *Transaction, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, BankTransfer_TransferMoney_FullMethodName, in, out, opts...)
+func (c *bankTransferClient) TransferMoney(ctx context.Context, in *Transaction, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, "/banktransfer.BankTransfer/TransferMoney", in, out, opts...)
 	if err != nil {
 		return nil, err
 	}
@@ -50,7 +41,7 @@ func (c *bankTransferClient) TransferMoney(ctx context.Context, in *Transaction,
 }
 
 func (c *bankTransferClient) ProcessTransactions(ctx context.Context, opts ...grpc.CallOption) (BankTransfer_ProcessTransactionsClient, error) {
-	stream, err := c.cc.NewStream(ctx, &BankTransfer_ServiceDesc.Streams[0], BankTransfer_ProcessTransactions_FullMethodName, opts...)
+	stream, err := c.cc.NewStream(ctx, &BankTransfer_ServiceDesc.Streams[0], "/banktransfer.BankTransfer/ProcessTransactions", opts...)
 	if err != nil {
 		return nil, err
 	}
@@ -84,7 +75,7 @@ func (x *bankTransferProcessTransactionsClient) Recv() (*Transaction, error) {
 // All implementations must embed UnimplementedBankTransferServer
 // for forward compatibility
 type BankTransferServer interface {
-	TransferMoney(context.Context, *Transaction) (*empty.Empty, error)
+	TransferMoney(context.Context, *Transaction) (*emptypb.Empty, error)
 	ProcessTransactions(BankTransfer_ProcessTransactionsServer) error
 	mustEmbedUnimplementedBankTransferServer()
 }
@@ -93,7 +84,7 @@ type BankTransferServer interface {
 type UnimplementedBankTransferServer struct {
 }
 
-func (UnimplementedBankTransferServer) TransferMoney(context.Context, *Transaction) (*empty.Empty, error) {
+func (UnimplementedBankTransferServer) TransferMoney(context.Context, *Transaction) (*emptypb.Empty, error) {
 	return nil, status.Errorf(codes.Unimplemented, "method TransferMoney not implemented")
 }
 func (UnimplementedBankTransferServer) ProcessTransactions(BankTransfer_ProcessTransactionsServer) error {
@@ -122,7 +113,7 @@ func _BankTransfer_TransferMoney_Handler(srv interface{}, ctx context.Context, d
 	}
 	info := &grpc.UnaryServerInfo{
 		Server:     srv,
-		FullMethod: BankTransfer_TransferMoney_FullMethodName,
+		FullMethod: "/banktransfer.BankTransfer/TransferMoney",
 	}
 	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 		return srv.(BankTransferServer).TransferMoney(ctx, req.(*Transaction))
diff --git a/src/myaktion/db/db.go b/src/myaktion/db/db.go
index c3946452b15352c20571ee135964504db89bca4b..9b7803b5ece3a6a8e141f276b1bc97dacacbcac7 100644
--- a/src/myaktion/db/db.go
+++ b/src/myaktion/db/db.go
@@ -6,7 +6,6 @@ import (
 	"os"
 
 	log "github.com/sirupsen/logrus"
-
 	"gitlab.reutlingen-university.de/albrecht/myaktion-go/src/myaktion/model"
 	"gorm.io/driver/mysql"
 	"gorm.io/gorm"
diff --git a/src/myaktion/docker-entrypoint.sh b/src/myaktion/docker-entrypoint.sh
index 1e411c6ff4aa62cefd39b4ba5e12aa1531878f56..ab3b0d48e06de3d272f8e10365f2b125063ff2e0 100644
--- a/src/myaktion/docker-entrypoint.sh
+++ b/src/myaktion/docker-entrypoint.sh
@@ -4,12 +4,13 @@ set -e
 
 # Wait for DB
 if [ -n "$DB_CONNECT" ]; then
-    /go/src/app/wait-for-it.sh "$DB_CONNECT" -t 40
+    /go/src/app/wait-for-it.sh "$DB_CONNECT" -t 20
 fi
 
 # Wait for banktransfer
 if [ -n "$BANKTRANSFER_CONNECT" ]; then
-  /go/src/app/wait-for-it.sh "$BANKTRANSFER_CONNECT" -t 40
+  /go/src/app/wait-for-it.sh "$BANKTRANSFER_CONNECT" -t 20
 fi
 
-# Run the 
+# Run the main container command.
+exec "$@"
\ No newline at end of file
diff --git a/src/myaktion/go.mod b/src/myaktion/go.mod
index f9629e56c18bc46651a3c5c9fa6c5ea3a2c0ec7c..e0f3cd6c4e0754da649f3d58d94245c93d519f27 100644
--- a/src/myaktion/go.mod
+++ b/src/myaktion/go.mod
@@ -4,10 +4,9 @@ go 1.20
 
 require (
 	github.com/gorilla/mux v1.8.0
-	github.com/ory/dockertest/v3 v3.10.0
-	github.com/sirupsen/logrus v1.9.2
-	gorm.io/driver/mysql v1.5.1
-	gorm.io/gorm v1.25.1
+	github.com/sirupsen/logrus v1.9.0
+	google.golang.org/grpc v1.55.0
+	google.golang.org/protobuf v1.30.0
 )
 
 require (
@@ -20,12 +19,10 @@ require (
 	github.com/docker/docker v20.10.7+incompatible // indirect
 	github.com/docker/go-connections v0.4.0 // indirect
 	github.com/docker/go-units v0.4.0 // indirect
-	github.com/go-sql-driver/mysql v1.7.1 // indirect
 	github.com/gogo/protobuf v1.3.2 // indirect
+	github.com/golang/protobuf v1.5.3 // indirect
 	github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect
 	github.com/imdario/mergo v0.3.12 // indirect
-	github.com/jinzhu/inflection v1.0.0 // indirect
-	github.com/jinzhu/now v1.1.5 // indirect
 	github.com/mitchellh/mapstructure v1.4.1 // indirect
 	github.com/moby/term v0.0.0-20201216013528-df9cb8a40635 // indirect
 	github.com/opencontainers/go-digest v1.0.0 // indirect
@@ -36,7 +33,19 @@ require (
 	github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 // indirect
 	github.com/xeipuuv/gojsonschema v1.2.0 // indirect
 	golang.org/x/mod v0.9.0 // indirect
-	golang.org/x/sys v0.7.0 // indirect
+	golang.org/x/net v0.8.0 // indirect
+	golang.org/x/text v0.8.0 // indirect
 	golang.org/x/tools v0.7.0 // indirect
+	google.golang.org/genproto v0.0.0-20230306155012-7f2fa6fef1f4 // indirect
 	gopkg.in/yaml.v2 v2.3.0 // indirect
 )
+
+require (
+	github.com/go-sql-driver/mysql v1.7.1 // indirect
+	github.com/jinzhu/inflection v1.0.0 // indirect
+	github.com/jinzhu/now v1.1.5 // indirect
+	github.com/ory/dockertest/v3 v3.10.0
+	golang.org/x/sys v0.7.0 // indirect
+	gorm.io/driver/mysql v1.5.0
+	gorm.io/gorm v1.25.0
+)
diff --git a/src/myaktion/go.sum b/src/myaktion/go.sum
index c0123193f8b6f749f856777a3ad3dfc244771bee..de6d10a85db211201013b3614b462e97f038d34b 100644
--- a/src/myaktion/go.sum
+++ b/src/myaktion/go.sum
@@ -37,11 +37,13 @@ github.com/godbus/dbus/v5 v5.0.6/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5x
 github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
 github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
 github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
+github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg=
+github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
 github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
 github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
 github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
-github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU=
 github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38=
 github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4=
 github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ=
 github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI=
@@ -83,8 +85,8 @@ github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQD
 github.com/seccomp/libseccomp-golang v0.9.2-0.20220502022130-f33da4d89646/go.mod h1:JA8cRccbGaA1s33RQf7Y1+q9gHmZX1yB/z9WDN1C6fg=
 github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc=
 github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
-github.com/sirupsen/logrus v1.9.2 h1:oxx1eChJGI6Uks2ZC4W1zpLlVgqB8ner4EuQwV4Ik1Y=
-github.com/sirupsen/logrus v1.9.2/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
+github.com/sirupsen/logrus v1.9.0 h1:trlNQbNUG3OdDrDil03MCb1H2o9nJ1x4/5LYw7byDE0=
+github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
 github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
 github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
 github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
@@ -116,6 +118,8 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL
 golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
 golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
 golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
+golang.org/x/net v0.8.0 h1:Zrh2ngAOFYneWTAIAPethzeaQLuHwhuBkuV6ZiRnUaQ=
+golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc=
 golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
@@ -138,6 +142,8 @@ golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
 golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
 golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
+golang.org/x/text v0.8.0 h1:57P1ETyNKtuIjB4SRd15iJxuhj8Gc416Y78H3qgMh68=
+golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
 golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
 golang.org/x/tools v0.0.0-20190624222133-a101b041ded4/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
 golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
@@ -148,10 +154,16 @@ golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s=
 golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
 golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
 golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
-golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE=
 golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+google.golang.org/genproto v0.0.0-20230306155012-7f2fa6fef1f4 h1:DdoeryqhaXp1LtT/emMP1BRJPHHKFi5akj/nbx/zNTA=
+google.golang.org/genproto v0.0.0-20230306155012-7f2fa6fef1f4/go.mod h1:NWraEVixdDnqcqQ30jipen1STv2r/n24Wb7twVTGR4s=
+google.golang.org/grpc v1.55.0 h1:3Oj82/tFSCeUrRTg/5E/7d/W5A1tj6Ky1ABAuZuv5ag=
+google.golang.org/grpc v1.55.0/go.mod h1:iYEXKGkEBhg1PjZQvoYEVPTDkHo1/bjTnfwTeGONTY8=
 google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
+google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
 google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
+google.golang.org/protobuf v1.30.0 h1:kPPoIgf3TsEvrm0PFe15JQ+570QVxYzEvvHqChK+cng=
+google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
 gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
 gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
 gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
@@ -159,9 +171,10 @@ gopkg.in/yaml.v2 v2.3.0 h1:clyUAQHOM3G0M3f5vQj7LuJrETvjVot3Z5el9nffUtU=
 gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
 gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
-gorm.io/driver/mysql v1.5.1 h1:WUEH5VF9obL/lTtzjmML/5e6VfFR/788coz2uaVCAZw=
-gorm.io/driver/mysql v1.5.1/go.mod h1:Jo3Xu7mMhCyj8dlrb3WoCaRd1FhsVh+yMXb1jUInf5o=
-gorm.io/gorm v1.25.1 h1:nsSALe5Pr+cM3V1qwwQ7rOkw+6UeLrX5O4v3llhHa64=
-gorm.io/gorm v1.25.1/go.mod h1:L4uxeKpfBml98NYqVqwAdmV1a2nBtAec/cf3fpucW/k=
+gorm.io/driver/mysql v1.5.0 h1:6hSAT5QcyIaty0jfnff0z0CLDjyRgZ8mlMHLqSt7uXM=
+gorm.io/driver/mysql v1.5.0/go.mod h1:FFla/fJuCvyTi7rJQd27qlNX2v3L6deTR1GgTjSOLPo=
+gorm.io/gorm v1.24.7-0.20230306060331-85eaf9eeda11/go.mod h1:L4uxeKpfBml98NYqVqwAdmV1a2nBtAec/cf3fpucW/k=
+gorm.io/gorm v1.25.0 h1:+KtYtb2roDz14EQe4bla8CbQlmb9dN3VejSai3lprfU=
+gorm.io/gorm v1.25.0/go.mod h1:L4uxeKpfBml98NYqVqwAdmV1a2nBtAec/cf3fpucW/k=
 gotest.tools/v3 v3.0.2/go.mod h1:3SzNCllyD9/Y+b5r9JIKQ474KzkZyqLqEfYqMsX94Bk=
 gotest.tools/v3 v3.3.0 h1:MfDY1b1/0xN1CyMlQDac0ziEy9zJQd9CXBRRDHw2jJo=
diff --git a/src/myaktion/handler/health.go b/src/myaktion/handler/health.go
index eeae12cce56c3560db212971dc17e13e8dfbf619..bb62dc721e584bf5bd0959ed81692ba935a289e5 100644
--- a/src/myaktion/handler/health.go
+++ b/src/myaktion/handler/health.go
@@ -3,14 +3,9 @@ package handler
 import (
 	"io"
 	"net/http"
-
-	log "github.com/sirupsen/logrus"
 )
 
 func Health(w http.ResponseWriter, r *http.Request) {
-	log.Infof(`{"alive": true}`)
-
-	//kann das gelöscht werden?
 	w.Header().Set("Content-Type", "application/json")
 	io.WriteString(w, `{"alive": true}`)
 }
diff --git a/src/myaktion/handler/health_test.go b/src/myaktion/handler/health_test.go
index 11c3d31ab97ef677353e14a2f3c310e365ca6b4f..de18bf7b618be9c6aead5a16896b0184d76d5de4 100644
--- a/src/myaktion/handler/health_test.go
+++ b/src/myaktion/handler/health_test.go
@@ -1,19 +1,21 @@
-package handler
+package handler_test
 
 import (
 	"net/http"
 	"net/http/httptest"
 	"testing"
+
+	"gitlab.reutlingen-university.de/albrecht/myaktion-go/src/myaktion/handler"
 )
 
 func TestHealth(t *testing.T) {
 	rr := httptest.NewRecorder()
 	req := httptest.NewRequest("GET", "/health", nil)
-	handler := http.HandlerFunc(Health)
+	handler := http.HandlerFunc(handler.Health)
 	handler.ServeHTTP(rr, req)
 
 	if status := rr.Code; status != http.StatusOK {
-		t.Errorf("handler returned wrong status code: got %v wand %v", status, http.StatusOK)
+		t.Errorf("handler returned wrong status code: got %v want %v", status, http.StatusOK)
 	}
 
 	expected := `{"alive": true}`
diff --git a/src/myaktion/handler/utils.go b/src/myaktion/handler/util.go
similarity index 100%
rename from src/myaktion/handler/utils.go
rename to src/myaktion/handler/util.go
diff --git a/src/myaktion/main.go b/src/myaktion/main.go
index a434fc55c8f956bf08f472e45588caa98fd7c1a7..f36824ab4bdb1307811787d458bcb160b81db2c4 100644
--- a/src/myaktion/main.go
+++ b/src/myaktion/main.go
@@ -1,17 +1,22 @@
 package main
 
 import (
-	"net/http"
+	"fmt"
 	"os"
 
-	"github.com/gorilla/mux"
 	log "github.com/sirupsen/logrus"
+
+	"net/http"
+
+	"github.com/gorilla/mux"
 	"gitlab.reutlingen-university.de/albrecht/myaktion-go/src/myaktion/db"
 	"gitlab.reutlingen-university.de/albrecht/myaktion-go/src/myaktion/handler"
 )
 
 func init() {
+	//ensure that logger is initialized before connecting to DB
 	defer db.Init()
+	// init logger
 	log.SetFormatter(&log.TextFormatter{})
 	log.SetReportCaller(true)
 	level, err := log.ParseLevel(os.Getenv("LOG_LEVEL"))
@@ -24,9 +29,8 @@ func init() {
 }
 
 func main() {
-	log.Println("Starting My-Aktion API server")
+	fmt.Println("Starting MyAktion API server")
 	router := mux.NewRouter()
-
 	router.HandleFunc("/health", handler.Health).Methods("GET")
 	router.HandleFunc("/campaigns", handler.CreateCampaign).Methods("POST")
 	router.HandleFunc("/campaigns", handler.GetCampaigns).Methods("GET")
@@ -34,7 +38,6 @@ func main() {
 	router.HandleFunc("/campaigns/{id}", handler.UpdateCampaign).Methods("PUT")
 	router.HandleFunc("/campaigns/{id}", handler.DeleteCampaign).Methods("DELETE")
 	router.HandleFunc("/campaigns/{id}/donation", handler.AddDonation).Methods("POST")
-
 	go monitortransactions()
 	if err := http.ListenAndServe(":8000", router); err != nil {
 		log.Fatal(err)
diff --git a/src/myaktion/model/account.go b/src/myaktion/model/account.go
index 9d02bf4bf7c1b2d55394ea88d7545571e8435ace..e0e927a4fb79407d154369da6f151a4cc1151487 100644
--- a/src/myaktion/model/account.go
+++ b/src/myaktion/model/account.go
@@ -2,6 +2,6 @@ package model
 
 type Account struct {
 	Name     string `gorm:"notNull;size:60"`
-	BankName string `gorm:"notNull;size:60"`
-	Number   string `gorm:"notNull;size:60"`
+	BankName string `gorm:"notNull;size:40"`
+	Number   string `gorm:"notNull;size:20"`
 }
diff --git a/src/myaktion/model/campaign.go b/src/myaktion/model/campaign.go
index d6a4cb707173197d60741497dc7d53da1fadc4f7..596d6c958ceb3d8c5b57c699018e6a343684347c 100644
--- a/src/myaktion/model/campaign.go
+++ b/src/myaktion/model/campaign.go
@@ -7,9 +7,9 @@ type Campaign struct {
 	Name               string     `gorm:"notNull;size:30"`
 	OrganizerName      string     `gorm:"notNull"`
 	TargetAmount       float64    `gorm:"notNull;check:target_amount >= 10.0"`
-	DonationMinimum    float64    `gorm:"notNull;check:target_amount >= 1.0"`
-	AmountDonatedSoFar float64    `gorm:"-"`
+	DonationMinimum    float64    `gorm:"notNull;check:donation_minimum >= 1.0"`
 	Donations          []Donation `gorm:"foreignKey:CampaignID;constraint:OnUpdate:CASCADE,OnDelete:CASCADE"`
+	AmountDonatedSoFar float64    `gorm:"-"`
 	Account            Account    `gorm:"embedded;embeddedPrefix:account_"`
 }
 
diff --git a/src/myaktion/model/donation.go b/src/myaktion/model/donation.go
index fca92ae133d203f0ffaeefb850cab7a33ea3325f..fffdfce568349e4696c4ee9834b0672b8aed901d 100644
--- a/src/myaktion/model/donation.go
+++ b/src/myaktion/model/donation.go
@@ -2,19 +2,19 @@ package model
 
 import "gorm.io/gorm"
 
+type Status string
+
+const (
+	TRANSFERRED Status = "TRANSFERRED"
+	IN_PROCESS  Status = "IN_PROCESS"
+)
+
 type Donation struct {
 	gorm.Model
 	CampaignID       uint
 	Amount           float64 `gorm:"notNull;check:amount >= 1.0"`
 	DonorName        string  `gorm:"notNull;size:40"`
 	ReceiptRequested bool    `gorm:"notNull"`
+	Status           Status  `gorm:"notNull;type:ENUM('TRANSFERRED', 'IN_PROCESS')"`
 	Account          Account `gorm:"embedded;embeddedPrefix:account_"`
-	Status           Status  `gorm:"notNull;type:ENUM('TRANSFERRED','IN_PROCESS')"`
 }
-
-type Status string
-
-const (
-	TRANSFERRED Status = "TRANSFERRED"
-	IN_PROCESS  Status = "IN_PROCESS"
-)
diff --git a/src/myaktion/monitor.go b/src/myaktion/monitor.go
index db1de6f2caad8e62d1192d8d96bc525fb6853e82..e50317b6f0d973a5b9f254a4193422e9bcbf3be9 100644
--- a/src/myaktion/monitor.go
+++ b/src/myaktion/monitor.go
@@ -18,13 +18,14 @@ func monitortransactions() {
 }
 
 func connectandmonitor() {
-	ctx, cancel := context.WithTimeout(context.Background(), 120*time.Second)
+	ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
 	defer cancel()
 	conn, err := client.GetBankTransferConnection(ctx)
 	if err != nil {
 		log.WithError(err).Fatal("error connecting to the banktransfer service")
 	}
 	defer conn.Close()
+
 	banktransferClient := banktransfer.NewBankTransferClient(conn)
 	watcher, err := banktransferClient.ProcessTransactions(ctx)
 	if err != nil {
@@ -48,7 +49,7 @@ func connectandmonitor() {
 			entry.WithError(err).Error("error changing donation status")
 			continue
 		}
-		entry.Info("Received transaction. Sending processing response")
+		entry.Info("Sending processing response")
 		err = watcher.Send(&banktransfer.ProcessingResponse{Id: transaction.Id})
 		if err != nil {
 			entry.WithError(err).Error("error sending processing response")
diff --git a/src/myaktion/service/donation.go b/src/myaktion/service/donation.go
index dc82d9f6845abc007e5dc04a4e5d0d0f8b55e414..4736c7e54396d6b1b03e0a5830df8c937ee633fe 100644
--- a/src/myaktion/service/donation.go
+++ b/src/myaktion/service/donation.go
@@ -17,11 +17,13 @@ func AddDonation(campaignId uint, donation *model.Donation) error {
 	if err != nil {
 		return err
 	}
+
 	donation.CampaignID = campaignId
 	result := db.DB.Create(donation)
 	if result.Error != nil {
 		return result.Error
 	}
+
 	ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
 	defer cancel()
 	conn, err := client.GetBankTransferConnection(ctx)
@@ -31,6 +33,7 @@ func AddDonation(campaignId uint, donation *model.Donation) error {
 		return err
 	}
 	defer conn.Close()
+
 	banktransferClient := banktransfer.NewBankTransferClient(conn)
 	_, err = banktransferClient.TransferMoney(ctx, &banktransfer.Transaction{
 		DonationId:  int32(donation.ID),
@@ -44,13 +47,13 @@ func AddDonation(campaignId uint, donation *model.Donation) error {
 		deleteDonation(donation)
 		return err
 	}
+
 	entry := log.WithField("ID", campaignId)
 	entry.Info("Successfully added new donation to campaign in database.")
 	entry.Tracef("Stored: %v", donation)
 	return nil
 }
 
-// Helper-Funktionen
 func convertAccount(account *model.Account) *banktransfer.Account {
 	return &banktransfer.Account{
 		Name:     account.Name,
diff --git a/src/myaktion/wait-for-it.sh b/src/myaktion/wait-for-it.sh
index d990e0d364f576ee83cd699707076ca49ad36a4d..3974640b053e6f84a21c292c01e3674348445831 100644
--- a/src/myaktion/wait-for-it.sh
+++ b/src/myaktion/wait-for-it.sh
@@ -179,4 +179,4 @@ if [[ $WAITFORIT_CLI != "" ]]; then
     exec "${WAITFORIT_CLI[@]}"
 else
     exit $WAITFORIT_RESULT
-fi
+fi
\ No newline at end of file