Migration einer Legacy-Anwendung zu ASP.NET Core

Für einen Kunden haben wir die Abrechnung aus einer gewachsenen Progress-OpenEdge-Anwendung herausgelöst und mit ASP.NET Core nach Domain-Driven Design neu aufgebaut. Über eine ereignisbasierte Anbindung arbeitet das Altsystem unverändert weiter, und lange geforderte Funktionen wie Rechnungsstornos sind endlich umgesetzt.

Zeitraum
10/2023 – 08/2024
Branche / Auftraggeber
Unternehmenssoftware
Rolle
Systemarchitekt & technischer Projektleiter
Ansprechpartner mestus
Fabian Frank Fabian Frank
Aufgabe

Ein bestehendes Abrechnungssystem auf Basis von Progress OpenEdge sollte technisch modernisiert und in eine zukunftsfähige Architektur überführt werden. Kein Entwickler im Haus verstand den Abrechnungscode noch vollständig, deshalb wurden seit Jahren nur noch Kleinigkeiten angepasst und Fehler behoben. An eine Weiterentwicklung war nicht zu denken, selbst grundlegende Anforderungen wie Rechnungsstornos ließen sich nicht umsetzen.

Ziel war es, die vorhandene Legacy-Struktur abzulösen, ohne den laufenden Betrieb zu gefährden. Die neue Abrechnung musste in die bestehende Anwendung integriert werden, und die bestehenden Reports und Auswertungen in der Altanwendung mussten weiterhin nutzbar bleiben.

Vorgehensweise

Wir haben die Abrechnung als eigenständigen Bereich (Bounded Context) aus dem Altsystem herausgelöst und mit ASP.NET Core neu umgesetzt. Nach Domain-Driven Design bildet der Code die fachlichen Konzepte in der Sprache der Abrechnung ab, mit Value Objects, Aggregaten und Domain Services. Die Abrechnungsprozesse sind als einzeln testbare Workflows umgesetzt.

Stammdaten und die abzurechnenden Rechnungspositionen liest die neue Abrechnung aus der Datenbank der Altanwendung. Intern arbeitet sie mit Event Sourcing und veröffentlicht jedes fachliche Ereignis, etwa eine Rechnungslegung oder einen Storno. Daraus werden die relevanten Daten ins Altsystem zurückgeschrieben, damit Reports, Drucke und Controlling dort unverändert weiterlaufen. Stornos, die das Altsystem nicht kennt, erscheinen dort als Negativrechnung, damit die bestehenden Auswertungen stimmen. Die Anwendungslogik der neuen Abrechnung bleibt davon vollständig entkoppelt.

Zur Absicherung diente das Rechnungsjournal des Altsystems mit den Abrechnungsdaten und Ergebnissen der letzten zehn Jahre. Da sich die neue Abrechnung zunächst genauso verhalten sollte wie die alte, haben wir sie automatisiert gegen dieses Journal getestet. Anschließend liefen alte und neue Abrechnung drei Monate parallel auf einer täglich aktualisierten Kopie der Produktivdatenbank, jede Abweichung wurde geklärt.

Eingebunden ist die neue Abrechnung über eine WebView direkt in die bestehende Desktop-Anwendung. Ihre Oberfläche entspricht optisch der bisherigen, sodass die Mitarbeitenden gewohnt weiterarbeiten konnten.

Ergebnis
  • Fehler der Altsoftware aufgedeckt: Schon während der Entwicklung und später im Parallelbetrieb zeigten sich Abrechnungsfehler im Altsystem, die zuvor niemandem aufgefallen waren. In den geklärten Fällen lag die Ursache praktisch immer beim Altsystem.
  • Lange geforderte Funktionen umgesetzt: etwa Einzelrechnungslegung, Rechnungsstornos sowie Anzahlungen und Vorschussrechnungen
  • Umstellung ohne Unterbrechung: Reports, Drucke und Controlling-Anbindung laufen weiter
  • Nahtlos integriert: Die neue Abrechnung sieht aus wie das bisherige Modul. Anwender und Entwickler der Altanwendung waren beeindruckt, wie nahtlos sich eine moderne Anwendung in den Look der Altanwendung integrieren ließ.
  • Weiterentwicklung wieder möglich: Eine klare fachliche Struktur macht neue Anforderungen umsetzbar
Ausblick

Seit dem Livegang im August 2024 läuft die neue Abrechnung stabil. Wir betreuen sie weiterhin und klären Abrechnungsfragen, der Aufwand dafür ist gering. Der Kunde ist sehr zufrieden, vor allem weil seit Jahren geforderte Funktionen endlich umgesetzt werden konnten.

Weitere Projekte

06/2019 – heute
Kundenservice / Call-Center

Maßgeschneiderte CRM-Software mit KI-Unterstützung für Call-Center

Für einen Kunden aus dem Bereich Kundenservice wurde eine individuell entwickelte CRM-Lösung geschaffen, die Call-Center-Mitarbeiter im täglichen Kontakt mit Kunden optimal unterstützt. Ziel war es, zeitkritische Prozesse zu vereinfachen, Reaktionszeiten zu verkürzen und durch intelligente Automatisierung spürbare Effizienzgewinne zu erzielen.

zum Projekt
2015 – heute
Gesundheitswesen

Fachanwendung für die Versorgung Suchterkrankter

Für einen Träger der Suchthilfe haben wir eine Fachanwendung entwickelt, die sich an der Gruppenarbeit in den Einrichtungen orientiert und Dokumentation und Abrechnung zusammenführt. Neben Architektur und Umsetzung umfasste unsere Rolle die Analyse der Abläufe vor Ort und die Entwicklung eines gemeinsamen Zielbilds mit dem Kunden. Heute ist die Anwendung in der gesamten Eingliederungshilfe des Kunden im Einsatz.

zum Projekt
01/2020 – heute
Öffentlicher Sektor / Gewerbeaufsicht

Entwicklung einer Fachanwendung für den öffentlichen Sektor

Für eine öffentliche Einrichtung haben wir eine über Jahre gewachsene Fachanwendung abgelöst, mit der Behörden prüfen, ob privatwirtschaftliche Unternehmen ihren Pflichten fristgemäß nachkommen. Unsere Neuentwicklung macht die Suche über Millionen Datensätze mit einer ereignisbasierten Architektur und Elasticsearch in Echtzeit möglich.

zum Projekt