Lima
Wie epilot und Lima zusammenspielen - vom unterschriebenen Auftrag bis zum laufenden Kundenkonto.
Inhaltsverzeichnis
Was ist die Lima-Integration?
Lima ist das Abrechnungssystem (Customer Information System), das viele Stadtwerke und Energievertriebe für die Verwaltung ihrer Kunden, Verträge, Zähler und Rechnungen einsetzen. Damit epilot und Lima im Alltag wie ein einziges System wirken, sorgt die Lima-Integration für drei Aufgaben:
- Neukundenakquise (NKZ) – ein in epilot abgeschlossener Auftrag wird in Lima als echter Kunde mit Vertrag angelegt.
- Aus Lima übernehmen (Inbound) – Änderungen aus Lima fließen zurück nach epilot, damit Service-Mitarbeitende und Endkunden im Portal immer aktuelle Daten sehen.
- An Lima senden (Outbound) – Änderungen, die der Kunde oder ein Agent in epilot vornimmt (z. B. Bankverbindung, Zählerstand, Abschlag), werden nach Lima geschrieben.
Dieser Artikel beschreibt, wie diese drei Aufgaben funktionieren – mit besonderem Fokus auf die Neukundenakquise, weil dort die meisten projektspezifischen Entscheidungen getroffen werden.
Das große Bild
Die Integration besteht nicht aus einer einzigen großen Schnittstelle, sondern aus mehreren kleinen, klar abgegrenzten Datenflüssen. Jeder Fluss hat einen eindeutigen Auslöser, eine zugeordnete Lima-Operation und ein klares Ergebnis – entweder in epilot oder in Lima.
| Richtung | Fluss | Wofür |
|---|---|---|
| epilot → Lima | NKZ (Neukundenschnitstelle) | Kunde + Vertrag werden in Lima angelegt, sobald ein Auftrag in epilot unterschrieben wurde. Im gleichen Schritt wird der zugehörige Kontakt in epilot mit der zurückgemeldeten Lima-Kundennummer markiert - damit gilt er fortan als Bestandskunde. |
| Lima → epilot | On-Demand-Übernahme | Wenn ein Mitarbeiter oder Endkunde einen Datensatz öffnet, wird live der vollständige Datensatz aus Lima geladen. |
| Lima → epilot | Delta-Übernahme | Alle paar Minuten werden Lima-Änderungen abgefragt; betroffene Kunden werden in epilot aktualisiert. |
| Lima → epilot | Nächtliche Vollübernahme (CRM-Export) | Einmal pro Nacht lädt Lima einen vollständigen CSV-Export hoch; geänderte Datensätze werden gegen den Vortag verglichen und nach epilot gespielt. |
| epilot → Lima | An Lima senden (Outbound) | Zählerstände, Adress-, Kontakt-, Bank-, Abschlags- und Tarifänderungen aus dem Self-Service. |
| Lima → Portal | Dynamische Tarife | Read-only-API, die der Endkundenportal-Widget für Preis-, Kosten- und Verbrauchskurven nutzt. |
Neukundenakquise (NKZ)
NKZ - die Schnittstelle in Lima, über die ein neuer Kunde samt Vertrag angelegt wird. Sobald ein Tenant mit Lima verbunden ist und ein Auftrag in epilot unterschrieben wird, klopft die Integration genau hier an, um den Kunden im Abrechnungssystem zu registrieren.
Der Ablauf, Schritt für Schritt
- Auftrag wird in epilot abgeschlossen. Entweder über eine Customer-Journey („Checkout & Unterschrift") oder manuell durch einen Mitarbeiter in epilot 360.
- Webhook wird ausgelöst. Die Automatisierung in epilot schickt die Order-Entität an den NKZ-Endpunkt. Der Auslöser ist konfigurierbar - meistens „Auftrag erstellt", manchmal an einen bestimmten Workflow-Schritt, einen Button oder eine Statusänderung gebunden.
- Payload wird gemappt. Ein JSONata-Ausdruck in der Webhook-Automatisierung transformiert die epilot Bestellung in die Form, die NKZ erwartet (siehe Mapping-Referenz weiter unten).
-
Straßensuche. NKZ ruft Limas Straßensuche mit der Lieferadresse auf. Das prüft, ob die Straße vom Versorger beliefert wird, und liefert die internen Felder
BEZIRKNRundSTRASSENNRzurück, die Lima benötigt, um den Vertrag dem richtigen Netzgebiet zuzuordnen. -
SOAP-Aufruf
writeneukunde. NKZ baut den SOAP-Umschlag (Kundenblockp3SATZ+ Vertragsblockp4SATZ) und ruft Limaswriteneukunde-Operation auf. -
Kundennummer wird zurückgeschrieben. Bei Erfolg liefert Lima eine
KUNDENNUMMER. NKZ schreibt diese alscustomer_numberin den Rechnungskontakt in epilot zurück. Damit weiß jede nachgelagerte Synchronisation (Delta-Sync, Self-Service, CRM-Export), dass dieser Kontakt nun ein echter Lima-Kunde ist.
Schlägt ein Schritt fehl – Straße nicht beliefert, Validierungsfehler, Lima-Ablehnung - wird der Fehler an die Automatisierung zurückgemeldet, der Kontakt wird nicht mit einer Kundennummer markiert, und der Auftrag kann nach Korrektur erneut versendet werden.
Warum Webhook + JSONata?
NKZ ist ein einfacher HTTP-Endpunkt mit einer strikten, Werk-unabhängigen Eingabeform. Jedes Werk hat aber einen eigenen Produktkatalog, eigene Journey-Fragen und eigene Konventionen – ein universelles Mapping ist daher nicht möglich. Die Trennung zwischen Integration und JSONata-Mapping bedeutet:
- Werke können ihr eigenes Mapping ausliefern, ohne dass Integrationscode geändert wird.
- Neue Produktattribute, Bonusregeln oder Journey-Felder lassen sich in Minuten anbinden.
- Derselbe NKZ-Service unterstützt beliebig viele Werke mit völlig unterschiedlichen Eingangs-Strukturen.
- Werk-spezifische Eigenheiten (Bonuslogik, Abrechnungsgruppen, Energieart-Erkennung) bleiben außerhalb des Integrationscodes.
Die Integration übernimmt nur die generischen, Werk-übergreifenden Transformationen (Straße/Telefon/Datum validieren, Straßensuche, SOAP-Umschlag). Alles Werk-spezifische ist Daten, kein Code.

Mapping-Referenz: Welches epilot-Feld geht wohin in Lima?
So liest sich diese Referenz: Für jedes Feld im NKZ-Request stehen Typ, ob es Pflicht ist, das Standard-Mapping aus der epilot-Order und eine Bemerkung dazu, was das Feld in Lima steuert. Wenn der eigene Produktkatalog andere Attributnamen verwendet, zeigt der JSONata-Ausdruck einfach auf die richtigen Felder – die Integration prüft nur die Form des Ergebnisses.
Metadaten
| Feld | Typ | Pflicht | Standard-Mapping | Bedeutung in Lima |
|---|---|---|---|---|
metadata.organization_id |
String | ja | metadata.organization_id |
epilot-Organisation, wird vom Webhook automatisch gesetzt. |
metadata.correlation_id |
UUID | ja | metadata.correlation_id |
Wird für Logging und Nachverfolgung verwendet, unverändert weitergereicht. |
metadata.creation_timestamp |
ISO 8601 | ja | metadata.creation_timestamp |
Bestimmt SEPA-Mandatsdatum und Logik für die Abrechnungsgruppe. |
tenant |
String | ja |
line_items[0]._product.tenant bzw. line_items[0]._product.werk
|
Lima-Tenant-Identifier. Bei mehreren parallelen Lima-Umgebungen aus dem Produkt aufgelöst. |
billing_contact_id |
UUID | ja | billing_contact[0]._id |
Der Kontakt, der bei Erfolg mit der Kundennummer markiert wird. |
Kunde (Lieferadresse + Person) – wird zu p3SATZ in Lima
| Feld | Pflicht | Standard-Mapping | Bedeutung |
|---|---|---|---|
customer.delivery_address.street |
ja | delivery_address[0].street |
Straßenname ohne Hausnummer. |
customer.delivery_address.street_number |
ja | delivery_address[0].street_number |
Frei formatiert. Der Server parst „12", „12a", „12 a", „12a-c" automatisch zu Nummer + Zusatz. |
customer.delivery_address.postal_code |
ja | delivery_address[0].postal_code |
5-stellige PLZ, wird für die Straßensuche genutzt. |
customer.delivery_address.city |
ja | delivery_address[0].city |
Ort. |
customer.delivery_address.country |
nein |
delivery_address[0].country, sonst "DE"
|
ISO-Ländercode. |
customer.delivery_address.additional_info |
nein | delivery_address[0].additional_info |
Wohnung/Etage/„c/o" – landet in Limas TEXT-Feld. |
customer.anredeverknuepfung |
ja | Lookup auf salutation: Mr→"1", Mrs/Ms→"2", sonst "!"
|
1 = Herr, 2 = Frau, ! = neutral/Firma. |
customer.name1 |
ja | billing_last_name & ", " & billing_first_name |
Format „Nachname, Vorname". Firmen tragen hier den Firmennamen ein. |
customer.name2 |
nein | Aus „weitere Vertragspartner"-Feldern | Zweiter Vertragspartner oder Ansprechperson bei Firmenkunden. |
customer.geburtsdatum1 |
nein |
billing_contact[0].birthdate (auf Datum gekürzt) |
Server formatiert nach DD.MM.YYYY. |
customer.kundennummer |
nein |
billing_contact[0].lima_kundenummer bzw. customer_number
|
Bei Bestandskunden setzen, damit Lima den vorhandenen Datensatz weiterverwendet. Bei Erstkunden leer lassen. |
customer.email |
ja | billing_email |
E-Mail. |
customer.phone |
ja | billing_phone |
Frei formatiert. Der Server zerlegt in Vorwahl + Nummer und akzeptiert +49… oder 0…. |
Vertrag – wird zu p4SATZ in Lima
Produkt & Energie
| Feld | Pflicht | Standard-Mapping | Bedeutung |
|---|---|---|---|
contract.produktid |
ja | line_items[0]._product.code |
Lima-Produktcode. Muss zu einem in Lima für diesen Tenant konfigurierten Produkt passen. |
contract.energieart |
ja | Lookup auf _product.energieart: Strom→E, Gas→G, Wasser→W, Fernwärme→F
|
Energieartcode. Bei abweichenden Produktnamen den Lookup oder die Produkt-Tags anpassen. |
contract.preisschluessel |
nein | _product.preisschluessel |
Lima-Preisschlüssel. |
contract.angebotsid |
nein | _product.angebotsid |
Angebots-ID zur Unterscheidung von Produktvarianten. |
contract.bilanzkreis |
nein | _product.bilanzkreis |
Bilanzkreisverantwortlicher (BKV). |
contract.lastprofil |
nein | _product.lastprofil |
Lastprofil, z. B. H0 für Haushalte. |
Zähler & Verbrauch
| Feld | Pflicht | Standard-Mapping | Bedeutung |
|---|---|---|---|
contract.zaehlernummerlang |
ja |
zaehlernummer (Leerzeichen entfernt) |
Zählernummer. Server entfernt zur Sicherheit nochmals Leerzeichen. |
contract.zaehlpunktbezeichnung |
nein | marktlokationsnummer |
MaLo-Identifier. |
contract.energieverbrauch |
nein |
erwarteter_jahresverbrauch_in_kwh oder stromverbrauch
|
Jahresverbrauch in kWh. Der Attributname variiert je nach Journey. |
contract.eaw11 |
nein |
zaehlerstand_tarifrechner oder lieferauftrag_strom_zahlerstand
|
Anfangszählerstand. |
Preis & Abrechnungsgruppe
| Feld | Pflicht | Standard-Mapping | Bedeutung |
|---|---|---|---|
contract.abrechnungsgruppe |
meist ja | Priorität: Bestandskunde → bestehende Gruppe; dynamischer Tarif → "602"; sonst _product.abrechnungsgruppe
|
Lima-Abrechnungsgruppe. Konventionen sind tenant-spezifisch – es gibt keinen universellen Standard. Manche Tenants lassen sie serverseitig aus der BEZIRKNR ableiten; in dem Fall Feld weglassen. |
contract.abschlagsbetrag |
ja | $ceil(line_items[0].amount_total / 100) |
Monatlicher Abschlag in Euro (auf Cents aufgerundet). |
contract.abschlagsbeginndatum |
ja | Frühester Termin aus Einzugsdatum / bestätigtem Kündigungstermin / nächstmöglichem Kündigungstermin / Erstellzeitpunkt + 14 Tagen, gerundet auf den 15. oder 1. des Folgemonats | Startdatum des Abschlagsplans. Die Rundung ist eine Lima-Konvention. |
contract.netzbetreibernummer |
nein | Tenant-spezifischer Lookup nach Energieart | Netzbetreibernummer. Eigenen Lookup pflegen oder leer lassen, damit Lima sie ableitet. |
Belieferung – steuert VERSORGUNGAB und ZUGANGSART
Diese Felder werden als Eingabe an die Integration übergeben; die finalen Lima-Felder berechnet der Server.
| Feld | Pflicht | Standard-Mapping | Bedeutung |
|---|---|---|---|
contract.belieferung |
ja | belieferung |
Einer von Versorgerwechsel, Umzug, Umzug/Einzug, Wechsel, Lieferantenwechsel. Bestimmt Zugangsart und Datumswahl. |
contract.uebernahme_kuendigung |
nein | uebernahme_kuendigung |
Enthält der Wert „Nein", kündigt der Kunde selbst (ZUGANGSART = B1); sonst übernimmt der Versorger (ZUGANGSART = BW). |
contract.einzugsdatum |
nein | einzugsdatum |
Einzugsdatum, wichtig bei Umzug. |
contract.bestaetigter_kuendigungstermin |
nein | bestaetigter_kuendigungstermin |
Bestätigter Kündigungstermin beim Altversorger. Höchste Priorität bei Versorgerwechsel. |
contract.naechstmoeglicher_kuendigungstermin |
nein | naechstmoeglicher_kuendigungstermin |
Fallback, wenn der bestätigte Termin noch nicht bekannt ist. |
contract.kuendigung_wirksam_zum |
nein | kuendigung_wirksam_zum |
Wirksamkeitsdatum der Kündigung. |
contract.lieferantenwechsel |
ja | belieferung = "Versorgerwechsel" ? "J" : "N" |
Harte Kennzeichnung „Lieferantenwechsel ja/nein". |
contract.eaw01 |
nein | Erstes verfügbares Datum, formatiert YYYYMMDD
|
Lima-Feld EAW01, rein numerisch. |
Zahlung
| Feld | Pflicht | Standard-Mapping | Bedeutung |
|---|---|---|---|
contract.kzeinzug |
ja | payment_method[0].type = "payment_sepa" ? "J" : "N" |
SEPA-Lastschrift ja/nein. Bei „J" ist ein bank-Block Pflicht. |
contract.bank.iban |
bei SEPA |
payment_method[0].data.iban (Leerzeichen entfernt) |
IBAN. |
contract.bank.kontoinhaber |
bei SEPA | payment_method[0].data.fullname |
Kontoinhabername. |
Abweichende Rechnungsadresse (nur wenn sie sich von der Lieferadresse unterscheidet)
Das Standard-Mapping fügt den Block contract.billing_address nur ein, wenn Straße, Hausnummer oder PLZ von der Lieferadresse abweichen. Inhalt: dieselben Felder wie bei der Lieferadresse plus Anrede und name1.
Bonus & Coupons (optional)
Die Bonusfelder kommen entweder aus dem Produkt (_product.bonusart, _product.bonusbetrag, _product.bonusname, _product.bonustext, _product.sofortbonus_betrag, _product.mindestlaufzeit_bonus) oder – wenn der Tenant epilot-Coupons nutzt – aus line_items[0]._coupons[0]. Wichtig: Wenn bonusart gesetzt ist, müssen auch bonusname und bonusbetrag vorhanden sein. Lima lehnt unvollständige Bonusblöcke ab.
Was die Integration zentral übernimmt (du musst nichts selbst rechnen)
Manche Transformationen sind entweder rein generisch oder erfordern einen Lima-Aufruf. Diese laufen serverseitig – jedes Werk bekommt sie automatisch:
| Aufgabe | Warum zentral |
|---|---|
| Hausnummer parsen („12a-c" → Nummer + Zusatz) | Reines Parsing, für alle Werke identisch. |
| Telefonnummer in Vorwahl + Nummer zerlegen | Gleicher Grund. |
Geburtsdatum ISO → DD.MM.YYYY
|
Gleicher Grund. |
| SEPA-Mandatsdatum | Wird aus metadata.creation_timestamp abgeleitet. |
Belieferungsdatum (VERSORGUNGAB) |
Wird aus belieferung ausgewählt und auf ≥ 2 Arbeitstage in der Zukunft geschoben. |
Zugangsart (ZUGANGSART) |
BE / B1 / BW abhängig von belieferung und uebernahme_kuendigung. |
Kündigung durch Kunde (KUENDIGUNGDURCHKUNDE) |
Gleiche Eingaben wie Zugangsart. |
| Lima-Straßensuche | Live-Aufruf an Lima – liefert BEZIRKNR und STRASSENNR, validiert zugleich, dass die Straße beliefert wird. |
Fehlerfälle – woran scheitert ein NKZ-Aufruf?
| Ursache | Was passiert |
|---|---|
| Straße wird vom Versorger nicht beliefert | NKZ meldet „Street not found in Lima". Es wird kein Auftrag angelegt. |
| Lima-Validierungsfehler (fehlendes oder falsches Feld) | NKZ gibt success: false mit Limas FEHLERSTATUS und FEHLERTEXT zurück. Der Kontakt wird nicht markiert. |
| Netz- oder Timeout-Fehler | NKZ meldet einen internen Fehler. Die Automatisierung kann erneut versenden. |
| Mapping erzeugt ungültige Form | Die Schema-Validierung lehnt den Request vor dem ersten Lima-Aufruf ab. |
Da in jedem Fehlerfall die customer_number nicht auf dem Kontakt landet, kann der Webhook nach Korrektur einfach neu angestoßen werden, ohne Duplikate zu erzeugen.
Was nach erfolgreicher Anlage passiert
- Der nächste Nightly-Sync bzw. Delta-Sync verknüpft den neuen Lima-Vertrag zurück mit dem Kontakt.
- Self-Service-Funktionen (Zählerstand melden, Adresse ändern, Bankverbindung ändern, dynamische Tarifkurven) sind ab sofort nutzbar.
- Der Kontakt gilt nun als Bestandskunde. Künftige Aufträge derselben Person verwenden die vorhandene Kundennummer weiter, statt ein Duplikat anzulegen.
Mapping selbst erweitern – das Vorgehen
- Den Wert in der Order finden. In epilot 360 lässt sich die eingehende Entität in der Webhook-Automatisierung inspizieren.
- In JSONata referenzieren:
$entity.dein_feldfür Top-Level-Attribute,$entity.line_items[0]._product.dein_feldfür Produktattribute,$contact.dein_feldfür Rechnungskontakt-Attribute. - In der JSONata-Sandbox testen (epilot bietet eine direkt im Automation-Editor). Form der Ausgabe gegen die Tabellen oben prüfen.
- Speichern und mit einer Test-Order über die Journey live durchspielen. Die Integrations-Logs zeigen den tatsächlichen NKZ-Request.
Wenn der angelegte Lima-Kunde ein falsches oder fehlendes Feld hat, ist die Lösung fast immer eine JSONata-Änderung – kein Deployment im Integrationscode.
Inbound-Synchronisation: Lima → epilot
Damit epilot ein vollständiges, aktuelles Bild des Kunden zeigt, gibt es drei eingehende Flüsse aus Lima. Sie überschneiden sich bewusst, weil jeder eine andere Lücke schließt.
Wie die Daten aus Lima auf die Felder in epilot übertragen werden, ist im Integration Hub definiert. Über ein Standard-Blueprint bekommt jeder Tenant ein vorkonfiguriertes Mapping, das die typischen Felder (Stammdaten, Vertrag, Zähler, Rechnungen, Dokumente) sofort abdeckt. Möchte ein Kunde einzelne Felder anders abbilden oder eigene Attribute hinzufügen, kann er das direkt im Integration Hub anpassen – ohne dass am Integrationscode etwas geändert werden muss.

On-Demand-Sync
Sobald ein Mitarbeiter in epilot 360 einen Kontakt öffnet oder ein Endkunde sich im Portal anmeldet, ruft epilot die Integration auf und holt synchron alles, was zum Kunden gehört: Stammdaten, Verträge mit Geräten, Abschlägen, Verlauf, Tarifen und VG50-Daten, dazu Zahlwege, Vermerke, Objekte, Rechnungen und Dokumente. Die wichtigsten Daten (Name, Adresse, Vertragsliste) erscheinen typischerweise nach einer Sekunde, Dokumente kommen in den folgenden Sekunden nach. So sehen Service-Mitarbeitende und Endkunden in epilot immer den aktuellen Stand aus Lima, ohne ihn aktiv anstoßen zu müssen.

Delta-Sync
Alle paar Minuten fragt ein Poller Limas Änderung ab (Kunden-, Vertrags-, Forderungs- und Debitorenfeed). Jede Änderung wird auf eine Kundennummer reduziert, dedupliziert und in eine Warteschlange pro Kunde gestellt. Ein Prozessor zieht jeden Eintrag heraus und holt die vollständigen Stammdaten nach. So fließen auch Änderungen, die niemand in epilot angeklickt hat (z. B. nachts erstellte Rechnungen oder Back-Office-Korrekturen) automatisch nach epilot. Wichtig zu wissen: Der Delta-Sync meldet nur, was sich geändert hat – er gleicht nicht den gesamten Datenbestand ab. Da Lima zudem nicht für alle Bereiche eine Änderungsmeldung anbietet, ergänzen die On-Demand-Übernahme (für die Sicht im Moment des Öffnens) und die nächtliche Vollübernahme (für lückenlosen Abgleich) das Bild.
Nightly-Sync (CRM-Export)
Einmal pro Nacht stellt Lima einen vollständigen CRM-Export bereit. epilot speichert diesen Export, vergleicht ihn mit dem Export des Vortags und schickt nur die tatsächlich geänderten Datensätze in epilot – die Briefhistorie ist dabei ausgenommen. So landen auch Massenänderungen, Korrekturen aus dem Back-Office und nachgereichte Zählerstände zuverlässig in epilot, selbst wenn an dem Tag keine Lima-Schnittstelle aufgerufen wurde. Die nächtliche Vollübernahme ist langsamer als die anderen Flüsse, aber dafür vollständig und unabhängig von der Tagesform der Lima-APIs.
Wie die drei zusammenspielen
| Bedarf | Delta | On-Demand | Nightly |
|---|---|---|---|
| „Hat sich etwas in Lima geändert?" | primär (Minuten) | — | innerhalb von 24 Std. |
| Aktueller Stand beim Öffnen eines Kunden | — | primär | — |
| Vollständige Erstbefüllung beim Onboarding | — | — | primär |
| Bulk-Änderungen ohne UI-Trigger | teilweise | — | primär |
| Dokument-Benachrichtigungen | primär (Minuten) | nur bei Aufruf | Stunden bis Tag |
An Lima senden (Outbound)
Aus epilot heraus können bestimmte Selbstbedienungs-Vorgänge direkt in Lima ausgeführt werden. Die unterstützten Anwendungsfälle sind:
- Zählerstand melden
- Rechnungsadresse ändern
- Kontaktdaten ändern
- Bankverbindung ändern
- Abschlag ändern
- Tarifwechsel anstoßen (in Erprobung)
Welche dieser Anwendungsfälle aktiv sind, hängt vom jeweiligen Tenant ab. Sie werden über ein Blueprint installiert – also als vorkonfiguriertes Paket aus Journey, Automatisierung und Mapping, das nur noch auf den Tenant ausgerollt wird.
TODO: Dieser Abschnitt braucht noch mehr Detail (z. B. genaue Eingangsereignisse, Voraussetzungen pro Use Case, Fehlerbilder). Bitte ergänzen.
Dynamische Tarife
Bei einem dynamischen Tarif ändert sich der Energiepreis stündlich nach dem EPEX-Markt. Damit Endkunden verstehen, was sie zahlen und sparen, zeigt das Portal drei Diagramme: Preisverlauf, Kostenverlauf (Preis × eigener Verbrauch) und Verbrauchsverlauf. Eine eigene, schreibgeschützte API der Integration liefert diese Zeitreihen live aus Lima – sie werden nicht zwischengespeichert. Voraussetzungen für die Anzeige im Portal: Die Lima-App muss für installiert sein, und der Zähler des Vertrags muss ein intelligentes Messsystem (iMS) sein. Konventionelle Zähler liefern nicht den nötigen 15-Minuten-Lastgang, und ohne die Lima-App fehlt das Widget im Portal.
Für eine bessere Lesbarkeit beziehen sich Personenbezeichnungen auf alle Geschlechter.