betriebsrechnung.ch

Einblick hinter die Kulissen

Einblick hinter die Kulissen

Wie können innerhalb eines Monats rund 50 Betriebsrechnungen von gut zwei Dutzend Gesellschaften plausibilisiert werden? Wie kann ein Prozess, in den neben den Gesellschaften, die Vereinsleitung, das BAG, die externe Revisionsstelle und die Plausibilisierungsstelle involviert sind, übersichtlich gestaltet werden? Wie erfolgt die Plausibilisierung, wie wird die Qualität gesichert und wie wird eine intuitive Benutzung ermöglicht?
Das Portal betriebsrechnung.ch liefert eine Antwort auf all diese Fragen. Innerhalb eines Monats wird die Mehrheit der entsprechenden Arbeiten erledigt, das Portal laufend weiter entwickelt und angepasst, und alle involvierten Parteien zeitnah über den jeweils aktuellen Status und die notwendigen Arbeitsschritte informiert.
Nach Erteilung des Zugriffs isf für Benutzende nur ein aktueller Webbrowser notwendig. Und natürlich die eigene Betriebsrechnung, die vor Eingabe an das BAG plausibilisiert werden soll. Was davor, während und nach diesem einen Monat hinter den Kulissen abläuft, erfahren Sie in dieser Präsentation.
Gerne stehen wir Ihnen bei Fragen oder für einen Erfahrungs- und Ideenaustausch zur Verfügung.

Even Meier
even.meier@betriebsrechnung.ch

Erfolgreich plausibilisieren

  • Datenlieferung

    Innerhalb eines Monats gehen aktuell 43 Betriebsrechnungen von 22 Gesellschaften ein und müssen plausibilisiert werden.

  • Zeitnahes Feedback

    Üblicherweise erhält der Benutzende innert weniger Stunden ein umfassendes Feedback.

  • Konstante Qualität

    Die Qualität soll für jede Eingabe identisch sein, egal wieviel Zeit bis zur BAG Eingabe verbleibt.

Erfolgreich plausibilisieren (2)

  1. Manuell/Automatisierung

    Es braucht zwingend eine Mischung. Um die konstante Qualität sicherzustellen, soll stets danach gestrebt werden, manuell gewonnene Erkenntnisse mittels automatisierter Tests zu implementieren.

  2. Agil und DevOps

    Neue gewonnene Erkenntnisse sollen rasch auf sämtliche Betriebsrechnungen mittels kurzer Releasezyklen angewendet werden können.

Agenda


  1. Verteilte Lösung und aktueller Prozess 25'
  2. Datenmodell 15'
  3. Neuen Test entwickeln 20'

  4. DevOps 10'
  5. Nicht funktionale Features 10'

Fragen und Erwartungen

Was Sie schon immer wissen wollten

Verteilte Lösung und aktueller Prozess


Datenmodell

Single Source of Truth

Datenloch
Aufgabenstellung

Aufgaben­stellung

2'000 Zellen, ein Drittel enthalten Formeln.

Das Template kann jährlich angepasst werden.

Es gibt vier Varianten: zwei Sprachen, Fondmitglieder und Nichtmitglieder.

Ziel

Ziele

Datenherkunft ist transparent

Bearbeitungsfortschritt für alle stets einsehbar

Lösungsansatz

  • Automatisiertes Einlesen in Datenbank

    Der Einlesealgorithmus wird aufgrund einer leeren Referenzdatei automatisch für jedes Jahr kalibriert. Dabei wird festgelegt, welche Zellen Werte statt Formeln enthalten dürfen. Es braucht somit keine Codeanpassung, wenn im Template Zeilen hinzugefügt oder gelöscht werden.

  • Trennen von Original und bearbeiteten Daten

  • Open Source Library

    Apache POI ermöglicht das einfache Lesen und Schreiben von Office Dokumenten.

iPhone

Zelleninformation

Jede Zelle wird beim Hochladen eingelesen und als individueller Datensatz
mit folgenden Informationen in der Datenbank abgespeichert:

  • Referenz zur Datei
  • Referenz zum Konto/Ziffer
  • Referenz zur Spalte (NBU, BU, FV, Total)
  • Wert
  • Jahr/Vorjahr (1./2. Sheet)
iPhone

Verletzte Regeln

Nach dem Hochladen werden unmittelbar die Regeln angewendet.
Wann immer eine Regel nicht eingehalten wird, gibt es einen Eintrag in der Datenbank:

  • Begründung - muss von der Gesellschaft erfasst werden
  • Regel - auch manueller Eintrag möglich
  • Referenz zur Zelle
  • Status (ignorieren, anwenden, genehmigt)
    Ignorierte Kommentare sehen nur die Plausibilisierer. Eine Regel war zu "fein" eingestellt (false positive).
  • Meldung bei manuellem Eintrag

Die Einträge sind einsehbar unter Kommentare einsehen -> Plausibilisierungsergebnis.

Beziehungen zwischen
diesen Tabellen

Sämtliche Tabellen

Es gibt doch noch etwas mehr,
als drei Datenbanktabellen

Plausibilisierung erweitern

Grundlage von Plausibilisierungregeln sind Verordnungen,
Vorjahreserfahrungen, Vereinsleitung ...

Plausibilisierungsregeln

Regeln sollen unabhängig implementier- und ausführbar sein.
Gemeinsame Funktionalität erleichtert den Zugriff auf Datenbankeinträge.

  • Jede Regel besteht aus einem Namen, einer Beschreibung und einer Validierungsmethode.
  • Die Regeln lassen sich kategorisieren nach Anwendung
    • jede Zelle
    • explizit definierte Zelle(n)
    • Auswertung von Formelzellen
    • Berücksichtigung von Vorjahresergebnissen
  • Regeln lassen für einzelne Jahre (de-)aktivieren.

Gemeinsame Funktionalität

Einfacher Zugriff auf Datenbankeinträge ohne Kenntnis des Datenbankmodells

// collect cells for validation rule application
Collection<SheetValue> filterCells(Collection<SheetValue> cells)
// single cell (acc = line, type = column, shiftYear = sheet)
SheetValue getSheetValue(AbstractAccountingFile file, Account acc, SectionType type, int shiftYear = 0)
// (previous year/version file with a specific quality
AccountingFile getLatestAccountingFileForOrganisation(Organisation organisationToFind, int yearToFind,
                                                      AccountingFileStatus statusToFind = VALID)
Boolean isFormulaCell(SheetValue cell)
                

Rückmeldung

return [new ValidationComment(cell, name, [
        'fondsAmount': value43,
        'reservesAmount': cell.value,
        'deltaAmount': (cell.value - value43),
        'ratioDelta': (cell.value - value43) / value43])]

Einfaches Regelbeispiel

  • Vorjahresvergleich mit Threshold je Ziffer
  • Regel wird nicht länger angewendet, da sie zu viele false posivites lieferte und eine Kalibrierung nach Gesellschaftsgrösse notwendig wäre.

DevOps


Anforderungen

Nichtfunktionale Anforderungen gehen
leicht vergessen

Sicherheit

  • Registration

    zweistufig
  • Fluktuation

    Sperrung bei Inaktivität
    Freischaltlinks in Emails
  • Rollenkonzept

    Statt individuelle Rechte
  • Datei Zugriffs­berech­ti­gung

    Aufgrund der Rolle, der Gesellschaft und des Prozessstandes
  • Monitoring

    Fehlgeschlagene Logins, ungültige Zugriffsversuche
  • Verschlüsselung

    TLS 1.2, 256-Bit-Schlüssel
Erweiterbarkeit

Erweiterbarkeit

Regeln müssen einfach hinzugefügt, angepasst und deaktiviert werden können, ohne dass es Seiteneffekte geben kann. Dieses Jahr wurden zwei Regeln deaktiviert, eine reaktiviert und vier hinzugefügt.

Das Navigationskonzept muss Erweiterungen zulassen. Dieses Jahr musste der Downloadbereich neu gestaltet werden.

Das Deployment soll rasch erfolgen können, denn die Validierungsphase vor Eingabe ans BAG ist kurz.

Intuitive Bedienbarkeit

Intuitive Bedienbarkeit

Benutzende nutzen die Applikation zweimal jährlich. Die Bedienung muss einfach und klar sein. Der Benutzer muss gezielt zum nächsten Arbeitsschritt geführt werden.

Die Interoperabilität ist mit einer Webapplikation gewährleistet. Einzige Voraussetzung ist ein aktueller Browser. Das Betriebssystem spielt keine Rolle.

Performance

Performance

Die autoamtisierte Validierung einer einzelnen Betriebsrechnung dauert aktuell 65". Jede Regelanwendung wird gemessen, um Laufzeitunterschiede aufgrund von Regelanpassungen rasch feststellen zu können. Je nach Komplexität einer Regel benötigt diese 5ms bis zu 18", wenn sie bspw. auf sämtliche Zellen angewendet wird.

Es gibt einen Zielkonflikt zwischen einfacher Erweiterbarkeit und Performance.

Um die Performance zu verbessern, wird die aggregierte Betriebsrechnung neu vorbereitet und nicht erst beim Klicken auf den Downloadlink vollständig neu berechnet.

Monitoring

  • Login erfolgreich/fehlgeschlagen
  • Validierung ausgeführt
  • Herunterladen einer Datei
  • Seitenzugriff Plausibilisierungsergebnis

Automatisierte Notifikationen

Aktuelle Information ist jederzeit auch auf der Startseite einsehbar.

  • Datei mit modifizierten Formeln oder Einlesefehler
  • Datei muss plausibilisiert werden
  • Datei bereit für Regulator
  • Aggregation Entwurf und Final
  • ...

Spalte Zustellstatus basierend auf Mailserverkommunikation

Datenqualität mittels Datenbank und Prozessen sicherstellen

  • Viele Quellsysteme

    Excel, Webformular für die Kollaboration (intern, Kunden), RESTful Services zur Anbindung anderer Systeme (z.B. Wechselkurse)
  • Datenversionierung

    Bekannte Datenherkunft (automatisch erstellte Metadaten wie Zulieferer, Zeitstempel) ermöglicht gezieltes Nachfragen und Ersetzen.
  • Datenstrukturierung

    Eine explizite Datenstrukturierung ermöglicht unterschiedliche Aggregationen und Transformationen (M&A, Reorganisationen).
  • Zeitreihen und andere Reports

    Spreadsheet übergreifende Zeitreihen und 'slowly changing dimensions' (wie z.B. neue/entfernte Zeilen) sind kein Problem.
  • Kollaboration

    Interne und externe Kollaboration, dokumentierte Entscheidungen
  • reduziertes operationelles Risiko

    Automatische Visualisierung des Projektfortschritts sowie gleichbleibende Qualität verhindert unnötige Hektik (Negativ-Beispiele)

Danke

Rückmeldungen und Fragen jederzeit willkommen.

Fröhliche Grüsse,
Even Meier, Pascal Schmid, Stefan Kunz