Update OpenProject als Datenbasis für das Föderale Entwicklungsportal authored by Jürgen Voskuhl's avatar Jürgen Voskuhl
---
title: OpenProject als Datenbasis für das Föderale Entwicklungsportal
---
## Inhaltsverzeichnis
[[_TOC_]]
# Überblick
1. In der [**openDesk-Instanz der FITKO**](https://portal.fitko.opendesk.live/univention/portal/#/) werden durch die Geschäftsstelle des Standardisierungsboards für Föderale IT (FIT-SB) unter anderem Informationen zu den Föderalen IT-Standards (FIT-Standards) verwaltet.
Derzeit werden diese Informationen in Markdown-Dateien verwaltet (eine Datei pro FIT-Standard)
2. Das Föderale Entwicklungsportal beinhaltet u. A. die [**Informationsplattform für Föderale IT-Standards**](https://docs.fitko.de/fit-standards/)**. Sie** stellt der interessierten Öffentlichkeit über eine _Next.js Single Page Application_ (SPA) Informationen zu FIT-Standards zur Verfügung.
**Es liegt daher nahe, Informationen zu FIT-Standards nur an einer Stelle, in einem System zu verwalten und zu pflegen.**
Die Datenpflege innerhalb der [openDesk-Instanz der FITKO](https://portal.fitko.opendesk.live/univention/portal/#/), konkret in OpenProject drängt sich auf, da die Daten, die für FIT-SB-Mitglieder vorgehalten werden, umfangreicher sein werden als die (öffentlich verfügbaren) Informationen zu den FIT-Standards, die in der Informationsplattform zur Verfügung stehen.
Insgesamt ergibt sich daher folgende Topologie:
![image.png](uploads/2430f2e0ec8ef0de5ac2cb726feb1c88/image.png)
### Datenübertragung
Das Bindeglied zwischen der Datenpflege in OpenProject und der Anzeige in der Informationsplattform stellt das Versionskontrollsystem GitLab dar sowie ein Python-Skript, welches folgende Aufgaben wahrnimmt:
* Auslesen der Daten aus OpenProject
* Durchführen notwendiger Konvertierungen
* Bereitstellen der Daten für die Informationsplattform
### Vorteile gegenüber der bisherigen Vorgehensweise
Der Nutzen dieser Vorgehens liegt auf der Hand:
* **Der Aufwand für die Datenpflege wird reduziert.**
Die Daten müssen offensicjhtlich nur einmal eingegeben werden.
* **Dateninkonsistenzen werden praktisch ausgeschlossen.**
Da jede Information nur an einer Stelle eingegeben wird, sind Abweichungen durch Mehrfacheingaben ausgeschlossen.
* **Fehleingaben werden auf ein Minimum reduziert.**
Im Gegensatz zu einer Markdown-Datei, bei der es sich letztendlich um eine Textdatei handelt, werden in OpenProject durch Einsatz geeigneter Eingabeformate (z. B. Dropdownlisten: es kann also nur ein Eintrag aus der Liste ausgewählt werden) und Hinterlegung von Gültigkeitsregeln Fehleingaben erheblich reduziert.
OpenProject kann hierbei jedoch nur den Inhalt eines einzelnen Datenfelds betrachten, also eine einzelnen Information.
Eine weitergehende Reduzierung potenzieller Fehleingaben erfolgt innerhalb des Übertragungsskripts: Hier ist auch die Bewertung mehrerer Datenfelder hinsichtlich ihrer Plausibilität möglich.
**Eine entsprechende Umsetzung steht inzwischen auf einem Test-System zur Verfügung und wird schrittweise in das Live-System integriert.**
# Weiterführende Informationen zu den beschriebenen Komponenten
## openDesk/OpenProject
openDesk bündelt bewährte Opensource-Komponenten wie Nextcloud und OpenProject, um deutsche Behörden mit einem transparenten Gegenentwurf zu MS 365 auszurüsten. Verantwortlich für den Betrrieb ist ZenDis, das [Zentrum für Digitale Souverenitä](https://www.zendis.de/)t.
Die Verwaltung der Daten zu den FIT-Standards erfolgt dabei in der Open-Source-Projektmanagement-Software **OpenProject**, konkret in eigens dafür konzipierten Arbeitspakete-Typen.
OpenProject stellt eine REST-API zur Verfügung, welche den Austausch von Daten zwischen OpenProject und anderen Systemen ermöglicht.
## Informationsplattform für Föderale IT-Standards
Die Informationsplattform für Föderale IT-Standards ist ein Teil des Föderalen Entwicklungsportals. Sie stellt statische Informationen zu den einzelnen FIT-Standards über das Web zur Verfügung.
Die Web-Anwendung ist in **Next.js** programmiert. Next.js ist ein Open-Source-Framework, das auf React aufbaut und Entwicklern die Tools und Funktionen bietet, um sowohl statische Websites als auch dynamische Webanwendungen effizient zu entwickeln. Die Informationsplattform ist als Single Page Application (SPA) implementiert.
Die Bereitstellung/Aktualisierung der Informationen im Web erfolgt via GitLab, einem Version Control System (VCS).
### Datenpflege, Datenverwaltung
Die Datenpflege erfolgt derzeit in einzelnen Markdown-Dateien (eine Datei pro Standard). markdown ist eine Auszeichnungssprache, die es ermöglicht, mit einfachen Zeichen HTML-Code zu produzieren.
Neben dem Markdown-Fließtext, der eine Beschreibung des jeweiligen Standards enthält, verfügt jede Datei über einen Frontmatter. Dieser ermöglicht es, Markdown-Dateien mit strukturierten Metadaten zu versehen. Es handelt konkret sich um einen Block mit Schlüsselwerten, der am Anfang jeder Markdown-Datei steht.
Im Falle der FIT-Standards ist dieser Teil sehr umfangreich, da er sämtliche strukturierten Informationen zu einem FIT-Standard enthält. Dazu gehören u. A.
* der Bedarfsträger einschl. Kontaktdaten
* das Umsetzungsteam einschl. Kontaktdaten
* der Betreiber einschl. Kontaktdaten
* Links zu den Artefakten der Dokumentation des Standards
* Statusinformationen
* Informationen zum Status und zur Gültigkeit des Standards
Für jede Änderung wird ein Merge Request gestellt. Dieser sorgt dafür, dass die Build Queue angestossen wird. Das Ergebnis wird zunächst in einer Preview-Umgebung bereitgestellt. Auf Anforderung werden die vorgenommen Änderungen anschließend in den main Branch gemerged. Damit stehen sie auf der Live-Website zur Verfügung.
### Abläufe innerhalb der Next.js-Anwendung
Bei Aufruf einer Seite der Informationsplattform werden die Inhalte der Markdown-Dateien gelesen und in JSON-Objekte überführt. Der Teil des Codes, der für das Rendering der Web-Seite verantwortlich ist, greift ausschließlich auf diese JSON-Objekte zu.
## Umsetzung
Die Umsetzung betrifft verschiedene Komponenten des Systems:
* **OpenProject**
Hier wurden zunächst die für die Versorgung der Informationsplattform mit Informationen geeigneten Datenfelder angelegt.
* **Entwicklung eines Übertragungsskripts in Python**
Das Skript übernimmt das Auslesen der Daten aus OpenProject, das Aufbereiten und das Bereitstellen derselben. Ferner werden im Rahmen dieses Teilprozesses diverse Plausibilitätschecks durchgeführt.
* **Anpassungen an der CI/CD-Konfiguration in `.gitlab-ci.yml`**
Damit die Datenübertragung gezielt initiiert werden kann, wurde der `gitlab-ci.yaml`
Das Skript sowie die Anpassungen an der CI/CD-Konfiguration sind [in diesem Merge Request](https://gitlab.opencode.de/fitko/docs/portal/-/merge_requests/153) einhalten.
\ No newline at end of file