{"id":541,"date":"2024-02-28T11:41:21","date_gmt":"2024-02-28T10:41:21","guid":{"rendered":"https:\/\/niwadev.com\/?page_id=541"},"modified":"2025-01-13T14:48:56","modified_gmt":"2025-01-13T13:48:56","slug":"migration-des-kundenportals-eines-regionalen-energieversorgers","status":"publish","type":"page","link":"https:\/\/niwadev.com\/de\/projects-and-professional-experience\/migration-of-the-customer-portal-of-a-regional-energy-supplier\/","title":{"rendered":"Migration des Kundenportals eines regionalen Energieversorgers"},"content":{"rendered":"<div class=\"gb-container gb-container-4342a994\">\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/niwadev.com\/wp-content\/uploads\/2024\/02\/lew-customer-portal-mac-anonymized.svg\" alt=\"MacBook zeigt das Men\u00fc des LEW-Kundenportals mit verschiedenen Funktionen.\" class=\"wp-image-546\"\/><\/figure>\n\n<\/div>\n\n\n<h2 class=\"wp-block-heading\">Eckdaten<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Firma <a href=\"https:\/\/www.lew-sc.de\/lew-sc\" target=\"_blank\" rel=\"noopener\" title=\"LEW Service &amp; Consulting GmbH\">LEW Service &amp; Consulting GmbH<\/a> f\u00fcr <a href=\"https:\/\/www.lew.de\/fuer-zuhause\" target=\"_blank\" rel=\"noopener\" title=\"Lechwerke AG\">Lechwerke AG<\/a><\/li>\n\n\n\n<li>Rolle: Backend Software Entwickler (angestellt)<\/li>\n\n\n\n<li>Zeitraum: Juni 2020 bis Dezember 2020<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Hintergrund<\/h2>\n\n\n\n<p>In der funktions\u00fcbergreifenden Zusammenarbeit zwischen dem Vertrieb, dem Kundenservice, der SAP-Entwicklung und der Web-Entwicklung sollen Endkundenprozesse im Rahmen eines Projektes optimiert und digitalisiert werden. Daf\u00fcr musste zun\u00e4chst eine technische Grundlage geschaffen werden. Erst dann kann eine einfache Umsetzung der k\u00fcnftigen Ma\u00dfnahmen erfolgen.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Situation vor Umsetzung<\/h2>\n\n\n\n<p>Kunden k\u00f6nnen bereits digital \u00fcber eine separate Web-Anwendung auf ihre Vertr\u00e4ge und Rechnungen zugreifen. Des Weiteren haben sie die Option, bestimmte Funktionen, wie z. B. die Bankdaten\u00e4nderung durchzuf\u00fchren. Leider f\u00fchrt die direkte Kopplung an das SAP-System dazu, dass bei Wartungsarbeiten im Hintergrund auch das Kundenportal nicht mehr aufrufbar ist. Zudem ist der bisherige Identity Provider unflexibel und nicht mehr auf dem neuesten Stand der Technik. Deshalb soll dieser abgel\u00f6st werden. Die separate Anwendung l\u00e4uft zudem auf einem anderen Server und muss extra betreut werden, was die Wartungskosten erh\u00f6ht. Ein zentraler Punkt, der bei der bisherigen L\u00f6sung zu gro\u00dfen Problemen f\u00fchrte, ist die Z\u00e4hlerablesung s\u00e4mtlicher Kunden zwischen Weihnachten und Neujahr. Dies f\u00fchrt zu einer erheblichen Auslastung der Webanwendung und der beteiligten Systeme.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Zielsetzung<\/h2>\n\n\n\n<p>Folgende Ziele wurden identifiziert:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Planung einer Softwarearchitektur, die nicht-funktionale Anforderungen wie eine h\u00f6here Ausfallsicherheit, Fehlertoleranz und Skalierbarkeit ber\u00fccksichtigt<\/li>\n\n\n\n<li>Entwicklung einer technischen Grundlage, die eine flexible Erweiterbarkeit<\/li>\n\n\n\n<li>Reduzierung des Telefonaufkommens beim Kundenservice<\/li>\n\n\n\n<li>Erh\u00f6hung der Online-Nutzungsquote<\/li>\n\n\n\n<li>Schleichende Migration, sodass es keine Unterbrechungen im laufenden Betrieb gibt<\/li>\n\n\n\n<li>Reduzierung des Wartungsaufwands<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Umsetzung<\/h2>\n\n\n\n<p>Die gesetzten Ziele f\u00fchrten zu einer Reihe an Herausforderungen und Fragestellungen. Um die schleichende Migration gew\u00e4hrleisten zu k\u00f6nnen, musste zun\u00e4chst gekl\u00e4rt werden, wie mit den Kunden umgegangen werden soll. Die \u00dcbernahme von Accounts vom alten Identity Provider konnte nicht ohne weiteres durchgef\u00fchrt werden, da sich die Passw\u00f6rter nicht \u00fcbertragen lassen. Mithilfe eines Migrationsprozesses und der \u00dcbertragung der \u00fcbertragbaren Bestandteile der Nutzerkonten konnte dieses Problem bew\u00e4ltigt werden.<\/p>\n\n\n\n<p>Fr\u00fch im Projekt war klar, dass das Kundenportal in die Softwareumgebung der Website integriert werden soll, um den Wartungsaufwand drastisch zu reduzieren. Daf\u00fcr mussten in dieser Umgebung \u2013 sowohl im Frontend als auch im Backend \u2013 die entsprechenden Komponenten neu implementiert werden. Au\u00dferdem muss der Quellcode sauber und getestet sein. Dadurch wird das Auftreten von Bugs zu reduziert und die k\u00fcnftige Wartbarkeit sichergestellt.<\/p>\n\n\n\n<p>Ein wichtiger Aspekt war zudem der Umgang mit Lastspitzen. Um mit diesen besser umgehen zu k\u00f6nnen, wurden Prozesse zur asynchronen Kommunikation implementiert, unter dem Einsatz eines Service Busses. Ein zus\u00e4tzlicher Vorteil ist die Aufl\u00f6sung der direkten Abh\u00e4ngigkeit zwischen dem Web- und dem SAP-System. Im Falle von Wartungsarbeiten kann die Web-Anwendung mit den bereits abgerufenen und zwischengespeicherten Daten des SAP-Systems weiterarbeiten und dem Nutzer trotzdem die gew\u00fcnschte Funktionalit\u00e4t anbieten. Nachrichten, die aufgrund einer unterbrochenen Kommunikation zwischen den beiden Umgebungen nicht zugestellt werden konnten, werden behalten und zugestellt, sobald die Kommunikation wieder m\u00f6glich ist. Um die Auslastung der Web-Umgebung so gut wie m\u00f6glich zu steuern, wurde im Backend auf einen Microservice-Ansatz gesetzt, der die individuelle Skalierung einzelner Services erlaubt. Somit werden die zur Verf\u00fcgung stehenden Ressourcen optimal ausgenutzt.<\/p>\n\n\n\n<p>Um die neue L\u00f6sung schnell f\u00fcr Kunden bereitstellen zu k\u00f6nnen, wurde sich bei der Umsetzung f\u00fcr ein iteratives und agiles Vorgehen entschieden. Dabei sollen zun\u00e4chst die Kunden \u00fcber den neuen Log-in auf die neue Seite zugreifen k\u00f6nnen, werden aber f\u00fcr Funktionen, die noch nicht umgezogen worden sind, auf die jeweilige Stelle im Alt-System mit einer entsprechenden Verlinkung umgeleitet. Dies hatte den Vorteil, dass schon sehr fr\u00fchzeitig in der Entwicklung festgestellt werden konnte, wie gut die Authentifizierungs- und Migrationsprozesse auf den Identity Provider lief. Dadurch entstand ein Minimum Viable Product (MVP), das als solches dem Kreis der Endkunden bereitgestellt worden ist, um die Kunden fr\u00fch in die Entwicklung einzubeziehen.<\/p>\n\n\n\n<p>Im Rahmen der Migration wurde auch das Mailing-System \u201eMailjet\u201c angebunden, um den Versand der E-Mails nachvollziehbar zu gestalten und die f\u00e4lschliche Spam-Kategorisierung zu reduzieren. Toller Nebeneffekt: Die Fachabteilungen k\u00f6nnen schnell, flexibel und ohne Entwicklerunterst\u00fctzung E-Mail-Templates anlegen und bearbeiten.<\/p>\n\n\n\n<p>Durch die Einf\u00fchrung eines neuen Programms und eines neuen Identity Providers k\u00f6nnen sich Sicherheitsrisiken ergeben. Zur Pr\u00fcfung der Software wurde ein Penetrationstest vor der Bereitstellung durchgef\u00fchrt und die aufgef\u00fchrten Befunde behoben.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Mein Beitrag<\/h2>\n\n\n\n<p>Als Softwareentwickler in der Abteilung der Web-Entwicklung habe ich sowohl bei der Konzeption als auch bei der Entwicklung tatkr\u00e4ftig mitgewirkt. Darunter fallen die Planung und Definition der Software-Architektur, die Implementierung der Gesch\u00e4ftslogik im Backend und aufgrund meines SAP-Hintergrunds die Anbindung der SAP-Funktionalit\u00e4ten. Mir war dabei vor allem wichtig, dass Daten und Funktionen unabh\u00e4ngig von der Verf\u00fcgbarkeit des ERP-Systems aufgerufen werden k\u00f6nnen. Dies erreichte ich unter anderem durch den Einsatz von Caching und eines Messaging Systems.<\/p>\n\n\n\n<p>Bei solch einem System ist es wichtig, die Korrektheit der Daten sicherzustellen. Deshalb habe ich in Absprache mit den SAP-Kollegen zur Validierung pr\u00e4zise Regeln definiert. Diese werden \u00fcber das eingesetzte Domain-Driven-Design so erzwungen, dass es kein Objekt geben kann, welches sich in einem ung\u00fcltigen Zustand befindet.<\/p>\n\n\n\n<p>Damit am Ende das Zusammenspiel gut l\u00e4uft, stand ich im engen und fach\u00fcbergreifenden Austausch mit den Kollegen aus der SAP-Entwicklung, dem Kundenservice und dem Vertrieb. Dadurch konnte ich unter anderem f\u00fcr eine schnelle und reibungslose Anbindung der SAP-Funktionen sorgen und im Falle eines Fehlers schnell und flexibel reagieren. Zur Verbesserung der Kommunikation mit anderen Fachbereichen visualisierte ich technische Prozesse mithilfe von Diagrammen.<\/p>\n\n\n\n<p>Gab es im Frontend Engp\u00e4sse, habe ich bei der Entwicklung der React-Komponenten und Logik unterst\u00fctzt.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Eingesetzte Technologien<\/h2>\n\n\n\n<p>Zur Umsetzung der Anwendung kam eine Vielzahl an Technologien zum Einsatz. Die Entwicklung im Backend erfolgte dabei in C# und .NET Core, das Frontend hingegen \u00fcberwiegend in React mit TypeScript. Zur Entwicklung der REST- und gRPC-Schnittstellen nutzte ich das Framework ASP.NET (Web API). F\u00fcr die Abbildung der asynchronen Prozesse setzte ich NServiceBus ein, welches die Zustellung von Nachrichten selbst im Fehlerfall gew\u00e4hrleistet. Zur Speicherung von Daten nutzte ich das bereits vorhandene Microsoft SQL Server Cluster. In der Entwicklung nahm ich das Entity Framework zur Hilfe.<\/p>\n\n\n\n<p>Die Benutzerverwaltung l\u00f6ste das Azure AD B2C in Kombination mit OAuth, wodurch erstmals eine gemanagte, einfach konfigurierbare L\u00f6sung eingesetzt wurde. Weitere Software-Metriken und Logs werden mit Application Insights erfasst. Echtzeit Updates zur Benachrichtigung des Nutzers oder Aktualisierung des Frontends wurden \u00fcber SignalR und Azure Functions realisiert.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Kundennutzen<\/h2>\n\n\n\n<p>Durch die Umsetzung der Migration k\u00f6nnen nun neue Funktionen einfach hinzugef\u00fcgt werden. Die bessere Skalierbarkeit erm\u00f6glicht es dem Vertrieb mehr Kunden f\u00fcr das Portal zu begeistern, ohne sich \u00fcber Performanceeinbu\u00dfen Gedanken machen zu m\u00fcssen. Z\u00e4hlerstandserfassungen laufen online zuverl\u00e4ssig ab und reduzieren das Telefonaufkommen beim Kundenservice. Die Nutzung der Onlinedienste konnte durch die Migration um 55 % und die Verf\u00fcgbarkeit sogar \u00fcber 95 % gesteigert werden. Die Entwicklung der Kundenportal-Nutzer \u00fcbertraf sogar die Prognosen des Kunden.<\/p>\n\n\n<div class=\"gb-container gb-container-09dc38ee\">\n\n<p>Sie haben ein \u00e4hnliches Problem, das Sie von einem erfahrenen Entwickler l\u00f6sen lassen wollen? Nehmen Sie gerne Kontakt mit mir auf.<\/p>\n\n\n\n<div class=\"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex\">\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/niwadev.com\/de\/kontakt\/\" target=\"_blank\" rel=\"noreferrer noopener\">Kontaktieren Sie mich noch heute!<\/a><\/div>\n<\/div>\n\n<\/div>","protected":false},"excerpt":{"rendered":"<p>In einem funktions\u00fcbergreifenden Team zwischen Vertrieb, Kundenservice, SAP und Webentwicklung soll eine Plattform f\u00fcr digitale Kundenprozesse entwickelt werden.<\/p>","protected":false},"author":1,"featured_media":585,"parent":537,"menu_order":34,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_uag_custom_page_level_css":"","footnotes":""},"class_list":["post-541","page","type-page","status-publish","has-post-thumbnail"],"aioseo_notices":[],"uagb_featured_image_src":{"full":["https:\/\/niwadev.com\/wp-content\/uploads\/2024\/02\/lew-customer-portal-mac-anonymized-featured.webp",1200,675,false],"thumbnail":["https:\/\/niwadev.com\/wp-content\/uploads\/2024\/02\/lew-customer-portal-mac-anonymized-featured-150x150.webp",150,150,true],"medium":["https:\/\/niwadev.com\/wp-content\/uploads\/2024\/02\/lew-customer-portal-mac-anonymized-featured-300x169.webp",300,169,true],"medium_large":["https:\/\/niwadev.com\/wp-content\/uploads\/2024\/02\/lew-customer-portal-mac-anonymized-featured-768x432.webp",768,432,true],"large":["https:\/\/niwadev.com\/wp-content\/uploads\/2024\/02\/lew-customer-portal-mac-anonymized-featured-1024x576.webp",1024,576,true],"1536x1536":["https:\/\/niwadev.com\/wp-content\/uploads\/2024\/02\/lew-customer-portal-mac-anonymized-featured.webp",1200,675,false],"2048x2048":["https:\/\/niwadev.com\/wp-content\/uploads\/2024\/02\/lew-customer-portal-mac-anonymized-featured.webp",1200,675,false],"trp-custom-language-flag":["https:\/\/niwadev.com\/wp-content\/uploads\/2024\/02\/lew-customer-portal-mac-anonymized-featured-18x10.webp",18,10,true]},"uagb_author_info":{"display_name":"niwadev.com","author_link":"https:\/\/niwadev.com\/de\/blog\/author\/niwadev-com\/"},"uagb_comment_info":0,"uagb_excerpt":"As part of a cross-functional team between sales, customer service, SAP and web development, a platform for digital customer processes should be developed.","_links":{"self":[{"href":"https:\/\/niwadev.com\/de\/wp-json\/wp\/v2\/pages\/541","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/niwadev.com\/de\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/niwadev.com\/de\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/niwadev.com\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/niwadev.com\/de\/wp-json\/wp\/v2\/comments?post=541"}],"version-history":[{"count":1,"href":"https:\/\/niwadev.com\/de\/wp-json\/wp\/v2\/pages\/541\/revisions"}],"predecessor-version":[{"id":860,"href":"https:\/\/niwadev.com\/de\/wp-json\/wp\/v2\/pages\/541\/revisions\/860"}],"up":[{"embeddable":true,"href":"https:\/\/niwadev.com\/de\/wp-json\/wp\/v2\/pages\/537"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/niwadev.com\/de\/wp-json\/wp\/v2\/media\/585"}],"wp:attachment":[{"href":"https:\/\/niwadev.com\/de\/wp-json\/wp\/v2\/media?parent=541"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}