Benutzerhandbuch
Hinweise, Tipps und Best Practices für die Arbeit mit ProjectForge
- 1. Einführung
- 2. Grundlegende Konzepte
- 2.1. Hauptmenü
- 2.2. Favoritenleiste und persönliches Menü
- 2.3. Globale Suche
- 2.4. Volltextsuche
- 2.5. Listen filtern
- 2.6. Mehrfachauswahl und Massenänderung
- 2.7. Export
- 2.8. Autovervollständigung
- 2.9. Änderungshistorie
- 2.10. Erscheinungsbild
- 2.11. Angemeldet bleiben
- 2.12. Zweifaktor-Authentifizierung
- 2.13. Mein Zugang
- 3. Kalender
- 3.1. Ansichten und Navigation
- 3.2. Kalender, Farben und Favoriten
- 3.3. Feiertage
- 3.4. Unterstützung verschiedener Zeitzonen
- 3.5. Einträge anlegen und ändern
- 3.6. Mehrere Tage buchen
- 3.7. Teamkalender
- 3.8. Serientermine
- 3.9. Kalenderabonnements (ics)
- 3.10. Externe Kalender abonnieren
- 3.11. Termine importieren
- 4. Urlaub
- 5. HR
- 6. Adressbuch
- 7. Chat
- 8. Strukturelemente in ProjectForge (früher Aufgaben)
- 9. Zeitberichte
- 10. Auftragsbuch
- 11. Finanzbuchhaltung mit ProjectForge®
- 12. Scripting in ProjectForge®
- 13. Verschiedenes
- 13.1. Datentransfer
- 13.2. CVE-Radar: Bibliotheken einer Komponente
- 13.3. CVE-Radar: Fall mit KI recherchieren
- 13.4. CVE-Radar: Fall herunterladen und importieren
- 13.5. CVE-Radar: Findings eines Projekts exportieren
- 13.6. CVE-Radar: Ad-hoc-Prüfung von Dateien
- 13.7. CVE-Radar: Benachrichtigungen
- 13.8. Weitere Funktionen
- 14. Datenschutz
- 15. Glossar
1. Einführung
Dieses Handbuch sammelt Hinweise, Tipps und Best Practices für die Arbeit mit ProjectForge®. Es beschreibt nicht jedes einzelne Feld: Die meisten Seiten erklären sich über ihre Beschriftungen und Tooltips selbst.
Seit Version 9.0 hat ProjectForge® eine vollständig überarbeitete Benutzeroberfläche. Dieses Handbuch beschreibt die aktuelle Oberfläche.
-
Neu bei ProjectForge? Der Schnellstart zeigt Schritt für Schritt, wie Benutzer, Gruppen, Strukturelemente und Kostenträger angelegt werden.
-
Installation, Konfiguration und Plugins sind im Administrationshandbuch beschrieben.
Hinweis
Sichtbar sind nur die Menüeinträge und Seiten, auf die du Zugriff hast. Manche Funktionen müssen außerdem erst von der Administration aktiviert oder konfiguriert werden (z. B. Plugins, Telefonie, CardDAV oder E-Rechnungen). Fehlt etwas, das hier beschrieben ist, hilft die Administration weiter.
2. Grundlegende Konzepte
2.1. Hauptmenü
Die Schaltfläche Menü oben links öffnet das Hauptmenü (Tastenkürzel Ctrl+K, unter macOS Cmd+K). Es zeigt alle Einträge, auf die du Zugriff hast, gruppiert nach Allgemein, Projektmanagement, HR, Fibu, Kost, Reporting, Organisation, Administration und Verschiedenes.
-
Menü durchsuchen: Einfach lostippen. ProjectForge® durchsucht die Titel der Menüeinträge und die Gruppennamen (die Eingabe „fibu“ listet den ganzen Bereich auf). Unterhalb der Menüeinträge erscheinen passende Datensätze, z. B. Adressen oder Projekte. Die letzte Zeile "…" in allen Daten suchen öffnet die globale Suche. Mit den Pfeiltasten und Enter lässt sich durch die Treffer navigieren.
-
Zuletzt verwendet: Solange das Suchfeld leer ist, stehen die zuletzt verwendeten Einträge oben. Sie werden auf dem Server gespeichert und sind daher auch auf anderen Geräten und in anderen Browsern verfügbar.
2.2. Favoritenleiste und persönliches Menü
Neben der Menü-Schaltfläche befindet sich die persönliche Favoritenleiste. Sie kann einzelne Einträge und Ordner enthalten. Einträge, die nicht mehr in die Leiste passen, wandern in das Menü …. Manche Einträge zeigen einen Zähler, z. B. die Anzahl offener Urlaubsanträge.
Die Favoriten lassen sich über Mein Menü gestalten im Benutzermenü (oben rechts, mit deinem Namen) ändern: Einträge aus der Vorlage rechts in das eigene Menü links ziehen (oder einfach anklicken), Gruppen anlegen, umbenennen und entfernen und die Änderungen speichern. Standard wiederherstellen stellt das Standardmenü wieder her.
Das Benutzermenü enthält außerdem Feedback senden, Mein Zugang, 2. Faktor einrichten, Urlaubskonto (für Mitarbeitende), Einträge von Plugins (z. B. die Persönliche Box von Datentransfer), Erscheinungsbild und Abmelden.
2.3. Globale Suche
Unter Allgemein > Suche (oder über die letzte Zeile der Menüsuche) lassen sich mehrere Bereiche gleichzeitig durchsuchen: Adressen, Kunden, Projekte, Benutzer, Gruppen, Strukturelemente, Bücher und Mitarbeitende. Durchsucht werden nur Bereiche, für die du Leserechte hast.
-
Über die Bereichskacheln lässt sich die Suche auf einzelne Bereiche einschränken, In allen Bereichen suchen hebt die Einschränkung wieder auf.
-
Alle in … anzeigen öffnet die Liste des Bereichs mit dem bereits eingetragenen Suchbegriff.
-
Der Suchbegriff ist Teil der Seitenadresse, eine Suche lässt sich also als Lesezeichen speichern oder an Kolleg:innen schicken.
2.4. Volltextsuche
Die meisten Listen haben ein Suchfeld (Liste durchsuchen…). Die Suche startet bereits während der Eingabe, Esc leert das Feld. Das Suchfeld unterstützt die Lucene-Abfragesyntax, alle Details beschreibt die Syntax des Lucene-Query-Parsers.
Die folgende Tabelle zeigt einige häufig verwendete Abfragen.
| Ausdruck | Funktion |
|---|---|
abc |
Das Suchergebnis enthält alle Objekte mit Feldern, die Wörter enthalten, die mit 'abc' beginnen. Groß- und Kleinschreibung spielen keine Rolle. |
*abc* |
Das Suchergebnis enthält alle Objekte mit Feldern, die Wörter enthalten, in denen 'abc' vorkommt. Groß- und Kleinschreibung spielen keine Rolle. |
meier~ |
Unscharfe Suche: Auch Wörter mit ähnlicher Schreibweise wie 'mayer' werden gefunden. |
abc def |
Sucht nach Objekten mit Wörtern, die mit 'abc' oder 'def' beginnen. |
+abc -def |
Sucht nach Objekten, die das Wort 'abc', aber nicht das Wort 'def' enthalten (ohne
automatische Platzhalter, siehe unten; |
name:abc def |
Sucht nach allen Objekten, deren Feld 'name' das Wort 'abc' enthält, und sucht 'def' in allen Feldern. |
2.4.1. Automatische Platzhalter
Hinweis
Besteht der Suchbegriff nur aus Buchstaben, Ziffern, Leerzeichen und den Zeichen
@._-*`, hängt ProjectForge® an jedes Wort automatisch den Platzhalter '*' an. Wörter, die auf '*' enden, Wörter, die mit '' oder '-' beginnen (Lucene-Operatoren), und die Schlüsselwörter AND, OR und NOT bleiben unverändert. Ein Suchbegriff, der mit '+' oder '-' beginnt, wird so verwendet, wie er eingegeben wurde, ebenso alle anderen Ausdrücke (z. B. mit ':', '~', '"' oder Klammern). Ein Wort mit einem Trennzeichen darin wie `acme-popwird wie eingegeben und in seinen Teilen gesucht:acme-pop*oder sowohlacme*als auchpop*.Beginnt der Suchbegriff mit einem Apostroph ('), unterbleibt jede Veränderung: Der Apostroph wird entfernt und der Rest exakt wie eingegeben verwendet.
| Ausdruck | Veränderung durch ProjectForge |
|---|---|
hello |
hello* |
hello ProjectForge |
hello* ProjectForge* |
hello AND world |
hello* AND world* |
name:hello |
name:hello |
+hello -world |
hello -world + (keine Ersetzung wegen des führenden ''.) |
'hello |
hello |
2.5. Listen filtern
Über jeder Liste befindet sich die Filterleiste:
-
Filter hinzufügen bietet alle durchsuchbaren Felder der Liste als Filter an, Alle Filter zeigt alle aktiven Filter auf einmal. Zurücksetzen und Alle löschen entfernen die Filter wieder.
-
Zeitraumfilter (z. B. Zeitraum der Zeitberichte) bieten Schnellauswahlen wie Woche, Monat oder Jahr bis heute sowie Pfeile zum Blättern in den vorherigen oder nächsten Zeitraum.
-
Geändert filtert die Liste über die Änderungshistorie: nach dem Benutzer, der eine Änderung vorgenommen hat, nach dem Zeitpunkt der Änderung (z. B. letzte 10 Minuten, heute, seit gestern) oder nach geänderten Werten. Das ist praktisch, um z. B. alle Objekte zu finden, die du in der letzten Stunde geändert hast.
-
Gelöscht zeigt als gelöscht markierte Einträge, die sich so wiederherstellen lassen.
Die letzten Filtereinstellungen werden für jede Liste auf dem Server gespeichert. Sie bleiben also nach einem Neuladen erhalten und sind auf allen deinen Geräten verfügbar.
2.5.1. Favoritenfilter
Über Favoriten in der Filterleiste lassen sich häufig benötigte Filtereinstellungen speichern: Neuer Filter speichert die aktuellen Einstellungen unter einem frei wählbaren Namen. Ein Sternchen markiert einen Favoriten, dessen Einstellungen geändert wurden, Änderungen speichern übernimmt die Änderungen. Favoriten lassen sich jederzeit umbenennen und löschen.
2.5.2. Links und Lesezeichen
Alle Seiten haben stabile Adressen: Sie lassen sich als Lesezeichen im Browser speichern oder per E-Mail
verschicken. Bearbeitungsseiten werden über die Id des Objekts adressiert, Listenseiten akzeptieren einen
Suchbegriff (?q=…). Filtereinstellungen sind nicht Teil der Adresse, dafür gibt es die
Favoritenfilter.
2.6. Mehrfachauswahl und Massenänderung
Viele Listen (z. B. Zeitberichte, Debitorenrechnungen, Kreditorenrechnungen, Gehälter, Projekte, Kostenträger und Liquiditätseinträge) unterstützen die Änderung vieler Einträge auf einmal:
-
In der Werkzeugleiste der Liste auf Mehrfachauswahl klicken.
-
Die gewünschten Einträge auswählen: Ein Klick wählt einen Eintrag aus, Ctrl (macOS: Cmd)
Klick schaltet einzelne Einträge um, Shift + Klick wählt einen Bereich aus, die Checkbox im Tabellenkopf wählt alle aus. -
Auf Massenänderung klicken. Für jedes Feld lässt sich wählen, ob ein Wert gesetzt (überschrieben), Text angehängt, Text gesucht und ersetzt oder der Wert gelöscht werden soll.
Bis zu 100 Einträge lassen sich auf einmal ändern. Nach der Änderung zeigt ProjectForge® die Anzahl der geänderten Einträge und bietet eine Excel-Datei mit allen Änderungen an. Ausgewählte Einträge lassen sich auch auf einmal löschen oder wiederherstellen.
2.7. Export
Listen mit Exportfunktion bieten in der Werkzeugleiste ein Menü Export. Excel-Export exportiert die aktuell gefilterte Liste. Manche Listen bieten weitere Exporte, z. B. die Kostzuweisungen von Rechnungen, den Forecast des Auftragsbuchs oder ein PDF der Zeitberichte.
2.8. Autovervollständigung
Viele Felder (z. B. Benutzer, Strukturelemente, Kostenträger oder Kunden) schlagen schon während der Eingabe Einträge vor, meist nach 2 Zeichen. Mit den Pfeiltasten nach oben und unten und Enter lässt sich ein Eintrag ohne Maus auswählen. Die Auswahl von Strukturelementen bietet zusätzlich die zuletzt verwendeten Strukturelemente und die eigenen Favoriten an.
2.9. Änderungshistorie
Fast alle Objekte führen eine vollständige Änderungshistorie. Der Abschnitt Änderungshistorie unten auf einer Bearbeitungsseite zeigt, wann ein Objekt angelegt und geändert wurde, von wem und welche Felder geändert wurden (alter und neuer Wert).
Bei Benutzern und Gruppen lässt sich beim Speichern zusätzlich ein Änderungskommentar eingeben (z. B. warum ein Recht vergeben wurde) oder später über Kommentar anhängen ergänzen. Diese Kommentare erscheinen in der Historie.
2.10. Erscheinungsbild
Über Erscheinungsbild im Benutzermenü lässt sich zwischen dem Design Hell und Dunkel wechseln oder die Einstellung des Betriebssystems übernehmen (System). Die Einstellung wird für deinen Benutzer gespeichert und gilt auf allen deinen Geräten.
2.11. Angemeldet bleiben
Auf der Anmeldeseite lässt sich An diesem Browser angemeldet bleiben. ankreuzen:
-
ProjectForge® speichert dann ein Cookie in diesem Browser. Es bleibt 30 Tage nach seiner letzten Nutzung gültig und wird bei jeder Nutzung erneuert.
-
Abmelden entfernt nur das Cookie des aktuellen Browsers.
-
Eine Änderung des Passworts meldet alle Geräte ab.
-
Unter Mein Zugang sind alle angemeldet bleibenden Geräte zu sehen (Browser, IP-Adresse, letzter Zugriff). Abmelden in der Zeile eines Geräts meldet nur dieses Gerät ab, Auf allen Geräten abmelden. meldet alle ab, einschließlich des aktuellen.
2.12. Zweifaktor-Authentifizierung
Die Administration kann sensible Bereiche (z. B. Administration, Finanzen oder HR) zusätzlich zum Passwort durch einen zweiten Faktor schützen. Die eigenen Faktoren werden im Benutzermenü unter 2. Faktor einrichten konfiguriert:
-
Authenticator-Apps: Den angezeigten QR-Code mit einer Authenticator-App auf dem Smartphone scannen (zeitbasierte Einmalpasswörter, TOTP).
-
WebAuthn (Fido2 etc.): Einen Hardware-Token wie einen YubiKey registrieren. Ein Klick auf einen registrierten Token benennt ihn um oder löscht ihn.
-
SMS-Konfiguration: Einmalcodes per SMS erhalten (falls konfiguriert).
-
Codes lassen sich auch per E-Mail versenden, sofern die Administration dies nicht abgeschaltet hat.
Das Anzeigen des Authenticator-Schlüssels und jede Änderung auf dieser Seite erfordern einen zweiten Faktor, der nicht älter als 10 Minuten ist; sonst fragt ProjectForge® zuerst nach einem Code. Mit 2FA jetzt prüfen lässt sich ein Code ausprobieren.
Erfordert eine Seite oder Aktion einen zweiten Faktor, der fehlt oder abgelaufen ist, fragt ProjectForge® nach einem Code und fährt anschließend fort. Welche Bereiche geschützt sind und wie lange ein zweiter Faktor gültig bleibt, legt die Administration fest, siehe Administrationshandbuch: 2FA.
2.13. Mein Zugang
Unter Mein Zugang lassen sich die persönlichen Einstellungen pflegen, z. B. Name, Zeitzone, Sprache, Datumsformate, die eigenen Telefon-Ids für die Direktwahl sowie die öffentlichen GPG- und SSH-Schlüssel.
Hier befinden sich auch die persönlichen Schlüssel (Authentifizierungs-Token): für Kalenderabonnements, für CardDAV und für REST-Clients. Jeder Schlüssel lässt sich erneuern: Alle URLs und Clients mit dem alten Schlüssel funktionieren dann sofort nicht mehr. Genau das ist gewünscht, wenn eine Abonnement-URL in falsche Hände geraten ist.
3. Kalender
Der Kalender ist eine der wichtigsten Funktionen von ProjectForge®. Hier lassen sich Zeitberichte und persönliche Termine ebenso wie Teamtermine komfortabel organisieren.
3.1. Ansichten und Navigation
Der Kalender bietet folgende Ansichten: Monat, Woche und Tag, Monat und Woche jeweils auch ohne Wochenenden (Werktage), eine Wochenübersicht (Übersicht) und eine Liste aller Einträge (Agenda).
Zum Blättern dienen Heute, die Pfeil-Schaltflächen und Datum auswählen (eine Monatsauswahl mit Jahresauswahl). In der Wochen- und Tagesansicht markiert eine Linie die aktuelle Uhrzeit. ProjectForge® merkt sich die zuletzt verwendete Ansicht und das Datum.
3.2. Kalender, Farben und Favoriten
-
Die anzuzeigenden Kalender auswählen: alle Teamkalender, auf die du Zugriff hast, sowie Geburtstage (alle Adressen) und Geburtstage (Adressfavoriten).
-
Ein Klick auf einen Kalender ändert seine Farbe oder blendet ihn vorübergehend aus.
-
Der Einstellungsdialog (Zahnrad-Symbol) enthält den Standardkalender für neue Termine, die anzuzeigenden Zeitberichte (die eigenen oder, falls erlaubt, die anderer Benutzer), Pausen, den Urlaub von Gruppen und Benutzern (Urlaub von Gruppen, Urlaub von Benutzern), die Rastergröße, den Tagesbeginn und die Farben.
-
Verschiedene Kombinationen lassen sich als Favoriten speichern und mit zwei Klicks wechseln.
Feiertage und Wochenenden sind hervorgehoben.
3.3. Feiertage
ProjectForge® unterstützt die deutschen Feiertage von Haus aus (in der Grundkonfiguration zählen Heiligabend und Silvester als halbe Arbeitstage). Die Administration kann im Konfigurationsparameter Feiertage (Administration → Konfiguration) eigene Feiertage ergänzen oder die eingebauten ändern.
3.4. Unterstützung verschiedener Zeitzonen
ProjectForge® unterstützt gleichzeitig verschiedene Zeitzonen. Alle Benutzer können ihre Zeitzone unter Mein Zugang wählen, z. B. auf Reisen.
3.5. Einträge anlegen und ändern
-
Anlegen: Einen Zeitraum im Kalender markieren oder auf + klicken (oder N drücken). Ist ein Standardkalender gewählt, entsteht ein neuer Termin, andernfalls ein neuer Zeitbericht.
-
Verschieben und Größe ändern: Einen Eintrag auf eine andere Uhrzeit ziehen oder seine Dauer ändern. ProjectForge® öffnet das Bearbeitungsformular mit den neuen Zeiten; die Änderung wird beim Speichern übernommen.
-
Kopieren: Klonen im Bearbeitungsformular eines Zeitberichts oder Termins verwenden.
-
Als andere Art bearbeiten: Ein Termin lässt sich als Zeitbericht bearbeiten (Als Zeitbuchung bearbeiten) und umgekehrt (Als Termin bearbeiten). Dabei öffnet sich ein neuer Eintrag mit den übernommenen Zeiten und Texten, der beim Speichern angelegt wird; ein bereits gespeicherter Eintrag bleibt unverändert.
-
Pausen: Lücken zwischen den Zeitberichten eines Tages können als Pausen angezeigt werden. Ein Klick auf eine Pause bucht einen Zeitbericht für diese Lücke.
3.6. Mehrere Tage buchen
Mehrere Tage buchen in der Werkzeugleiste bucht an jedem Arbeitstag eines Zeitraums einen Zeitbericht, z. B. für eine Schulung oder einen längeren Einsatz beim Kunden:
-
Zeitraum (höchstens ein Monat), Startzeit, Stunden pro Tag, Strukturelement, Kostenträger, Ort und Beschreibung wählen (oder eine der eigenen Vorlagen bzw. einen der letzten Einträge verwenden).
-
Die Vorschau prüfen: Wochenenden und Feiertage werden übersprungen. An einem bereits gebuchten Tag wird der Zeitbericht nur gebucht, wenn er nicht mit einem bestehenden kollidiert (eine Überschneidung mit einem Strukturelement mit geteilten Kosten ist erlaubt).
-
Auf Buchen klicken.
Mit Urlaub übernehmen lässt sich einer der eigenen Urlaubsanträge wählen (abgestimmt oder in Abstimmung, ein Jahr zurück und voraus); seine Tage werden auf den von der Administration konfigurierten Urlaubs-Kostenträger gebucht. Ist kein Urlaubs-Kostenträger konfiguriert, werden Strukturelement und Kostenträger selbst gewählt.
3.7. Teamkalender
Unter Allgemein > Kalenderliste werden Teamkalender verwaltet. Jeder Kalender hat einen Eigentümer und kann mit Gruppen und Benutzern in drei Zugriffsarten geteilt werden:
-
Vollzugriff
Die zugeordneten Gruppen und Benutzer können alle Termine des Kalenders lesen, anlegen, ändern und löschen. -
Nur lesend
Die zugeordneten Gruppen und Benutzer können alle Termine lesen, einschließlich Abonnement und Download. -
Minimalzugriff
Die zugeordneten Gruppen und Benutzer sehen nur Beginn und Ende der Termine, einschließlich Abonnement und Download. Alle anderen Eigenschaften der Termine wie Titel, Ort, Notizen usw. werden entfernt.
Abbildung 1: |
Der Zugriff auf jeden Kalender lässt sich für Gruppen und/oder Benutzer konfigurieren. |
Ein Teamkalender kann auch den Urlaub ausgewählter Benutzer und Gruppen anzeigen (Abschnitt Urlaub).
3.8. Serientermine
ProjectForge® unterstützt Serientermine. Bei der Änderung eines Serientermins wird unter Alle Änderungen betreffen: gewählt, ob die Änderung für Nur dieses Ereignis, für Alle Ereignisse oder für Alle zukünftigen Ereignisse gilt.
Teilnehmende importierter Termine werden angezeigt, ProjectForge® verschickt aber keine Einladungen.
3.9. Kalenderabonnements (ics)
Die Kalender von ProjectForge® lassen sich in jeder Kalenderanwendung abonnieren, die ics-Abonnements unterstützt (z. B. Apple Kalender, Google Kalender, Microsoft Outlook oder Thunderbird):
-
Mehr > Abonnement im Kalender bietet Abonnements für die eigenen Zeitberichte (Zeitberichte exportieren), die Feiertage (Feiertage exportieren) und die Kalenderwochen (Kalenderwochen exportieren).
-
Die Bearbeitungsseite jedes Teamkalenders zeigt die Abonnement-URL dieses Kalenders, mit oder ohne Erinnerungen.
Die Dialoge zeigen die URL zum Kopieren und einen QR-Code für das Smartphone. Die Abonnements sind nur lesend: Änderungen erfolgen in ProjectForge®. (ProjectForge® bietet keinen CalDAV-Server.)
Hinweis
Die Abonnement-URL enthält deinen persönlichen, verschlüsselten Kalenderschlüssel. Halte sie geheim! Im Zweifel den Schlüssel für Kalenderexport unter Mein Zugang erneuern. Alle bisherigen Abonnement-URLs funktionieren danach nicht mehr.
Einzelne Termine lassen sich auch als ics-Datei herunterladen (Export ics).
Abbildung 2: |
Beispiel für abonnierte Kalender von ProjectForge im Kalender von Apple. |
3.10. Externe Kalender abonnieren
Ein Teamkalender kann einen externen Kalender abonnieren (z. B. von Google oder Apple iCloud): Auf der Bearbeitungsseite des Teamkalenders Externes Abonnement ankreuzen, die Kalender-URL eintragen und ein Aktualisierungsintervall wählen. Die Termine abonnierter Kalender sind nur lesend. Lässt sich der externe Kalender längere Zeit nicht lesen (Standard: 90 Tage), wird das Abonnement automatisch abgeschaltet und ein Hinweis in der Beschreibung des Kalenders ergänzt.
3.11. Termine importieren
Mehr > Ereignisse importieren im Kalender (oder auf der Bearbeitungsseite eines Teamkalenders) importiert Termine aus ics-Dateien:
-
Den Zielkalender wählen und eine
.ics-Datei ablegen oder auswählen. Dateien mit mehreren Terminen werden unterstützt. -
Die Vorschau prüfen: Neue und geänderte Termine sind markiert.
-
Den Import Übernehmen.
Termine werden an ihrer eindeutigen Id (UID) erkannt: Ein bereits im Kalender vorhandener Termin wird aktualisiert statt doppelt importiert.
4. Urlaub
4.1. Urlaubsantrag
Unter Allgemein > Urlaubseinträge wird Urlaub beantragt; dort sind auch die Urlaubsanträge des Teams zu sehen.
-
Startdatum und Enddatum wählen. Der erste und der letzte Tag können halbe Urlaubstage sein (Halber Urlaubstag am ersten Tag, Halber Urlaubstag am letzten Tag). ProjectForge® zeigt die Anzahl der Arbeitstage und die verfügbaren Urlaubstage.
-
Unter Abstimmung die Person wählen, die den Antrag genehmigt, sowie die Vertretung (und optional Weitere Vertretungen).
-
Sonderurlaub ankreuzen für Urlaub, der nicht vom Urlaubskonto abgeht. Sonderurlaub wird von HR genehmigt.
Neue Anträge erhalten den Status In Abstimmung. Die genehmigende Person setzt den Status auf Abgestimmt oder Abgelehnt. ProjectForge® merkt sich die zuletzt verwendete genehmigende Person und Vertretung.
Die genehmigende Person, die Vertretungen und du selbst werden per E-Mail über neue und geänderte Anträge benachrichtigt (sofern ein Mailserver konfiguriert ist).
Ein versehentlich als Urlaub erfasster Antrag lässt sich als Verfügbarkeitseintrag bearbeiten (Als Abwesenheit bearbeiten) und ein Verfügbarkeitseintrag als Antrag (Als Urlaub bearbeiten). Person, Zeitraum, Kommentar und Vertretungen werden in einen neuen Eintrag übernommen, der beim Speichern angelegt wird; ein bereits gespeicherter Eintrag bleibt unverändert bestehen und kann danach gelöscht werden.
Regeln
-
Es können nicht mehr Urlaubstage beantragt werden als verfügbar sind (außer Sonderurlaub). Resturlaub aus dem Vorjahr kann bis zum konfigurierten Datum genommen werden (standardmäßig der 31. März).
-
Urlaubszeiträume derselben Person dürfen sich nicht überschneiden.
-
Ein Antrag lässt sich zurückziehen (Status Abgelehnt) oder ein genehmigter Antrag löschen, solange der Urlaub noch nicht begonnen hat.
-
Urlaub in der Vergangenheit kann nur von HR eingetragen werden.
Konflikte
ProjectForge® warnt, wenn es mindestens einen Tag gibt, an dem keine der Vertretungen verfügbar ist, weil sie selbst im Urlaub sind. In diesem Fall andere oder weitere Vertretungen wählen. Die Liste der Urlaubsanträge lässt sich nach Konflikten filtern.
4.2. Urlaubskonto
Unter Administration > Urlaubskonto (sichtbar für Mitarbeitende mit Jahresurlaub) befindet sich die Urlaubsstatistik für das Vorjahr und das laufende Jahr: Jahresurlaub, Urlaub aus dem Vorjahr, genehmigter Urlaub und Urlaub in Abstimmung, Sonderurlaub und die verfügbaren Urlaubstage. Korrekturen durch HR werden als Urlaubskontokorrekturen aufgeführt (gepflegt unter HR > Urlaubskontokorrekturen).
Das Urlaubskonto bietet außerdem eine Abonnement-URL für die Urlaubstage der Mitarbeitenden.
4.3. Automatische Buchung von Urlaub
ProjectForge® kann genehmigten Urlaub (einschließlich Sonderurlaub) jede Nacht automatisch als Zeitberichte buchen, wenn die Administration das Urlaubs-Strukturelement und den Urlaubs-Kostenträger konfiguriert und Urlaub als Zeitberichte buchen (Tage zurück beim ersten Lauf) auf einen Wert größer 0 gesetzt hat (unter Administration > Konfiguration; Standard 0, d. h. abgeschaltet, höchstens 7):
-
Gebucht werden nur vergangene Arbeitstage bis gestern, nie im Voraus, und nur Tage ohne jeden Zeitbericht.
-
Jeder Tag wird nur einmal verarbeitet: Ein Lauf bucht die Tage seit dem letzten erfolgreichen Lauf, höchstens aber die konfigurierte Anzahl Tage zurück; Nächte, in denen der Job nicht lief, werden so nachgeholt. Ein von Hand gelöschter Urlaubs-Zeitbericht wird nicht erneut gebucht.
-
Die Stunden pro Tag ergeben sich aus der Wochenarbeitszeit (halbe Urlaubstage erhalten die Hälfte der Stunden). Die Beschreibung lautet „Urlaub“.
-
Urlaub, der erst genehmigt wird, nachdem seine Tage bereits verarbeitet wurden, wird nicht automatisch gebucht. Stattdessen Mehrere Tage buchen mit Urlaub übernehmen verwenden.
Der Monatsbericht weist Arbeitstage und Urlaubstage ohne Zeitberichte getrennt aus.
5. HR
-
HR > Mitarbeitende enthält die Daten der Mitarbeitenden wie Personalnummer, Eintritts- und Austrittsdatum und die Werte mit Gültigkeitsdatum: Urlaubstage pro Jahr, Wochenstunden und Mitarbeiter:instatus.
-
HR > Gehälter enthält die monatlichen Gehälter der Mitarbeitenden. Sie werden für die Kostenträgerrechnung verwendet.
-
Projektmanagement > Personalplanung gibt einen Überblick über die geplanten Arbeitsstunden der Mitarbeitenden in Projekten pro Woche.
5.1. Import von Gehältern
Gehälter lassen sich über Gehälterimport aus einer Excel-Datei (.xlsx oder .xls) importieren. Folgende Spalten sind erforderlich:
-
Abrechnungsmonat: Monat des Gehalts im Format yyyy/MM, -
Pers.Nr.(oderPersonalnummer): Personalnummer der Mitarbeiterin bzw. des Mitarbeiters, -
Gesamtkosten(oderbruttoMitAgAnteil): Bruttogehalt einschließlich des Arbeitgeberanteils.
Zeilen mit unbekannter Personalnummer werden als fehlerhaft markiert und übersprungen.
6. Adressbuch
6.1. Adressbücher
Adressen sind in Adressbüchern organisiert (Allgemein > Adressbücher). Jedes Adressbuch hat einen Eigentümer und kann mit Benutzern und Gruppen geteilt werden, mit Vollzugriff (Lese- und Schreibzugriff auf alle Adressen dieses Adressbuchs) oder Nur lesend. Eine Adresse kann zu mehreren Adressbüchern gehören. Adressen ohne Adressbuch gehören zum globalen Adressbuch.
6.2. Rückwärtssuche von Telefonnummern
ProjectForge® nimmt jede Telefonnummer ohne Sonderzeichen und Leerzeichen in den Suchindex auf. Die Eingabe eines beliebigen Teils der Telefonnummer findet die zugehörige Adresse (sofern vorhanden).
Hinweis
Manchmal hilft es, die Ländervorwahl wegzulassen, um die Adresse zu finden.
6.3. Persönliche Favoriten
Auf der Bearbeitungsseite einer Adresse markiert Favorit die Adresse als persönlichen Favoriten. Die eigenen Favoriten sind in der Liste hervorgehoben (und lassen sich über meine Favoriten filtern).
Favoriten sind die Grundlage für den Export von Adressen in das persönliche Adressbuch (z. B. Apple Kontakte) und für die Synchronisation mit Mobilgeräten:
-
Export vCards im Exportmenü der Adressliste lädt alle eigenen Favoriten als vCard-Datei (vcf) herunter. Eine einzelne Adresse lässt sich auf ihrer Bearbeitungsseite über Export vCard exportieren.
-
CardDAV (sofern von der Administration aktiviert) synchronisiert die Favoriten mit der Adressbuch-Anwendung. Einrichten des CardDAV-Services im Exportmenü zeigt Server, Pfad und Zugangsdaten. Wird ein Kontakt in der Adressbuch-Anwendung entfernt, wird er aus den Favoriten entfernt; über CardDAV lassen sich keine Kontakte anlegen oder ändern.
Hinweis
In der Adressbuch-Software bitte UTF-8 als Zeichenkodierung verwenden!
6.3.1. Hinweis für Apple Kontakte
Mehrfache Exporte von Adressen können zu mehrfachen Notizeinträgen führen. Das im Menü der Adressliste angebotene Apple-Script (Apple-Script) entfernt solche mehrfachen Notizeinträge:
1
2
3
4
5
6
7
8
9
tell application "Address Book"
repeat with thisPerson in every person
if (exists (note of thisPerson)) and ((note of thisPerson) contains "CLASS: WORK") then
log "Name: " & (name of thisPerson)
delete note of thisPerson
end if
end repeat
save
end tell
-
Das Script lässt sich direkt im Apple-Script-Editor ausführen. (Das Ergebnis 'missing value' ist zu erwarten.)
-
Anschließend den ProjectForge®-Download (vCard) erneut importieren.
6.4. Export der Adressliste
Die aktuell angezeigte Adressliste lässt sich als Excel-Datei exportieren (Excel-Export). Aus
Datenschutzgründen werden nur die eigenen Favoriten exportiert. Mitglieder der Gruppen PF_Finance oder
PF_Marketing können alle Adressen der Liste exportieren.
6.5. Direktwahl und SMS
Ist die Telefonanlage des Unternehmens angebunden (siehe Administrationshandbuch), lassen sich Telefonate direkt aus ProjectForge® starten (Allgemein > Direktwahl): Die Nummer eingeben oder einen Namen bzw. eine Organisation eintippen und die Adresse wählen. Telefonnummern in der Adressliste sind mit der Direktwahl verlinkt und werden vergrößert, wenn die Maus darüber fährt.
Vorher bitte die eigenen Telefon-Ids (kommagetrennt) unter Mein Zugang eintragen.
Ist ein SMS-Gateway konfiguriert, lassen sich über Allgemein > SMS senden Textnachrichten verschicken.
7. Chat
Der Chat (Allgemein > Chat) bringt Gespräche dorthin, wo die Arbeit ist: Räume für Teams, Projekte oder Kunden, Direktnachrichten an jede Kollegin und jeden Kollegen und ein Chat in jedem Datentransfer-Bereich. Nachrichten kommen live an, und alles bleibt auf dem Server der eigenen Installation.
Abbildung 3: |
Die Chat-Seite mit den Direktnachrichten, den Chaträumen und ihren ungelesenen Nachrichten. |
7.1. Chaträume
Chaträume kann jede und jeder anlegen (Neuer Chatraum) und die Teilnehmenden wählen: Benutzer und Gruppen. Die Gruppenmitgliedschaft wird beim Zugriff geprüft – wer später in eine Gruppe kommt, ist sofort dabei, wer sie verlässt, ist draußen. Besitzer und Moderatoren eines Raums bearbeiten oder löschen ihn, blenden Nachrichten anderer mit einer Begründung aus (z. B. themenfremd oder vertraulich) und sehen die Historie bearbeiteter Nachrichten.
Dateien eines Raums liegen in seinem Datentransfer-Bereich „Chat: …“ und bleiben so lange, wie der Raum es festlegt (Dateien verfügbar, standardmäßig 30 Tage); danach werden sie gelöscht.
Auch jeder Datentransfer-Bereich ist ein Chatraum, für alle mit Zugriff auf den Bereich.
Abbildung 4: |
Ein Projektraum mit Code-Block, Bild, Reaktionen und einem Thread. |
7.2. Direktnachrichten
Eine Direktnachricht (Direktnachricht) geht an eine Person: Angeschrieben werden kann jede, die in der Benutzerauswahl erscheint. Pro Paar gibt es ein Gespräch. Unter der eigenen letzten Nachricht zeigt ein kleiner Avatar, dass die Gegenseite sie gelesen hat (siehe Abbildung 6). Dateien einer Direktnachricht landen in der persönlichen Box der Empfängerin oder des Empfängers im Datentransfer.
7.3. Nachrichten schreiben
-
Formatierung: fett, kursiv, Listen, Links und Code-Blöcke. Im Code-Block beginnt Enter eine neue Zeile, Strg+Enter (Mac: ⌘+Enter) sendet.
-
@Erwähnungen: Ein
@schlägt die Teilnehmenden vor; wer erwähnt wird, wird sofort benachrichtigt. -
Zitate und Emoji-Reaktionen auf jede Nachricht.
-
Dateien jeder Art: anhängen, einfügen oder einfach ins Nachrichtenfenster ziehen. Bilder erscheinen als Vorschau und werden per Klick vergrößert.
-
Link-Vorschau: Der erste Link einer Nachricht zeigt eine Vorschau der verlinkten Seite (Titel, Beschreibung, Bild), schon beim Schreiben. Der Server ruft sie ab, der Browser lädt nichts von dieser Seite. Das × an der Vorschau entfernt sie, vor dem Senden oder später aus der eigenen Nachricht.
-
Eigene Nachrichten bearbeiten und löschen; eine bearbeitete Nachricht ist markiert, Moderatoren sehen ihre Historie.
-
Link kopieren liefert einen Link auf eine einzelne Nachricht.
7.4. Threads
Im Thread antworten beginnt einen Thread zu einer Nachricht, damit eine Nebendiskussion den Raum nicht unterbricht. Die Nachricht zeigt die Zahl der Antworten und ihre Autoren; ein Klick öffnet den Thread neben dem Gespräch. Die Autorin oder der Autor der Nachricht und alle, die antworten, folgen dem Thread; Folgen und Nicht mehr folgen ändern das. Threads mit neuen Antworten sind markiert.
Abbildung 5: |
Ein geöffneter Thread neben dem Gespräch des Raums. |
7.5. Ungelesene Nachrichten und Benachrichtigungen
-
Das Chat-Symbol in der Kopfleiste zählt die ungelesenen Nachrichten, die Liste der Gespräche zeigt sie je Raum.
-
Eine Linie Neu zeigt, wo die ungelesenen Nachrichten beginnen; ein Knopf springt zur nächsten ungelesenen.
-
Als ungelesen markieren an einer Nachricht holt ein Gespräch für später zurück.
-
Stummschalten macht ein Gespräch leise: Neue Nachrichten werden nicht mehr gemeldet, Erwähnungen schon.
-
Erwähnungen, Direktnachrichten und Antworten in gefolgten Threads werden in der App und per Mail gemeldet. Eine Mail geht nur für das, was in der App nicht gesehen wurde, und enthält nie den Text der Nachricht.
7.6. Melden und Blockieren
Im Menü einer Nachricht von anderen (Nachricht anklicken, dann erscheinen die Aktionen) schickt Melden die Nachricht mit einem optionalen Grund an die Administratoren. Sie erhalten den Text der Nachricht (die ersten 500 Zeichen), wer gemeldet hat und von wem die Nachricht ist, und können das Konto des Autors deaktivieren; das Gespräch können sie nicht öffnen. Beim Melden lässt sich der Autor gleich blockieren.
Nutzer blockieren (Menü des Autors oder die Schaltfläche im Kopf einer Direktnachricht) beendet die Direktnachrichten mit diesem Nutzer: Keiner von beiden kann im Gespräch schreiben, es bleibt lesbar. In Räumen werden die Nachrichten eines blockierten Nutzers eingeklappt angezeigt (Anzeigen öffnet eine), und von ihm kommen keine Benachrichtigungen, Erwähnungen oder Suchtreffer mehr. Der blockierte Nutzer erfährt davon nichts. Blockierung aufheben entfernt die Sperre, auch in der Liste Blockierte Nutzer neben den Toneinstellungen des Chats.
7.7. Suche
Die Suche der Chat-Seite findet Nachrichten in allen Gesprächen, an denen man teilnimmt; die Suche in einem Gespräch sucht nur dort. Ein Treffer führt zu seinem Gespräch.
7.8. Vertrauliche Gespräche (Ende-zu-Ende-verschlüsselt)
Für ein Passwort, einen Zugangscode oder anderes, das nirgends liegen bleiben darf, bietet eine Direktnachricht ein Vertrauliches Gespräch: ein Live-Gespräch zweier Browser, Ende-zu-Ende-verschlüsselt. Die Texte werden in einem Browser verschlüsselt und erst im anderen entschlüsselt. ProjectForge leitet sie weiter, ohne sie lesen zu können, und speichert nichts.
So funktioniert es:
-
Gestartet wird es mit Verschlüsselter Chat auf der Chat-Seite (Person wählen) oder mit der Aktion Vertrauliches Gespräch in einer Direktnachricht.
-
Die Gegenseite wird auf jeder geöffneten Seite von ProjectForge aufmerksam gemacht, auch in einem Tab im Hintergrund: durch einen Ton, eine Browser-Benachrichtigung (falls erlaubt), einen blinkenden Tab-Titel und den Zähler des Chat-Symbols. Ton und Benachrichtigungen werden unter Ton und Benachrichtigungen eingestellt. Beantwortet wird das Angebot in der Direktnachricht: Annehmen oder Ablehnen.
-
Beide Seiten sehen denselben Fingerabdruck. Ihn vergleichen, z. B. am Telefon: Weicht er ab, ist ein manipulierter Server im Spiel.
-
Den vertraulichen Text schreiben und Verschlüsseln und senden. Eine Nachricht wird der Gegenseite einmal gezeigt und auf dem Server gelöscht, sobald sie abgeholt ist; der Absender sieht Gelesen.
-
Gespräch beenden beendet es für beide Seiten, und auf der Seite bleibt nichts davon zurück.
Abbildung 6: |
Der Empfänger bekommt in der Direktnachricht ein vertrauliches Gespräch angeboten. |
Abbildung 7: |
Ein vertrauliches Gespräch mit seinem Fingerabdruck; die erste Nachricht ist gelesen. |
Beide Seiten müssen online sein. Das Gespräch endet außerdem nach 10 Minuten ohne Nachricht, spätestens nach 2 Stunden und wenn eine Seite die Seite schließt oder neu lädt (ihr Schlüssel ist damit weg). Eine Nachricht darf bis zu 16 KB groß sein; Dateien lassen sich nicht senden. Vertrauliche Gespräche gibt es nur in Direktnachrichten, nicht in Räumen.
Wovor es schützt: vor Datenbank-Backups, Logdateien, dem Chatverlauf und Administratoren, die in Daten schauen – keines davon enthält je den Text. Bildschirm und Zwischenablage der Beteiligten sind nicht geschützt. Der Browser braucht eine sichere Verbindung (https).
Technisch erzeugt jeder Browser für das Gespräch ein Schlüsselpaar (WebCrypto, ECDH P-256); der private Schlüssel lässt sich nicht exportieren und liegt nur im Speicher der Seite. Der gemeinsame Schlüssel wird aus beiden abgeleitet (HKDF-SHA-256) und verschlüsselt jede Nachricht mit AES-GCM (256 Bit) und einem frischen Initialisierungsvektor; Gespräch, Absender und ein Zähler sind in jede Nachricht eingebunden, sodass sich eine Nachricht weder unbemerkt wiederholen noch umsortieren lässt. Der Server sieht nur die öffentlichen Schlüssel und den Chiffretext, hält sie im Speicher und löscht sie beim Abholen. Der Fingerabdruck umfasst beide öffentlichen Schlüssel – sein Vergleich deckt einen Server auf, der eigene Schlüssel dazwischengeschoben hat.
7.9. Wer mitliest
Ein Gespräch lesen nur seine Teilnehmenden: die Mitglieder eines Raums, die beiden Personen einer Direktnachricht, alle mit Zugriff auf einen Datentransfer-Bereich. Die Administratorrolle gibt keinen Zugriff auf Gespräche. Nachrichten und Dateien liegen in der Datenbank und im Datentransfer der eigenen Installation, siehe Digitale Souveränität und DSGVO.
8. Strukturelemente in ProjectForge (früher Aufgaben)
Der Begriff 'Strukturelement' wird allgemein verwendet und steht für Kunden, Projekte, Releases, Arbeitspakete usw. Strukturelemente sind hierarchisch im Strukturbaum organisiert (Projektmanagement > Strukturbaum). Zugriffsrechte können von Strukturelementen abhängen (und werden, falls so konfiguriert, von übergeordneten Strukturelementen abgeleitet). Zeitberichte werden immer auf Strukturelemente gebucht.
Abbildung 8: |
Hierarchie der Strukturelemente in ProjectForge® |
Die folgende Tabelle beschreibt die Felder von Strukturelementen:
| Feld | Beschreibung |
|---|---|
Übergeordnetes Strukturelement |
Das Strukturelement ist ein untergeordnetes Strukturelement des übergeordneten Strukturelements. Das Strukturelement an der Spitze der Hierarchie ist der Wurzelknoten, das einzige Strukturelement ohne übergeordnetes Strukturelement. |
Titel |
|
Referenz |
Mehrzweckfeld, optional. Dieses Feld wird an alle untergeordneten Strukturelemente vererbt, sofern es dort nicht überschrieben wird. Das ist z. B. für Exporte nützlich. |
Status |
Nicht geöffnet, geöffnet oder geschlossen. Auf geschlossene Strukturelemente kann nicht mehr gebucht werden. |
Priorität |
|
Kurzbeschreibung |
|
Beschreibung |
|
Maximalstunden |
Falls angegeben, wird der Verbrauch im Strukturbaum und beim Buchen eines Zeitberichts angezeigt, siehe Verbrauch. Ist Maximalstunden haben Vorrang angekreuzt, werden die Maximalstunden auch dann verwendet, wenn Auftragspositionen zugeordnet sind. |
Verantwortliche:r |
ProjectForge®-Benutzer zur Information. |
Kost2-Liste |
Alle Kost2-Werte sind projektspezifisch, wenn diesem Strukturelement oder einem übergeordneten Strukturelement ein Projekt zugeordnet ist. Die Negativliste legt Kost2-Einträge fest, die vom zugeordneten Projekt ausgeschlossen werden. Ist kein Projekt zugeordnet, lassen sich die Kost2-Werte über eine Positivliste konfigurieren. |
Zeitbuchungen |
Erben (Standard), geöffnet, nur Blattknoten, keine Buchung oder vollständig geschlossen, siehe Buchung von Zeitberichten. |
Zeitberichtsschutz bis |
Falls gesetzt, lassen sich nur Zeitberichte mit einem Beginn nach dem angegebenen Datum anlegen und ändern, siehe Schutz. |
Datenschutz |
Falls angekreuzt, sind die Zeitberichte dieses Strukturelements und aller untergeordneten Strukturelemente für andere Benutzer unsichtbar (außer für die Mitglieder der Finanzbuchhaltung). |
Strukturelement mit geteilten Kosten |
Falls angekreuzt (wird an alle untergeordneten Strukturelemente vererbt), dürfen sich hier gebuchte Zeitberichte zeitlich mit Zeitberichten anderer Projekte überschneiden, siehe Strukturelement mit geteilten Kosten. Anders als die übrigen Felder dieses Abschnitts kann es von allen geändert werden, die das Strukturelement bearbeiten dürfen. |
Ganttwerte |
Beginn- und Endedatum, Dauer, Fortschritt und Vorgänger für das Gantt-Diagramm (Projektmanagement > Gantt). |
Die Felder des Abschnitts Finanzbuchhaltung (außer Strukturelement mit geteilten Kosten) dürfen nur von der Finanzbuchhaltung geändert werden (Kost2-Liste und Buchungsstatus auch von den Projektleitungen des zugeordneten Projekts).
8.1. Verbrauch
Verbrauchsbalken werden im Strukturbaum und bei jeder Buchung von Zeitberichten angezeigt. Der Tooltip zeigt die gebuchten und die geplanten Personentage (1 Personentag = 8 Stunden) einschließlich aller untergeordneten Strukturelemente, den Prozentsatz und den Zeitraum der Buchungen. Ein Klick auf einen Balken zeigt die gebuchten Zeitberichte.
Der Planwert stammt aus den Maximalstunden des Strukturelements oder, falls Auftragspositionen zugeordnet sind, aus den beauftragten Personentagen.
| Verbrauch | Darstellung |
|---|---|
Kein Budget angegeben |
Nur gebuchte Personentage, kein Prozentsatz. |
0-80% |
Grüner Balken. |
80%-90% |
Gelber Balken. |
90%-100% |
Dunkelgelber Balken. |
über 100% |
Die Spur des Balkens wird rot: Das Budget ist überschritten. |
Bei abgeschlossenen (geschlossenen) Strukturelementen bleibt der Balken bis 100% grün; von 100% bis 110% zeigt er eine leichte Budgetüberschreitung (rote Spur mit neutralem Balken), oberhalb von 110% die normale Budgetüberschreitung.
8.1.1. Status von Verbrauchsbalken unterdrücken
Wird 0 als Maximalstunden eines Strukturelements eingetragen, unterbleibt die Statusanzeige (Planwert und Prozentsatz) des Verbrauchsbalkens, auch wenn Auftragspositionen zugeordnet sind. Das ist sinnvoll, um ein Team nicht zu demotivieren, oder wenn nicht alle Aufträge mit Budgets einem Strukturelement zugeordnet sind.
8.2. Buchung von Zeitberichten
Zeitberichte müssen einem Strukturelement zugeordnet sein. Zur Verbesserung der Qualität der Zeitberichte prüft ProjectForge® die folgenden Regeln. Ist eine Regel nicht erfüllt, kann auf dieses Strukturelement keine Arbeitszeit gebucht werden:
-
Der Benutzer benötigt Zugriff auf dieses Strukturelement oder ein übergeordnetes Strukturelement einschließlich des Rechts, Zeitberichte zu buchen.
-
Das Strukturelement und seine übergeordneten Elemente dürfen nicht geschlossen oder gelöscht sein.
-
Das Projekt des Strukturelements (das nächste zugeordnete Projekt im Strukturbaum) darf nicht beendet oder gelöscht sein.
-
Das Strukturelement oder ein übergeordnetes Strukturelement kann einen Zeitberichtsschutz haben. Für Tage vor dem Schutzdatum lassen sich dann keine Zeitberichte ändern oder hinzufügen.
-
Der Buchungsstatus des Strukturelements (oder des nächsten übergeordneten Elements mit einem anderen Buchungsstatus als 'erben') darf nicht 'keine Buchung' sein, und kein übergeordnetes Element darf 'vollständig geschlossen' sein.
-
Ist das Strukturelement kein Blattelement (hat es untergeordnete Elemente), darf der Buchungsstatus nicht 'nur Blattknoten' sein.
-
Kein untergeordnetes Strukturelement darf eine zugeordnete Auftragsposition haben. Diese Regel ist wichtig, weil ProjectForge® sonst den Verbrauch der durch Aufträge festgelegten Budgets nicht berechnen kann.
Weitere Prüfungen: Ein Zeitbericht muss eine Dauer haben (höchstens 14 Stunden) und darf sich nicht mit einem anderen Zeitbericht desselben Benutzers überschneiden, außer bei einem Strukturelement mit geteilten Kosten (siehe unten).
8.2.1. Strukturelement mit geteilten Kosten
Zeitberichte desselben Benutzers dürfen sich zeitlich überschneiden, wenn mindestens einer der beiden auf ein Strukturelement mit geteilten Kosten gebucht ist und beide nicht zum selben Projekt gehören. Ein Zeitbericht gilt als auf geteilte Kosten gebucht, wenn bei seinem Kost2 Geteilte Kosten auf Ja steht. Lässt der Kost2 das Feld leer (Wie Strukturelement) oder gibt es keinen Kost2, entscheidet die Checkbox Strukturelement mit geteilten Kosten des Strukturelements (oder eines übergeordneten Elements). Ein auf Nein gesetzter Kost2 hat Vorrang: Seine Zeitberichte zählen nicht als geteilt, auch nicht auf einem Strukturelement mit geteilten Kosten.
Niemals erlaubt, ob geteilt oder nicht, sind Überschneidungen:
-
auf demselben Kost2 oder, wenn keiner der beiden Zeitberichte einen Kost2 hat, auf demselben Strukturelement,
-
innerhalb desselben Projekts,
-
innerhalb derselben Überlappungsgruppe: Die Administration kann unter Administration > Konfiguration Gruppen von Kost2 festlegen (Überlappungsgruppen für Zeitberichte, z. B.
6für alle Kost2 6.*); jede Gruppe zählt wie ein Projekt.
Überlappende Zeit wird in Anwesenheit, Statistiken und im Monatsbericht anteilig gezählt: z. B. zählen 1 Stunde auf Projekt A plus eine überlappende Stunde auf Projekt B je 0,5 Stunden. Für den Aufwand eines Projekts (z. B. Abrechnung und Projektexporte) zählt jeder Zeitbericht mit seiner vollen Dauer.
Ist ein Strukturelement geschützt, lassen sich weiterhin Felder ändern, die keine finanziellen Parameter betreffen (etwa Beschreibung und Ort, nicht aber Zeiten oder Kostenträger). Tippfehler usw. in Zeitberichten lassen sich also korrigieren.
9. Zeitberichte
Zeitberichte werden im Kalender oder unter Projektmanagement > Zeitberichte gebucht.
9.1. Vorlagen und letzte Einträge
Über dem Bearbeitungsformular eines Zeitberichts befinden sich die Vorlagen und die Zuletzt verwendet-Einträge. Sie übernehmen, was gebucht wurde (Strukturelement, Kostenträger, Ort, Beschreibung usw.), nicht aber die Zeit. Häufig gebuchte Zeitberichte lassen sich als benannte Vorlagen speichern.
9.2. Schutz
Zeitberichte lassen sich für Strukturelemente (einschließlich aller untergeordneten Strukturelemente) nach
Datum schützen. Dieser Schutz stellt sicher, dass niemand Zeitberichte mit einem Datum vor dem Ende des
Schutzes (Zeitberichtsschutz bis) ändern kann.
Das ist sinnvoll, wenn die Zeitberichte abgerechnet oder von anderen Buchhaltungssystemen übernommen
wurden. Zeitberichte mit einem Datum vor dem Schutzdatum können nur von Mitgliedern der Finanzbuchhaltung
geändert werden (was Zeiten und Kostenzuweisungen betrifft).
9.3. Kostenträger
-
Einem Strukturelement lassen sich Projekte und/oder Kost2 zuordnen.
-
Ist ein Projekt zugeordnet, werden alle vorhandenen Kost2 dieses Projekts automatisch diesem Strukturelement zugeordnet.
-
Ist einem Strukturelement weder ein Projekt noch ein Kostenträger zugeordnet, gelten alle Einstellungen des übergeordneten Strukturelements. Findet sich dort keine solche Einstellung, wird das darüberliegende Element verwendet usw.
-
Verwendet werden nur Kostenträger ohne Status oder mit dem Status 'aktiv'.
Ist einem Strukturelement (direkt oder abgeleitet) ein Kost2 zugeordnet, muss beim Buchen von Zeitberichten ein passender Kostenträger gewählt werden.
Hinweis
Fehlen Kostenträger, lassen sie sich über die Bearbeitungsseite des Projekts hinzufügen (mit Status 'aktiv').
Sollen Kostenträger deaktiviert werden, lässt sich ihr Status auf 'nicht aktiv' oder 'beendet' setzen, oder sie werden über die Negativ- oder Positivliste des Strukturelements entfernt.
9.4. Monatsbericht
Der Monatsbericht (Projektmanagement > Monatsbericht) fasst die Zeitberichte einer Person für einen Monat zusammen, ebenso die Arbeitstage und Urlaubstage ohne Zeitberichte. Er steht auch als PDF mit Feldern für die Unterschriften der Person und der Projektleitung zur Verfügung.
9.5. Meine Statistiken
Projektmanagement > Meine Statistiken vergleicht die gebuchten Stunden mit den Sollstunden und zeigt, wie zeitnah die Zeitberichte gebucht werden. Zeitnahes Buchen der Zeitberichte ist für ein erfolgreiches Projektmanagement unerlässlich!
9.6. JIRA-Unterstützung
JIRA-Issues werden unterstützt, sofern die Administration dies konfiguriert hat. Enthalten der Tätigkeitsbericht oder die Referenz von Zeitberichten JIRA-Issue-Schlüssel, werden diese als Links auf das konfigurierte JIRA-System angezeigt.
9.7. Kostenträgerrechnung
9.7.1. Arbeitszeitanteil
Für einzelne Kost2 oder Kost2-Arten lässt sich ein Anteil konfigurieren (Standard ist 1). Beispiel: Soll Reisezeit nur zur Hälfte als Arbeitszeit zählen, wird der Anteil auf 0,5 gesetzt. Der Monatsbericht berücksichtigt diesen Anteil.
10. Auftragsbuch
Angebote und Aufträge werden im Auftragsbuch verwaltet. Sie lassen sich Projektleitungen zuordnen, die dann Zugriff auf ihre Aufträge und Angebote haben. Mitglieder der Verwaltung können Zugriff auf alle Aufträge haben, wenn sie das entsprechende Recht besitzen (siehe Benutzerverwaltung von ProjectForge®).
-
Aufträge enthalten Positionen (Auftragsart, Zahlungsart, Personentage, Nettosumme, Leistungszeitraum, Strukturelement usw.) und optional einen Zahlungsplan.
-
Nur die Finanzbuchhaltung kann Positionen und Zahlungspläne als vollständig abgerechnet markieren.
-
Das Exportmenü bietet einen Forecast der gefilterten Aufträge als Excel-Datei. Weitere Statistiken wie Forecast und Deckungsbeitrag stehen unter Fibu > Statistiken zur Verfügung (bzw. unter Projektmanagement > Statistiken für Benutzer ohne Fibu-Menü).
10.1. E-Mail-Benachrichtigung
Beim Speichern eines Auftrags können die Ansprechpersonen und alle am Auftrag beteiligten Benutzer (sofern sie Zugriff darauf haben) per E-Mail mit einem Link auf den Auftrag benachrichtigt werden. Wird E-Mail-Benachrichtigung versenden? abgewählt, unterbleibt die Benachrichtigung.
11. Finanzbuchhaltung mit ProjectForge®
11.1. Rechnungen
ProjectForge® unterstützt die Verwaltung von Ausgangs- und Eingangsrechnungen (Debitoren und Kreditoren):
-
Rechnungen können beliebig viele Positionen enthalten.
-
Ist das Kostenmodul konfiguriert, lässt sich der Betrag jeder Position einem oder beliebig vielen Kostenträgern zuordnen.
-
Rechnung exportieren erzeugt aus einer gespeicherten Rechnung ein Word-Dokument auf Basis der Rechnungsvorlage des Unternehmens.
11.1.1. Zuordnung von Kostenträgern
Für ein besseres Verständnis empfiehlt es sich, diese Funktion einfach auszuprobieren.
Positionen von Rechnungen lassen sich Kost1 und Kost2 zuordnen (Kostzuweisungen). Eine
Autovervollständigung hilft, die Kostenträger sehr schnell zu finden. Eingegeben werden können sowohl
Nummern von Kostenträgern als auch Text (z. B. die Beschreibung, der Kunde oder die Art eines
Kostenträgers).
Beliebig viele Zuordnungen werden unterstützt. Der Betrag lässt sich als Betrag oder als Prozentwert
angeben (z. B. 10%). ProjectForge® hebt Positionen hervor, deren Betrag noch nicht vollständig zugeordnet
ist (Kostzuweisungfehlbetrag).
Bereits gespeicherte Positionen und Zuordnungen werden zunächst als gelöscht markiert und lassen sich bis zum Speichern der Rechnung wiederherstellen.
11.1.2. Klonen und Stornieren
Vorhandene Rechnungen lassen sich klonen, um neue Rechnungen schneller zu erfassen:
-
Das Datum wird durch 'heute' ersetzt, die Fälligkeiten werden aus den Zahlungsbedingungen neu berechnet.
-
Die Positionen und alle vorhandenen Kostenzuweisungen werden kopiert.
-
Die Rechnungsnummer wird beim Speichern vergeben. Zahlungsdaten und Anhänge werden nicht kopiert.
Storno erzeugen bereitet für eine Ausgangsrechnung eine Stornorechnung mit negierten Beträgen vor. Beim Speichern erhält die ursprüngliche Rechnung den Status storniert.
11.2. E-Rechnungen (XRechnung und ZUGFeRD)
Ausgangsrechnungen lassen sich als elektronische Rechnungen exportieren (sofern die Administration die Verkäuferdaten konfiguriert hat):
-
Speichern und XRechnung speichert die Rechnung, validiert sie und lädt sie als XRechnung (XML) herunter.
-
Speichern und ZUGFeRD erzeugt eine ZUGFeRD-Rechnung (PDF/A-3 mit eingebettetem XML, Profil EN16931). Grundlage ist das hochgeladene Rechnungs-PDF oder, falls keines hochgeladen ist, das aus der Word-Vorlage erzeugte PDF.
Fehlende Daten (z. B. die Adresse des Kunden oder die Bankverbindung des Verkäufers) werden vor dem Export gemeldet. Aus Konto ergänzen übernimmt die E-Rechnungsdaten aus dem Konto des Kunden.
Nach dem Export prüft der E-Rechnungs-Checker die erzeugte Datei automatisch. Ein Dialog meldet, ob sie gültig ist, Warnungen oder Fehler enthält; die Datei wird in jedem Fall heruntergeladen.
Der E-Rechnungs-Checker (Fibu > E-Rechnungs-Checker) zeigt den Inhalt beliebiger ZUGFeRD-PDF- oder XRechnung-XML-Dateien an (Verkäufer, Käufer, Positionen, Beträge, Anhänge) und prüft die wichtigsten Pflichtfelder. Eine vollständige offizielle Validierung ersetzt er nicht.
11.3. Kreditorenrechnungen
Kreditorenrechnungen lassen sich aus DATEV-CSV-Exporten importieren (Kreditorenrechnungen hochladen in der Liste der Kreditorenrechnungen). Der Hilfetext auf der Importseite beschreibt die erwarteten DATEV-Exporte. Wie bei allen Importen von ProjectForge® wird die Vorschau geprüft (neue, geänderte, unveränderte und fehlerhafte Einträge), die Einträge ausgewählt und übernommen.
Überweisungen exportieren erzeugt für eine oder mehrere Kreditorenrechnungen eine SEPA-Überweisungsdatei (pain.001).
11.4. Bankkonten
Unter Fibu > Bankkonten werden die eigenen Bankkonten verwaltet und ihre Umsätze aus CSV-Dateien importiert. Die Spaltenzuordnung wird je Bankkonto konfiguriert (Importeinstellungen). Bereits importierte Umsätze werden aktualisiert, nicht dupliziert; überlappende Zeiträume lassen sich also erneut importieren.
11.5. Liquiditätsplanung / Vorschau
Auf Basis der Rechnungen und zusätzlicher Liquiditätseinträge (außer Rechnungen) lässt sich mit ProjectForge® der Cashflow sehr einfach steuern, einschließlich einer Vorschau (Reporting > Liquidität).
11.5.1. Liquiditätseinträge und Serien
Liquiditätseinträge haben ein Zahlungsdatum, einen Betrag, einen Betreff und einen Kommentar. Sie lassen sich nach Ablauf des Zahlungsdatums automatisch als bezahlt markieren.
Wiederkehrende Zahlungen wie Miete oder Leasingraten werden einmal als Serie erfasst: Diesen Eintrag als Serie wiederholen ankreuzen, das Intervall (Alle N Monate) und optional die Anzahl Raten eingeben (leer bedeutet endlos).
-
Die Vorkommen einer Serie werden automatisch angezeigt, aber nicht gespeichert.
-
Wird ein einzelnes Vorkommen geöffnet und gespeichert (z. B. um seinen Betrag zu ändern oder es als bezahlt zu markieren) oder per Massenänderung geändert oder gelöscht, wird es zu einem eigenständigen Eintrag (Fixiert), der späteren Änderungen der Serie nicht mehr folgt.
-
Bei der Änderung einer Serie wird gewählt, ob die Änderung für die ganze Serie oder ab einem bestimmten Datum gilt (Ab einem Datum ändern). Im zweiten Fall behalten frühere Vorkommen ihre Werte, und das Intervall lässt sich nicht ändern (die Fortsetzung behält das Intervall der Serie).
11.5.2. Vorschau
Die Liquiditätsvorschau zeigt den erwarteten Kontostand für die nächsten Tage (bis zu 600) ausgehend von einem Startbetrag. Ein Stichtag in der Vergangenheit erlaubt es, eine frühere Vorschau mit der tatsächlichen Entwicklung zu vergleichen. Excel-Export lädt die Vorschau mit allen Einträgen und Rechnungen herunter.
11.5.3. Berechnung der erwarteten Zahlungstermine
ProjectForge® verwendet Fälligkeiten für die Vorschau von Cashflow und Kontostand. Für Rechnungen berechnet ProjectForge® zusätzlich die erwarteten Zahlungstermine auf Basis der bezahlten Rechnungen der letzten 12 Monate, in dieser Reihenfolge:
-
Projekt: Gibt es bereits bezahlte Rechnungen für dasselbe Projekt?
-
Kundennummer: Gibt es bereits bezahlte Rechnungen für denselben Kunden (gruppiert nach der Kundennummer)?
-
Konto: Gibt es bereits bezahlte Rechnungen für dasselbe Konto?
-
Kundentext: Gibt es bereits bezahlte Rechnungen für den Kunden (vollständiger Text)?
-
Kundenkurztext: Gibt es bereits bezahlte Rechnungen für den Kunden (der Anfang des Kundentexts wird verwendet)?
Wird eine bezahlte Rechnung gefunden (beginnend beim Projekt), dient die mittlere Zahlungsdauer dieser Rechnungen (gewichtet nach Betrag) zur Berechnung des erwarteten Zahlungstermins. Für Kreditorenrechnungen gilt dasselbe.
Die Liquiditätsplanung ist ein Plugin, das bei der Einrichtung von ProjectForge® automatisch aktiviert wird; zur Verwaltung von Plugins siehe das Administrationshandbuch.
11.6. DATEV-Import
Die Konten (Kontenplan) und die Buchungssätze werden aus den Excel-Dateien importiert, die das Steuerbüro liefert (Reporting > Datev-Import). Die originale Excel-Datei (.xlsx oder .xls) kann unverändert hochgeladen werden; Auswertungsblätter wie BWA, SuSa oder USt werden ignoriert.
Die Importseite hat zwei Reiter:
-
Buchungssätze: Die Monatsblätter („01“, „02“, …, „12“) enthalten die Buchungssätze des Buchungsmonats. Hat die Datei kein Monatsblatt, wird der Monat aus dem Dateinamen übernommen (z. B.
2026-07_…). Buchungssätze mit einem Datum in einem späteren Monat werden dem Buchungsmonat zugeordnet, behalten aber ihr tatsächliches Datum. Das Kalenderjahr wird automatisch aus den Daten der Buchungssätze ermittelt. -
Kontenplan: Das Blatt "Kontenplan" (auch mit vorangestelltem Monat, z. B. "07_Kontenplan") mit den Spalten "Konto" und "Beschriftung". Importiert werden nur die Kontenbezeichnungen, vorhandene Konten werden nicht gelöscht.
Spalten werden an ihren Überschriften erkannt, ihre Reihenfolge spielt keine Rolle und zusätzliche Spalten werden ignoriert. Für die Buchungssätze werden folgende Spalten verwendet:
-
"Satz-Nr.", "Betrag", "SH", "Konto", "Gegenkonto", "Datum", "Beleg", "Text", "Menge",
-
"Kostenstelle/-träger" (oder "Kst." oder "Kost2") wird als Kost2 interpretiert,
-
"Alt.-Kst." (oder "Kost1") wird als Kost1 interpretiert,
-
"Bemerkung" (oder "Kommentar") ist optional und kann zusätzliche Informationen oder Markierungen enthalten.
Abbildung 9: |
Excel-Format für den DATEV-Import von Buchungssätzen |
Der Import läuft in denselben Schritten ab wie alle Importe von ProjectForge®:
-
Die Datei hochladen. Fehler (z. B. ein ungültiges Zahlenformat) werden mit Blatt, Zeile und Spalte angezeigt.
-
Die Vorschau zeigt die neuen, geänderten, unveränderten und fehlerhaften Buchungssätze (bei geänderten auch den bisherigen Wert) sowie die daraus resultierende betriebswirtschaftliche Auswertung (BWA).
-
Die zu übernehmenden Buchungssätze auswählen (oder Alle auswählen) und Übernehmen. Dieser Schritt lässt sich wiederholen, bis alle Buchungssätze übernommen sind.
Importierte Buchungssätze sind unter Reporting > Buchungssätze aufgeführt, einschließlich einer betriebswirtschaftlichen Auswertung (BWA) des gewählten Zeitraums.
11.7. Reporting über Report-Objectives
Unter Reporting > Report-Objectives wird eine XML-Datei mit der Beschreibung der Report-Objectives hochgeladen (oder eingefügt), ein Zeitraum gewählt und der Report erstellt. Das XML bleibt bis zum Logout erhalten. Beispiel:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<ReportObjective title="Customer ACME" id="ACME" suppressOther="true" suppressDuplicates="true">
<kost1-include>3.*</kost1-include>
<kost1-exclude>*.01</kost1-exclude>
<kost1-exclude>*.12</kost1-exclude>
<kost2-include>5.*</kost2-include>
<kost2-exclude>*.02</kost2-exclude>
<kost2-exclude>*.11</kost2-exclude>
<ReportObjective title="Project ACME-WEB-Portal" id="ACME-WEB-Portal">
<kost2-include>5.020.01.*</kost2-include>
</ReportObjective>
<ReportObjective title="Project ACME-Java-Migration" id="ACME-Java-Migration">
<kost2-include>5.020.02.*</kost2-include>
</ReportObjective>
</ReportObjective>
-
Ist eine Include-Liste leer, passen alle Buchungssätze auf diese Include-Liste (Platzhalter).
-
Ist eine Include-Liste nicht leer, muss mindestens ein Eintrag passen.
-
Bei mehreren Include-Listen muss ein Buchungssatz zu allen Include-Listen passen (logisches 'und').
-
Passt ein Buchungssatz auf mindestens einen Eintrag einer Exclude-Liste, wird er ausgeschlossen.
Zur Auswertung der regulären Ausdrücke wird die Methode String.matches(regExp) verwendet. Für ein
besseres Verständnis hilft die Ausdruckssyntax der Java-Klasse java.util.regex.Pattern. Zur
Vereinfachung verändert ProjectForge® die konfigurierten Ausdrücke vor der Verwendung automatisch: Alle
Punkte ('.') werden maskiert und der Platzhalter '' wird durch '.' ersetzt. Ein vorangestellter Apostroph
verhindert diese automatische Veränderung, z. B. wird "'^5\.510.*" nicht verändert (nur der Apostroph
selbst wird vor der Auswertung entfernt).
Beispiele:
-
"3.*" → "3\..*" (passt auf alle Zeichenketten, die mit "3." beginnen).
-
"*.02" → ".*\.02" (passt auf alle Zeichenketten, die auf ".02" enden).
-
"'^5.02.*" → "^5.02.*" (passt auf alle Zeichenketten, die mit "5", einem beliebigen Zeichen und "02" beginnen).
(Diese Ersetzungsstrategie dient der Bequemlichkeit, denn '.' bedeutet normalerweise ein beliebiges Zeichen und '' ein mehrfaches Vorkommen des Zeichens vor dem Sternchen: "3.1" passt beispielsweise auf "3x1111", aber nicht auf "3.120.08.02".)
Hinweis
Ein untergeordnetes ReportObjective kann nur aus Einträgen des übergeordneten ReportObjective bestehen (nur eine Teilmenge)!
Die Buchungssätze jedes Report-Objectives lassen sich direkt aus dem Report öffnen.
12. Scripting in ProjectForge®
In ProjectForge® lassen sich Scripte bearbeiten, speichern und ausführen (Reporting > Scriptliste), um aus der Datenbank von ProjectForge® Excel-Dateien, Diagramme usw. zu erzeugen. Scripte werden in Kotlin oder Groovy geschrieben. Ein Script-Editor mit Syntaxhervorhebung, die Liste der verfügbaren Variablen und einige Beispiele sind eingebaut.
-
Scripte können bis zu 6 Parameter definieren (z. B. Zahlen, Texte, Datumswerte, Zeiträume, Strukturelemente oder Benutzer), die vor der Ausführung abgefragt werden.
-
Zu einem Script lässt sich eine Datei hochladen (z. B. eine Excel-Vorlage), um sie zu lesen oder zu verändern.
-
Scripte lassen sich mit Benutzern und Gruppen teilen. Diese finden sie unter Projektmanagement > Meine Scripte und können sie ausführen, ohne den Quellcode zu sehen.
12.1. Beispiele
Die vordefinierten Beispielscripte vermitteln einen Eindruck davon, wie leistungsfähig das Scripting in ProjectForge® ist.
12.1.1. Beispiel: Einfache Erzeugung einer Excel-Datei
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// Simple Kotlin script
val users = userDao.list.filter { it.hasSystemAccess() }
val workbook = ExcelUtils.prepareWorkbook("Userlist.xlsx")
val sheet = workbook.createOrGetSheet("Users")
sheet.registerColumns(
"Username|20", // Title Username is also property name, length = 20
"Full name|fullname|30", // Title differs from property name
"Email|30",
"Id|10",
"Description|50",
)
sheet.createRow().fillHeadRow()
users.forEach { user ->
val row = sheet.createRow()
ExcelUtils.autoFill(row, user)
}
sheet.setAutoFilter() // optional Excel auto filter
workbook
12.1.2. Beispiel: Verwendung von ProjectForge®-Filtern
1
2
3
4
5
6
val filter = TimesheetFilter()
filter.startTime = PFDateTime.withDate(2026, Month.JANUARY, 1).utilDate
filter.stopTime = PFDateTime.withDate(2026, Month.JUNE, 30).utilDate
val list = timesheetDao.select(filter)
"Number of found time sheets: ${list.size}"
PFDateTime und PFDay verwenden standardmäßig automatisch die Zeitzone des aktuell angemeldeten Benutzers.
12.2. Zugriffsrechte (DAOs)
Auf alle Datenbankeinträge lässt sich über die DAOs (Data Access Objects) von ProjectForge® zugreifen. Die DAOs stellen sicher, dass nur Entitäten zurückgegeben werden, auf die der Benutzer Zugriff hat. Alle Entitäten ohne Zugriff des Benutzers entfernen die DAOs aus den Ergebnislisten.
12.3. Erstellung von Diagrammen
Diagramme lassen sich mit JFreeChart erstellen.
Abbildung 10: |
Beispiel für ein Script, das ein Diagramm erzeugt |
1
2
3
4
5
6
7
8
9
10
11
12
13
import org.jfree.chart.*
import org.jfree.data.general.*
import org.projectforge.export.*
DefaultPieDataset dataset = new DefaultPieDataset()
dataset.setValue("Linux", 15)
dataset.setValue("Mac", 8)
dataset.setValue("Windows", 70)
dataset.setValue("Others", 7)
JFreeChart chart = ChartFactory.createPieChart("Operating systems of our users", dataset, true, true, false)
ExportJFreeChart export = new ExportJFreeChart(chart, 800, 600)
return export
12.4. Erstellung von Zip-Archiven mit mehreren Dateien
Es lassen sich Zip-Dateien mit mehreren Dateien (Excel-Tabellen und Diagramme) erstellen. Optional kann das Archiv mit einem Passwort verschlüsselt werden.
1
2
3
4
5
6
7
8
9
10
// org.projectforge.business.scripting.ExportZipArchive and ExcelUtils are imported by default.
import org.projectforge.export.ExportJFreeChart
val zip = ExportZipArchive("my-first-archive") // File name will be: my-first-archive.zip
val workbook = ExcelUtils.prepareWorkbook("sheet.xlsx")
// ... fill the workbook, see above
zip.add("sheet.xlsx", workbook)
val chart = ExportJFreeChart(...)
zip.add("chart.png", chart)
zip
Der optionale Parameter encryptionPassword (z. B. ExportZipArchive("my-first-archive",
encryptionPassword = "…")) verschlüsselt das Archiv.
12.5. Verschachtelte und indizierte Properties
Bean-Properties lassen sich in der üblichen Notation verwenden:
1
2
sheet.propertyNames = ["user.username", "description", "startTime", "stopTime",
"kost2.kost2Art.fakturiert"]
Verschachtelte und indizierte Properties werden ebenfalls unterstützt: users[3].name oder
result.userList[0].
12.6. Import von Excel-Dateien
Abbildung 11 zeigt eine Beispieldatei.
Abbildung 11: |
Beispieldatei für einen Excel-Import |
Die zum Script hochgeladene Datei steht als Variable file (Byte-Array) zur Verfügung, ihr Name als
filename. Das folgende Groovy-Beispiel liest sie mit ExportWorkbook, das nur das .xls-Format
unterstützt.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import java.text.*
import org.projectforge.business.excel.*
NumberFormat nf = NumberFormat.getCurrencyInstance(Locale.UK)
ExportWorkbook workbook = new ExportWorkbook(file) // The file uploaded to this script.
ExportSheet sheet = workbook.getSheet("Sheet-1") // Gets sheet with the given title.
result = ""
total = 0.0
for (int i = 1; i < sheet.rows.size(); i++) {
row = sheet.getRow(i)
no = row.getCell(0).getNumericCellValue()
name = row.getCell(1).getStringCellValue()
amount = row.getCell(2).getNumericCellValue()
total += amount
result += (int)no + ". The amount of " + name + " is: " + nf.format(amount) + "\n"
}
result += "The total amount is: " + nf.format(total)
return result
Die Ausgabe lautet:
1
2
3
4
5
1. The amount of Susan is: £50.23
2. The amount of Hugo is: £17.00
3. The amount of Lisa is: £15.00
4. The amount of Mona is: £10.00
The total amount is: £92.23
13. Verschiedenes
13.1. Datentransfer
Verschiedenes > Datentransfer ist der einfache Weg, Dateien mit Kolleg:innen und externen Partnern auszutauschen:
-
Die Persönliche Box dient dazu, Dateien an einen einzelnen anderen Benutzer zu senden. Dateien werden nach 60 Tagen gelöscht.
-
Gemeinsame Bereiche sind für die zugeordneten Admins, Benutzer und Gruppen zugänglich. Beobachter werden per E-Mail über Uploads und externe Downloads benachrichtigt.
-
Ein gemeinsamer Bereich lässt sich für externe Downloads und/oder Uploads freigeben: Externe Partner erhalten einen Link und ein Passwort (beide lassen sich jederzeit erneuern).
-
Jeder Bereich hat eine Ablauffrist (z. B. 7 Tage), nach der Dateien automatisch gelöscht werden. Bei längeren Ablauffristen wird vorab über Dateien informiert, die gelöscht werden. Die maximale Dateigröße wird je Bereich konfiguriert.
-
Alles herunterladen lädt alle Dateien eines Bereichs als Zip-Archiv herunter.
13.2. CVE-Radar: Bibliotheken einer Komponente
Der CVE-Radar gleicht Schwachstellen mit den Bibliotheken einer Komponente ab. Sie werden im Inventar hochgeladen (Bibliotheken hochladen einer Komponente): eine SBOM, die Lockfiles (npm, yarn, pnpm, Composer, Cargo, Go, Python), die Ausgabe von Maven oder Gradle, Jar-Listen und die Paketlisten des Betriebssystems. Der Dialog nennt für jede davon die Datei oder den Befehl. Gelesen werden nur Namen und Versionen, nichts wird ausgeführt und die Dateien werden nicht gespeichert.
Eine Komponente hat oft mehrere davon: die Lockfile des Frontends, die Bibliotheken des Backends, die Pakete ihrer
Images. Am besten sammelt sie ein Script im Projekt (z. B. collect-libraries.sh) und packt sie in ein Zip, das so
hochgeladen wird. Läuft es in der Build-Pipeline oder vor einem Release, gehören die Listen immer zur ausgelieferten
Version, und niemand muss sie von Hand zusammensuchen. ProjectForge selbst hat dafür bin/collect-libraries.sh in
seinem Repository: ein Zip je Komponente (Backend, Frontend, App, jedes Docker-Image), wo möglich als CycloneDX. Ein
Beispiel, an die Pfade des Projekts anzupassen:
#!/usr/bin/env bash
# Sammelt die Listen der Bibliotheken für den CVE-Radar in libraries.zip.
set -euo pipefail
out="$(mktemp -d)"
trap 'rm -rf "$out"' EXIT
# Frontend: die Lockfile, so wie sie im Repository liegt.
mkdir -p "$out/frontend"
cp frontend/pnpm-lock.yaml "$out/frontend/" # oder package-lock.json, yarn.lock
# Backend: eine SBOM (am besten) oder die Ausgabe des Build-Werkzeugs.
syft dir:backend -o cyclonedx-json="$out/backend-bom.json"
# mvn -f backend dependency:list -DincludeScope=runtime -DoutputFile="$out/deps-maven.txt"
# Images: die Pakete des Betriebssystems.
for image in registry.example.org/app:1.4.2; do
name="$(basename "${image%%:*}")"
docker run --rm --entrypoint sh "$image" -c \
'cat /etc/os-release; dpkg-query -W -f "\${Package} \${Version} \${source:Package} \${source:Version}\n"' > "$out/os-$name.txt"
# Alpine: docker run --rm --entrypoint apk "$image" info -v > "$out/os-$name.txt"
done
rm -f libraries.zip
(cd "$out" && zip -qr - .) > libraries.zip
-
Aus einem Zip werden nur Dateien mit den Endungen
.json,.lock,.lockfile,.yaml,.yml,.txtoder.modgelesen, in beliebigen Verzeichnissen; das Format wird am Inhalt erkannt. Dateien und Verzeichnisse mit einem Punkt am Anfang (.npmrc,.env),gradle.properties,settings.xmlund alle anderen Dateien bleiben ungelesen, ein Zip im Zip wird nicht entpackt. -
Grenzen: 10 MB je Zip, 5 MB je Datei, 50 MB und 100 Listen aus den Zips eines Uploads.
-
Die Vorschau zeigt jede Datei des Zips mit ihrem Format und der Zahl der Bibliotheken; eine nicht erkannte Datei ist markiert, so fällt ein Fehler des Scripts auf, bevor etwas übernommen wird.
-
Mit Früher hochgeladene Bibliotheken ersetzen werden die Bibliotheken entfernt, die im Upload fehlen: immer das vollständige Zip der Komponente hochladen.
Pakete eines Container-Images. Java-Images bringen oft native Bibliotheken des Betriebssystems mit, z. B. brotli
(libbrotli1), zlib oder OpenSSL; deren Schwachstellen zeigen sich nur in der Paketliste des Images, nicht in den
Bibliotheken des Builds. Für eclipse-temurin (Ubuntu) und andere Images auf Basis von Debian oder Ubuntu:
docker run --rm --entrypoint sh eclipse-temurin:21-jre -c \
'cat /etc/os-release; dpkg-query -W -f "\${Package} \${Version} \${source:Package} \${source:Version}\n"' > os-temurin.txt
grep brotli os-temurin.txt # z. B. libbrotli1 1.1.0-2build2 brotli 1.1.0-2build2
Die Alpine-Variante (eclipse-temurin:21-jre-alpine) listet mit apk info -v, Images auf Basis von Red Hat (UBI)
mit rpm -qa. Images ohne Paketmanager (distroless, scratch) brauchen eine SBOM des Images:
syft eclipse-temurin:21-jre -o cyclonedx-json > os-temurin.json. Die Distributionen portieren Fixes zurück, ohne
die Version des Originals zu ändern; ob die installierte Version betroffen ist, sagt nur die Distribution. Mit den
Zeilen von /etc/os-release (dem Release) und dem Quellpaket jedes Pakets (openssl für libssl3) fragt CVE-Radar
die Advisories von Debian und Ubuntu, wie bei einer SBOM; eine Liste nur aus ${Package} ${Version} trifft über den
Namen des Pakets gegen die NVD, ihre Funde sind mögliche.
Wo eine Bibliothek gefunden wurde. Jede Bibliothek behält beim Hochladen die Datei, aus der sie stammt (in einem Zip
mit ihrem Pfad), und bei der SBOM eines Images die Stelle darin, z. B. image-postgres.cdx.json: /usr/local/bin/gosu.
Die Findings, die Liste der Bibliotheken und der Export zeigen sie; früher hochgeladene Bibliotheken bekommen sie mit
dem nächsten Hochladen.
Programme in einem Image. Die SBOM eines Images führt die Standardbibliothek von Go (stdlib) jedes Go-Programms
darin mit der Go-Version, mit der es gebaut wurde. Ein altes Programm (z. B. gosu in vielen Datenbank-Images) bringt
alle seither behobenen Schwachstellen der Standardbibliothek mit; eine Aktualisierung des Images oder des Programms
behebt sie alle auf einmal. Hinweise, die nur andere Betriebssysteme betreffen (z. B. Windows), treffen keine
Komponente, die unter Linux läuft, also eine mit Paketen einer Linux-Distribution.
13.3. CVE-Radar: Fall mit KI recherchieren
Einen neuen Fall zu recherchieren, mit oder ohne CVE, dauert: Was ist betroffen, wie ernst ist es, welche Version behebt es, was hilft bis dahin? Mit KI recherchieren (Liste der Fälle oder neuer Fall; nur Security-Team) bereitet diese Recherche für ein freigegebenes KI-System vor. Eine direkte Anbindung an ein KI-System gibt es nicht: Der Prompt wird dorthin kopiert, die Antwort wieder eingefügt.
-
Art (CVE oder Vorfall), die CVE-ID, falls es eine gibt, worum es geht, die Quellen (eine URL pro Zeile) und weitere Hinweise eintragen. Ist die CVE schon im NVD-Import, gehen ihre Beschreibung, CVSS, CWE und Referenzen mit in den Prompt; gibt es schon einen Fall zu ihr, verlinkt der Dialog stattdessen diesen.
-
Prompt erstellen zeigt den Prompt in einem eigenen Schritt: kopieren oder als Datei herunterladen und in ein freigegebenes KI-System geben. Jeder Schritt hat den Weg zurück, die Eingaben bleiben erhalten. Der Prompt verlangt einen JSON-Block in festem Format: Titel, Zusammenfassung, Priorität mit Begründung, Fix-Version, Workaround, Maßnahmen für Techies und Non-Techies, Freigabe für Mitarbeitende, Referenzen, betroffene Versionen, offene Fragen und Quellen. Die Bedeutung der Prioritäten P1 bis P4 steht im Prompt.
-
Die Antwort einfügen (oder ihre Datei hineinziehen). Text um den JSON-Block herum stört nicht. Die Antwort wird gegen das Format geprüft; was nicht passt, wird je Feld genannt.
-
Die Vorschau zeigt jeden Wert mit einem Kopier-Knopf und taugt so auch als Vorlage für einen bestehenden Fall. Fall anlegen legt einen neuen Fall an, mit sich selbst in Bearbeitung, und öffnet seine Akte.
-
Der Prompt verlässt ProjectForge: keine Namen interner Systeme, Kunden oder Personen, keine internen Hostnamen oder Zugangsdaten. Nur freigegebene KI-Systeme verwenden.
-
Die Antwort ist ein Vorschlag: Betroffene Versionen, offene Fragen und Quellen kommen in die Beschreibung, markiert als mit Unterstützung eines KI-Systems erstellt. Vor der Freigabe für die Mitarbeitenden alles prüfen, vor allem die Priorität und die Maßnahmen.
-
Was das KI-System nicht wissen kann, bleibt weg: Bearbeitung, Team-Prüfungen und die Behebungskriterien des Client-Agents.
-
13.4. CVE-Radar: Fall herunterladen und importieren
Als JSON herunterladen in der Akte eines Falls speichert den Fall als Datei: Art, Kennung, Titel, Beschreibung, Priorität mit Begründung, Fix-Version, Workaround, Maßnahmen, Referenzen, Freigabe für Mitarbeitende und die Behebungskriterien des Client-Agents, so wie sie gespeichert sind. Status, Bearbeitung, Bewertungen, Team-Prüfungen und die Diskussion gehören nicht dazu.
Fall importieren (Liste der Fälle oder neuer Fall; nur Security-Team) legt aus einer solchen Datei einen neuen Fall
an, z. B. um einen Fall in eine andere Instanz von ProjectForge zu übernehmen: Datei einfügen oder hineinziehen,
Vorschau prüfen, Fall anlegen. Der neue Fall ist bei einem selbst in Bearbeitung, seine Akte öffnet sich. Eine CVE,
zu der es schon einen Fall gibt, wird abgewiesen; ein Vorfall bekommt die nächste Kennung des Jahres.
Auch die Antwort einer KI auf den Prompt von Mit KI recherchieren wird angenommen, z. B. als
Datei gespeichert; beim Kopieren typografisch gewordene Anführungszeichen (“…”) werden begradigt.
13.5. CVE-Radar: Findings eines Projekts exportieren
Die offenen Findings eines Knotens im Inventar (Bereich, System, Instanz oder Komponente) und darunter lassen sich als
eine JSON-Datei exportieren: das Download-Symbol in der Zeile eines Knotens mit Findings (CVE-Radar > Systeme). Sie
enthält, was man sehen darf: je Schwachstelle die Daten der NVD (Beschreibung, CVSS, CWE, KEV, Referenzen), den Fall
des Security-Teams (Priorität, Fix-Version, Workaround, Maßnahmen) und die gefundenen Technologien mit Versionen,
Paket-URLs, ihrem Fundort und den Instanzen, in denen sie gefunden wurden. Das Dringendste steht vorn. Davor fasst
libraries die Schwachstellen je Bibliothek zusammen: ihre Anzahl, den höchsten Schweregrad und die Version, ab der
keine davon mehr zutrifft (fixVersion), sodass eine Aktualisierung als eine Aufgabe erscheint.
Ein Klick auf die Anzahl der Findings in der Zeile öffnet den Reiter Findings im Dialog des Knotens: seine offenen Findings einzeln (CVE, Fall, Instanz, Komponente, Technologie, Fundort, Treffer) mit ihren Anzahlen und einem Filter nach Sicherheit; ein Klick auf ein Finding öffnet die Akte der CVE. Bibliotheken schaltet auf eine Zeile je Bibliothek um: ihre CVEs, wie viele davon betreffen, der höchste Schweregrad, die Aktualisierung, die sie behebt, und der Fundort; ein Klick auf eine Bibliothek zeigt ihre Findings. Stammen die Bibliotheken aus mehr als einer Datei, beschränkt eine Auswahl darüber beide Ansichten auf die Findings einer Datei (oder die ohne Fundort), die Kennzahlen und Anzahlen eingeschlossen. Erneut prüfen unten gleicht die Komponenten unterhalb des Knotens erneut mit allen Schwachstellen ab, was sonst nach jedem Import und jeder Änderung von selbst geschieht (von Hand z. B. nach einer Änderung des Katalogs); die Meldung nennt, wie viele Findings neu, geändert oder entfernt sind. Darüber zeigen Kacheln die Anzahl der CVEs und ihren Schweregrad (kritisch, hoch, mittel/niedrig, aktiv ausgenutzt); dieselben Kacheln erscheinen beim Darüberfahren über die Anzahlen in der Zeile. Ein Klick auf eine Kachel filtert die Findings danach, ein Klick auf CVEs zeigt wieder alle. Die Schaltfläche Findings exportieren unten im Dialog exportiert sie.
-
Interne Namen ersetzen (vorab eingeschaltet) ersetzt Codes und Namen von Bereichen, Systemen, Instanzen und Komponenten durch neutrale (
S1,S1-I1,C1). Die Namen der Bibliotheken und Produkte bleiben stehen. -
Der Dialog hat dazu einen Prompt für ein freigegebenes KI-System, mit dem Report im Anhang: Er fragt, wie jede Schwachstelle in diesem Projekt am besten behoben wird. Ist das Projekt wirklich betroffen, welche Version behebt es und wie wird sie bei einer transitiven Abhängigkeit erzwungen (overrides, constraints, dependencyManagement), was hilft bis dahin, wie lässt sich die Behebung prüfen. Die Bewertung des Security-Teams hat Vorrang. Den Prompt kopieren oder als Datei herunterladen.
-
Die Antwort des KI-Systems ist ein Vorschlag: Versionen und Ausschnitte für die Build-Dateien vor dem Einsatz prüfen.
13.6. CVE-Radar: Ad-hoc-Prüfung von Dateien
CVE-Radar > Ad-hoc-Prüfung prüft Dateien gegen alle Schwachstellen, ohne das Inventar anzufassen. Alle mit Leserolle können sie nutzen; es wird nichts gespeichert, und das Ergebnis bleibt bei der Person, die die Prüfung gestartet hat (es wird etwa eine Stunde nach dem Ende verworfen).
-
Bis zu 10 Dateien hineinziehen oder auswählen: die Listen von Bibliotheken, die vom Upload in eine Komponente bekannt sind (Lockfiles wie
package-lock.json,yarn.lockoderpnpm-lock.yaml, SBOMs in CycloneDX oder SPDX, Ausgaben von Maven oder Gradle, Paketlisten von Containern), oder ein zip mit solchen Listen. Welche Formate es gibt und wie man sie erzeugt, steht in CVE-Radar: Bibliotheken einer Komponente; die Seite verlinkt es. -
Ein Balken je Datei zeigt, wie viele ihrer Pakete geprüft sind. Die Pakete werden mit den aus der NVD importierten Schwachstellen nach den Regeln des Inventars verglichen: Ein Treffer über CPE oder den Katalogeintrag mit Versionsbereich ist betroffen, einer über den Namen oder ohne Version nur möglicherweise betroffen. Es zählen nur die bisher importierten Schwachstellen, also die oberhalb der eingestellten Mindestbewertung.
-
Das Ergebnis listet die Schwachstellen auf, die dringendsten zuerst, mit Paket, Version und Datei. Der Fall des Security-Teams (Priorität, Fix-Version) steht dabei, wenn es einen gibt.
-
Wie bei den Findings eines Projekts lässt sich das Ergebnis als JSON herunterladen, dazu gibt es einen Prompt für ein freigegebenes KI-System, der fragt, wie jede Schwachstelle behoben wird. Namen der Dateien ersetzen (vorab eingeschaltet) macht daraus
F1,F2, … weil im Pfad oft Projektnamen stehen.
13.7. CVE-Radar: Benachrichtigungen
Benachrichtigungen richtet ein Admin als Regeln ein (Seite Benachrichtigungsregeln). Drei Regeltypen gehören zum CVE-Radar. Solange keine solche Regel existiert, wird niemand benachrichtigt; Empfänger (außer bei der Erinnerung an Teamabfragen) und Zustellung (in der App, per Mail) wählt der Admin für jede Regel.
-
Neue Befunde des CVE-Radars: Das verantwortliche Team eines betroffenen Systems (die Gruppe des Systems oder des nächsten Bereichs darüber) wird direkt benachrichtigt, nachdem der Abgleich etwas Neues gefunden hat; die Empfänger der Regel bekommen es in Kopie. Eine Regel gilt ab einem CVSS-Schweregrad (bekannt ausgenutzte Schwachstellen immer), wahlweise auch für mögliche Befunde und noch nicht bewertete Schwachstellen. Eine neue Regel beginnt mit einem Text ohne Details: Für ein System in eurer Verantwortung gibt es möglicherweise Updates, mit einem Link auf die Liste; dort entscheidet sich, wer was sehen darf. Mit den Variablen der Regel kann der Text stattdessen die Schwachstellen und Systeme nennen.
-
Veraltete Bibliothekslisten des CVE-Radars: Die Befunde einer Komponente sind nur so gut wie ihre Bibliotheksliste. Wurde die letzte Liste einer Komponente vor mehr als der angegebenen Anzahl Tage übernommen (vorab 30), werden das verantwortliche Team und die Empfänger in Kopie benachrichtigt, höchstens einmal pro Woche; die Benachrichtigung erledigt sich, sobald die Liste aktualisiert ist. Komponenten, die nie eine Liste aus einer Datei hatten, bleiben außen vor.
-
Unbeantwortete Teamabfragen eines Falls des CVE-Radars: Die Regel nennt einen Fall. Die Mitglieder, die eine seiner Teamabfragen, die jedes Mitglied beantwortet, noch nicht beantwortet haben (wie die Teamabfrage sie unter Noch nicht geantwortet auflistet), werden erinnert, höchstens einmal am Tag; wie oft, ergibt sich aus dem Zeitplan der Regel, oder sie wird von Hand ausgelöst. Nur sie werden benachrichtigt, in der Regel angegebene Empfänger werden nicht verwendet. Die Benachrichtigung erledigt sich, sobald das Mitglied geantwortet hat, und verfällt, wenn der Fall geschlossen wird.
-
Jede Person erfährt nur von den Systemen und Instanzen, die sie sehen darf.
13.8. Weitere Funktionen
-
Umfragen (Verschiedenes > Umfragen): Umfragen mit Einfachauswahl-, Mehrfachauswahl- und Textfragen erstellen (auch aus Vorlagen), Benutzer:innen und Gruppen einladen und die Ergebnisse auf der Seite oder als Excel-Datei ansehen. Wer Vollzugriff hat, bearbeitet die Umfrage, sieht alle Antworten und antwortet stellvertretend für Teilnehmer:innen.
-
Merlin-Word®-Vorlagen (Verschiedenes > Merlin-Word®-Vorlagen): Word-Dokumente wie Verträge oder Briefe aus Vorlagen mit Variablen erzeugen, auch als Serienbriefe aus einer Excel-Tabelle.
-
Lizenzen / Hardware (Verschiedenes > Lizenzen / Hardware): Softwarelizenzen, Lizenzschlüssel und ihre Nutzung verwalten.
-
Skillmatrix (Projektmanagement): eigene Fähigkeiten und Interessen bewerten und die Fähigkeiten der Kolleg:innen sehen.
14. Datenschutz
14.1. Digitale Souveränität und DSGVO
ProjectForge® läuft auf einem Server nach Wahl – dem eigenen, im eigenen Rechenzentrum oder bei einem selbst gewählten Hoster. Alle Daten bleiben dort: die Datenbank, die Dateien des Datentransfers, der Chat, die Dokumente. Nichts geht in eine Cloud des Herstellers oder Dritter, es gibt keine Telemetrie, und die Seiten laden keine Skripte, Schriften oder Bilder von anderen Hosts (die Content Security Policy verweigert sie).
Das ist hier mit digitaler Souveränität gemeint: Die eigene Organisation entscheidet, wo die Daten liegen, wer darauf zugreift, wie lange sie aufbewahrt werden und wann ProjectForge® aktualisiert wird. Der Quellcode ist offen (Open Source) und für alle prüfbar, und eine Abhängigkeit vom Anbieter entsteht nicht: Die Daten liegen in einer eigenen PostgreSQL-Datenbank.
Für die DSGVO wird die Verarbeitung personenbezogener Daten damit eine Frage der eigenen Richtlinien, ohne Auftragsverarbeiter außerhalb der eigenen Kontrolle. ProjectForge® unterstützt sie mit fein abgestuften Zugriffsrechten, der Änderungshistorie (siehe Änderungshistorie), Datenschutz durch Voreinstellungen (z. B. sehen den Grund einer Abwesenheit nur die Person selbst und HR) und Gesprächen, die niemand sonst liest (siehe Wer mitliest). Ob eine Installation die DSGVO erfüllt, hängt von ihrem Betrieb ab; ProjectForge® liefert die Mittel, keine rechtliche Bewertung.
14.2. Vertrauliche Chat-Nachrichten
Die Texte eines vertraulichen Gesprächs sind Ende-zu-Ende-verschlüsselt und werden nie gespeichert: weder in der Datenbank noch in Logdateien, Backups oder Mails (siehe Vertrauliche Gespräche (Ende-zu-Ende-verschlüsselt)).
14.3. Passwörter
Passwörter werden in der Datenbank nur als gesalzene und gepfefferte Hashes gespeichert. Direkt nach der Verwendung von Passwörtern (etwa auf der Anmeldeseite) werden alle Passwortvariablen gelöscht. Passwörter erscheinen in keinem Eintrag einer Logdatei.
14.4. Änderungshistorie
Alle Änderungen an Entitäten (Anlegen, Ändern, Löschen) werden mit Zeitstempel, dem auslösenden Benutzer und den geänderten Feldern mit altem und neuem Wert gespeichert. Die Änderungshistorie wird auf der Bearbeitungsseite einer Entität angezeigt. Einzelne spezielle Felder sind nicht Teil dieses Historienmechanismus.
14.5. Protokollierung
Zugriffsverletzungen und Aktionen von Benutzern (etwa Änderungen an Entitäten) sowie alle Fehlermeldungen werden in Logdateien gespeichert. Die Logdatei ist wichtig für die Analyse von Fehlern usw.
14.6. Telefonate und SMS
Über ProjectForge® gestartete Telefonate und versendete SMS werden protokolliert, einschließlich des Benutzers und der beteiligten Telefonnummern.
15. Glossar
Die Entwickler von ProjectForge® haben für einige Finanzbegriffe die deutsche Sprache verwendet. Heute ist Englisch die Hauptsprache der Entwicklung (für Klassen, Dokumentation usw.). Hier finden sich Übersetzungen und Beschreibungen häufig verwendeter Begriffe.
| Deutsch | Englisch | Beschreibung |
|---|---|---|
Aufgabe |
task |
Der Begriff Aufgabe wurde durch 'Strukturelement' ersetzt, weil solche Elemente nicht nur Aufgaben darstellen, sondern Kunden, Projekte, Releases, Aufgaben usw. |
Auftrag |
order |
|
Beleg |
receipt |
|
Betrag |
amount |
|
Brutto |
gross (amount) |
|
Buchungssatz |
accounting record |
Buchungssätze sind Entitäten, die aus externen Finanzsystemen importiert
werden (z. B. DATEV in Deutschland). Der empfohlene Ablauf ist, Rechnungen, Gehälter der Mitarbeitenden
usw. mit ProjectForge® zu verwalten und die Daten dann in das externe Finanzsystem zu übernehmen. Die
zurückimportierten Buchungssätze sollten mit den Daten in ProjectForge® übereinstimmen. |
BWA |
business assessment |
Begriff im Finanzmodul von ProjectForge® (betriebswirtschaftliche Auswertung). |
DATEV |
In Deutschland verbreitete Software für die Finanzbuchhaltung. ProjectForge® bietet Importschnittstellen. |
|
Datum |
date |
|
Eingangsrechnung |
incoming invoice |
Wird für Eingangsrechnungen (Kreditoren) verwendet. |
fakturiert |
invoiced |
|
Fibu |
financial administration |
Fibu ist die Abkürzung des deutschen Begriffs 'Finanzbuchhaltung'. |
Gegenkonto |
contra account |
Begriff im Finanzmodul von ProjectForge®. |
Kontenplan |
chart of accounts |
Begriff im Finanzmodul von ProjectForge®. |
Konto |
account |
Begriff im Finanzmodul von ProjectForge®. |
Kost |
cost |
Begriff im Finanzmodul von ProjectForge®. Kost1/Kost2 → cost 1/cost 2 ist die Kurzform von 'Kostenträger' (cost unit). |
Kostenträger |
cost unit |
Begriff im Finanzmodul von ProjectForge®. |
Kostenträgerart |
type of cost unit |
Begriff im Finanzmodul von ProjectForge®. Beispiele für Kostenträgerarten sind: 'Reisen', 'Akquise', 'Meetings' usw. Die Arten sind anpassbar und dienen dazu, verschiedene Kostenarten in Projekten und/oder unternehmensweit festzulegen. |
Kostenzuweisung |
cost assignment |
Begriff im Finanzmodul von ProjectForge®. Kosten wie Gehälter der Mitarbeitenden, Positionen von Rechnungen (eingehend und ausgehend) usw. werden Kostenträgern zugewiesen. |
Kunde |
customer |
|
Menge |
quantity |
|
Netto |
net (amount) |
|
Projekt |
project |
|
Rechnung |
invoice |
Wird für Ausgangsrechnungen (Debitoren) verwendet. |
Sonderurlaub |
special leave |
Urlaub, der nicht vom Urlaubskonto abgeht. |
Urlaub |
vacation, leave |