diff --git a/app/vkk/templates/vkk/workhours/accounting/department/evaluation.csv b/app/vkk/templates/vkk/workhours/accounting/department/evaluation.csv
index a968ac787b314d1cdf85996b42959b2b7b34cafb..b1fe04969f25d6478f541c290dbff474b9044315 100644
--- a/app/vkk/templates/vkk/workhours/accounting/department/evaluation.csv
+++ b/app/vkk/templates/vkk/workhours/accounting/department/evaluation.csv
@@ -1,3 +1,3 @@
 Projekt; abgeführte PGK; abgeführte SGK; Summe PGK+SGK; abgeführte VGK; Summe
-{% for project in projects %}{% for column in project %}{{ column }};{% endfor %}
+{% for project in projects %}{% for column in project %}{{ column|floatformat:2 }};{% endfor %}
 {% endfor %}
\ No newline at end of file
diff --git a/app/vkk/workhours/accounting/departments/views.py b/app/vkk/workhours/accounting/departments/views.py
index f2625cc90ffdf753bae5de5a513dd43200169077..638fc4a92fa0bd604dc8a9c2893d8b8d925f5944 100644
--- a/app/vkk/workhours/accounting/departments/views.py
+++ b/app/vkk/workhours/accounting/departments/views.py
@@ -23,11 +23,27 @@ class EvaluationView(AccountantRequiredMixin, FormView):
         Returns the result of an SQL query calculating the evaluation.
         """
         with connection.cursor() as cursor:
-            cursor.execute("WITH assignments AS ( \
-                    SELECT  \periodsdepartment_id = %s \
+            cursor.execute("WITH projects AS ( \
+                    SELECT \
+                        vkk_project.id, \
+                        vkk_project.start, \
+                        vkk_project.end, \
+                        vkk_project.invoice_number \
+                    FROM vkk_project \
+                    WHERE vkk_project.department_id = %s \
+                ), \
+                assignments AS ( \
+                    SELECT \
+                        projects.id AS project_id, \
+                        projects.start AS project_start, \
+                        projects.end AS project_end, \
+                        vkk_projectassignment.id AS assignment_id, \
+                        salary_level_id \
+                    FROM projects JOIN vkk_projectassignment \
+                        ON projects.id = vkk_projectassignment.project_id \
                 ), \
                 workhours AS ( \
-                    SELECT  \
+                    SELECT \
                         project_id, \
                         project_start, \
                         project_end, \
@@ -38,7 +54,7 @@ class EvaluationView(AccountantRequiredMixin, FormView):
                     FROM assignments JOIN vkk_workhours \
                         ON assignments.assignment_id = vkk_workhours.project_assignment_id \
                     UNION \
-                    SELECT  \
+                    SELECT \
                         project_id, \
                         project_start, \
                         project_end, \
@@ -50,7 +66,7 @@ class EvaluationView(AccountantRequiredMixin, FormView):
                         ON assignments.assignment_id = vkk_workhourscorrection.project_assignment_id \
                 ), \
                 periods AS ( \
-                    SELECT  \
+                    SELECT \
                         vkk_period.id, \
                         vkk_period.start, \
                         vkk_period.end \
@@ -71,11 +87,11 @@ class EvaluationView(AccountantRequiredMixin, FormView):
                     FROM workhours JOIN periods \
                     ON workhours.period_id = periods.id \
                     WHERE  \
-                        periods.end >= workhours.project_start \
+                        periods.end > workhours.project_start \
                         AND periods.start <= workhours.project_end \
                 ), \
                 workhours_summed AS ( \
-                    SELECT  \
+                    SELECT \
                         project_id, \
                         salary_level_id, \
                         period_id, \
@@ -172,13 +188,15 @@ class EvaluationView(AccountantRequiredMixin, FormView):
                     ON project_funded_staff_date.id = vkk_projectfundedstaff.start_id \
                 ), \
                 workhours_together AS ( \
-                    SELECT  \
+                    SELECT \
                         project_id, \
                         salary_level_id, \
                         period_id, \
                         hours \
                     FROM workhours_summed \
+                \
                     UNION \
+                \
                     SELECT \
                         project_id, \
                         period_id, \
@@ -186,30 +204,21 @@ class EvaluationView(AccountantRequiredMixin, FormView):
                         hours \
                     FROM project_funded_staff \
                 ), \
-                workhours_together_summed_salary AS ( \
-                    SELECT \
-                        project_id, \
-                        salary_level_id, \
-                        period_id, \
-                        SUM(hours) AS hours \
-                    FROM workhours_together \
-                    GROUP BY project_id, salary_level_id, period_id \
-                ), \
                 salary_costs_by_project AS ( \
                     SELECT \
-                        workhours_together_summed_salary.project_id, \
-                        SUM(workhours_together_summed_salary.hours * salary_level_costs.brutto_per_hour) AS salary_costs \
-                    FROM workhours_together_summed_salary, salary_level_costs \
-                    WHERE workhours_together_summed_salary.salary_level_id = salary_level_costs.salary_level_id \
-                    AND workhours_together_summed_salary.period_id = salary_level_costs.period_id \
-                    GROUP BY workhours_together_summed_salary.project_id \
+                        workhours_summed.project_id, \
+                        SUM(workhours_summed.hours * salary_level_costs.brutto_per_hour) AS salary_costs \
+                    FROM workhours_summed, salary_level_costs \
+                    WHERE workhours_summed.salary_level_id = salary_level_costs.salary_level_id \
+                    AND workhours_summed.period_id = salary_level_costs.period_id \
+                    GROUP BY workhours_summed.project_id \
                 ), \
                 workhours_together_summed AS ( \
                     SELECT \
                         project_id, \
                         period_id, \
                         SUM(hours) AS hours \
-                    FROM workhours_together_summed_salary \
+                    FROM workhours_together \
                     GROUP BY project_id, period_id \
                 ), \
                 general_costs_by_project AS ( \
@@ -229,22 +238,22 @@ class EvaluationView(AccountantRequiredMixin, FormView):
                     GROUP BY project_id \
                 ) \
                 SELECT \
-                    vkk_project.invoice_number AS projekt, \
+                    projects.invoice_number AS projekt, \
                     salary_costs_by_project.salary_costs AS pgk, \
-                    general_costs_by_project.general_costs AS sgk, \
-                    salary_costs_by_project.salary_costs + general_costs_by_project.general_costs AS sum_pgk_sgk, \
-                    department_costs_by_project.department_costs AS vgk, \
+                    department_costs_by_project.department_costs AS sgk, \
+                    salary_costs_by_project.salary_costs + department_costs_by_project.department_costs AS sum_pgk_sgk, \
+                    general_costs_by_project.general_costs AS vgk, \
                     salary_costs_by_project.salary_costs + general_costs_by_project.general_costs + department_costs_by_project.department_costs AS sum_all \
                 FROM  \
-                    vkk_project,  \
+                    projects,  \
                     salary_costs_by_project, \
                     general_costs_by_project, \
                     department_costs_by_project \
                 WHERE  \
-                    vkk_project.id = salary_costs_by_project.project_id \
+                    projects.id = salary_costs_by_project.project_id \
                     AND salary_costs_by_project.project_id = general_costs_by_project.project_id \
                     AND general_costs_by_project.project_id = department_costs_by_project.project_id \
-                ORDER BY vkk_project.invoice_number;", 
+                ORDER BY projects.invoice_number;", 
                 [self.kwargs['pk'], periods, self.kwargs['pk']],
             )
             queryset = cursor.fetchall()
@@ -258,10 +267,13 @@ class EvaluationView(AccountantRequiredMixin, FormView):
         periods = tuple(n[0] for n in form.cleaned_data['periods'].values_list('id'))
         context = self.get_context_data()
         context["projects"] = self.get_queryset(periods)
+        print(context["projects"][0])
+        periods_string = "".join(str(p) for p in periods)
+        department_string = self.kwargs['pk']
         response = HttpResponse(
             content_type='text/csv',
             headers={
-                'Content-Disposition': 'attachment; filename="12345.csv"'},
+                'Content-Disposition': f'attachment; filename="{department_string}-{periods_string}.csv"'},
         )
         response.write(
             loader
diff --git a/docs/installation.md b/docs/installation.md
new file mode 100644
index 0000000000000000000000000000000000000000..09dbc63f0da2a922735191d33fa2a53ef38a6ede
--- /dev/null
+++ b/docs/installation.md
@@ -0,0 +1,133 @@
+# Installation
+
+Diese Installationsanleitung berücksichtigt zwei zwei Varianten: 
+- Eine für die lokale Entwicklung (Manchmal auch kurz als "Dev" bezeichnet.)
+- Eine für den Bertieb (Manchmal auch kurz als "Prod" bezeichnet.)
+
+## Vorbereitung
+
+Als Basis wird eine Installation von Ubuntu Linux 22.10 oder neuer vorrausgesetzt. Darüberhinaus werden `docker`, `docker-compose` und `git` benötigt:
+```
+sudo apt install docker docker-compose git
+sudo systemctl enable docker
+sudo systemctl start docker
+```
+
+Im nächsten Schritt wird die Git-Ablage des Projects kopiert:
+```
+git clone https://gitlab.informatik.uni-halle.de/acqgu/projektmedizin.git
+cd projektmedizin/
+```
+
+Für die Entwicklung und Betrieb werden eine Reihe von Dateien mit Umgebungsvariablen benötigt. Diese müssen als nächstes erstellt werden. (Felder mit `****` müssen entsprechend ausgefüllt werden.)
+
+`.env.dev` :
+```
+DEBUG=1
+SECRET_KEY='****'
+DJANGO_ALLOWED_HOSTS=localhost 127.0.0.1 [::1]
+SQL_ENGINE=django.db.backends.postgresql
+SQL_DATABASE=****
+SQL_USER=****
+SQL_PASSWORD=****
+SQL_HOST=db
+SQL_PORT=5432
+DATABASE=postgres
+```
+
+`.env.prod` :
+```
+DEBUG=0
+SECRET_KEY=****
+DJANGO_ALLOWED_HOSTS=vkk.medizin.uni-halle.de
+SQL_ENGINE=django.db.backends.postgresql
+SQL_HOST=db
+SQL_PORT=5432
+DATABASE=postgres
+```
+
+`.env.prod.db` :
+```
+POSTGRES_USER=****
+POSTGRES_PASSWORD=****
+POSTGRES_DB=vkk_medizin
+```
+
+`.env.prod.dbuser` :
+```
+SQL_DATABASE=vkk_medizin
+SQL_USER=****
+SQL_PASSWORD=****
+```
+
+`.env.prod.mail` :
+```
+EMAIL_HOST=****
+EMAIL_PORT=****
+DEFAULT_FROM_EMAIL=****
+EMAIL_HOST_USER=****
+EMAIL_HOST_PASSWORD=****
+```
+
+Als Sicherheitsmaßnahme verläuft jede Kommunikation zwischen Container über TLS. Hierfür werden eine Reihe von selbstsignierten Zertifikate generiert. (Diese haben eine gültigkeit von 10 Jahre.) Die Passphrase sollte ausreichend lang sein.
+```
+export PASSPHRASE=****
+bash ./generatelocalcerts.sh
+```
+
+Für den Betrieb müssen die Zertifikate für die Verschlüsselung der Webseite bereitgestellt werden: (Alternativ können auch Hardlinks erstellt werden.)
+```
+sudo cp /etc/certs/vkk.medizin.uni-halle.de.key ./nginx/ssl/vkk.medizin.uni-halle.de.key
+sudo cp /etc/certs/vkk.medizin.uni-halle.de.pem ./nginx/ssl/vkk.medizin.uni-halle.de.crt
+sudo cp /etc/certs/fullchain.pem ./nginx/ssl/fullchain.pem
+```
+
+## Erstellen der Container
+Im nächsten Schritt werden die Docker-Container erstellt. 
+
+Für die Entwicklung:
+```
+sudo docker-compose build --pull
+```
+
+Für den Betrieb:
+```
+sudo docker-compose -f docker-compose.prod.yml build --pull
+```
+
+## Einrichtung
+
+Anschließend erfolgen ein paar Konfigurationsschritte.
+
+### Frische Installation
+
+Im Falle einer Installation, bei der keine Wiederherstellung der Datenbank erforderlicht ist, muss zunächst diese eingerichtet und ein Konto für die Verwaltung erstellt werden.
+
+```
+sudo docker-compose up -d
+sudo docker-compose exec web /bin/ash
+python manage.py migrate
+// setup super user
+exit
+```
+
+```
+sudo docker-compose -f docker-compose.prod.yml up -d
+sudo docker-compose exec web /bin/ash
+python manage.py migrate
+// setup super user
+exit
+```
+
+### Wiederherstellung aus einem Backup
+
+Sollte ein Backup der Datenbank vorliegen, kann dies zur Wiederherstellung genutzt werden.
+
+```
+sudo docker-compose -f docker-compose.prod.yml up -d
+// wiederherstellen
+exit
+```
+
+
+### Erstellen eines Systemd Service
diff --git a/postgres/init/config.sh b/postgres/init/config.sh
index 9598bbf6f84b593b4c06984031eea1ab09f9f390..bb9d2fdc83ba5e5260c4a8db2f547c12aff1e0a4 100755
--- a/postgres/init/config.sh
+++ b/postgres/init/config.sh
@@ -7,6 +7,7 @@ sed "/^[[:alnum:]]/s/^/# /" < /var/lib/postgresql/data/pg_hba.conf.old > /var/li
 echo "
 # TYPE  DATABASE           USER              ADDRESS             METHOD
 local   all                $POSTGRES_USER                        scram-sha-256
+local   $SQL_DATABASE      $SQL_USER                             scram-sha-256
 hostssl    $SQL_DATABASE      $SQL_USER         all                 scram-sha-256
 " >> /var/lib/postgresql/data/pg_hba.conf