Zum Inhalt springen
OrtmannConsulting
Zurück zur Übersicht

Konzern-IT, Baustoffindustrie

Vier Jahre IT-Verwaltungsportal — ein Formular statt fünf Admin-Konsolen

Austritte, Passwort-Rücksetzungen, Lizenzbereinigung und Rufnummern laufen über ein internes Portal statt über mehrere Microsoft-Konsolen. Die Warteschlange ist eine Tabelle in der Datenbank, die ohnehin da war.

Jahr
2026
Leistungen
Automatisierung
Bereich
Konzern-IT
Rolle
Intern, angestellt

Umgesetzt in angestellter Rolle für einen internen Fachbereich, nicht als externes Beratungsmandat. Das Unternehmen wird nicht genannt.

4 JahreIm Betrieb gewachsen310 Commits seit 2022
36Funktionsmodulerund 100 Endpunkte
67Tests nach dem Security-Review

Ausgangslage

Wie Austritte, Passwort-Rücksetzungen und Lizenzbereinigung vor dem Portal abliefen, ist im Projekt nicht dokumentiert — vermutlich von Hand in den Microsoft-Konsolen, aber das ist eine Annahme.

Belegt ist ein späteres, konkreteres Problem: Der Austrittsprozess lief ursprünglich synchron innerhalb des Web-Requests und lief in Zeitüberschreitungen, sobald mehrere Anfragen gleichzeitig kamen. Dazu kam ein zweiter Schmerzpunkt: Aktionen gegen das lokale Active Directory waren fire-and-forget — der Webhook antwortete „eingereiht“, und ein fehlgeschlagener Auftrag blieb unsichtbar, bis jemand zufällig nachsah.

Ansatz

Eine Flask-Anwendung mit einem Modul je Aufgabe: Austritt, Konten- und Passwort-Rücksetzung, Lizenzbereinigung, Teams-Rufnummern, Gerätelöschung, Copilot-Verwaltung, Postfach-Zugriffe, Auswertungen. Administratoren melden sich mit ihrem normalen Firmenkonto an; jede geschützte Route prüft die Sitzung serverseitig.

Das bestimmende Muster: Was langsam ist, läuft nicht im Web-Request. Die Route prüft die Eingaben, schreibt eine Zeile mit Status pending in eine Warteschlangentabelle und liefert sofort eine sich selbst aktualisierende Statusseite zurück. Zeitgesteuerte Funktionen arbeiten diese Warteschlangen ab und erledigen die eigentliche Arbeit gegen Microsoft Graph, Exchange Online, OneDrive und — über einen Automation-Webhook — das lokale Active Directory.

Der Fortschritt wird in dieselbe Zeile zurückgeschrieben, über einen einheitlichen Lebenszyklus: pending → processing → completed | partial | failed. Jede Zeile hält fest, welche Teilschritte bereits erfolgreich waren, sodass begrenzte automatische Wiederholungen überspringen, was schon erledigt ist, statt es zu wiederholen.

Der Punkt, an dem es anders hätte laufen können

Die vorhandene SQL-Datenbank wurde zur Warteschlange gemacht, statt einen Message Broker einzuführen.

Der Commit, der das entschied, heißt schlicht „move leaver process to queueing“. Er wandelte den Austrittsprozess von der Ausführung im Request auf das Muster Warteschlangentabelle plus zeitgesteuerte Funktion um — und dieses Muster wurde danach für Gerätelöschung und Rufnummern wiederverwendet.

Die Alternative, ein Service Bus oder eine Celery-artige Architektur, hätte Infrastruktur hinzugefügt. Eine schlichte SQL-Tabelle gibt dafür Beobachtbarkeit mit einem SELECT, einen natürlichen Ort für den Fortschritt je Teilschritt und idempotente Wiederholungen über die protokollierten erledigten Schritte.

Dieselbe Abwägung zeigt einen bewussten Haltepunkt: Für den einen Schritt, der nicht sicher wiederholbar ist — die Umbenennung des lokalen Kontos —, wird ein bestätigter Fehlschlag als partial ausgewiesen und an einen Menschen übergeben. Im Änderungsprotokoll steht das ausdrücklich: keine automatische Wiederholung, weil dieser Schritt nicht idempotent ist. Das System automatisiert aggressiv und weigert sich, dort zu wiederholen, wo eine Wiederholung Schaden anrichten könnte.

Ergebnis

310 Commits zwischen 2022 und 2026 — kein einmaliger Wurf, sondern ein System, das vier Jahre lang im Betrieb weitergewachsen ist. 36 Funktionsmodule, rund 100 Endpunkte, etwa 10 separat ausgelieferte Funktions-Projekte, rund 13.700 Zeilen Python.

2026 durchlief die Codebasis eine dokumentierte Härtungsrunde — CSRF, Header-Vertrauen, XSS, Injection, Rechteausweitung, dazu eine Sperrliste geschützter Konten. In derselben Runde entstand die Testsuite mit 67 Fällen.

Bewusst außerhalb: Privilegierte Konten. Eine Sperrliste verweigert die Automatisierung gegen Administrator-, Dienst- und Notfallkonten sowie gegen das Konto der bedienenden Person selbst. Nur reguläre Nutzer laufen durch. Ebenfalls bewusst manuell: Schemaänderungen laufen als SQL-Skripte, die Auslieferung als dokumentierte Checkliste mit Staging und Smoke-Test.

Offen benannt: Die Funktions-Projekte haben keine automatisierten Tests, ältere Codepfade bauen SQL noch als Zeichenkette, und es gibt genau einen Betreuer.

Eingesetzte Technik

  • Python / Flask
  • Microsoft Graph API
  • Azure SQL
  • Azure Functions
  • Entra ID / MSAL
  • PowerShell

Weitere Projekte

Konzern-Kundenservice, Bauchemie

2026
11Länder auf einer Plattform

Ein Contact Center für elf Länder — eine Plattform statt elf Inseln

Kundenservice in elf Ländern über Sprache und SMS, mit Daten aus SAP, Salesforce und dem Produktsystem direkt im Arbeitsplatz der Agenten. Länderunterschiede sind Konfiguration, keine eigene Installation.

  • Twilio Flex
  • Twilio TaskRouter
  • Twilio Studio
  • SAP

Konzern-Compliance, Bauchemie

2026
10.872Erzeugte Dokumente

10.872 EU-Konformitätserklärungen statt Copy-Paste

Für die neue EU-Verpackungsverordnung waren Konformitätserklärungen in 12 Sprachen für rund 900 Verpackungsmaterialien nötig. Statt sie einzeln zu füllen, erzeugt und verteilt eine Pipeline sie in einem Lauf.

  • Python
  • docxtpl / Jinja2
  • Microsoft Word COM
  • Microsoft Graph API

Vertrieb & Innendienst, Bauchemie

2026
1 + 3Orchestrator und Fachagenten

Ein Orchestrator, drei Fachagenten für Produktauskünfte

Statt eines Agenten mit drei Wissensquellen leitet ein übergeordneter Agent an drei spezialisierte weiter — je einer für ERP-Artikeldaten, Produktinhalte und SharePoint-Dokumente.

  • Microsoft Copilot Studio
  • Azure AI Search
  • Azure Functions
  • SharePoint

Ähnlicher Prozess bei Ihnen?

30 Minuten, kostenlos, ohne Verkaufsgespräch. Sie beschreiben, was Zeit kostet — ich sage Ihnen ehrlich, ob sich Automatisierung lohnt.