Maintainly
Funktionen News Doku
DOKUMENTATION

Das Maintainly-Handbuch.

Jedes Modul erklärt — vom ersten Login bis zur SLA-Eskalation. Dieselbe Dokumentation steht angemeldeten Nutzern in der App unter „Handbuch" zur Verfügung.

🚀

Erste Schritte

Von der Registrierung zum laufenden Betrieb in vier Schritten.

Registrierung & Demo

Unter „Starten" legen Sie in zwei Minuten einen eigenen Mandanten an — ohne Kreditkarte. Wer erst schauen möchte, nutzt den Demo-Modus: ein Klick auf „Demo erkunden" öffnet einen vollständigen Beispiel-Bestand mit Gebäuden, Anlagen, Tickets und Begehungen.

Bestand anlegen

Empfohlene Reihenfolge: Gebäude anlegen → Etagen über den Etagen-Wizard erzeugen → Räume erfassen (direkt aus der Etage möglich) → Geräte und Installationen zuordnen. Flächen werden automatisch von Raum über Etage bis Gebäude aufsummiert.

Team einladen

Unter Administration → Benutzer & Rollen legen Sie Mitarbeitende an. Jede Rolle (Facility-Manager, Haustechniker, Auditor, Reinigungsteam, externe Dienstleister) sieht nur die für sie relevanten Module — auch in der globalen Suche.

App installieren

Maintainly ist eine PWA: über „Als App installieren" (Login-Seite oder Seitenleiste) landet die App mit Ihrem Firmennamen auf Handy oder Desktop.

🎫

Tickets, SLA & Kanban

Das Störungsmanagement — vom Eingang bis zur dokumentierten Lösung.

Ticket-Eingang

Tickets entstehen auf drei Wegen: intern über „+ Neues Ticket", öffentlich über das Störungsformular (auch per QR-Code am Raum oder Gerät, ohne Login) oder aus einem Begehungs-Mangel. Jedes Ticket trägt Dringlichkeit, Ort, betroffenes Gerät und optional Fotos.

SLA & Eskalation

Jede Dringlichkeit hat eine Reaktionszeit (Standard: Notfall 4 h, Hoch 24 h, Mittel 72 h, Niedrig 168 h — änderbar unter Benachrichtigungen → SLA-Einstellungen). Beim Anlegen erhält das Ticket daraus seine Fälligkeit. Wird sie überschritten, markiert Maintainly das Ticket als eskaliert, zeigt ein SLA-Badge und benachrichtigt Verantwortliche und zugewiesene Person.

Web-Push (Browser-Benachrichtigungen)

Unter Einstellungen → Browser-Benachrichtigungen lässt sich jede Meldung, die auch in der Glocke erscheint, zusätzlich als System-Benachrichtigung des Geräts empfangen — auch wenn Maintainly gerade nicht im Vordergrund oder gar nicht geöffnet ist. Technisch: der Browser fragt die Notification-Berechtigung an, registriert ein Push-Abonnement beim Service Worker und schickt es an den Server; der Server verschlüsselt jede Nachricht Ende-zu-Ende (RFC 8291) und signiert die Zustellung mit einem VAPID-Schlüssel (RFC 8292), bevor er sie an den Push-Dienst des Browsers übergibt — der Server selbst kann den Nachrichteninhalt außerhalb dieser Verschlüsselung nicht einsehen.

  • Aktivieren ist pro Gerät/Browser einzeln nötig; „Deaktivieren" entfernt das Abonnement sofort client- und serverseitig.
  • Reine PHP-Implementierung ohne Zusatzbibliothek (kein Composer) — ECDH-Schlüsselaustausch, HKDF-Ableitung und AES-128-GCM-Verschlüsselung direkt über ext-openssl.
  • Nicht mehr gültige Abonnements (z. B. Browser-Daten gelöscht) werden automatisch anhand der Antwort des Push-Dienstes entfernt, ohne dass jemand manuell aufräumen muss.
  • Verifikationsstand (ehrlich, Stand v2.16): automatisiert und grün sind JWT-Struktur/-Signatur, die Verschlüsselungs-Ausgabe nach RFC-8291-Struktur/-Länge und ein vollständiger Verschlüsseln-→-Entschlüsseln-Round-Trip (20 Kriterien in den Deploy-Tests). Live gegen app.maintably.com zusätzlich bestätigt: der Service Worker liefert den push-Listener aus, die Einstellungsseite rendert den öffentlichen Schlüssel für einen echten eingeloggten Nutzer, und der komplette HTTP-Pfad (echte Session, echtes CSRF-Token, POST-Request) legt eine Subscription korrekt in der Datenbank an und entfernt sie beim Abmelden wieder — mandantensauber. NICHT automatisiert verifiziert werden konnte die tatsächliche Ende-zu-Ende-Zustellung an einen echten Browser (also: Notification.requestPermission() → pushManager.subscribe() mit einem echten Push-Dienst wie FCM → Anzeige der Benachrichtigung), da das verfügbare Browser-Automatisierungswerkzeug in der entsprechenden Sitzung nicht nutzbar war. Vor dem ersten produktiven Einsatz sollte das einmal mit einem echten Gerät gegengeprüft werden.

Kanban-Board

Unter Tickets → Board ziehen Sie Karten per Drag & Drop zwischen Offen, In Bearbeitung, Warten und Abgeschlossen. Der Status wird sofort gespeichert; abgeschlossene Tickets bleiben 14 Tage sichtbar.

Abschluss & Wissen

Beim Abschließen dokumentieren Sie „Was wurde gemacht" mit Fotos. Aus abgeschlossenen Tickets erzeugt „Lösung als Wissensartikel speichern" mit einem Klick einen Artikel in der Wissensdatenbank.

Zeiterfassung & Kosten

Techniker starten die Stoppuhr direkt im Ticket (Start/Pause/Stopp). Ist-Kosten (Material + Fremdleistung) werden am Ticket erfasst und fließen in den Kostenbericht ein.

🛠

Wartung & Prüfungen

Wiederkehrende Arbeiten planen, durchführen, nachweisen.

Wartungspläne

Ein Wartungsplan gehört zu einer Anlage (Gerät oder jede andere Entität) und definiert Priorität, Zuständigkeit und ob die Prüfung gesetzlich vorgeschrieben ist. Über „Auslösung" legen Sie fest, wie ein Plan Termine erzeugt: Intervall (fester Zeitabstand) oder Zählerstand (siehe unten) — nie beides gleichzeitig. Aus Plänen entstehen Wartungstermine.

Zustandsbasierte Auslösung

Statt eines festen Zeitintervalls lässt sich ein Wartungsplan an einen Zähler koppeln: Zähler und Schwellwert eintragen (z. B. „alle 5.000 Betriebsstunden"). Übersteigt der Zählerstand seit der letzten Auslösung diesen Schwellwert, erzeugt Maintainly beim nächsten Benachrichtigungslauf automatisch einen Wartungstermin — mit Gerät, Bezeichnung, Priorität und aufgelöstem Zuständigen vom Plan — sowie eine Benachrichtigung, und setzt den Referenzstand sauber zurück. Das funktioniert unabhängig davon, ob der auslösende Stand manuell erfasst oder per Sensor-Token automatisch eingespielt wurde (siehe „Zähler & Energie"). Solange aus dem Plan bereits ein offener Termin existiert, wird kein zweiter erzeugt. Der aktuelle Fortschritt („3.200 / 5.000 Betriebsstunden seit letzter Wartung") wird auf der Wartungsplan-Liste und -Detailseite angezeigt; der Referenzstand lässt sich dort bei Bedarf (z. B. nach einem Zählerwechsel) manuell zurücksetzen.

Kalender

Der Wartungskalender bietet fünf Ansichten (u. a. Monat, Woche, Liste). Termine tragen Status von Geplant über Fällig/Überfällig bis Abgeschlossen; überfällige Termine erscheinen zusätzlich in der Benachrichtigungszentrale.

Durchführung

Am Termin dokumentieren Sie Durchführungsdatum, Dauer, Ergebnis (In Ordnung / Mängel / Kritisch), durchgeführte Arbeiten und festgestellte Mängel — plus Ist-Kosten für den Kostenbericht.

ISO-Checklisten

Für normbasierte Prüfungen definieren Sie Checklisten mit Prüfpunkten und Intervall; jede Prüfung wird mit Ergebnis, Mängeln und Maßnahmen historisiert.

🦺

Sicherheitsaudits & Begehungen

Brandschutz, Arbeitssicherheit und Elektro-Sichtprüfungen mit Checklisten und Mängelverfolgung.

Vorlagen

Vier Standard-Vorlagen sind vorinstalliert: Brandschutzbegehung (nach DGUV-Information 205-040), Arbeitsschutz-Betriebsbegehung (ASiG/ASR), Elektro-Sichtprüfung (DGUV V3) und Allgemeine Objektbegehung. Eigene Vorlagen legen Sie unter Begehungen → Vorlagen an — ein Prüfpunkt pro Zeile, optionaler Hinweis nach „|".

Durchführung

Eine Begehung wird geplant (Vorlage + Gebäude + Termin) und mobil durchgeführt: je Prüfpunkt OK, Mangel oder „nicht zutreffend", dazu Bemerkung und Fotos. Die Checkliste wird beim Planen eingefroren — spätere Vorlagen-Änderungen verfälschen keine laufenden Begehungen.

Mängel & Score

Jeder Mangel wird per Klick zum Ticket (Dringlichkeit Hoch) mit Rückverlinkung. Beim Abschluss berechnet Maintainly einen Score (OK-Anteil) und setzt aus dem Vorlagen-Intervall die nächste Wiedervorlage. Fällige Wiedervorlagen ohne Folgebegehung erscheinen als Warnung.

🔔

Benachrichtigungszentrale

Eine Inbox für alles, was Aufmerksamkeit braucht — automatisch erzeugt, ohne Konfigurationsaufwand.

Überwachte Bedingungen

Maintainly prüft laufend neun Bedingungen und erzeugt daraus Meldungen für Admins und Facility-Manager:

  • SLA-überfällige offene Tickets (zusätzlich an die zugewiesene Person)
  • Überfällige Wartungstermine
  • Kündigungsfristen aktiver Verträge (30 Tage Vorlauf)
  • Material unter Mindestbestand
  • Eichfristen aktiver Zähler (60 Tage Vorlauf)
  • Ablaufende oder abgelaufene Fremdfirmen-Nachweise (30 Tage Vorlauf)
  • Endende Geräte-Gewährleistungen (30 Tage Vorlauf)
  • Überfällige Reinigungspläne
  • Fällige Begehungs-Wiedervorlagen ohne Folgebegehung

Bedienung

Die Glocke in der Kopfzeile zeigt die Zahl ungelesener Meldungen. Ein Klick auf eine Meldung markiert sie als gelesen und springt direkt zum betroffenen Objekt. Identische Meldungen werden sieben Tage lang nicht wiederholt.

SLA-Einstellungen

Admins passen die Reaktionszeiten je Dringlichkeit direkt auf der Benachrichtigungsseite an — pro Mandant.

📚

Wissensdatenbank

Lösungswissen festhalten und automatisch dort anbieten, wo es gebraucht wird.

Artikel

Ein Artikel besteht aus Problem, Lösung, Kategorie und Schlagworten. Aufrufe werden gezählt, sodass die nützlichsten Artikel oben stehen.

Vorschläge im Ticket

Im Ticket-Detail schlägt Maintainly automatisch passende Artikel vor — anhand der Wörter im Ticket-Titel gegen Titel, Schlagworte und Problembeschreibung der Artikel.

Ticket → Artikel

Aus jedem abgeschlossenen Ticket erzeugt ein Klick einen Artikel: Titel und Beschreibung werden übernommen, „Was wurde gemacht" wird zur Lösung. Doppelte Artikel zum selben Ticket verhindert das System.

🛡

Fremdfirmen & Nachweise

Compliance für externe Firmen: Nachweise mit Ablaufdatum und dokumentierte Einweisungen.

Nachweise

Je Lieferant oder Dienstleister hinterlegen Sie Nachweise — Betriebshaftpflicht, BG-Unbedenklichkeitsbescheinigung, Freistellungsbescheinigung §48b EStG, Zertifikate, Sicherheitsunterweisung — jeweils mit Gültigkeitsdatum. 30 Tage vor Ablauf und bei Ablauf warnt die Benachrichtigungszentrale.

Einweisungen

Sicherheits- und Baustelleneinweisungen externer Personen werden mit Name, Thema, Datum und optionaler Gültigkeit dokumentiert — wichtig für die arbeitsschutzrechtliche Nachweispflicht beim Fremdfirmeneinsatz.

Übersicht

Die Seite Fremdfirmen & Nachweise zeigt alle Partner mit Ampel-Status (ok / läuft ab / abgelaufen); Erfassen geht dort oder direkt auf der Partner-Detailseite.

Portal-Zugang für Fremdfirmen

Auf der Detailseite eines Lieferanten oder Dienstleisters (Bereich „Portal-Zugang") legen Sie für die Kontaktperson einen Self-Service-Zugang an: E-Mail eintragen, ein Einmal-Passwort wird generiert und einmalig im Klartext angezeigt — bitte sofort notieren und sicher übermitteln, es erscheint danach nicht erneut. Ein neues Einmal-Passwort lässt sich jederzeit erzeugen, der Zugang jederzeit deaktivieren/reaktivieren.

Was die Kontaktperson im Portal sieht

Unter /partner/login meldet sich die Kontaktperson mit E-Mail und Passwort an — komplett getrennt vom internen Login, ohne Zugriff auf interne Seiten oder andere Mandanten/Partner. Im Portal: eigenes Dashboard mit Compliance-Status, eigene Nachweise hochladen/löschen (Art, Gültigkeit, optionale Datei), zugewiesene Wartungstermine und dokumentierte Einweisungen nur lesend einsehen, eigenes Passwort ändern. Ein Self-Service-Passwort-Reset per E-Mail existiert bewusst nicht (MVP) — bei Bedarf setzt der Admin ein neues Einmal-Passwort.

📅

Raumbuchung

Besprechungsräume und geteilte Flächen reservieren — ohne Doppelbelegungen.

Räume buchbar machen

Im Raum unter „Bearbeiten" die Option „Buchbar (Raumbuchung)" aktivieren. Kapazität am Raum hilft bei der Auswahl.

Buchen

Unter Raumbuchung wählen Sie Raum, Datum und Zeitraum. Überschneidet sich die Zeit mit einer bestehenden Buchung, lehnt Maintainly die Reservierung mit Angabe des Konflikts ab. Stornieren dürfen Buchende selbst sowie Admins und Facility-Manager.

Übersicht

Kommende Reservierungen erscheinen nach Tagen gruppiert — gefiltert je Raum oder gesamt; zusätzlich direkt auf der Raum-Detailseite.

Auslastungsanalyse

Unter Berichte → Raumbuchungs-Auslastung (/berichte/raumauslastung) zeigt ein Ranking je buchbarem Raum die Auslastung in Prozent, die Anzahl Buchungen und die gebuchten Stunden im gewählten Zeitraum (Standard: letzte 30 Tage, wählbar 7/30/90 Tage oder frei). Formel: Auslastung = gebuchte Stunden im Zeitraum ÷ verfügbare Nutzungsstunden im Zeitraum. Als verfügbares Nutzungsfenster gilt werktags (Mo–Fr) ein fester täglicher Zeitraum — Standard 08:00–18:00 Uhr (10 Std./Tag), unter Administration je Mandant änderbar. Nur aktive (nicht stornierte) Buchungen buchbarer Räume zählen; Buchungszeiten außerhalb des Fensters (z. B. Wochenende, Abend) fließen bewusst nicht in die Auslastung ein, damit die Kennzahl nie über 100 % steigt — die genaue Formel und das verwendete Fenster stehen als Fußnote direkt auf der Berichtsseite. Eine zweite Heatmap zeigt, über alle buchbaren Räume aggregiert, an welchen Wochentagen und Stunden die Nachfrage am höchsten ist. Die Ranking-Tabelle lässt sich als CSV exportieren; sichtbar für dieselben Rollen wie die Buchungs-Übersicht selbst.

🧹

Reinigungsmanagement

Reinigungsleistungen planen und lückenlos nachweisen.

Pläne

Ein Reinigungsplan beschreibt Leistung und Umfang je Gebäude oder Raum, den Turnus in Tagen und den ausführenden Dienstleister oder internen Verantwortlichen.

Fälligkeiten & Nachweise

Die Reinigungs-Übersicht zeigt, was heute fällig oder überfällig ist. „Dokumentieren" erfasst einen Nachweis (Erledigt / Teilweise / Nicht möglich) und verschiebt die nächste Fälligkeit um den Turnus — bei „Nicht möglich" bleibt die Fälligkeit stehen. Überfällige Pläne melden sich in der Benachrichtigungszentrale.

👥

Teams & Zuständigkeiten

Verantwortliche pflegen — als Person oder Team — und bei Personalwechsel mit einem Klick umtragen.

Teams

Unter Teams & Zuständigkeiten legen Sie Teams mit Leitung, Mitgliedern (ein Name pro Zeile, auch ohne Benutzerkonto) und Bereitschaftsnummer an. Ein Team lässt sich überall dort eintragen, wo bisher eine Person stand: an Räumen, Geräten, Lagern, Arealen, Wartungs- und Reinigungsplänen sowie ISO-Checklisten.

Zuständigkeitsfelder

Alle Verantwortlich-/Zuständig-Felder schlagen beim Tippen Benutzer, Teams und bereits verwendete Namen vor. Die Felder bleiben Freitext — Mitarbeiter ohne Benutzerkonto können also weiterhin eingetragen werden.

Übersicht

Die Übersichtsseite zeigt, wer wofür verantwortlich ist (mit Anzahl je Bereich und Kennzeichnung Team / Benutzer / ohne Account). Ein Klick auf den Namen listet alle betroffenen Objekte mit Direktlink.

Massen-Umtragung

Scheidet ein Mitarbeiter aus oder übernimmt ein Team: alten Namen, neuen Namen und Geltungsbereich wählen — gesamter Mandant, ein Areal, ein Gebäude oder eine Etage. Maintainly ersetzt den Namen in allen Zuständigkeitsfeldern des Bereichs. Haben beide Namen ein Benutzerkonto, wechseln zusätzlich offene Ticket- und Wartungszuweisungen; abgeschlossene Vorgänge bleiben unverändert. Jede Umtragung wird im Audit-Log protokolliert. Die Funktion ist Administratoren vorbehalten.

🚨

Notfallhandbuch

Für Brand, Evakuierung und Havarie: alles Wichtige je Gebäude auf Papier.

Inhalt

Das Notfallhandbuch stellt je Gebäude automatisch zusammen: Notrufnummern mit Meldeschema, Sammelplatz, Notfallkontakte und Verantwortliche, Abschalt- und Absperrpunkte je Gewerk (Hauptverteilungen, Gas- und Wasserhaupthähne — inklusive der Absperrorgane aus den Versorgungskreisen mit Raumangabe), Brandmelde- und Löschtechnik, Löschwasserzugänge, Aufzüge („im Brandfall nicht benutzen"), Flucht- und Brandschutztüren, Lagerbereiche mit Brandlasten sowie die Verhaltensregeln Alarmieren → Räumen → Löschen.

Pflege

Sammelplatz, Notfallkontakte und besondere Hinweise (Gefahrstoffe, Personen mit Einschränkungen, Zufahrten) werden am Gebäude gepflegt — Felder „Sammelplatz (Notfall)", „Notfallkontakte", „Notfall-Hinweise". Alles andere entsteht aus dem ohnehin gepflegten Bestand.

Drucken

Der Drucken-Knopf erzeugt eine aufgeräumte Papierfassung. Empfehlung: ausgedruckt an Brandmeldezentrale, Pforte und im Aushang hinterlegen und nach baulichen Änderungen neu drucken — das Stand-Datum steht auf jeder Ausgabe.

📄

Verträge, Schlüssel, Zähler, Budget

Die kaufmännischen Module — orientiert an den GEFMA-444-Katalogen.

Verträge

Wartungs-, Miet-, Versicherungs- und Dienstleistungsverträge mit Laufzeit, Kündigungsfrist und automatischer Verlängerung. Maintainly berechnet den letzten Kündigungstermin und warnt 30 Tage vorher. Der Vertragsbericht zeigt kritische und auslaufende Verträge.

Schließanlagen & Schlüssel

Schließanlagen mit ihren Schlüsseln (inkl. Exemplar-Anzahl). Bei der Ausgabe prüft das System die Verfügbarkeit; Rückgaben schließen den Vorgang. So ist jederzeit klar, wer welchen Schlüssel seit wann hat.

Zähler & Energie

Zähler je Medium (Strom, Wasser, Gas, Wärme, …) mit Standort und Eichfrist. Zählerstände werden mit Plausibilitätsprüfung erfasst (neuer Stand unter dem letzten ⇒ Warnung „Zählerwechsel?"). Der Energiebericht wertet Verbräuche im Zeitverlauf aus.

CO₂-/ESG-Reporting

Unter Berichte → CO₂-/ESG-Reporting (/berichte/esg) rechnet Maintainly dieselben Zähler-Verbräuche wie der Energiebericht mit mandantenspezifischen Emissionsfaktoren in CO₂-Äquivalente um: Gesamtsumme im gewählten Zeitraum, Aufschlüsselung je Medium und — sofern Zähler einem Gebäude zugeordnet sind — je Gebäude, sowie ein Jahresvergleich über bis zu drei Kalenderjahre (weniger, falls die Ablesehistorie nicht so weit zurückreicht). CSV-Export im gewohnten Format.

  • WICHTIG: Die vorausgefüllten Emissionsfaktoren (z. B. Strom ≈ 0,38 kg CO₂/kWh, Erdgas ≈ 0,20 kg CO₂/kWh, Fernwärme ≈ 0,28 kg CO₂/kWh, Wasser ≈ 0,30 kg CO₂/m³) sind indikative, gerundete deutsche Richtwerte — kein testierter/geprüfter Nachhaltigkeitsbericht. Für einen belastbaren ESG-Bericht bitte unter Administration → Emissionsfaktoren die tenant-eigenen Werte des Energieversorgers, Steuerberaters oder des Umweltbundesamts eintragen und im Feld „Quelle" dokumentieren.
  • Da Zähler ihre Einheit frei wählen (kWh/MWh/m³/Liter), rechnet Maintainly den Verbrauch vor der Multiplikation intern auf eine feste Einheit je Medium um (Energie-Medien auf kWh, Wasser/Abwasser auf m³) — der hinterlegte Faktor gilt dadurch unabhängig von der am einzelnen Zähler gewählten Einheit.
  • Sichtbar für dieselben Rollen wie der Energiebericht selbst (Berechtigungsmatrix, Kind „zaehler").

Sensor-Anbindung (IoT)

Auf der Zähler-Detailseite im Bereich „Sensor-Anbindung" lässt sich ein eigener Ingest-Token erzeugen — er berechtigt ausschließlich zum Schreiben von Ständen für GENAU diesen einen Zähler, im Unterschied zum mandantenweiten API-Key unter Administration → API-Keys. Der Klartext-Token wird nur einmal angezeigt; Ingest lässt sich jederzeit deaktivieren oder der Token widerrufen (ein neu erzeugter Token macht den alten automatisch ungültig). Automatisch eingespielte Stände durchlaufen dieselbe Plausibilitätsprüfung wie manuelle Ablesungen und werden als „Sensor" markiert.

  • Beispiel: curl -X POST https://app.maintably.com/api/v1/zaehler/<id>/stand -H "Authorization: Bearer ivt_…" -H "Content-Type: application/json" -d '{"stand": 12345.6}'
  • Body-Felder: stand (Pflicht, numerisch, nicht negativ) und optional zeitpunkt (ISO-8601, Default = Server-Zeitpunkt).
  • Bekannte Grenze: kein eingebautes Rate-Limiting auf dem Ingest-Endpunkt — bei Bedarf vorgelagert absichern (z.B. per Reverse-Proxy).

Budget & Kosten

Jahresbudgets je Kategorie und optional je Gebäude. Ist-Kosten aus Tickets, Wartungen und Verträgen laufen im Kostenbericht gegen die Budgets.

Buchhaltungs-Export

Auf dem Bericht „Kosten & Budget" (Berichte → Kosten) lässt sich ein frei wählbarer Zeitraum (Von/Bis) als CSV oder als DATEV-Buchungsstapel exportieren — unabhängig vom Jahresfilter des Berichts selbst. Beide Exporte fassen Ist-Kosten aus Tickets, Wartungsterminen und Verträgen zusammen; Verträge mit wiederkehrenden Kosten werden dabei in einzelne Buchungstermine (monatlich/quartalsweise/halbjährlich/jährlich ab Vertragsbeginn) statt einer Jahrespauschale aufgelöst. Der Export steht nur Rollen mit Kosten-Einblick zur Verfügung (dieselbe Berechtigung wie der Kostenbericht selbst).

  • „CSV (allgemein)": Semikolon-getrennt mit UTF-8-BOM (öffnet in Excel mit korrekten Umlauten), Spalten Datum, Beleg-Referenz, Kategorie, Kostenstelle/Gebäude, Betrag EUR, Beschreibung.
  • „DATEV-Buchungsstapel (CSV)": vereinfachter DATEV-Export — EXTF-Kopfzeile (Formatkategorie 21 „Buchungsstapel"), Spaltenüberschriften-Zeile und je Buchung die Pflichtfelder Umsatz, Soll/Haben-Kennzeichen, Konto, Gegenkonto, BU-Schlüssel (leer), Belegdatum (Format TTMM, Jahr steht im Kopf), Buchungstext und Belegfeld 1. Windows-1252-kodiert (nicht UTF-8), wie von DATEV verlangt.
  • WICHTIG: Dies ist bewusst kein vollständiger DATEV-Export — der reale Buchungsstapel kennt über 100 weitere, hier ausgelassene optionale Spalten, und Berater-/Mandantennummer im Kopf sind Platzhalter (1001/1). Vor dem ersten Produktiveinsatz unbedingt mit dem Steuerberater bzw. der DATEV-Kanzlei abstimmen und einen Testimport durchführen.
  • Konto-Zuordnung unter Administration → Buchungskonten (nur Administratoren): jede Kategorie (Wartung & Instandhaltung, Reparaturen, sowie alle Vertragskategorien wie Versicherung, Energielieferung, Reinigung, …) bekommt ein Konto und Gegenkonto zugewiesen.
  • Fallback-Logik für nicht zugeordnete Kategorien: zuerst der mandantenspezifische Datensatz mit der Kategorie „Standard (Fallback)"; ist der nicht gepflegt, ein fest einprogrammierter Platzhalter (Konto 4900 / Gegenkonto 1200, SKR03-orientiert). Der Export bricht dadurch nie ab, auch wenn eine Kategorie vergessen wurde — im DATEV-Ergebnis ist das an der Kontonummer erkennbar.
  • Beträge werden intern Cent-genau (Ganzzahl) aggregiert, um Rundungsfehler durch Fließkommazahlen zu vermeiden; die Umrechnung in EUR mit Komma erfolgt erst bei der Ausgabe.

Gewährleistung

Das Feld „Garantie bis" am Gerät speist den Gewährleistungsbericht, die Ablauf-Warnungen und den Hinweis im Ticket: Solange die Garantie läuft, zuerst den Hersteller in die Pflicht nehmen.

Material & Lager

Materialien mit Artikelnummer, Mindestbestand und Preis; Bestände je Lagerort; Bewegungen (Eingang, Ausgang, Inventur) — auf Wunsch mit Ticket-Bezug. Unterschreitet der Bestand das Minimum, entsteht eine Warnung.

📊

Berichte

Sieben feste Auswertungen für die häufigsten Fragen — plus ein freier Builder für alles andere.

Feste Berichte

Unter Berichte finden sich sieben vorgefertigte Auswertungen mit eigener Filterleiste und CSV-Export: Anlagen-Bestand, Wartung & Compliance, Tickets & Störungen, Kosten & Budget (inkl. Buchhaltungs-Export), Energie & Zähler, Verträge & Fristen und Gewährleistung.

Freier Report-Builder

Für alles, was die festen Berichte nicht abdecken, steht unter Berichte → Freier Report-Builder ein eigener Baukasten bereit. Schritt 1: Entität wählen (u. a. Tickets, Geräte, Räume, Gebäude, Wartungstermine, Verträge, Zähler, Budgets, Lieferanten, Dienstleister — nur solche, die die eigene Rolle laut Berechtigungsmatrix auch sonst sehen darf). Schritt 2: gewünschte Felder per Checkbox wählen. Schritt 3: beliebig viele Filter-Zeilen aus Feld, Operator und Wert zusammenstellen — die angebotenen Operatoren richten sich nach dem Feldtyp (Text: gleich/ungleich/enthält, Zahl: zusätzlich größer/kleiner, Datum: zusätzlich zwischen zwei Werten). Alle Filter-Zeilen werden UND-verknüpft.

  • Die Vorschau zeigt bis zu 500 Treffer als Tabelle; der Button „Als CSV exportieren" liefert den vollständigen, ungekürzten Datensatz — Semikolon-getrennt mit UTF-8-BOM, damit Excel Umlaute korrekt anzeigt.
  • Über „Speichern" lässt sich eine einmal zusammengestellte Auswertung mit einem Namen sichern; die Liste „Gespeicherte Ansichten" ruft sie jederzeit erneut auf oder löscht sie wieder — sichtbar für alle im Mandanten, nicht nur für die erstellende Person.
  • Sicherheit: Entität und Spalten werden ausschließlich gegen eine feste, serverseitige Konfiguration geprüft — es lassen sich nie beliebige Tabellen- oder Spaltennamen eingeben. Der Mandantenfilter ist in jeder Abfrage fest verdrahtet und kann über keinen Filter umgangen werden.
🏢

Bestand, Karte & Diagramme

Der technische Bestand — räumlich und grafisch navigierbar.

Hierarchie

Areale bündeln Gebäude; Gebäude enthalten Etagen (inkl. Halbgeschossen und Kategorien), Etagen enthalten Räume — auch vertikal durchgehende wie Aufzugschächte. Breadcrumbs und Kind-Listen machen die Navigation in beide Richtungen möglich; Flächen werden automatisch aufsummiert.

Karte

Die Leaflet-Karte zeigt Areale als Polygone (bei weitem Zoom als Pin), Gebäude als Marker und Verbindungen als Linien. Areale zeichnen Sie direkt auf der Karte; Adressen werden automatisch geocodiert.

Anlagen & Gewerke

Neben Geräten gibt es eigene Modelle für Elektro, Wasser/Sanitär, HLK, Medienversorgung, Sicherheitsinfrastruktur, Löschwasser, Brandabschottungen, Türen und Messinstrumente — alle mit Anhängen, Wartungsplänen und QR-Codes.

Versorgungskreise (Schaltpläne & Stränge)

Auf jeder Verteiler-/Erzeuger-Detailseite dokumentieren Sie die Abgänge — mit gewerkegerechter Terminologie:

  • Elektro: Stromkreisverzeichnis — „Licht Treppenhaus an Sicherung 3/2e (LS B16)", „Unterverteiler 2.OG an NH-Abgang 4".
  • Wasser/Sanitär: Strangschema mit Absperrorgan — im Leckagefall ist sofort klar, welches Ventil zugedreht wird.
  • HLK: Versorgungsschema mit Stellorganen (Mischventil, Klappe, Pumpe) je Heiz-/Lüftungsstrang.
  • Gas/Druckluft: Leitungsschema mit Absperrungen (z. B. Gashaupthahn).
  • Sicherheit: Melde- und Sprinklerlinien — welcher Bereich ist auf welche Linie der Zentrale aufgeschaltet.
  • Ziele sind Freitext oder verknüpft (Anlage desselben Gewerks, Raum, Gerät). Verknüpfte Anlagen ohne Speisung werden automatisch in die Hierarchie eingehängt.
  • Im Hierarchie-Diagramm erscheinen Kreis-Nummern als Labels an den Verbindungen; die Schnell-Info zeigt Abgänge und „hängt an Kreis …".

Diagramme

Vier Sichten: Anlagen-Hierarchie, Netzwerk-/Kommunikationsdiagramm, 2D-Etagenplan mit Editor (Räume positionieren) und eingebettete Matterport-3D-Rundgänge.

QR-Codes

Für Räume und Anlagen generiert Maintainly druckbare QR-Etiketten. Ein Scan öffnet — je nach Kontext — die Detailseite oder das öffentliche Störungsformular mit vorausgefülltem Standort.

🔌

API & Webhooks

Externe Systeme lesend anbinden und über Ticket-Ereignisse informieren lassen.

REST-API

Unter Administration → API-Keys erzeugen Sie einen Key (Format mk_live_...) — er wird direkt nach dem Anlegen einmalig im Klartext angezeigt, danach nur noch als Präfix. Anfragen laufen gegen /api/v1/... mit dem Header Authorization: Bearer mk_live_.... Jeder Key ist fest einem Mandanten zugeordnet; jede Antwort enthält ausschließlich dessen Daten.

Endpunkte (lesend)

GET /api/v1/tickets (Filter status, dringlichkeit; Pagination über ?limit=&offset=), GET /api/v1/tickets/{id}, GET /api/v1/geraete, GET /api/v1/raeume, GET /api/v1/gebaeude. Antworten haben die Form {"data": [...], "meta": {"count": n, "total": n, "limit": n, "offset": n}}. Fehlt der Token oder ist er ungültig/deaktiviert, antwortet das API mit HTTP 401 und {"error": "..."}.

Beispiel

curl -H "Authorization: Bearer mk_live_..." "https://app.maintably.com/api/v1/tickets?status=Offen"

Webhooks

Unter Administration → Webhooks legen Sie eine Ziel-URL mit den gewünschten Ereignissen an: ticket.created (Ticket erstellt), ticket.status_changed (Status geändert) und ticket.escalated (SLA-Eskalation). Das Secret wird beim Anlegen einmalig angezeigt.

Signatur prüfen

Jede Zustellung ist ein JSON-POST mit Header X-Maintainly-Signature: sha256=<hex> — der Hex-Wert ist HMAC-SHA256 über den rohen Body mit dem Endpoint-Secret als Schlüssel. Damit stellen Sie sicher, dass der Aufruf tatsächlich von Maintainly stammt.

Zustellung & Grenzen

Ein Zustellversuch je Ereignis, kurzer Timeout (5 Sekunden) — es gibt bewusst kein automatisches Retry. Jeder Versuch (Erfolg wie Fehlschlag) wird im Zustellprotokoll auf der Webhooks-Seite festgehalten. Ziel-URLs, die auf private, interne oder Loopback-Adressen auflösen, werden beim Anlegen abgelehnt (SSRF-Schutz); bekannte Einschränkung: ändert sich die DNS-Auflösung einer bereits akzeptierten Domain danach, wird das nicht erneut geprüft.

🧩

Zusatzfelder

Eigene Felder je Entität — ohne Programmieraufwand.

Was sind Zusatzfelder?

Standardmäßig hat jede Entität (Gerät, Vertrag, Raum, Gebäude …) einen festen Satz an Feldern. Reicht das nicht, legen Sie unter Administration → Zusatzfelder eigene Felder an — z. B. „Interne Kostenstelle" am Gerät oder „Vertragsnummer extern" am Vertrag. Ein neu angelegtes Feld erscheint automatisch im Anlage-/Bearbeiten-Formular und als eigener Abschnitt „Zusatzfelder" auf der Detailseite — sofort, ohne Entwickler-Änderung.

Für welche Entitäten?

Zusatzfelder funktionieren für alle rund 30 Stammdaten- und Bestandsentitäten: Areale, Gebäude, Etagen, Räume, Geräte, Mängel, Baustellen, Bautagebuch, Bauausstattung, Verträge, Schließanlagen, Schlüssel, Zähler, Budgets, alle Installations-Gewerke (Elektro, Wasser/Sanitär, HLK, Medienversorgung, Sicherheitsinfrastruktur, Löschwasser-Zugänge, Brandabschottungen, Türen, Messinstrumente), Lieferanten, Dienstleister, Dokumente, Wartungspläne, ISO-Checklisten, Material, Lager, Wissensartikel, Reinigungspläne und Teams. Nicht enthalten sind Tickets sowie einige polymorphe Sonderfälle (z. B. Versorgungskreise) — diese haben eigene, nicht-generische Formulare.

Feldtypen

Text, mehrzeiliger Text, Zahl, Dezimalzahl, Datum, Ja/Nein und Auswahl (eigene Optionen, eine Zeile je Option). Jedes Feld kann als Pflichtfeld markiert werden — die Prüfung läuft serverseitig beim Speichern, nicht nur im Browser. Die Sortierung bestimmt die Reihenfolge im Formular.

Verwalten

Unter Administration → Zusatzfelder wählen Sie zuerst die Entität, dann sehen Sie alle bereits angelegten Felder mit Bearbeiten-, Deaktivieren/Aktivieren- und Löschen-Aktion. Deaktivieren blendet ein Feld aus den Formularen aus, ohne bereits erfasste Werte zu löschen — nützlich, wenn ein Feld vorübergehend nicht mehr benötigt wird. Löschen entfernt die Feld-Definition endgültig; alle dazu gespeicherten Werte werden automatisch mitgelöscht.

Sicherheit

Zusatzfeld-Definitionen und -Werte sind strikt je Mandant getrennt. Beim Speichern wird jeder übermittelte Wert gegen die für den eigenen Mandanten und die passende Entität aktiven Feld-Definitionen geprüft — ein untergeschobener Wert für eine fremde oder erfundene Feld-ID wird verworfen. Werte werden beim Anzeigen immer escaped ausgegeben, sodass selbst angelegte Feldwerte kein Einfallstor für eingeschleusten HTML-/Skript-Code sind.

🔐

Plattform, Rollen & Sicherheit

Mandantenfähigkeit, Berechtigungen und Betrieb.

Mandanten

Jeder Mandant ist strikt getrennt (eigene Daten, eigene Benutzer, eigenes Branding im PWA-Manifest). Selbstregistrierung erzeugt einen sofort nutzbaren Mandanten; der Demo-Modus zeigt ein Schaufenster mit Beispieldaten.

Rollen

Vordefinierte Rollen steuern die Sichtbarkeit: Facility-Manager (alles), Auditor (lesend inkl. Compliance), Haustechniker (Technik + Lager + Buchung), Reinigungsteam (Tickets, Räume, Reinigungspläne), externe Dienstleister und Standard-Nutzer (eigene Tickets, Wissen, Buchung). Admins verwalten Benutzer, Rollen, Stammdaten und Domains.

Domains & SSO

Jeder Mandant kann eigene Domains verbinden (automatisches TLS). Single Sign-on läuft über das Bitblade-Kundenportal mit Replay-Schutz.

Zwei-Faktor-Authentifizierung

Nutzer-Opt-in im Profil: QR-Code oder manueller Schlüssel einrichten, mit einem aktuellen Code bestätigen. Danach verlangt der Login nach dem Passwort zusätzlich den 6-stelligen Code aus der Authenticator-App. Acht Recovery-Codes werden bei der Aktivierung einmalig angezeigt und funktionieren je einmal, falls die App fehlt. Deaktivieren erfordert erneut Passwort oder Code.

Mehrsprachigkeit

Jeder Nutzer wählt im Profil unter „Sprache" zwischen Deutsch und English — die Änderung wirkt sofort, ohne erneutes Anmelden. Technisch ist der deutsche Text selbst der Übersetzungsschlüssel: findet sich keine Übersetzung, erscheint automatisch der deutsche Originaltext, nie ein Fehler oder eine leere Zeichenkette.

  • Vollständig übersetzt (Stand v2.15): gesamte Navigation, Login-Seite, Dashboard, komplettes Tickets-Modul (Liste, Kanban-Board, Detailansicht, Anlage-Formular) sowie die gemeinsam genutzten CRUD-Bausteine (Formular, Liste, Detailansicht) — Letzteres übersetzt automatisch auch viele wiederkehrende Aktions-Buttons (Speichern, Abbrechen, Löschen, Bearbeiten, Neu, Archivieren, Suchen, Filtern u. a.) in anderen Modulen mit.
  • Noch nicht übersetzt: die übrigen Fachmodule (z. B. Wartung, Verträge, Zähler, Berichte, Begehungen) sowie einzelne Freitext- und Flash-Meldungen — diese bleiben bei aktiver Sprache „English" bewusst und fehlerfrei auf Deutsch stehen, bis die Übersetzung in einer der nächsten Ausbaustufen ergänzt wird.
  • Erweiterung ist rein additiv: neue Übersetzungen werden nur als weitere Einträge in der Sprachdatei ergänzt, ohne dass Views oder Controller angefasst werden müssen.

Audit & Backup

Jede Änderung landet im Audit-Log mit Vorher/Nachher-Diff. Nächtliche Backups gehen auf ein konfigurierbares FTP-Ziel; Datei-Uploads liegen in S3-kompatiblem Object Storage.

Qualitätssicherung

Vor und nach jedem Deploy laufen automatisierte Feature-Tests mit definierten Prüfkriterien für jedes Modul — von der SLA-Eskalation bis zur Buchungs-Konfliktprüfung.