Migration von OutSystems zu .NET
29.01.2026
Die Migration von OutSystems zu .NET ist keine Neuentwicklung - es ist eine strategische Modernisierung. Ich leite derzeit genau diese Migration bei Boskalis, wo wir Überwachungsanwendungen für Baggerausrüstung von OutSystems auf einen modernen .NET-Stack umstellen. Hier ist, was ich darüber gelernt habe, wie man diesen Übergang meistert, ohne den Verstand oder die Verfügbarkeit zu verlieren.
Warum von OutSystems migrieren?
OutSystems ist eine leistungsfähige Low-Code-Plattform, und für viele Organisationen ist sie die richtige Wahl. Aber es kommt ein Punkt, an dem die Einschränkungen die Geschwindigkeitsvorteile überwiegen. Die häufigsten Auslöser, die ich sehe, sind steigende Lizenzkosten, Erreichen von Plattformlimitierungen und Schwierigkeiten, erfahrene Entwickler zu gewinnen, die mit gängigen Werkzeugen arbeiten möchten.
Bei Boskalis waren die Baggerüberwachungsanwendungen weit über das hinausgewachsen, was OutSystems komfortabel bewältigen kann. Wir hatten es mit hochfrequenten Sensordaten von Schiffen, komplexen Echtzeit-Dashboards und Integrationen mit Industrieausrüstung zu tun - die Art von Workloads, bei denen man feinkörnige Kontrolle über Performance und Architektur benötigt. OutSystems war nicht für dieses Maß an Individualisierung konzipiert.
Die Lizenzkostenrechnung lässt sich auch schwer ignorieren. Für ein mittelständisches Unternehmen mit 5-10 Anwendungen können die OutSystems-Lizenzkosten 150.000-400.000 EUR pro Jahr betragen. Ein .NET-Stack auf Azure mit vergleichbarer Kapazität liegt typischerweise bei 30-50 % dieser Kosten, wenn man Infrastruktur und Entwicklerwerkzeuge einrechnet.
Wann auf OutSystems bleiben
Nicht jede OutSystems-Anwendung muss migriert werden. Wenn Ihre App ein unkomplizierter CRUD-Workflow mit minimaler benutzerdefinierter Logik ist, ist OutSystems wahrscheinlich weiterhin die richtige Heimat dafür. Ich verwende ein einfaches Entscheidungsraster:
- Bleiben, wenn die App weniger als 20 Bildschirme, Standard-Datenmuster und einen stabilen Funktionsumfang hat
- Migrieren, wenn Sie benutzerdefinierte Integrationen, leistungsstarke Datenverarbeitung benötigen oder das Team mehr Zeit damit verbringt, gegen die Plattform zu kämpfen, als Features zu entwickeln
- Ersetzen, wenn die App ohnehin am Ende ihres Lebenszyklus steht und sich die Anforderungen erheblich geändert haben
Seien Sie ehrlich bezüglich der Kosten. Eine Migration ist eine Investition - typischerweise 3-6 Monate für eine mittelkomplexe Anwendung mit einem Team von 2-3 Entwicklern. Wenn Sie diesen Zeitrahmen nicht rechtfertigen können, ist eine Migration der falsche Schritt.
Wie man eine Migration von OutSystems zu .NET plant
Der wichtigste einzelne Schritt ist das Abbilden Ihrer OutSystems-Architektur auf .NET-Äquivalente, bevor Sie Code schreiben. OutSystems hat eigene Abstraktionen, und wenn Sie versuchen, diese wortwörtlich zu übersetzen, endet es im Chaos. Betrachten Sie die Migration stattdessen als Gelegenheit, saubere .NET-Muster einzuführen.
Hier ist die Architektur-Zuordnung, die ich verwende:
| OutSystems-Konzept | .NET-Äquivalent | Anmerkungen |
|---|---|---|
| Server Actions | ASP.NET Core Minimal APIs oder Controllers | Jede Action einem Endpunkt oder einer Service-Methode zuordnen |
| Client Actions | Blazor-Komponenten oder TypeScript/JS | Abhängig von Ihrer Frontend-Strategie |
| Entities | Entity Framework Core-Modelle | Beziehungen überprüfen - OutSystems verbirgt hier Komplexität |
| Aggregates | LINQ-Abfragen oder rohes SQL | Performance-kritische Abfragen erfordern oft handoptimiertes SQL |
| Screen Logic | Razor Pages, Blazor oder SPA-Framework | Wahl basierend auf Teamfähigkeiten und Anforderungen |
| Site Properties | Konfiguration über appsettings.json oder Azure App Configuration | Verwenden Sie das Strongly-Typed-Options-Pattern |
| Timers | Azure Functions oder Hangfire | Hintergrundjobs benötigen explizites Scheduling |
| BPT (Business Process Technology) | Workflow-Engines wie Elsa oder benutzerdefinierte State Machines | Dies ist oft der schwierigste Teil der Migration |
| OutSystems REST/SOAP-Integrationen | HttpClient mit typisierten Clients | Verwenden Sie Refit oder NSwag für saubere API-Clients |
Architekturentscheidungen, die zählen
Bei Boskalis haben wir uns für ASP.NET Core Web API mit einem Blazor-Frontend für die Überwachungs-Dashboards entschieden, unterstützt durch Azure SQL und Azure SignalR für Echtzeitdaten. Die Sensordaten-Pipeline läuft über Azure Event Hubs in die Verarbeitungsservices.
Einige Architekturentscheidungen, die uns erheblichen Aufwand erspart haben:
Beginnen Sie mit der Datenschicht. Exportieren Sie Ihr OutSystems-Entitätsmodell und bauen Sie es in Entity Framework Core neu auf. OutSystems generiert automatisch viele implizite Beziehungen und Audit-Felder - Sie sollten bewusst entscheiden, was Sie behalten. Wir haben die Anzahl unserer Entitäten um etwa 40 % reduziert, allein durch das Entfernen redundanter OutSystems-Gerüststrukturen.
Replizieren Sie nicht das OutSystems-Bildschirmmodell. OutSystems-Bildschirme bündeln Layout, Logik und Datenabruf in einer Weise, die sich nicht gut übertragen lässt. Zerlegen Sie sie in saubere Komponenten mit klarer Trennung der Zuständigkeiten.
Planen Sie die Authentifizierung frühzeitig. OutSystems hat eine eingebaute Benutzerverwaltung, die man leicht als selbstverständlich betrachtet. Wir sind auf Azure AD B2C für externe Benutzer und Azure AD für interne Benutzer umgestiegen, integriert über ASP.NET Core Identity. Planen Sie mindestens zwei Wochen ein, wenn Sie komplexe Rollenstrukturen haben.
Häufige Fallstricke und wie Sie sie vermeiden
Unterschätzung der Geschäftslogik-Komplexität. OutSystems verbirgt viel Logik in visuellen Flows, die einfach aussehen, aber Dutzende von Verzweigungsbedingungen enthalten. Bevor Sie ein Modul migrieren, sollte ein Entwickler jeden Flow durchgehen und die tatsächlichen Geschäftsregeln dokumentieren. Wir fanden etwa 30 % mehr Logik als in der OutSystems-Dokumentation ersichtlich war.
Ignorieren der OutSystems-Datenbankbesonderheiten. OutSystems verwendet eigene Konventionen für Primärschlüssel, Soft Deletes und Audit-Spalten. Wenn Sie Daten migrieren, schreiben Sie frühzeitig Transformationsskripte und testen Sie diese gegen produktionsähnliche Datenmengen. Wir haben drei vollständige Datenmigrationsproben vor dem eigentlichen Cutover durchgeführt.
Alles auf einmal migrieren wollen. Eine Big-Bang-Migration ist fast immer ein Fehler. Wir verwenden ein Strangler-Fig-Pattern - neue Features werden in .NET entwickelt, bestehende Features werden Modul für Modul migriert, und beide Systeme laufen parallel hinter einem gemeinsamen API-Gateway. So bleibt das Geschäft am Laufen, während die Migration voranschreitet.
Performance-Baselines überspringen. Bevor Sie ein Modul migrieren, führen Sie ein Benchmarking in OutSystems durch. Nach der Migration vergleichen Sie. Wenn Sie nicht nachweisen können, dass die .NET-Version mindestens genauso gut performt, haben Sie ein Problem. Wir verfolgen Antwortzeiten, Durchsatz und Fehlerquoten für jeden migrierten Endpunkt.
DevOps und Deployment-Strategie
Einer der größten Vorteile beim Wechsel zu .NET ist, dass Sie Ihre Deployment-Pipeline selbst in der Hand haben. OutSystems hat ein eigenes Deployment-Modell, das die Verwaltung von Umgebungen und Releases einschränkt.
Unser Setup bei Boskalis:
- Azure DevOps für CI/CD-Pipelines
- Infrastructure as Code mit Bicep-Templates
- Containerisierte Deployments auf Azure Container Apps
- Feature Flags über Azure App Configuration für schrittweise Rollouts
- Automatisierte Integrationstests, die gegen jede Umgebung laufen
Das gibt uns eine Deployment-Flexibilität, die auf OutSystems schlicht nicht möglich war. Wir sind von zweiwöchentlichen geplanten Releases zu On-Demand-Deployments übergegangen, manchmal mehrmals täglich.
Messung des Migrationserfolgs
Verfolgen Sie diese Metriken, um zu wissen, ob Ihre Migration auf Kurs ist:
- Feature-Parität in Prozent - welcher Anteil der ursprünglichen Funktionalität ist in .NET live
- Performance-Vergleich - Antwortzeiten und Durchsatz im Vergleich zur OutSystems-Baseline
- Deployment-Frequenz - sollte nach der Migration steigen
- Störungsrate - sollte gleich bleiben oder sinken
- Entwicklerzufriedenheit - befragen Sie Ihr Team, im Ernst
Bei Boskalis haben wir 80 % Feature-Parität innerhalb von vier Monaten für die erste große Anwendung erreicht, mit messbaren Verbesserungen bei Dashboard-Ladezeiten und Datenverarbeitungsdurchsatz.
Häufig gestellte Fragen
Wie lange dauert eine Migration von OutSystems zu .NET?
Für eine mittelkomplexe Anwendung mit 30-50 Bildschirmen und moderater Geschäftslogik rechnen Sie mit 3-6 Monaten bei einem Team von 2-3 erfahrenen .NET-Entwicklern. Hochkomplexe Anwendungen mit umfangreichen Integrationen oder Workflow-Logik können 6-12 Monate dauern. Der Strangler-Fig-Ansatz ermöglicht es Ihnen, inkrementell Mehrwert zu liefern, anstatt auf einen vollständigen Cutover zu warten.
Kann man OutSystems direkt in .NET umwandeln, ohne neu zu schreiben?
Nein. Es gibt kein automatisiertes Tool, das visuelle OutSystems-Logik in sauberen .NET-Code konvertiert. Die OutSystems-Plattform kompiliert im Hintergrund zu .NET, aber der generierte Code ist nicht wartbar. Betrachten Sie es als geführte Neuentwicklung - verwenden Sie die OutSystems-Anwendung als detaillierte Spezifikation, bauen Sie die .NET-Version aber mit sauberen Mustern und einer durchdachten Architektur.
Welche .NET-Kenntnisse braucht das Team für diese Migration?
Sie benötigen fundierte Erfahrung mit ASP.NET Core, Entity Framework Core und dem gewählten Frontend-Ansatz - ob Blazor, React oder Angular. Cloud-Erfahrung mit Azure ist wichtig, wenn Sie dort hosten. DevOps-Kenntnisse für CI/CD-Pipelines sind ebenfalls essenziell, da Sie die Deployment-Verantwortung übernehmen, die zuvor OutSystems innehatte.
Ist Blazor ein guter Ersatz für OutSystems-Frontends?
Blazor ist eine starke Wahl, wenn Ihr Team .NET-fokussiert ist und Sie in einem Technologie-Stack bleiben möchten. Es eignet sich gut für komplexe Dashboards und datenintensive Oberflächen. Für öffentlich zugängliche Anwendungen, bei denen SEO und initiale Ladeperformance entscheidend sind, kann ein JavaScript-Framework wie React oder Vue in Kombination mit einer .NET-API besser geeignet sein. Wir verwenden Blazor bei Boskalis, weil die Überwachungs-Dashboards interne Tools sind, bei denen die .NET-Kompetenzausrichtung die Kompromisse überwiegt.
Was passiert mit der OutSystems-Datenbank während der Migration?
Sie haben zwei Optionen: Die Daten in ein neues Datenbankschema migrieren, das für Ihre .NET-Anwendung entworfen wurde, oder die bestehende Datenbank beibehalten und die .NET-Anwendung dagegen entwickeln. Ich empfehle dringend, die Daten zu migrieren. Das OutSystems-Datenbankschema bringt plattformspezifische Konventionen mit, die langfristig Reibung erzeugen. Schreiben Sie ETL-Skripte, testen Sie diese gründlich und planen Sie ein Datenmigrationsfenster für den Cutover ein.