diff --git a/bin/.gitignore b/bin/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..393434f1706f5e3240b8924cb2a01152cec33783
--- /dev/null
+++ b/bin/.gitignore
@@ -0,0 +1,5 @@
+/target/
+/.settings/
+/.metadata/
+.classpath
+.project
\ No newline at end of file
diff --git a/bin/README.md b/bin/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..9ae9e86b7bd6cb1472d9373702d8249973da0832
--- /dev/null
+++ b/bin/README.md
@@ -0,0 +1 @@
+ab
\ No newline at end of file
diff --git a/bin/azure-pipelines.yml b/bin/azure-pipelines.yml
new file mode 100644
index 0000000000000000000000000000000000000000..bbe87cb0fbb384e929911a4e4b4a81401c5446d0
--- /dev/null
+++ b/bin/azure-pipelines.yml
@@ -0,0 +1,31 @@
+# Maven
+# Build your Java project and run tests with Apache Maven.
+# Add steps that analyze code, save build artifacts, deploy, and more:
+# https://docs.microsoft.com/azure/devops/pipelines/languages/java
+
+trigger:
+- master
+
+pool:
+  vmImage: 'ubuntu-latest'
+
+steps:
+- task: Maven@3
+  inputs:
+    mavenPomFile: 'pom.xml'
+    mavenOptions: '-Xmx3072m'
+    javaHomeOption: 'JDKVersion'
+    jdkVersionOption: '1.8'
+    jdkArchitectureOption: 'x64'
+    publishJUnitResults: true
+    testResultsFiles: '**/surefire-reports/TEST-*.xml'
+    goals: 'package'
+
+- task: AzureRmWebAppDeployment@4
+  inputs:
+    ConnectionType: 'AzureRM'
+    azureSubscription: 'Azure for Students (d67e4eff-f95b-4837-b21e-2daef7374625)'
+    appType: 'webAppLinux'
+    WebAppName: 'tech-recruiting'
+    packageForLinux: '$(System.DefaultWorkingDirectory)/**/*.war'
+    RuntimeStack: 'WILDFLY|14-jre8'
diff --git a/bin/pom.xml b/bin/pom.xml
new file mode 100644
index 0000000000000000000000000000000000000000..0cb5aa5a9b663e37fc79f1add8d84121e5dc185e
--- /dev/null
+++ b/bin/pom.xml
@@ -0,0 +1,48 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+	<groupId>de.dpunkt</groupId>
+	<artifactId>my-aktion</artifactId>
+	<version>0.0.1</version>
+	<packaging>war</packaging>
+
+	<dependencies>
+		<dependency>
+			<groupId>jakarta.platform</groupId>
+			<artifactId>jakarta.jakartaee-api</artifactId>
+			<version>8.0.0</version>
+			<scope>provided</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.eclipse.microprofile</groupId>
+			<artifactId>microprofile</artifactId>
+			<version>3.0</version>
+			<type>pom</type>
+			<scope>provided</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.primefaces</groupId>
+			<artifactId>primefaces</artifactId>
+			<version>8.0</version>
+		</dependency>
+	</dependencies>
+
+	<build>
+		<finalName>my-aktion</finalName>
+		<plugins>
+			<plugin>
+				<groupId>org.wildfly.plugins</groupId>
+				<artifactId>wildfly-maven-plugin</artifactId>
+				<version>2.0.2.Final</version>
+			</plugin>
+		</plugins>
+	</build>
+
+	<properties>
+		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+		<maven.compiler.source>1.8</maven.compiler.source>
+		<maven.compiler.target>1.8</maven.compiler.target>
+		<failOnMissingWebXml>false</failOnMissingWebXml>
+	</properties>
+</project>
\ No newline at end of file
diff --git a/bin/src/main/java/de/dpunkt/myaktion/controller/DonateMoneyController.class b/bin/src/main/java/de/dpunkt/myaktion/controller/DonateMoneyController.class
new file mode 100644
index 0000000000000000000000000000000000000000..0139d27612bbd3745352d2684725c81b3563c90a
Binary files /dev/null and b/bin/src/main/java/de/dpunkt/myaktion/controller/DonateMoneyController.class differ
diff --git a/bin/src/main/java/de/dpunkt/myaktion/controller/EditCampaignController.class b/bin/src/main/java/de/dpunkt/myaktion/controller/EditCampaignController.class
new file mode 100644
index 0000000000000000000000000000000000000000..98a98e86f79354ec86eec0488b81fd92e40489ad
Binary files /dev/null and b/bin/src/main/java/de/dpunkt/myaktion/controller/EditCampaignController.class differ
diff --git a/bin/src/main/java/de/dpunkt/myaktion/controller/EditDonationFormController.class b/bin/src/main/java/de/dpunkt/myaktion/controller/EditDonationFormController.class
new file mode 100644
index 0000000000000000000000000000000000000000..9a971bb0e85c15b2f52f60cca6190f9e53afd478
Binary files /dev/null and b/bin/src/main/java/de/dpunkt/myaktion/controller/EditDonationFormController.class differ
diff --git a/bin/src/main/java/de/dpunkt/myaktion/controller/ListCampaignsController.class b/bin/src/main/java/de/dpunkt/myaktion/controller/ListCampaignsController.class
new file mode 100644
index 0000000000000000000000000000000000000000..25efcfb44fc620e81001d9d668aeee574518ff7e
Binary files /dev/null and b/bin/src/main/java/de/dpunkt/myaktion/controller/ListCampaignsController.class differ
diff --git a/bin/src/main/java/de/dpunkt/myaktion/controller/ListDonationsController.class b/bin/src/main/java/de/dpunkt/myaktion/controller/ListDonationsController.class
new file mode 100644
index 0000000000000000000000000000000000000000..54dac8bfbbff773e4685ebb5859376cb04efb919
Binary files /dev/null and b/bin/src/main/java/de/dpunkt/myaktion/controller/ListDonationsController.class differ
diff --git a/bin/src/main/java/de/dpunkt/myaktion/controller/Pages.class b/bin/src/main/java/de/dpunkt/myaktion/controller/Pages.class
new file mode 100644
index 0000000000000000000000000000000000000000..8f57b945cb4a1a75a73b833d27977b208d910158
Binary files /dev/null and b/bin/src/main/java/de/dpunkt/myaktion/controller/Pages.class differ
diff --git a/bin/src/main/java/de/dpunkt/myaktion/data/CampaignListProducer.class b/bin/src/main/java/de/dpunkt/myaktion/data/CampaignListProducer.class
new file mode 100644
index 0000000000000000000000000000000000000000..8d832d75f2b4e3af716427764f18f80db14965c3
Binary files /dev/null and b/bin/src/main/java/de/dpunkt/myaktion/data/CampaignListProducer.class differ
diff --git a/bin/src/main/java/de/dpunkt/myaktion/data/CampaignProducer$Mode.class b/bin/src/main/java/de/dpunkt/myaktion/data/CampaignProducer$Mode.class
new file mode 100644
index 0000000000000000000000000000000000000000..4ef4b260264a2aea455e6609b7ee576882708bb0
Binary files /dev/null and b/bin/src/main/java/de/dpunkt/myaktion/data/CampaignProducer$Mode.class differ
diff --git a/bin/src/main/java/de/dpunkt/myaktion/data/CampaignProducer.class b/bin/src/main/java/de/dpunkt/myaktion/data/CampaignProducer.class
new file mode 100644
index 0000000000000000000000000000000000000000..3e85a4d05b3bec8f8f9a09f7d3f2b0eea3228324
Binary files /dev/null and b/bin/src/main/java/de/dpunkt/myaktion/data/CampaignProducer.class differ
diff --git a/bin/src/main/java/de/dpunkt/myaktion/model/Account.class b/bin/src/main/java/de/dpunkt/myaktion/model/Account.class
new file mode 100644
index 0000000000000000000000000000000000000000..dfe9a53daa28b1269b05072fbf8f60c46b818ebf
Binary files /dev/null and b/bin/src/main/java/de/dpunkt/myaktion/model/Account.class differ
diff --git a/bin/src/main/java/de/dpunkt/myaktion/model/Campaign.class b/bin/src/main/java/de/dpunkt/myaktion/model/Campaign.class
new file mode 100644
index 0000000000000000000000000000000000000000..472d6ce0793c7aad9619c2d80e9ac9080f2e20f8
Binary files /dev/null and b/bin/src/main/java/de/dpunkt/myaktion/model/Campaign.class differ
diff --git a/bin/src/main/java/de/dpunkt/myaktion/model/Donation$Status.class b/bin/src/main/java/de/dpunkt/myaktion/model/Donation$Status.class
new file mode 100644
index 0000000000000000000000000000000000000000..942f08992d2d41687b398220a8f826f67b182683
Binary files /dev/null and b/bin/src/main/java/de/dpunkt/myaktion/model/Donation$Status.class differ
diff --git a/bin/src/main/java/de/dpunkt/myaktion/model/Donation.class b/bin/src/main/java/de/dpunkt/myaktion/model/Donation.class
new file mode 100644
index 0000000000000000000000000000000000000000..b68f89894d2b81abb326868d781b7b9d9af05993
Binary files /dev/null and b/bin/src/main/java/de/dpunkt/myaktion/model/Donation.class differ
diff --git a/bin/src/main/resources/messages_de.properties b/bin/src/main/resources/messages_de.properties
new file mode 100644
index 0000000000000000000000000000000000000000..07544ff2deb2fd43d5e72f642c02f19a8e7c5384
--- /dev/null
+++ b/bin/src/main/resources/messages_de.properties
@@ -0,0 +1,66 @@
+# index.xhtml
+welcome.title= Workshop Java EE 7
+welcome.text=Java EE 7: Willkommen zu unserem Workshop!
+
+# listCampaigns.xhtml
+listCampaigns.my_campaigns=Meine Aktionen
+listCampaigns.name=Name
+listCampaigns.target_amount=Spendenziel
+listCampaigns.donated_so_far=bisher gespendet
+listCampaigns.edit=Editieren
+listCampaigns.list_donations=Spendenliste
+listCampaigns.form=Formular
+listCampaigns.add_campaign=Aktion hinzufügen
+
+# editCampaign.xhtml
+editCampaign.add_new_campaign=Neue Aktion anlegen
+editCampaign.edit_campaign=Aktionsdaten editieren
+editCampaign.general=Allgemein
+editCampaign.name=Name
+editCampaign.campaign_name_validation=Der Name einer Aktion muss min. 4 und darf max. 30 Zeichen lang sein.
+editCampaign.name_of_the_campaign=Name der Spendenaktion
+editCampaign.target_amount=Spendenziel
+editCampaign.target_amount_validation=Das Spendenziel für die Aktion muss min. 10 Euro sein.
+editCampaign.donation_amount=Spendenbetrag
+editCampaign.donation_amount_validation=Der Spendenbetrag muss min. 1 Euro sein.
+editCampaign.bank_account=Bankverbindung
+editCampaign.iban=IBAN
+editCampaign.name_of_bank=Name der Bank
+editCampaign.save=Speichern
+editCampaign.cancel=Abbrechen
+
+# listDonations.xhtml
+listDonations.donation_list=Spenderliste
+listDonations.beneficiary_account=Empfängerkonto
+listDonations.iban=IBAN
+listDonations.name=Name
+listDonations.name_of_bank=Name der Bank
+listDonations.donation_amount=Spendenbetrag
+listDonations.receipt=Quittung
+listDonations.yes=ja
+listDonations.no=nein
+listDonations.status=Status
+listDonations.status.TRANSFERRED=überwiesen
+listDonations.status.IN_PROCESS=in Bearbeitung
+
+# editDonationForm.xhtml
+editDonationForm.edit_donation_form=Spendenformular bearbeiten
+editDonationForm.background_color=Hintergrundfarbe
+editDonationForm.text_color=Textfarbe
+editDonationForm.form_url=URL des Formulars
+editDonationForm.update_url=Aktualisieren der URL
+
+# donateMoney.xhtml
+donateMoney.donate_money=Geld spenden
+donateMoney.name=Name
+donateMoney.iban=IBAN
+donateMoney.name_of_bank=Name der Bank
+donateMoney.donation_amount=Spendenbetrag
+donateMoney.i_want_a_receipt=Ja, ich möchte eine Spendenquittung
+donateMoney.donate=Spenden
+donateMoney.thank_you=Vielen Dank für die Spende!
+
+listCampaigns.ask_delete_campaign=Aktion wirklich löschen?
+listCampaigns.delete_campaign=Aktion löschen
+listCampaigns.yes=Ja
+listCampaigns.no=Nein
\ No newline at end of file
diff --git a/bin/src/main/resources/messages_en.properties b/bin/src/main/resources/messages_en.properties
new file mode 100644
index 0000000000000000000000000000000000000000..5df0b5aed6b0df2809e2ae1ef2f080db8dc8f6ad
--- /dev/null
+++ b/bin/src/main/resources/messages_en.properties
@@ -0,0 +1,66 @@
+# index.xhtml
+welcome.title=Workshop Java EE 7
+welcome.text=Java EE 7: Welcome to our Workshop!
+
+# listCampaigns.xhtml
+listCampaigns.my_campaigns=My campaigns
+listCampaigns.name=Name
+listCampaigns.target_amount=Target amount
+listCampaigns.donated_so_far=Donated so far
+listCampaigns.edit=Edit
+listCampaigns.list_donations=List donations
+listCampaigns.form=Form
+listCampaigns.add_campaign=Add campaign
+
+# editCampaign.xhtml
+editCampaign.add_new_campaign=Add a new campaign
+editCampaign.edit_campaign=Edit campaign
+editCampaign.general=General
+editCampaign.name=Name
+editCampaign.campaign_name_validation=The name of a campaign must be at least 4 and max. 30 characters long.
+editCampaign.name_of_the_campaign=Name of the campaign
+editCampaign.target_amount=Target amount
+editCampaign.target_amount_validation=The target amount for the campaign must be at least 10 Euro.
+editCampaign.donation_amount=Donation amount
+editCampaign.donation_amount_validation=The donation amount must be at least 1 Euro.
+editCampaign.bank_account=Bank account
+editCampaign.iban=IBAN
+editCampaign.name_of_bank=Name of Bank
+editCampaign.save=Save
+editCampaign.cancel=Cancel
+
+# listDonations.xhtml
+listDonations.donation_list=List of donations
+listDonations.beneficiary_account=Beneficiary account
+listDonations.iban=IBAN
+listDonations.name=Name
+listDonations.name_of_bank=Name of Bank
+listDonations.donation_amount=Donation amount
+listDonations.receipt=Receipt
+listDonations.yes=yes
+listDonations.no=no
+listDonations.status=Status
+listDonations.status.TRANSFERRED=transferred
+listDonations.status.IN_PROCESS=in process
+
+# editDonationForm.xhtml
+editDonationForm.edit_donation_form=Edit donation form
+editDonationForm.background_color=Background color
+editDonationForm.text_color=Text color
+editDonationForm.form_url=Form URL
+editDonationForm.update_url=Update URL
+
+# donateMoney.xhtml
+donateMoney.donate_money=Donate money
+donateMoney.name=Name
+donateMoney.iban=IBAN
+donateMoney.name_of_bank=Name of bank
+donateMoney.donation_amount=Donation amount
+donateMoney.i_want_a_receipt=Yes, I would like a donation receipt
+donateMoney.donate=Donate
+donateMoney.thank_you=Thank you for your donation!
+
+listCampaigns.ask_delete_campaign=Really delete campaign?
+listCampaigns.delete_campaign=Delete campaign
+listCampaigns.yes=Yes
+listCampaigns.no=No
\ No newline at end of file
diff --git a/bin/src/main/webapp/WEB-INF/beans.xml b/bin/src/main/webapp/WEB-INF/beans.xml
new file mode 100644
index 0000000000000000000000000000000000000000..51e8caf9f902ed321518e45954efa637170d9c12
--- /dev/null
+++ b/bin/src/main/webapp/WEB-INF/beans.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://xmlns.jcp.org/xml/ns/javaee"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/beans_2_0.xsd"
+       bean-discovery-mode="all" version="2.0">
+</beans>
\ No newline at end of file
diff --git a/bin/src/main/webapp/WEB-INF/faces-config.xml b/bin/src/main/webapp/WEB-INF/faces-config.xml
new file mode 100644
index 0000000000000000000000000000000000000000..c5fd52797c166b4e7de1919e28f8e37996ef8453
--- /dev/null
+++ b/bin/src/main/webapp/WEB-INF/faces-config.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<faces-config version="2.3"
+	xmlns="http://xmlns.jcp.org/xml/ns/javaee"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
+            http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_3.xsd">
+	<application>
+		<locale-config>
+			<default-locale>de</default-locale>
+			<supported-locale>en</supported-locale>
+			<supported-locale>de</supported-locale>
+		</locale-config>
+		<resource-bundle>
+			<base-name>messages</base-name>
+			<var>msg</var>
+		</resource-bundle>
+	</application>
+</faces-config>
\ No newline at end of file
diff --git a/bin/src/main/webapp/contracts/de/screen.css b/bin/src/main/webapp/contracts/de/screen.css
new file mode 100644
index 0000000000000000000000000000000000000000..fd7253dd9842d160bd4c35fc55fe499db947d679
--- /dev/null
+++ b/bin/src/main/webapp/contracts/de/screen.css
@@ -0,0 +1,35 @@
+body {
+	margin: 0;
+	padding: 0;
+	background-color: #EAECEE;
+	font-family: Verdana, sans-serif;
+	font-size: 0.9em;
+}
+
+#container {
+	margin: 0 auto;
+	padding: 0 20px 10px 20px;
+	border: 1px solid #666666;
+	width: 865px;
+	padding-top: 10px;
+}
+
+#header {
+	font-size: 1.3em;
+	border: 1px solid #666666;
+	background: #EAECEE;
+	padding: 0 15px 5px 15px;
+	margin-bottom: 50px;
+}
+
+#footer {
+	clear: both;
+	text-align: center;
+	color: #666666;
+	font-size: 0.85em;
+	padding: 3em 0 0 0;
+}
+
+h2 {
+	font-size: 1.2em;
+}
\ No newline at end of file
diff --git a/bin/src/main/webapp/contracts/de/template.xhtml b/bin/src/main/webapp/contracts/de/template.xhtml
new file mode 100644
index 0000000000000000000000000000000000000000..17cdc03c4046c20d800b054bf0109c724d7ff40f
--- /dev/null
+++ b/bin/src/main/webapp/contracts/de/template.xhtml
@@ -0,0 +1,27 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"
+    xmlns:h="http://xmlns.jcp.org/jsf/html"
+    xmlns:ui="http://xmlns.jcp.org/jsf/facelets">
+<h:head>
+    <title>My-Aktion</title>
+    <meta charset="utf-8" />
+    <h:outputStylesheet name="/screen.css" />
+</h:head>
+<h:body>
+    <div id="container">
+        <div id="header">
+            <p>
+                Beispielanwendung <b>My-Aktion</b> – Workshop Java EE 7
+            </p>
+        </div>
+        <div id="content">
+            <ui:insert name="content">
+                [Template content will be inserted here]
+            </ui:insert>
+        </div>
+        <div id="footer">
+            <p>(C) 2013-2014 dpunkt.verlag GmbH, MIT Lizenz</p>
+        </div>
+    </div>
+</h:body>
+</html>
\ No newline at end of file
diff --git a/bin/src/main/webapp/contracts/en/screen.css b/bin/src/main/webapp/contracts/en/screen.css
new file mode 100644
index 0000000000000000000000000000000000000000..fd7253dd9842d160bd4c35fc55fe499db947d679
--- /dev/null
+++ b/bin/src/main/webapp/contracts/en/screen.css
@@ -0,0 +1,35 @@
+body {
+	margin: 0;
+	padding: 0;
+	background-color: #EAECEE;
+	font-family: Verdana, sans-serif;
+	font-size: 0.9em;
+}
+
+#container {
+	margin: 0 auto;
+	padding: 0 20px 10px 20px;
+	border: 1px solid #666666;
+	width: 865px;
+	padding-top: 10px;
+}
+
+#header {
+	font-size: 1.3em;
+	border: 1px solid #666666;
+	background: #EAECEE;
+	padding: 0 15px 5px 15px;
+	margin-bottom: 50px;
+}
+
+#footer {
+	clear: both;
+	text-align: center;
+	color: #666666;
+	font-size: 0.85em;
+	padding: 3em 0 0 0;
+}
+
+h2 {
+	font-size: 1.2em;
+}
\ No newline at end of file
diff --git a/bin/src/main/webapp/contracts/en/template.xhtml b/bin/src/main/webapp/contracts/en/template.xhtml
new file mode 100644
index 0000000000000000000000000000000000000000..56e9c61261d8ad66f8fe814fe8ff1da3daed7c8b
--- /dev/null
+++ b/bin/src/main/webapp/contracts/en/template.xhtml
@@ -0,0 +1,27 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"
+    xmlns:h="http://xmlns.jcp.org/jsf/html"
+    xmlns:ui="http://xmlns.jcp.org/jsf/facelets">
+<h:head>
+    <title>My-Aktion</title>
+    <meta charset="utf-8" />
+    <h:outputStylesheet name="/screen.css" />
+</h:head>
+<h:body>
+    <div id="container">
+        <div id="header">
+            <p>
+                Example application <b>My-Aktion</b> – Workshop Java EE 7
+            </p>
+        </div>
+        <div id="content">
+            <ui:insert name="content">
+                [Template content will be inserted here]
+            </ui:insert>
+        </div>
+        <div id="footer">
+            <p>(C) 2013-2014 dpunkt.verlag GmbH, MIT license</p>
+        </div>
+    </div>
+</h:body>
+</html>
\ No newline at end of file
diff --git a/bin/src/main/webapp/donateMoney.xhtml b/bin/src/main/webapp/donateMoney.xhtml
new file mode 100644
index 0000000000000000000000000000000000000000..000a55a956c65678382e8183d17ccdd0970e7959
--- /dev/null
+++ b/bin/src/main/webapp/donateMoney.xhtml
@@ -0,0 +1,74 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"
+    xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
+    xmlns:f="http://xmlns.jcp.org/jsf/core"
+    xmlns:p="http://primefaces.org/ui"
+    xmlns:h="http://xmlns.jcp.org/jsf/html">
+<h:head>
+    <title>#{msg['donateMoney.donate_money']}</title>
+    <meta charset="utf-8" />
+    <f:metadata>
+        <f:viewParam id="bgColor" name="bgColor"
+            value="#{donateMoneyController.bgColor}">
+            <f:validateRegex pattern="[A-Fa-f0-9]{6}" />
+        </f:viewParam>
+        <f:viewParam id="textColor" name="textColor"
+            value="#{donateMoneyController.textColor}">
+            <f:validateRegex pattern="[A-Fa-f0-9]{6}" />
+        </f:viewParam>
+        <f:viewParam id="campaignId" name="campaignId"
+            converter="javax.faces.Long"
+            value="#{donateMoneyController.campaignId}">
+        </f:viewParam>
+    </f:metadata>
+</h:head>
+<h:body style="margin:0; font-family: Verdana, sans-serif; font-size: 0.9em;
+        background-color: ##{donateMoneyController.bgColor}; 
+        color: ##{donateMoneyController.textColor}">
+    <h1>#{msg['donateMoney.donate_money']}</h1>
+    <p:messages globalOnly="true" />
+    <p:message for="bgColor" style="color: red;" />
+    <p:message for="textColor" style="color: red;" />
+    <p:message for="campaignId" style="color: red;" />
+    <h:form>
+        <h:panelGrid columns="3">
+            <h:outputLabel value="#{msg['donateMoney.name']}:">
+            </h:outputLabel>
+            <p:inputText id="name"
+                    value="#{donateMoneyController.donation.donorName}">
+                <f:validateRequired />
+            </p:inputText>
+            <p:message for="name" style="color: red;" />
+            <h:outputLabel value="#{msg['donateMoney.iban']}:">
+            </h:outputLabel>
+            <p:inputText id="iban"
+                    value="#{donateMoneyController.donation.account.iban}">
+                <f:validateRequired />
+            </p:inputText>
+            <p:message for="iban" style="color: red;" />
+            <h:outputLabel value="#{msg['donateMoney.name_of_bank']}:">
+            </h:outputLabel>
+            <p:inputText id="name_bank"
+                    value="#{donateMoneyController.donation.account.nameOfBank}">
+                <f:validateRequired />
+            </p:inputText>
+            <p:message for="name_bank" style="color: red;" />
+            <h:outputLabel value="#{msg['donateMoney.donation_amount']}:">
+            </h:outputLabel>
+            <h:panelGroup>
+                <p:inputText id="donationAmount"
+                        value="#{donateMoneyController.donation.amount}">
+                    <f:validateRequired />
+                    <f:convertNumber maxFractionDigits="2" minFractionDigits="2" />
+                </p:inputText> EUR
+            </h:panelGroup>
+            <p:message for="donationAmount" style="color: red;" />
+        </h:panelGrid>
+        <p:selectBooleanCheckbox
+                value="#{donateMoneyController.donation.receiptRequested}" /> 
+            #{msg['donateMoney.i_want_a_receipt']}<br />
+        <p:commandButton value="#{msg['donateMoney.donate']}" ajax="false"
+                action="#{donateMoneyController.doDonation}" />
+    </h:form>
+</h:body>
+</html>
\ No newline at end of file
diff --git a/bin/src/main/webapp/editCampaign.xhtml b/bin/src/main/webapp/editCampaign.xhtml
new file mode 100644
index 0000000000000000000000000000000000000000..456c7edb72920f484433ce1ff3b62309b8619664
--- /dev/null
+++ b/bin/src/main/webapp/editCampaign.xhtml
@@ -0,0 +1,99 @@
+<html xmlns="http://www.w3.org/1999/xhtml"
+    xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
+    xmlns:f="http://xmlns.jcp.org/jsf/core" 
+    xmlns:p="http://primefaces.org/ui"
+    xmlns:h="http://xmlns.jcp.org/jsf/html">
+<body>
+    <f:view contracts="#{view.locale.language}">
+        <ui:composition template="/template.xhtml">
+            <ui:define name="content">
+                <h1>#{campaignProducer.addMode ?
+                    msg['editCampaign.add_new_campaign'] :
+                    msg['editCampaign.edit_campaign']}</h1>
+                <h:form>
+                    <p:messages closable="true" />
+                    <p:tabView id="tabView">
+                        <p:tab title="#{msg['editCampaign.general']}">
+                            <h:panelGrid columns="3">
+                                <h:outputLabel
+                                    value="#{msg['editCampaign.name']}:">
+                                </h:outputLabel>
+                                <p:inputText id="a_name"
+                                    value="#{campaignProducer.selectedCampaign.name}"
+                                    validatorMessage="#{msg['editCampaign.campaign_name_validation']}">
+                                    <f:passThroughAttribute name="placeholder"
+                                        value="#{msg['editCampaign.name_of_the_campaign']}" />
+                                    <f:validateRequired />
+                                    <f:validateLength minimum="4" maximum="30" />
+                                </p:inputText>
+                                <p:message for="a_name" />
+                                <h:outputLabel
+                                    value="#{msg['editCampaign.target_amount']}:">
+                                </h:outputLabel>
+                                <h:panelGroup>
+                                    <p:inputText id="a_targetAmount"
+                                        value="#{campaignProducer.selectedCampaign.targetAmount}"
+                                        validatorMessage="#{msg['editCampaign.target_amount_validation']}">
+                                        <f:convertNumber maxFractionDigits="2"
+                                            minFractionDigits="2" />
+                                        <f:validateRequired />
+                                        <f:validateDoubleRange minimum="10.0" />
+                                    </p:inputText> EUR
+                                </h:panelGroup>
+                                <p:message for="a_targetAmount" />
+                                <h:outputLabel
+                                    value="#{msg['editCampaign.donation_amount']}:">
+                                </h:outputLabel>
+                                <h:panelGroup>
+                                    <p:inputText id="a_donationMinimum"
+                                        value="#{campaignProducer.selectedCampaign.donationMinimum}"
+                                        validatorMessage="#{msg['editCampaign.donation_amount_validation']}">
+                                        <f:convertNumber maxFractionDigits="2"
+                                            minFractionDigits="2" />
+                                        <f:validateRequired />
+                                        <f:validateDoubleRange minimum="1.0" />
+                                    </p:inputText> EUR
+                                </h:panelGroup>
+                                <p:message for="a_donationMinimum" />
+                            </h:panelGrid>
+                        </p:tab>
+                        <p:tab title="#{msg['editCampaign.bank_account']}">
+                            <h:panelGrid columns="3">
+                                <h:outputLabel
+                                    value="#{msg['editCampaign.name']}:">
+                                </h:outputLabel>
+                                <p:inputText id="b_name"
+                                    value="#{campaignProducer.selectedCampaign.account.name}">
+                                    <f:validateRequired />
+                                </p:inputText>
+                                <p:message for="b_name" />
+                                <h:outputLabel
+                                    value="#{msg['editCampaign.iban']}:">
+                                </h:outputLabel>
+                                <p:inputText id="b_iban"
+                                    value="#{campaignProducer.selectedCampaign.account.iban}">
+                                    <f:validateRequired />
+                                </p:inputText>
+                                <p:message for="b_iban" />
+                                <h:outputLabel
+                                    value="#{msg['editCampaign.name_of_bank']}:">
+                                </h:outputLabel>
+                                <p:inputText id="b_name_bank"
+                                    value="#{campaignProducer.selectedCampaign.account.nameOfBank}">
+                                    <f:validateRequired />
+                                </p:inputText>
+                                <p:message for="b_name_bank" />
+                            </h:panelGrid>
+                        </p:tab>
+                    </p:tabView>
+                    <p:commandButton value="#{msg['editCampaign.save']}"
+                        ajax="false" action="#{editCampaignController.doSave}" />
+                    <p:commandButton value="#{msg['editCampaign.cancel']}"
+                        immediate="true" ajax="false"
+                        action="#{editCampaignController.doCancel}" />
+                </h:form>
+            </ui:define>
+        </ui:composition>
+    </f:view>
+</body>
+</html>
\ No newline at end of file
diff --git a/bin/src/main/webapp/editDonationForm.xhtml b/bin/src/main/webapp/editDonationForm.xhtml
new file mode 100644
index 0000000000000000000000000000000000000000..78107ac48573b1f613b85243eda4fd3756d0584a
--- /dev/null
+++ b/bin/src/main/webapp/editDonationForm.xhtml
@@ -0,0 +1,41 @@
+<html xmlns="http://www.w3.org/1999/xhtml"
+    xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
+    xmlns:f="http://xmlns.jcp.org/jsf/core" xmlns:p="http://primefaces.org/ui"
+    xmlns:h="http://xmlns.jcp.org/jsf/html">
+<body>
+    <f:view contracts="#{view.locale.language}">
+        <ui:composition template="/template.xhtml">
+            <ui:define name="content">
+                <h1>#{msg['editDonationForm.edit_donation_form']}</h1>
+                <h:form>
+                    <h:panelGrid columns="2">
+                        <h:outputLabel
+                            value="#{msg['editDonationForm.background_color']}:">
+                        </h:outputLabel>
+                        <p:colorPicker id="bgColor"
+                            value="#{editDonationFormController.bgColor}"
+                            widgetVar="bgPicker">
+                        </p:colorPicker>
+                        <h:outputLabel
+                            value="#{msg['editDonationForm.text_color']}:">
+                        </h:outputLabel>
+                        <p:colorPicker id="textColor"
+                            value="#{editDonationFormController.textColor}"
+                            widgetVar="textPicker">
+                        </p:colorPicker>
+                        <h:outputLabel
+                            value="#{msg['editDonationForm.form_url']}:">
+                        </h:outputLabel>
+                        <p:inputTextarea id="url" rows="6" cols="30"
+                            readonly="true"
+                            value="#{editDonationFormController.url}" />
+                    </h:panelGrid>
+                    <p:commandButton value="#{msg['editDonationForm.update_url']}" update="url" />
+                    <p:commandButton value="OK"
+                        action="#{editDonationFormController.doOk}" ajax="false" />
+                </h:form>
+            </ui:define>
+        </ui:composition>
+    </f:view>
+</body>
+</html>
\ No newline at end of file
diff --git a/bin/src/main/webapp/index.html b/bin/src/main/webapp/index.html
new file mode 100644
index 0000000000000000000000000000000000000000..7949e11f636d8973651adaa9597085e3236e53af
--- /dev/null
+++ b/bin/src/main/webapp/index.html
@@ -0,0 +1,5 @@
+<html>
+<head>
+    <meta http-equiv="Refresh" content="0; URL=listCampaigns.jsf">
+</head>
+</html>
\ No newline at end of file
diff --git a/bin/src/main/webapp/index.xhtml b/bin/src/main/webapp/index.xhtml
new file mode 100644
index 0000000000000000000000000000000000000000..79287a7ebc57a54cc3e2b4366027e227903a4a55
--- /dev/null
+++ b/bin/src/main/webapp/index.xhtml
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"
+    xmlns:f="http://xmlns.jcp.org/jsf/core"
+    xmlns:ui="http://xmlns.jcp.org/jsf/facelets">
+<body>
+    <f:view contract="#{view.locale.language}">
+        <ui:composition template="/template.xhtml">
+            <ui:define name="content">            
+                <h1>#{msg['welcome.text']}</h1>
+            </ui:define>
+        </ui:composition>
+    </f:view>
+</body>
+</html>
\ No newline at end of file
diff --git a/bin/src/main/webapp/listCampaigns.xhtml b/bin/src/main/webapp/listCampaigns.xhtml
new file mode 100644
index 0000000000000000000000000000000000000000..f1b4fccdea0ea781a15c81b660767ef452e7c348
--- /dev/null
+++ b/bin/src/main/webapp/listCampaigns.xhtml
@@ -0,0 +1,79 @@
+<html xmlns="http://www.w3.org/1999/xhtml"
+    xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
+    xmlns:f="http://xmlns.jcp.org/jsf/core"
+    xmlns:p="http://primefaces.org/ui"
+    xmlns:h="http://xmlns.jcp.org/jsf/html">
+<body>
+    <f:view contracts="#{view.locale.language}">
+        <ui:composition template="/template.xhtml">
+            <ui:define name="content">           
+                <h1>#{msg['listCampaigns.my_campaigns']}</h1>
+                <h:form>
+                    <p:dataTable value="#{campaignListProducer.campaigns}"
+                            var="campaign">
+                        <p:column>
+                            <p:commandButton onclick="PF('confirmation').show()"
+                                    actionListener="#{listCampaignsController.doDeleteCampaign(campaign)}"
+                                    icon="ui-icon-close" />
+                        </p:column>
+                        <p:column>
+                            <f:facet name="header">
+                                #{msg['listCampaigns.name']}
+                            </f:facet>
+                            <h:outputText value="#{campaign.name}" />
+                        </p:column>
+                        <p:column>
+                            <f:facet name="header">
+                                #{msg['listCampaigns.target_amount']}
+                            </f:facet>
+                            <h:outputText value="#{campaign.targetAmount}">
+                                <f:convertNumber type="currency"
+                                        currencyCode="EUR" />
+                            </h:outputText>
+                        </p:column>
+                        <p:column>
+                            <f:facet name="header">
+                                #{msg['listCampaigns.donated_so_far']}
+                            </f:facet>
+                            <h:outputText value="#{campaign.amountDonatedSoFar}">
+                                <f:convertNumber type="currency"
+                                        currencyCode="EUR" />
+                            </h:outputText>
+                        </p:column>
+                        <p:column>
+                            <p:commandLink value="#{msg['listCampaigns.edit']}"
+                                    ajax="false"
+                                    action="#{listCampaignsController.doEditCampaign(campaign)}" />
+                        </p:column>
+                        <p:column>
+                            <p:commandLink
+                                    value="#{msg['listCampaigns.list_donations']}"
+                                    ajax="false"
+                                    action="#{listCampaignsController.doListDonations(campaign)}" />
+                        </p:column>
+                        <p:column>
+                            <p:commandLink value="#{msg['listCampaigns.form']}"
+                                    ajax="false"
+                                    action="#{listCampaignsController.doEditDonationForm(campaign)}" />
+                        </p:column>
+                    </p:dataTable>
+                    <p:commandButton
+                            value="#{msg['listCampaigns.add_campaign']}"
+                            ajax="false"
+                            action="#{listCampaignsController.doAddCampaign}" />
+                    <p:confirmDialog
+                            message="#{msg['listCampaigns.ask_delete_campaign']}"
+                            header="#{msg['listCampaigns.delete_campaign']}"
+                            severity="alert" widgetVar="confirmation">
+                        <p:commandButton value="#{msg['listCampaigns.yes']}"
+                                oncomplete="confirmation.hide()" ajax="false"
+                                actionListener="#{listCampaignsController.commitDeleteCampaign}" />
+                        <p:commandButton value="#{msg['listCampaigns.no']}"
+                                onclick="confirmation.hide()" />
+                    </p:confirmDialog>
+                </h:form>
+            </ui:define>
+        </ui:composition>
+    </f:view>
+</body>
+</html>
\ No newline at end of file
diff --git a/bin/src/main/webapp/listDonations.xhtml b/bin/src/main/webapp/listDonations.xhtml
new file mode 100644
index 0000000000000000000000000000000000000000..768c1d438275e387dcf400a80b30dd5cfa94c0c4
--- /dev/null
+++ b/bin/src/main/webapp/listDonations.xhtml
@@ -0,0 +1,76 @@
+<html xmlns="http://www.w3.org/1999/xhtml"
+    xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
+    xmlns:f="http://xmlns.jcp.org/jsf/core"
+    xmlns:p="http://primefaces.org/ui"
+    xmlns:h="http://xmlns.jcp.org/jsf/html">
+<body>
+    <f:view contracts="#{view.locale.language}">
+        <ui:composition template="/template.xhtml">
+            <ui:define name="content">
+                <h1>#{msg['listDonations.donation_list']}
+                    '#{campaignProducer.selectedCampaign.name}'</h1>
+                <h2>#{msg['listDonations.beneficiary_account']}:
+                    #{campaignProducer.selectedCampaign.account.name},
+                    #{msg['listDonations.iban']}:
+                    #{campaignProducer.selectedCampaign.account.iban},
+                    #{campaignProducer .selectedCampaign.account.nameOfBank}</h2>
+                <h:form>
+                    <p:dataTable value="#{campaignProducer.selectedCampaign.donations}"
+                            var="donation">
+                        <p:column>
+                            <f:facet name="header">
+                                #{msg['listDonations.name']}
+                            </f:facet>
+                            <h:outputText value="#{donation.donorName}" />
+                        </p:column>
+                        <p:column>
+                            <f:facet name="header">
+                                #{msg['listDonations.iban']}
+                            </f:facet>
+                            <h:outputText value="#{donation.account.iban}" />
+                        </p:column>
+                        <p:column>
+                            <f:facet name="header">
+                                #{msg['listDonations.name_of_bank']}
+                            </f:facet>
+                            <h:outputText value="#{donation.account.nameOfBank}" />
+                        </p:column>
+                        <p:column>
+                            <f:facet name="header">
+                                #{msg['listDonations.donation_amount']}
+                            </f:facet>
+                            <h:outputText value="#{donation.amount}">
+                                <f:convertNumber type="currency"
+                                    currencyCode="EUR" />
+                            </h:outputText>
+                        </p:column>
+                        <p:column>
+                            <f:facet name="header">
+                                #{msg['listDonations.receipt']}
+                            </f:facet>
+                            <h:outputText
+                                value="#{donation.receiptRequested ? 
+                                    msg['listDonations.yes'] 
+                                    : msg['listDonations.no']}" />
+                        </p:column>
+                        <p:column>
+                            <f:facet name="header">
+                                #{msg['listDonations.status']}
+                            </f:facet>
+                            <h:outputText
+                                value="#{msg['listDonations.status.TRANSFERRED']}"
+                                rendered="#{donation.status == 'TRANSFERRED'}" />
+                            <h:outputText
+                                value="#{msg['listDonations.status.IN_PROCESS']}"
+                                rendered="#{donation.status == 'IN_PROCESS'}" />
+                        </p:column>
+                    </p:dataTable>
+                    <p:commandButton value="OK"
+                            ajax="false"
+                            action="#{listDonationsController.doOk}" />
+                </h:form>
+            </ui:define>
+        </ui:composition>
+    </f:view>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/main/java/de/dpunkt/myaktion/model/Donation.java b/src/main/java/de/dpunkt/myaktion/model/Donation.java
index c72e126e6b776fa7569ff2ae9ccd46d746ce8522..b7b2a5da2c3fb314dd711dfb3f8bd9fd40d7d4fc 100644
--- a/src/main/java/de/dpunkt/myaktion/model/Donation.java
+++ b/src/main/java/de/dpunkt/myaktion/model/Donation.java
@@ -12,6 +12,8 @@ import javax.persistence.Entity;
 import javax.persistence.GeneratedValue;
 import javax.persistence.Id;
 import javax.persistence.ManyToOne;
+import javax.persistence.NamedQueries;
+import javax.persistence.NamedQuery;
 import javax.validation.constraints.DecimalMin;
 import javax.validation.constraints.NotNull;
 import javax.validation.constraints.Size;
@@ -20,9 +22,15 @@ import javax.validation.constraints.Size;
  * @author Julian
  */
 @Entity
+@NamedQueries({ @NamedQuery(name = Donation.findByStatus,
+        query = "SELECT d FROM Donation d WHERE d.status = :status") })
 public class Donation {
     //----------------------------------------------------------------------------------------------
 
+    public static final String findByStatus = "Donation.findByStatus";
+    
+    //==============================================================================================
+    
     @GeneratedValue
     @Id
     private Long id;
@@ -30,21 +38,21 @@ public class Donation {
     @NotNull(message = "{donation.amount.notNull}")
     @DecimalMin(value = "1.00", message = "{donation.amount.decimalMin}")
     private BigDecimal amount;
-  
+
     @NotNull
     @Size(min = 5, max = 40, message = "{donation.donorName.size}")
     private String donorName;
 
     @NotNull
     private Boolean receiptRequested;
-    
+
     @NotNull
     private Status status;
-    
+
     @NotNull
     @Embedded
     private Account account;
-    
+
     @NotNull
     @ManyToOne
     private Campaign campaign;
diff --git a/src/main/java/de/dpunkt/myaktion/scheduler/SchedulerBean.java b/src/main/java/de/dpunkt/myaktion/scheduler/SchedulerBean.java
new file mode 100644
index 0000000000000000000000000000000000000000..85d55717c867511aeab7125010d40378cb5f768e
--- /dev/null
+++ b/src/main/java/de/dpunkt/myaktion/scheduler/SchedulerBean.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright 2019 (C) by Julian Horner.
+ * All Rights Reserved.
+ */
+
+package de.dpunkt.myaktion.scheduler;
+
+import javax.ejb.Schedule;
+import javax.ejb.Singleton;
+import javax.inject.Inject;
+
+import de.dpunkt.myaktion.services.DonationService;
+
+/**
+ * @author Julian
+ */
+@Singleton
+public class SchedulerBean {
+    @Inject
+    private DonationService donationService;
+
+    @Schedule(hour = "*", minute = "*/5", persistent = false)
+    public void doTransferDonations() {
+        donationService.transferDonations();
+    }
+}
\ No newline at end of file
diff --git a/src/main/java/de/dpunkt/myaktion/services/CampaignServiceBean.java b/src/main/java/de/dpunkt/myaktion/services/CampaignServiceBean.java
index 67d778282c88dd4af8f1568f1eea09306a1e100f..06ffe969258b81eee77cc7f6b6d03bf412237765 100644
--- a/src/main/java/de/dpunkt/myaktion/services/CampaignServiceBean.java
+++ b/src/main/java/de/dpunkt/myaktion/services/CampaignServiceBean.java
@@ -13,27 +13,22 @@ import java.util.logging.Logger;
 import javax.annotation.Resource;
 import javax.annotation.security.RolesAllowed;
 import javax.ejb.SessionContext;
-import javax.ejb.TransactionManagement;
-import javax.ejb.TransactionManagementType;
+import javax.ejb.Stateless;
 import javax.inject.Inject;
-import javax.interceptor.Interceptors;
 import javax.persistence.EntityManager;
 import javax.persistence.TypedQuery;
-import javax.transaction.UserTransaction;
 
 import de.dpunkt.myaktion.model.Campaign;
 import de.dpunkt.myaktion.model.Organizer;
 import de.dpunkt.myaktion.util.Log.TecLog;
-import de.dpunkt.myaktion.util.TransactionInterceptor;
 
 /**
  * @author Julian
  */
 @RolesAllowed("Organizer")
-@TransactionManagement(TransactionManagementType.BEAN)
-@Interceptors(TransactionInterceptor.class)
+@Stateless
 public class CampaignServiceBean implements CampaignService {
-    //----------------------------------------------------------------------------------------------
+    // ----------------------------------------------------------------------------------------------
 
     @Inject
     @TecLog
@@ -45,7 +40,7 @@ public class CampaignServiceBean implements CampaignService {
     @Resource
     private SessionContext sessionContext;
 
-    //----------------------------------------------------------------------------------------------
+    // ----------------------------------------------------------------------------------------------
 
     @Override
     public List<Campaign> getAllCampaigns() {
@@ -62,24 +57,22 @@ public class CampaignServiceBean implements CampaignService {
         return campaigns;
     }
 
-    //----------------------------------------------------------------------------------------------
+    // ----------------------------------------------------------------------------------------------
 
     @Override
     public void addCampaign(Campaign campaign) {
         Organizer organizer = getLoggedinOrganizer();
         campaign.setOrganizer(organizer);
-
         entityManager.persist(campaign);
     }
-
-    //----------------------------------------------------------------------------------------------
+    // ----------------------------------------------------------------------------------------------
 
     @Override
     public void updateCampaign(Campaign campaign) {
         entityManager.merge(campaign);
     }
 
-    //----------------------------------------------------------------------------------------------
+    // ----------------------------------------------------------------------------------------------
 
     @Override
     public void deleteCampaign(Campaign campaign) {
@@ -87,7 +80,7 @@ public class CampaignServiceBean implements CampaignService {
         entityManager.remove(managedCampaign);
     }
 
-    //----------------------------------------------------------------------------------------------
+    // ----------------------------------------------------------------------------------------------
 
     private BigDecimal getAmountDonatedSoFar(Campaign campaign) {
         TypedQuery<BigDecimal> query =
@@ -101,7 +94,7 @@ public class CampaignServiceBean implements CampaignService {
         return result;
     }
 
-    //----------------------------------------------------------------------------------------------
+    // ----------------------------------------------------------------------------------------------
 
     private Organizer getLoggedinOrganizer() {
         String organizerEmail = sessionContext.getCallerPrincipal().getName();
@@ -110,5 +103,5 @@ public class CampaignServiceBean implements CampaignService {
         return organizer;
     }
 
-    //----------------------------------------------------------------------------------------------
+    // ----------------------------------------------------------------------------------------------
 }
\ No newline at end of file
diff --git a/src/main/java/de/dpunkt/myaktion/services/DonationService.java b/src/main/java/de/dpunkt/myaktion/services/DonationService.java
index bf72371fcf1630896bf0ee8574c243d9fa58532c..9815011543c29bf2e0424ac878b28f6847b62549 100644
--- a/src/main/java/de/dpunkt/myaktion/services/DonationService.java
+++ b/src/main/java/de/dpunkt/myaktion/services/DonationService.java
@@ -19,5 +19,7 @@ public interface DonationService {
 
     void addDonation(Long campaignId, Donation donation);
 
+    void transferDonations();
+    
     //----------------------------------------------------------------------------------------------
 }
\ No newline at end of file
diff --git a/src/main/java/de/dpunkt/myaktion/services/DonationServiceBean.java b/src/main/java/de/dpunkt/myaktion/services/DonationServiceBean.java
index a884bcc66023049f718f07249a8aea7f2f4f7545..836c64b0ac28cca2f9c51d27c6c8ee5cded06f17 100644
--- a/src/main/java/de/dpunkt/myaktion/services/DonationServiceBean.java
+++ b/src/main/java/de/dpunkt/myaktion/services/DonationServiceBean.java
@@ -6,15 +6,20 @@
 package de.dpunkt.myaktion.services;
 
 import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
 
 import javax.annotation.security.PermitAll;
 import javax.annotation.security.RolesAllowed;
 import javax.ejb.Stateless;
 import javax.inject.Inject;
 import javax.persistence.EntityManager;
+import javax.persistence.TypedQuery;
 
 import de.dpunkt.myaktion.model.Campaign;
 import de.dpunkt.myaktion.model.Donation;
+import de.dpunkt.myaktion.model.Donation.Status;
+import de.dpunkt.myaktion.util.Log.TecLog;
 
 /**
  * @author Julian
@@ -26,6 +31,10 @@ public class DonationServiceBean implements DonationService {
     @Inject
     EntityManager entityManager;
 
+    @Inject
+    @TecLog
+    private Logger logger;
+
     //----------------------------------------------------------------------------------------------
 
     @RolesAllowed("Organizer")
@@ -33,7 +42,7 @@ public class DonationServiceBean implements DonationService {
     public List<Donation> getDonationList(Long campaignId) {
         Campaign managedCampaign = entityManager.find(Campaign.class, campaignId);
         List<Donation> donations = managedCampaign.getDonations();
-        
+
         donations.size(); // To avoid Lazy loading exception
 
         return donations;
@@ -44,9 +53,24 @@ public class DonationServiceBean implements DonationService {
     public void addDonation(Long campaignId, Donation donation) {
         Campaign managedCampaign = entityManager.find(Campaign.class, campaignId);
         donation.setCampaign(managedCampaign);
-        
+
         entityManager.persist(donation);
     }
-    
+
+    @Override
+    @PermitAll
+    public void transferDonations() {
+        logger.log(Level.INFO, "log.transferDonation.start");
+        
+        TypedQuery<Donation> query =
+                entityManager.createNamedQuery(Donation.findByStatus, Donation.class);
+        query.setParameter("status", Status.IN_PROCESS);
+        
+        List<Donation> donations = query.getResultList();
+        donations.forEach(donation -> donation.setStatus(Status.TRANSFERRED));
+        
+        logger.log(Level.INFO, "log.transferDonation.done", new Object[] { donations.size() });
+    }
+
     //----------------------------------------------------------------------------------------------
 }
diff --git a/src/main/resources/messages_de.properties b/src/main/resources/messages_de.properties
index f120b422261903551a5b097f82b2a441c458f7c6..1059e8d85b74e9ed7f11baa8ba041ae483c80b4f 100644
--- a/src/main/resources/messages_de.properties
+++ b/src/main/resources/messages_de.properties
@@ -63,9 +63,12 @@ donateMoney.thank_you=Vielen Dank f
 
 # logger
 log.donateMoney.thank_you={0} hat {1} Euro gespendet.
+log.transferDonation.start=Zu bearbeitende Spenden werden überwiesen.
+log.transferDonation.done=Es wurden {0} Spenden überwiesen.
 
 # login.xhtml
 login.email=E-Mail
 login.password=Passwort
 login.login=Anmelden
-login.errorMsg=Passwort oder User sind falsch
\ No newline at end of file
+login.errorMsg=Passwort oder User sind falsch
+
diff --git a/src/main/resources/messages_en.properties b/src/main/resources/messages_en.properties
index c9a4483c94d77e2452c7682fd65287549615a7cb..7ab66a6ba41d41e7916f892b0d2731a741309a2f 100644
--- a/src/main/resources/messages_en.properties
+++ b/src/main/resources/messages_en.properties
@@ -63,6 +63,8 @@ donateMoney.thank_you=Thank you for your donation!
 
 # logger
 log.donateMoney.thank_you={0} has donated {1} Euro.
+log.transferDonation.start=Starting transfering donations.
+log.transferDonation.done={0} donations have been transfered.
 
 # login.xhtml
 login.email=Email
diff --git a/src/main/webapp/WEB-INF/jboss-ejb3.xml b/src/main/webapp/WEB-INF/jboss-ejb3.xml
index 3abda74651b0f82c9e754665d9a68cd13bc14273..c4f882b7d3b3e354029360648118faed70135b4d 100644
--- a/src/main/webapp/WEB-INF/jboss-ejb3.xml
+++ b/src/main/webapp/WEB-INF/jboss-ejb3.xml
@@ -5,9 +5,9 @@
 	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 	xmlns:s="urn:security"
 	xsi:schemaLocation="http://www.jboss.com/xml/ns/javaee 
-http://www.jboss.org/j2ee/schema/jboss-ejb3-2_0.xsd 
-http://java.sun.com/xml/ns/javaee 
-http://java.sun.com/xml/ns/javaee/ejb-jar_3_1.xsd"
+			http://www.jboss.org/j2ee/schema/jboss-ejb3-2_0.xsd 
+			http://java.sun.com/xml/ns/javaee 
+			http://java.sun.com/xml/ns/javaee/ejb-jar_3_1.xsd"
 	version="3.1" impl-version="2.0">
 	<assembly-descriptor>
 		<s:security>