v2.18.0
20.07.2026
AKTUELL
CO₂-/ESG-Reporting für Zähler & Energie
Der bestehende Energiebericht bekommt eine CO₂-Umrechnung dazu: Zähler-Verbräuche (Strom, Gas, Fernwärme, Wasser, …) werden mit mandantenspezifischen Emissionsfaktoren in CO₂-Äquivalente umgerechnet — als Gesamtsumme, Aufschlüsselung je Medium und Gebäude sowie Jahresvergleich über bis zu drei Kalenderjahre. WICHTIG: die vorausgefüllten Emissionsfaktoren sind indikative, gerundete deutsche Richtwerte — kein testierter/geprüfter Nachhaltigkeitsbericht. Für einen belastbaren ESG-Bericht die eigenen Faktoren des Energieversorgers, Steuerberaters oder des Umweltbundesamts eintragen.
-
▸
Neue Berichtsseite Berichte → CO₂-/ESG-Reporting (/berichte/esg): Gesamt-CO₂ im gewählten Zeitraum, Aufschlüsselung je Medium und — sofern Zähler einem Gebäude zugeordnet sind — je Gebäude, plus Jahresvergleich der letzten bis zu drei Kalenderjahre (weniger, falls die Zählerstand-Historie nicht so weit zurückreicht — kein Absturz bei wenig Daten). CSV-Export im gewohnten Stil (Semikolon, UTF-8-BOM).
-
▸
Baut direkt auf der bestehenden Verbrauchsberechnung des Energieberichts auf (Zaehlerstand::verbrauchInZeitraum(), jetzt als gemeinsamer Baustein extrahiert) statt eine zweite, parallele Berechnung einzuführen.
-
▸
Neue Verwaltungsseite Administration → Emissionsfaktoren (/admin/emissionsfaktoren): je Medium (Strom, Gas, Wärme, Kälte, Wasser, Abwasser, Photovoltaik-Einspeisung) den Faktor und ein Freitextfeld „Quelle" pflegen, damit der Ursprung eines Werts im Nachhinein nachvollziehbar/prüfbar bleibt. Indikative Standardwerte (z. B. Strom ≈ 0,38 kg CO₂/kWh, Erdgas ≈ 0,20 kg CO₂/kWh, Fernwärme ≈ 0,28 kg CO₂/kWh) werden beim ersten Aufruf je Mandant automatisch angelegt — analog zu den SLA-Standardregeln aus v2.4 — und lassen sich jederzeit überschreiben.
-
▸
Einheiten-Normalisierung: da Zähler ihre Einheit frei wählen (kWh/MWh/m³/Liter), wird der Verbrauch vor der Multiplikation auf eine feste kanonische Einheit je Medium umgerechnet (Energie-Medien auf kWh, Wasser/Abwasser auf m³) — ein einziger Emissionsfaktor je Medium greift dadurch unabhängig von der am einzelnen Zähler gewählten Einheit korrekt.
-
▸
Dieselbe Rollen-Sichtbarkeitsgrenze wie der Energiebericht (Rbac-Kind „zaehler") — dabei wurde der bestehende Energiebericht, der diese Prüfung bislang nicht hatte, um dieselbe 403-Absicherung ergänzt.
-
▸
Neue automatische Prüf-Kriterien in den Deploy-Tests (Sektion „ESG/CO₂-Reporting"): automatisches Anlegen der Standardfaktoren (inkl. Idempotenz), Stichprobenrechnung Verbrauch × Faktor für zwei Medien, Admin-Override wirkt korrekt auf die Neuberechnung, CSV-Kopfzeile/Werte, Rbac-403 und Mandanten-Isolation von Faktoren und Berechnung.
v2.17.0
20.07.2026
Mandanteneigene Zusatzfelder (Custom Fields)
Jeder Mandant kann jetzt pro Entität (Geräte, Verträge, Räume, Gebäude und rund 30 weitere) eigene Felder definieren — z. B. „Interne Kostenstelle" am Gerät oder „Vertragsnummer extern" am Vertrag. Ein neu angelegtes Zusatzfeld erscheint automatisch im Anlage-/Bearbeiten-Formular und auf der Detailseite der betroffenen Entität, ganz ohne Programmieraufwand.
-
▸
Neue Verwaltungsseite /admin/zusatzfelder: Entität wählen, Feld anlegen (Label, Typ text/mehrzeiliger Text/Zahl/Dezimalzahl/Datum/Ja-Nein/Auswahl, bei Auswahl eigene Optionen, Pflichtfeld-Haken, Sortierung), bestehende Felder bearbeiten, deaktivieren oder endgültig löschen.
-
▸
Architekturentscheidung: die Anbindung sitzt einmalig zentral in der gemeinsamen CrudController-Basisklasse (Anlegen/Speichern/Anzeigen/Bearbeiten) statt in jedem der rund 30 Entitäts-Controller einzeln — jede neue wie bestehende Entität, die von dieser Basis erbt, bekommt Zusatzfelder automatisch, ohne dass ihr Controller angefasst werden muss.
-
▸
Werte werden serverseitig streng validiert: nur Felder, die für den eigenen Mandanten UND die passende Entität aktiv sind, werden angenommen — ein untergeschobener Wert für eine fremde oder erfundene Feld-ID wird verworfen. Pflichtfelder werden serverseitig geprüft, nicht nur im Browser.
-
▸
Deaktivieren blendet ein Feld aus den Formularen aus, ohne bereits erfasste Werte zu löschen; Löschen der Feld-Definition entfernt (Datenbank-Cascade) automatisch auch alle dazu gespeicherten Werte.
-
▸
Zusatzfeld-Werte werden beim Anzeigen konsequent escaped ausgegeben — kein Einfallstor für eingeschleusten HTML-/Skript-Code über selbst angelegte Feldwerte.
-
▸
Neue automatische Prüf-Kriterien in den Deploy-Tests (Sektion „Custom Fields"): Feld-Definition anlegen, Pflichtfeld-Validierung, Werte-Speicherung und -Rücklesung, Ablehnung fremder Feld-IDs, Cascade-Löschung, Mandanten-Isolation von Definitionen und Werten.
v2.16.0
20.07.2026
Echte Browser-Push-Benachrichtigungen (Web-Push)
Die Benachrichtigungsglocke bekommt einen echten Browser-Kanal dazu: wer will, erhält dieselben Meldungen (SLA-Eskalation, überfällige Wartung, ablaufende Fristen u. a.) zusätzlich als System-Benachrichtigung auf dem Gerät — auch wenn Maintainly gerade nicht geöffnet ist. Implementiert nach dem offenen Web-Push-Standard (VAPID, RFC 8292) mit Ende-zu-Ende-verschlüsselten Nachrichten (RFC 8291) — vollständig in reinem PHP, ohne zusätzliche Bibliothek.
-
▸
Neuer Umschalter „Browser-Benachrichtigungen aktivieren" unter Einstellungen: fragt die Benachrichtigungs-Berechtigung des Browsers an, registriert ein Abonnement beim vorhandenen Service Worker und speichert es serverseitig — mehrere Geräte/Browser gleichzeitig sind möglich, Deaktivieren entfernt das Abonnement wieder client- und serverseitig.
-
▸
Ein einziges VAPID-Schlüsselpaar identifiziert den Anwendungsserver gegenüber den Push-Diensten (Web-Push-Standard, nicht pro Mandant) — Erzeugung über ein Einmal-Skript, Schlüssel liegen ausschließlich in der Server-Konfiguration, niemals im Code oder in Git.
-
▸
Neuer Dienst FMP\Service\WebPush: signiertes VAPID-JWT (ES256) für die Authentifizierung gegenüber dem Push-Dienst sowie vollständige Ende-zu-Ende-Verschlüsselung der Nachricht nach RFC 8291 (ECDH-Schlüsselaustausch mit einem pro Nachricht neuen Schlüsselpaar, HKDF-Ableitung, AES-128-GCM) — reines PHP mit ext-openssl, keine Composer-Abhängigkeit.
-
▸
Der Service Worker zeigt eingehende Push-Nachrichten als System-Benachrichtigung an; ein Klick öffnet die passende Seite (z. B. die Benachrichtigungszentrale) im bereits offenen oder einem neuen Fenster.
-
▸
Nicht mehr gültige Abonnements (Browser-Daten gelöscht, Push-Dienst kennt das Gerät nicht mehr) werden automatisch anhand der Antwort des Push-Dienstes bereinigt, ohne dass jemand manuell eingreifen muss.
-
▸
Neue automatische Prüf-Kriterien in den Deploy-Tests (20 Kriterien): JWT-Struktur und -Signatur (gegen den öffentlichen Schlüssel selbst verifiziert), Verschlüsselungs-Ausgabe nach RFC-8291-Struktur, vollständiger Verschlüsseln-→-Entschlüsseln-Round-Trip, Abonnement-Verwaltung, Mandanten-/Nutzer-Isolation, automatische Bereinigung ungültiger Abonnements und die Einbindung in die bestehende Benachrichtigungs-Engine.
-
▸
Zusätzlich live gegen app.maintably.com bestätigt: Service-Worker-Auslieferung, Rendering des öffentlichen Schlüssels für echte Nutzer sowie der komplette HTTP-Pfad (echte Session, echtes CSRF-Token) für An-/Abmelden inkl. korrekter, mandantensauberer Datenbank-Persistierung. Die tatsächliche Zustellung an einen echten Browser (Notification-Berechtigung → echter Push-Dienst → Anzeige) ließ sich in dieser Sitzung mangels funktionsfähigem Browser-Automatisierungswerkzeug nicht mehr zusätzlich verifizieren — ehrlich als offener Punkt im Handbuch vermerkt, statt eine ungeprüfte Vollständigkeit zu behaupten.
v2.15.0
20.07.2026
Mehrsprachigkeit (i18n) — Grundgerüst
Neue Mehrsprachigkeits-Infrastruktur: jeder Nutzer kann im Profil zwischen Deutsch und Englisch wählen. Übersetzt sind das App-Grundgerüst (Navigation, Login, Dashboard, allgemeine Aktions-Buttons wie Speichern/Abbrechen/Löschen) sowie komplett das Tickets-Modul; weitere Module folgen schrittweise. Nicht übersetzte Texte laufen automatisch und fehlerfrei auf Deutsch weiter — es gibt keinen Fehlerfall durch fehlende Übersetzungen.
-
▸
Neues Profil-Feld „Sprache" (Deutsch/English) unter /profil — wirkt sofort nach dem Speichern, ohne Neuanmeldung.
-
▸
Architekturentscheidung: der deutsche Text selbst ist der Übersetzungsschlüssel (kein abstraktes Key-System wie "nav.dashboard") — findet FMP\Core\I18n::t() keine Übersetzung, wird der deutsche Originaltext unverändert angezeigt. Das macht das System beliebig und risikofrei erweiterbar: neue Übersetzungen sind nur ein weiterer Eintrag in Lang/en.php, ohne Views anzufassen.
-
▸
Sprachermittlung je Request nach fester Fallback-Kette: eingeloggter Nutzer (user.sprache) → Session → Browser-Accept-Language-Header → Default Deutsch.
-
▸
Vollständig übersetzt: gesamte Seitennavigation (alle Sektionen und Menüpunkte), Login-Seite, Dashboard, Tickets-Modul (Liste, Kanban-Board, Detailansicht, Anlage-Formular, Status-/Dringlichkeits-Werte) sowie die gemeinsam genutzten CRUD-Bausteine (Formular, Liste, Detailansicht) — Letzteres wirkt automatisch auf viele weitere Module, wo dieselben Aktions-Strings (Speichern, Abbrechen, Löschen, Bearbeiten, Neu, Archivieren, Suchen, Filtern …) vorkommen.
-
▸
Datumsformatierung sprachbewusst: englische statt deutsche Wochentags-/Monatsnamen, sobald „English" aktiv ist.
-
▸
Ausdrücklich noch nicht übersetzt: die meisten Fachmodule jenseits von Tickets (z.B. Wartung, Verträge, Zähler, Berichte) sowie einzelne Freitext-/Flash-Meldungen — diese bleiben bewusst und ohne Fehlerrisiko auf Deutsch, bis sie in einer der nächsten Ausbaustufen ergänzt werden.
-
▸
Neue automatische Prüf-Kriterien in den Deploy-Tests: Übersetzungs- und Fallback-Garantie von I18n::t(), Fallback-Kette (Nutzer/Session/Accept-Language/Default), Speichern + sofortige Wirkung im Profil, Isolation zwischen Nutzern, sprachbewusste Datumsformatierung.
v2.14.0
20.07.2026
Raumbuchungs-Auslastungsanalyse
Neuer Bericht auf Basis der bestehenden Raumbuchung: welche buchbaren Räume sind wie stark ausgelastet, und zu welchen Wochentagen/Stunden ist die Nachfrage am höchsten?
-
▸
Neue Berichtsseite Berichte → Raumbuchungs-Auslastung (/berichte/raumauslastung): Zeitraum-Filter (Standard letzte 30 Tage, wählbar 7/30/90 Tage oder frei per Von/Bis).
-
▸
Ranking-Tabelle je buchbarem Raum, absteigend nach Auslastung: Auslastung in %, Anzahl Buchungen, gebuchte Stunden — Top- und Bottom-Räume auf einen Blick, direkt exportierbar als CSV (Semikolon, UTF-8-BOM).
-
▸
Definition: Auslastung = gebuchte Stunden im Zeitraum ÷ verfügbare Nutzungsstunden im Zeitraum. Verfügbares Nutzungsfenster: werktags (Mo–Fr) ein fester täglicher Zeitraum, Standard 08:00–18:00 Uhr — als Fußnote direkt auf der Berichtsseite sichtbar, damit die Kennzahl nie missverstanden wird. Optional je Mandant unter Administration → Stammdaten anpassbar.
-
▸
Heatmap Wochentag × Stunde (reines HTML/CSS-Grid, keine externe Chart-Bibliothek) zeigt aggregiert über alle buchbaren Räume, welche Zeitfenster am gefragtesten sind.
-
▸
Stornierte Buchungen zählen nicht mit; nur Räume mit „buchbar" fließen ein; dieselbe Rollen-Sichtbarkeitsgrenze wie die bestehende Buchungs-Übersicht.
-
▸
Neue automatische Prüf-Kriterien in den Deploy-Tests: Stichprobenrechnung einer bekannten Buchung, Storno-Ausschluss, Ausschluss nicht-buchbarer Räume, korrekte Heatmap-Zuordnung, CSV-Kopfzeile/Zeilenzahl und Mandanten-Isolation.
v2.13.0
20.07.2026
Freier Report-Builder
Über die sieben festen Berichtsseiten hinaus lässt sich jetzt jede Auswertung selbst zusammenstellen: Entität wählen, Felder wählen, Filter setzen — Ergebnis als Tabelle ansehen oder als CSV exportieren.
-
▸
Neue Seite Berichte → Freier Report-Builder: Schritt 1 Entität wählen (zehn Kern-Entitäten: Tickets, Geräte, Räume, Gebäude, Wartungstermine, Verträge, Zähler, Budgets, Lieferanten, Dienstleister), Schritt 2 Felder per Checkbox, Schritt 3 beliebig viele Filter-Zeilen (Feld, Operator, Wert) — Operatoren passen sich automatisch dem Feldtyp an (Text: gleich/ungleich/enthält, Zahl: auch größer/kleiner, Datum: zusätzlich „zwischen").
-
▸
Ergebnis-Vorschau als Tabelle (auf 500 Zeilen begrenzt) mit direktem CSV-Export des vollständigen, ungekürzten Datensatzes — Semikolon-getrennt mit UTF-8-BOM, im selben Stil wie der Buchhaltungs-Export.
-
▸
Einmal gebaute Auswertungen lassen sich mit einem Namen speichern und über die Liste „Gespeicherte Ansichten" jederzeit erneut aufrufen oder löschen.
-
▸
Sicherheitsprinzip: jede wählbare Entität und jede wählbare Spalte wird serverseitig gegen eine feste Konfiguration geprüft — nie werden Tabellen- oder Spaltennamen direkt aus der Nutzereingabe in SQL übernommen, Filterwerte laufen ausschließlich über parametrisierte Platzhalter. Der Mandantenfilter ist in jeder erzeugten Abfrage fest verdrahtet und über keine Eingabe überschreibbar.
-
▸
Auswählbar sind nur Entitäten, die die jeweilige Rolle laut Berechtigungsmatrix ohnehin sehen darf — dieselbe Grenze wie bei der globalen Suche.
-
▸
Neue automatische Prüf-Kriterien in den Deploy-Tests: korrektes Filterergebnis, sauberer Reject nicht-whitelisted Spalten/Entitäten, CSV-Kopfzeile/Zeilenzahl, erneutes Laden gespeicherter Ansichten, Mandanten-Isolation (auch bei gezielt gewählten Filterwerten) und Berechtigungsgrenze je Rolle.
v2.12.0
20.07.2026
Zustandsbasierte Wartungsauslösung
Wartungspläne lassen sich jetzt zusätzlich zum festen Zeitintervall an einen Zähler koppeln — überschreitet der Zählerstand seit der letzten Auslösung einen Schwellwert (z.B. „alle 5.000 Betriebsstunden"), erzeugt Maintainly automatisch einen Wartungstermin. Das spielt direkt mit den IoT-Zählerstands-Feeds zusammen: ein Sensor liefert den Stand, das System erkennt selbst, wann eine Wartung fällig ist.
-
▸
Neuer Umschalter „Auslösung" am Wartungsplan: Intervall (wie bisher) oder Zählerstand — ein Plan ist immer nur das eine oder das andere, nie beides gleichzeitig.
-
▸
Bei Zählerstand-Auslösung: verknüpften Zähler und Schwellwert (Delta seit letzter Auslösung) eintragen, die Intervall-Felder werden ausgeblendet und sind nicht erforderlich.
-
▸
Der Referenzstand der letzten Auslösung wird bei Erstaktivierung automatisch auf den aktuellen Zählerstand gesetzt — kein rückwirkendes Auslösen auf Altbestand — und lässt sich bei Bedarf (z.B. Zählerwechsel) manuell zurücksetzen.
-
▸
Überschreitet der aktuelle Stand minus Referenzstand den Schwellwert, erzeugt der bestehende Benachrichtigungslauf automatisch einen Wartungstermin (Gerät, Bezeichnung, Priorität und aufgelöster Zuständiger vom Plan übernommen) sowie eine Benachrichtigung — und setzt den Referenzstand sauber zurück.
-
▸
Kein Doppel-Trigger: solange aus einem Plan bereits ein offener Wartungstermin existiert, wird kein zweiter erzeugt, selbst wenn der Zählerstand weiter steigt.
-
▸
Funktioniert unabhängig davon, ob der auslösende Zählerstand manuell erfasst oder per Sensor-Token (IoT-Ingest, v2.10) eingespielt wurde — beide Wege laufen über dieselbe Erfassungslogik.
-
▸
Fortschrittsanzeige auf der Wartungsplan-Liste und -Detailseite („3.200 / 5.000 Betriebsstunden seit letzter Wartung").
-
▸
Neue automatische Prüf-Kriterien in den Deploy-Tests für Schwellwert-Auslösung, Dedup, Zusammenspiel mit dem Sensor-Ingest und Mandanten-Isolation.
v2.11.0
20.07.2026
Buchhaltungs-Export der Ist-Kosten
Ist-Kosten aus Tickets, Wartungen und Verträgen verlassen jetzt Maintainly als Buchhaltungsunterlage — als einfaches CSV oder als DATEV-Buchungsstapel.
-
▸
Neue Verwaltungsseite Administration → Buchungskonten: jede Kosten-Kategorie (Wartung & Instandhaltung, Reparaturen, sowie alle Vertragskategorien wie Versicherung, Energielieferung, …) lässt sich einem Sachkonto und Gegenkonto zuordnen.
-
▸
Nicht zugeordnete Kategorien nutzen zuerst einen mandantenweit konfigurierbaren Standard-Fallback, ersatzweise einen fest einprogrammierten Platzhalter (Konto 4900 / Gegenkonto 1200) — nie einen Abbruch des Exports.
-
▸
Auf dem Bericht „Kosten & Budget" (Berichte → Kosten) zwei neue Export-Knöpfe mit frei wählbarem Von/Bis-Zeitraum: „CSV (allgemein)" (Semikolon-getrennt, UTF-8-BOM für Excel) und „DATEV-Buchungsstapel (CSV)".
-
▸
Der DATEV-Export ist bewusst vereinfacht: EXTF-Kopfzeile, Spaltenüberschriften und die für einen Buchungsstapel-Import unverzichtbaren Pflichtfelder (Umsatz, Soll/Haben-Kennzeichen, Konto, Gegenkonto, BU-Schlüssel, Belegdatum im Format TTMM, Buchungstext, Belegfeld 1) — Windows-1252-kodiert, wie von DATEV gefordert. Vor dem ersten Produktiveinsatz mit dem Steuerberater/der DATEV-Kanzlei abzustimmen.
-
▸
Verträge mit wiederkehrenden Kosten (monatlich/quartalsweise/halbjährlich/jährlich) werden im gewählten Zeitraum automatisch in einzelne Buchungstermine aufgelöst statt als eine pauschale Jahressumme.
-
▸
Export nur für Rollen mit Kosten-Einblick — dieselbe Berechtigungsgrenze wie der Kostenbericht selbst.
-
▸
Neue automatische Prüf-Kriterien in den Deploy-Tests für Konto-Zuordnung, Fallback-Kette, CSV-/DATEV-Spaltenformat, Betragsgenauigkeit, Zugriffsschutz und Mandanten-Isolation.
v2.10.0
20.07.2026
IoT-Zählerstands-Feeds
Zähler lesen sich jetzt selbst aus: externe Sensoren und Gateways spielen Zählerstände automatisch ein — ohne manuelle Ablesung und ohne Zugriff auf irgendetwas anderes im Mandanten.
-
▸
Neuer Ingest-Endpunkt POST /api/v1/zaehler/{id}/stand für automatisierte Zählerstands-Meldungen von Sensoren/Gateways (JSON-Body mit stand und optionalem zeitpunkt).
-
▸
Bewusst kein Zugriff über den bestehenden, mandantenweiten API-Key: jeder Zähler bekommt einen eigenen, eng gescopten Sensor-Token, der ausschließlich zum Schreiben von Ständen für genau diesen einen Zähler berechtigt — Prinzip der geringsten Berechtigung.
-
▸
Token-Verwaltung direkt auf der Zähler-Detailseite („Sensor-Anbindung"): Token erzeugen (einmalig im Klartext angezeigt), Ingest aktivieren/deaktivieren, Token jederzeit widerrufen.
-
▸
Automatisch erfasste Stände werden in den Zählerständen als „Sensor" gekennzeichnet (neue Spalte quelle) und durchlaufen dieselbe Plausibilitätsprüfung wie manuelle Ablesungen (Warnung bei Stand unter der letzten Ablesung).
-
▸
Ein falscher oder fremder Token liefert immer dieselbe Fehlermeldung — unabhängig davon, ob der Zähler existiert, der Token falsch ist oder der Ingest deaktiviert ist.
-
▸
Neue automatische Prüf-Kriterien in den Deploy-Tests für Token-Erzeugung, Zähler-Isolation, Deaktivierung und Plausibilitätsprüfung im Sensor-Pfad.
v2.9.0
20.07.2026
Öffentliches REST-API & Webhooks
Externe Systeme lesen jetzt direkt aus Maintainly und werden bei Ticket-Ereignissen aktiv benachrichtigt — ohne Polling, ohne Session-Login.
-
▸
Neues, lesendes REST-API unter /api/v1/... (Tickets, Geräte, Räume, Gebäude) — Authentifizierung per API-Key im Authorization-Header, komplett getrennt von der internen Session.
-
▸
API-Keys werden unter Administration → API-Keys erzeugt: der Klartext-Key (Format mk_live_...) wird einmalig angezeigt und danach nur gehasht gespeichert — analog zu den Recovery-Codes der Zwei-Faktor-Authentifizierung.
-
▸
Jeder Key ist fest an einen Mandanten gebunden; jede API-Abfrage ist zusätzlich zur ID auf diesen Mandanten gefiltert.
-
▸
Neues Webhook-System: bei Ticket-Erstellung, Statusänderung und SLA-Eskalation wird ein signierter JSON-POST an konfigurierte URLs gesendet (HMAC-SHA256, Header X-Maintainly-Signature).
-
▸
Webhook-Verwaltung unter Administration → Webhooks: Endpoint anlegen (URL + Ereignisse), Secret einmalig angezeigt, Zustellprotokoll der letzten Aufrufe mit Status einsehbar.
-
▸
Einfacher SSRF-Schutz: Webhook-Ziel-URLs, die auf private, interne oder Loopback-Adressen auflösen, werden beim Anlegen abgelehnt.
-
▸
Neue automatische Prüf-Kriterien in den Deploy-Tests für Key-Erzeugung, Mandanten-Isolation im API, 401-Antworten und Webhook-Zustellprotokoll.
v2.8.0
20.07.2026
Externes Dienstleister-Portal
Lieferanten und Dienstleister pflegen ihre eigenen Compliance-Nachweise jetzt selbst — ohne internen Benutzeraccount, ohne Rückfrage per E-Mail.
-
▸
Eigenes Self-Service-Portal unter /partner/login für Kontaktpersonen von Fremdfirmen — komplett getrennte Login- und Session-Schicht, unabhängig vom internen Benutzer- und Rollensystem.
-
▸
Admin richtet den Zugang auf der Lieferanten-/Dienstleister-Detailseite ein: E-Mail eintragen, ein Einmal-Passwort wird generiert und einmalig im Klartext angezeigt — analog zu den Recovery-Codes der Zwei-Faktor-Authentifizierung.
-
▸
Partner-Dashboard mit Ampel-Status der eigenen Nachweise und Anzahl offener zugewiesener Wartungstermine.
-
▸
Nachweise selbst hochladen (Art, Gültigkeit, optionale Datei) — landet in derselben Nachweis-Tabelle wie im internen Bereich, jedoch strikt auf die eigene Firma beschränkt.
-
▸
Zugewiesene Wartungstermine und dokumentierte Einweisungen einsehen (nur lesend).
-
▸
Jede Abfrage ist zusätzlich zur ID auf Mandant und eigene Partner-Zuordnung gefiltert — verhindert Zugriff auf fremde Daten durch Erraten von IDs.
-
▸
Zugang jederzeit deaktivierbar/reaktivierbar; neues Einmal-Passwort bei Bedarf.
-
▸
Neue automatische Prüf-Kriterien in den Deploy-Tests für Login, Datei-Upload, IDOR-Schutz und Mandanten-Isolation.
v2.7.0
20.07.2026
Zwei-Faktor-Authentifizierung
Konten lassen sich jetzt zusätzlich zum Passwort mit einer Authenticator-App absichern — jeder Nutzer entscheidet selbst, für sein eigenes Konto.
-
▸
TOTP-basierte Zwei-Faktor-Authentifizierung (RFC 6238): Einrichtung im Profil per QR-Code oder manuellem Schlüssel, Bestätigung mit dem ersten generierten Code.
-
▸
Acht Recovery-Codes werden bei der Aktivierung einmalig im Klartext angezeigt — jeder Code funktioniert genau einmal, falls die App nicht verfügbar ist.
-
▸
Login-Zwischenschritt: nach korrektem Passwort verlangt ein aktiviertes Konto zusätzlich den 6-stelligen Code oder einen Recovery-Code, bevor die Sitzung aufgebaut wird.
-
▸
Deaktivieren erfordert eine erneute Bestätigung per Passwort oder Code — Secret und Recovery-Codes werden dabei vollständig gelöscht.
-
▸
Neue automatische Prüf-Kriterien in den Deploy-Tests für Code-Erzeugung, Recovery-Codes und den Login-Zwischenschritt.
v2.6.0
19.07.2026
Teams, Zuständigkeits-Umtragung & Notfallhandbuch
Personalwechsel ohne Fleißarbeit und ein Handbuch für den Ernstfall: Zuständigkeiten lassen sich jetzt als Team pflegen und mit einem Klick umtragen — und jedes Gebäude bekommt sein druckbares Notfallhandbuch.
-
▸
Teams als Verantwortliche: Teams mit Leitung, Mitgliedern und Bereitschaftsnummer anlegen und überall dort eintragen, wo bisher eine Person stand — an Räumen, Geräten, Lagern, Arealen, Wartungs-, Reinigungsplänen und ISO-Checklisten.
-
▸
Personen-/Team-Vorschläge in allen Zuständigkeitsfeldern: Benutzer, Teams und bereits verwendete Namen — Mitarbeiter ohne Benutzerkonto bleiben weiterhin frei eintragbar.
-
▸
Zuständigkeits-Übersicht: wer ist wofür verantwortlich, mit Anzahl der Einträge je Bereich und Detail-Liste aller betroffenen Objekte.
-
▸
Massen-Umtragung: scheidet der Haustechniker aus oder übernimmt ein Team, wird die Person mandantenweit oder begrenzt auf Areal, Gebäude oder Etage in allen Feldern ersetzt — inklusive offener Ticket- und Wartungszuweisungen, protokolliert im Audit-Log.
-
▸
Notfallhandbuch je Gebäude: Notrufnummern, Sammelplatz, Notfallkontakte, Verantwortliche, Abschalt- und Absperrpunkte je Gewerk (mit Absperrorganen aus den Versorgungskreisen), Brandmelde- und Löschtechnik, Löschwasser, Aufzüge, Flucht- und Brandschutztüren, Lagerbereiche und Verhaltensregeln.
-
▸
Druckoptimiert: ein Klick auf „Drucken" erzeugt die Papierfassung für Brandmeldezentrale, Pforte und Sammelplatz-Aushang.
-
▸
Neue automatische Prüf-Kriterien in den Deploy-Tests für Umtragung, Scope-Grenzen und Notfallhandbuch.
v2.5.0
19.07.2026
Schaltpläne & Versorgungskreise
Wer im Störungsfall wissen muss, welche Sicherung fällt oder wo zugedreht wird, findet es jetzt in Sekunden — dokumentiert am Verteiler, sichtbar im Diagramm.
-
▸
Stromkreisverzeichnis je Verteiler: „Licht Treppenhaus an Sicherung 3/2e", „Unterverteiler 2.OG an NH-Abgang 4" — mit Schutzorgan (LS/RCD) und versorgtem Bereich.
-
▸
Gewerke-gerecht für alle Medien: Strangschema mit Absperrventilen (Wasser), Versorgungsschema mit Stellorganen (HLK), Leitungsschema mit Absperrungen (Gas/Druckluft), Melde- und Sprinklerlinien (Sicherheit).
-
▸
Kreise verknüpfen wahlweise Freitext, Räume, Geräte oder Anlagen desselben Gewerks — verknüpfte Anlagen ohne Speisung werden automatisch in die Hierarchie eingehängt.
-
▸
Diagramm-Integration: Sicherungs- und Strang-Nummern erscheinen als Labels an den Verbindungen; zusätzliche Kreis-Kanten werden gestrichelt dargestellt.
-
▸
Schnell-Info im Diagramm zeigt je Anlage die Abgänge sowie „hängt an Kreis …" inklusive Schutzorgan.
-
▸
Rückwärts-Sicht auf jeder Anlagen-Detailseite: an welchem Kreis welcher Quelle hängt dieses Objekt.
-
▸
Acht neue automatische Prüf-Kriterien in den Deploy-Tests.
v2.4.0
19.07.2026
Workflows, Wissen & Compliance
Der größte Ausbau seit dem Start: die Lücken, die Anwender an klassischen CAFM/CMMS-Systemen am häufigsten kritisieren, sind jetzt geschlossen.
-
▸
Benachrichtigungszentrale: SLA-Fristen, überfällige Wartungen, Kündigungsfristen, Mindestbestände, Eichfristen, Nachweis-Abläufe und Reinigungs-Fälligkeiten laufen automatisch als Meldungen auf — mit Glocke und Ungelesen-Zähler in der Kopfzeile.
-
▸
SLA & Eskalation: Reaktionszeiten je Dringlichkeit (pro Mandant einstellbar). Neue Tickets erhalten eine Fälligkeit; überschrittene Tickets eskalieren sichtbar.
-
▸
Ticket-Kanban-Board: Tickets per Drag & Drop durch Offen → In Bearbeitung → Warten → Abgeschlossen ziehen.
-
▸
Wissensdatenbank: Lösungen dokumentieren, in Tickets automatisch passende Artikel vorgeschlagen bekommen, abgeschlossene Tickets per Klick in Artikel überführen.
-
▸
Fremdfirmen-Compliance: Nachweise (Haftpflicht, BG, Freistellung §48b, Zertifikate) mit Ablaufüberwachung und dokumentierte Sicherheitseinweisungen je Person.
-
▸
Raumbuchung: buchbare Räume mit Konfliktprüfung reservieren und stornieren.
-
▸
Reinigungsmanagement: Reinigungspläne mit Turnus, Fälligkeitsübersicht und lückenlosen Durchführungs-Nachweisen.
-
▸
Gewährleistungs-Tracking: Garantiefristen je Gerät mit Bericht, Ablauf-Warnung und Hinweis direkt im Ticket.
-
▸
Neue öffentliche Seiten: Funktionsübersicht, News und Dokumentation; internes Handbuch in der App.
-
▸
Automatisierte Feature-Tests mit Prüfkriterien laufen vor und nach jedem Deploy.
v2.3.0
19.07.2026
Sicherheitsaudits & Begehungen
Brandschutz und Arbeitssicherheit strukturiert prüfen — mit Checklisten nach DGUV-Information 205-040, ASiG/ASR und DGUV V3.
-
▸
Begehungs-Modul mit vier Standard-Vorlagen: Brandschutzbegehung, Arbeitsschutz-Betriebsbegehung, Elektro-Sichtprüfung, Allgemeine Objektbegehung.
-
▸
Mobile Checklisten-Erfassung: je Prüfpunkt OK / Mangel / nicht zutreffend, Bemerkungen und Fotos.
-
▸
Mängel werden per Klick zu Tickets — inklusive Rückverlinkung und Nachverfolgung.
-
▸
Score je Begehung und automatische Wiedervorlage nach Intervall.
-
▸
Vollständiger Link-Audit der Anwendung: alle Serverfehler behoben.
v2.2.0
14.07.2026
GEFMA-Ausbau & App-Installation
Vier neue Verwaltungsmodule nach GEFMA 444 — und Maintainly wird installierbar.
-
▸
Vertragsmanagement: Laufzeiten, Kündigungsfristen und Kosten mit Warnung vor automatischer Verlängerung.
-
▸
Schließanlagen & Schlüssel: Ausgabe und Rückgabe mit Verfügbarkeits-Prüfung.
-
▸
Zähler & Energiecontrolling: Zählerstände erfassen, Verbräuche und Ablesungen auswerten.
-
▸
Budget & Kostenverfolgung: Ist-Kosten aus Tickets und Wartungen gegen Jahresbudgets.
-
▸
PWA: Maintainly als App installieren — mit Mandanten-Branding, Offline-Seite und Demo-Modus.
v2.1.0
07.07.2026
Berichte & Wartungskalender
Auswertungen, die Entscheidungen tragen.
-
▸
Berichte-Center mit klickbaren KPI-Karten und CSV-Export.
-
▸
Detail-Berichte: Anlagen-Bestand, Wartungs-Compliance, Ticket-Auswertung.
-
▸
Wartungskalender mit fünf Ansichten (Monat, Woche, Liste, …) und Anlagen-Verknüpfung.
v2.0.0
02.07.2026
Anhänge überall & Object Storage
Fotos und Dokumente an jeder Anlage — gespeichert in S3-kompatiblem Object Storage.
-
▸
Universelle Foto-/PDF-Anhänge für alle Anlagen-Typen mit Lightbox.
-
▸
Titelbilder direkt vom Handy aufnehmen und hochladen.
-
▸
Polymorphe Wartungspläne für jede Entität (nicht nur Geräte).
v1.5.0
28.06.2026
Karte, Bau-Modul & Sicherheits-Härtung
Vom Areal bis zum Raum: der komplette Bestand, räumlich navigierbar.
-
▸
Interaktive Leaflet-Karte: Areale zeichnen, Gebäude positionieren, Verbindungen pflegen.
-
▸
Bau-Modul: Baustellen, Bautagebuch, Bauausstattung und Mängelverfolgung.
-
▸
Auto-Geocoding und automatisches Flächen-Rollup Raum → Etage → Gebäude.
-
▸
Security-Audit umgesetzt (18 Findings), 14-Tage-Sessions, FTP-Backup-Modul.
-
▸
Audit-Log mit klickbarem Vorher/Nachher-Diff.
v1.2.0
27.06.2026
Selbstservice & eigene Domains
Jeder Mandant in Minuten startklar — unter eigener Adresse.
-
▸
Selbstregistrierung mit sofort nutzbarem Mandanten.
-
▸
Demo-Modus mit realistischem Schaufenster-Datenbestand.
-
▸
Custom Domains je Mandant inklusive automatischem TLS.
-
▸
Öffentliche Störungsmeldung per QR-Code — ohne Login.
v1.0.0
20.06.2026
Maintainly startet
Mandantenfähiges Facility Management der Bitblade Group — Gebäude, Anlagen, Tickets, Wartung.
-
▸
Multi-Mandanten-Architektur mit strikter Datentrennung und RBAC.
-
▸
Bestandsverwaltung: Gebäude, Etagen, Räume, Geräte und sechs Installations-Gewerke.
-
▸
Ticket-System mit Kommentaren, Zeiterfassung und Zuweisungen.
-
▸
Diagramm-Suite: Anlagen-Hierarchie, Netzwerk, 2D-Etagenplan, Matterport-3D.
-
▸
Single Sign-on über das Bitblade-Kundenportal.
Selbst ausprobieren?
Alle Funktionen aus dem Changelog live im Demo-Mandanten — ohne Registrierung.