Zoho CRM und externe API: KYC-UBO-Ermittlung mit Deluge automatisieren

  • Beitrags-Autor:

KYC-Prozesse in Zoho CRM automatisieren: UBO-Ermittlung via API und Deluge

Wenn du in einer regulierten Branche wie FinTech, Rechtsberatung oder Immobilien tätig bist, kennst du die Herausforderung: Der „Know Your Customer“-Prozess (KYC) und insbesondere die Ermittlung des wirtschaftlich Berechtigten (Ultimate Beneficial Owner, UBO) sind gesetzlich vorgeschrieben, aber oft ein manueller, zeitaufwändiger und fehleranfälliger Prozess. Mitarbeiter müssen Handelsregister durchsuchen, Beteiligungsstrukturen nachverfolgen und die Ergebnisse sorgfältig dokumentieren. Dieser Artikel zeigt dir, wie du diesen gesamten Prozess direkt in Zoho CRM mithilfe von externen APIs und der Zoho-eigenen Skriptsprache Deluge weitgehend automatisieren kannst. Wir bauen eine Lösung, die nicht nur Zeit spart, sondern auch die Datenqualität und Compliance-Sicherheit in deinem Unternehmen signifikant erhöht.

Praxisbeispiel: Die Herausforderung für einen Zahlungsdienstleister

Stell dir einen Zahlungsdienstleister vor, der neue Geschäftskunden onboardet. Für jeden neuen Firmenkunden muss das Compliance-Team manuell den oder die wirtschaftlich Berechtigten ermitteln – also die natürlichen Personen, die letztendlich mehr als 25 % der Anteile oder Stimmrechte kontrollieren. Der typische Prozess sieht so aus:

  • Ein neuer Firmenkunde (Account) wird im Zoho CRM angelegt.
  • Ein Mitarbeiter des Compliance-Teams erhält eine Benachrichtigung.
  • Der Mitarbeiter öffnet die Website eines öffentlichen Registers (z. B. das deutsche Unternehmensregister).
  • Er sucht nach dem Unternehmen und analysiert die Gesellschafterliste.
  • Wenn ein Gesellschafter eine andere Firma ist (z. B. eine Holding), muss der Prozess für diese Firma wiederholt werden – oft über mehrere Ebenen hinweg.
  • Sobald eine natürliche Person gefunden ist, werden deren Daten manuell als Kontakt im CRM erfasst und mit dem ursprünglichen Account verknüpft.

Dieser Prozess ist langsam und birgt Risiken. Ein Zahlendreher bei der Suche oder eine übersehene Beteiligung können zu Compliance-Verstößen führen. Die Lösung liegt darin, diesen Rechercheprozess zu automatisieren.

Schritt-für-Schritt-Anleitung zur automatisierten UBO-Ermittlung

Unsere Lösung basiert auf der Kombination von Zoho CRM, einer externen API zu einem Unternehmensregister (wir nennen sie hier generisch „Open Register API“) und cleveren Deluge-Skripten.

1. Vorbereitung in Zoho CRM

Zuerst schaffen wir die nötige Datenstruktur in deinem CRM.

  • Benutzerdefinierte Felder im Modul „Firmen“ (Accounts):
    • Ein Picklistenfeld namens „UBO-Status“ mit Werten wie „Offen“, „In Prüfung“, „Automatisch ermittelt“, „Manuell geprüft“, „Ermittlung nicht möglich“.
    • Ein Nachschlagefeld (Lookup) zum Modul „Kontakte“, um den primären UBO direkt zu verknüpfen.
  • Verknüpfungsmodul (Junction Module) oder Related List: Um eine n:m-Beziehung zwischen Firmen und Kontakten (als UBOs) darzustellen, kannst du entweder ein benutzerdefiniertes Modul „Beteiligungen“ erstellen oder die Standard-Kontaktrollen-Funktion anpassen. Für dieses Beispiel nutzen wir eine einfache Verknüpfung im Kontakte-Modul.
  • Einheitliche Datenquelle: Lege ein Picklistenfeld „Leadquelle“ an und stelle sicher, dass es einen Wert wie „Open Register API“ gibt. Damit markieren wir alle automatisch angelegten Firmen, die selbst keine Kunden, sondern nur Teil einer Beteiligungsstruktur sind. Das hilft, sie aus Vertriebsansichten herauszufiltern.

2. Anbindung der externen API

Das Herzstück der Automatisierung ist die Verbindung zu einer API, die Unternehmensdaten bereitstellt. Du benötigst einen Anbieter, der eine REST-API für den Zugriff auf Handelsregisterdaten bietet. Die Authentifizierung erfolgt meist über einen API-Key.

In Zoho CRM richtest du die Verbindung über Einstellungen > Entwicklerbereich > Verbindungen ein. Dort hinterlegst du die Basis-URL der API und die Authentifizierungsdetails. Dies sorgt dafür, dass du den API-Key nicht in jedem Skript hardcoden musst.

3. Der Auslöser: Workflow-Regel in Zoho CRM

Wir wollen den Prozess starten, sobald eine neue Firma mit dem Status „Kunde“ angelegt wird.

  1. Gehe zu Einstellungen > Automatisierung > Workflow-Regeln.
  2. Erstelle eine neue Regel für das Modul Firmen.
  3. Wähle als Auslöser: Erstellen oder Bearbeiten.
  4. Setze als Bedingung: „Kundentyp“ ist „Kunde“ UND „UBO-Status“ ist „Offen“.
  5. Als sofortige Aktion wählst du Funktion und erstellst eine neue Deluge-Funktion, z. B. `findUBOsForAccount`.

4. Das Herzstück: Die Deluge Custom Function

Diese Funktion enthält die gesamte Logik. Sie versucht, die UBOs auf drei verschiedene Arten zu ermitteln: direkte Abfrage, rekursive Berechnung und als letzte Instanz die Vorbereitung für eine manuelle Prüfung.

Hier ist ein konzeptionelles Beispiel für die Funktion `findUBOsForAccount`:


// Funktion, die als Argument die ID der Firma erhält
void findUBOsForAccount(int accountId)
{
    // 1. Firmendaten aus dem CRM abrufen
    accountDetails = zoho.crm.getRecordById("Accounts", accountId);
    companyName = accountDetails.get("Account_Name");
    info "Starte UBO-Ermittlung für: " + companyName;

    // 2. Direkte UBO-Abfrage an die "Open Register API"
    // Ersetze 'open_register_connection' mit dem Namen deiner API-Verbindung
    response = invokeurl
    [
        url :"https://api.open-register.com/v1/ubo?company=" + companyName
        type :GET
        connection:"open_register_connection"
    ];

    // 3. Fall 1: UBOs wurden direkt gefunden
    if(response.get("ubos") != null && response.get("ubos").size() > 0)
    {
        for each ubo in response.get("ubos")
        {
            // Erstelle oder aktualisiere einen Kontakt-Datensatz für den UBO
            // und verknüpfe ihn mit der Firma
            // ... (Code zum Erstellen/Verknüpfen von Kontakten) ...
        }
        // Status der Firma im CRM aktualisieren
        zoho.crm.updateRecord("Accounts", accountId, {"UBO_Status":"Automatisch ermittelt"});
        info "UBOs direkt gefunden und verknüpft.";
    }
    // 4. Fall 2: Keine direkten UBOs, aber Gesellschafter (Shareholders)
    else if(response.get("shareholders") != null && response.get("shareholders").size() > 0)
    {
        info "Keine direkten UBOs, starte rekursive Gesellschafter-Analyse...";
        for each shareholder in response.get("shareholders")
        {
            // Prüfen, ob der Gesellschafter eine natürliche Person mit >25% ist
            if(shareholder.get("type") == "person" && shareholder.get("share_percentage") > 25)
            {
                // UBO gefunden, Kontakt anlegen/verknüpfen
                // ...
            }
            // Wenn der Gesellschafter eine Firma ist, wird es interessant
            else if(shareholder.get("type") == "company")
            {
                // Erstelle einen neuen Account für die Gesellschafter-Firma
                // WICHTIG: Setze die Leadquelle auf "Open Register API"
                // um sie von echten Kunden zu unterscheiden.
                newAccountMap = Map();
                newAccountMap.put("Account_Name", shareholder.get("name"));
                newAccountMap.put("Lead_Source", "Open Register API");
                newAccountMap.put("UBO_Status", "Offen");
                createResp = zoho.crm.createRecord("Accounts", newAccountMap);
                
                // HIER IST DIE REKURSION:
                // Rufe dieselbe Funktion für die neu erstellte Gesellschafter-Firma auf.
                // Achtung: Unbedingt Schutzmechanismen gegen Endlosschleifen einbauen!
                // (z.B. eine Zählervariable für die Tiefe)
                // thisapp.findUBOsForAccount(createResp.get("id"));
            }
        }
    }
    // 5. Fall 3: Keine Daten von der API
    else
    {
        // Status auf "Manuelle Prüfung erforderlich" setzen und Benachrichtigung senden
        zoho.crm.updateRecord("Accounts", accountId, {"UBO_Status":"Manuelle Prüfung erforderlich"});
        // Sende eine Nachricht an den Compliance-Channel in Zoho Cliq
        zoho.cliq.postToChannel("compliance_channel", "Manuelle UBO-Prüfung für " + companyName + " erforderlich. API lieferte keine Daten.");
    }
}

5. Umgang mit Mehrdeutigkeiten und Systemgrenzen

In der Praxis stößt jede Automatisierung an Grenzen. Hier sind zwei typische Probleme und deren Lösungen:

  • Problem: Die API-Suche liefert mehrere Treffer. Eine Suche nach „Musterfirma“ könnte „Musterfirma GmbH“, „Musterfirma Holding AG & Co. KG“ etc. zurückgeben. Die Automatisierung weiß nicht, welche die richtige ist.

    Lösung: Implementiere einen benutzerdefinierten Button im Firmen-Modul, z.B. „Manuelle Firmensuche“. Dieser Button ruft eine Funktion auf, die die Suchergebnisse der API in einem Popup anzeigt. Der Anwender kann den korrekten Eintrag auswählen, dessen ID dann für die weitere automatische Verarbeitung genutzt wird.
  • Problem: Die API liefert für bestimmte Gesellschaftsformen keine Daten. Bei Aktiengesellschaften (AGs) sind die Aktionäre oft nicht öffentlich bekannt, sodass die API keine UBOs ermitteln kann.

    Lösung: Akzeptiere diese Systemgrenze. Deine Deluge-Funktion sollte diesen Fall erkennen (z.B. wenn die API einen leeren Datensatz für eine AG zurückgibt) und den Prozess geordnet beenden, indem sie den „UBO-Status“ auf „Manuelle Prüfung erforderlich“ setzt und das Compliance-Team z.B. über Zoho Cliq informiert.

Tipps und Best Practices

  • Datenhygiene ist entscheidend: Die Unterscheidung zwischen echten Kunden und automatisch angelegten Beteiligungsgesellschaften über ein Feld wie „Leadquelle“ ist essenziell. So verhinderst du, dass diese reinen Daten-Accounts in Vertriebs-Pipelines oder Marketing-Kampagnen auftauchen.
  • Arbeite im Sandbox-Modus: Entwickle und teste deine Funktionen immer zuerst in einer Sandbox-Umgebung von Zoho CRM. Das Anlegen von Testdaten im Live-System kann schnell zu Chaos führen. Plane eine Strategie zur Bereinigung von Testdaten.
  • Fehlerbehandlung einbauen: Was passiert, wenn die externe API nicht erreichbar ist? Dein Deluge-Skript sollte `try…catch`-Blöcke verwenden, um API-Fehler abzufangen und den Prozess kontrolliert zu beenden, anstatt unkontrolliert abzubrechen.
  • Limits beachten: Zoho hat tägliche Limits für API-Aufrufe und Skript-Ausführungen. Bei der rekursiven Suche durch komplexe Firmengeflechte können diese Limits schnell erreicht werden. Baue Zähler und Sicherheitsabbrüche in deine Skripte ein.
  • Alternative zu Deluge: Zoho Flow: Für einfachere, lineare Prozesse ohne komplexe rekursive Logik kann Zoho Flow eine No-Code/Low-Code-Alternative sein, um Zoho CRM mit externen Diensten zu verbinden.

Zusätzliche Integrationsmöglichkeiten

Sobald der UBO-Status auf „Geprüft“ steht, kannst du weitere Prozesse im Zoho-Ökosystem anstoßen:

  • Zoho Books & Zoho Billing: Erstelle automatisch einen Kunden in deinem Buchhaltungssystem, sobald die Compliance-Prüfung abgeschlossen ist.
  • Zoho Sign: Sende automatisch die notwendigen Vertragsdokumente oder Compliance-Bestätigungen an die ermittelten UBOs zur digitalen Unterzeichnung.
  • Zoho Analytics: Erstelle ein Dashboard, das die Durchlaufzeiten für KYC-Prüfungen, die Erfolgsquote der Automatisierung und die Anzahl der manuellen Nachprüfungen visualisiert. So kannst du Engpässe im Prozess identifizieren und optimieren.

Fazit

Die Automatisierung der UBO-Ermittlung ist ein Paradebeispiel dafür, wie Zoho CRM von einer reinen Vertriebs- und Kundendatenbank zu einer zentralen Prozess-Engine für dein gesamtes Unternehmen werden kann. Durch die intelligente Kombination von Workflows, Deluge-Skripten und der Anbindung externer APIs überwindest du Systemgrenzen und transformierst einen manuellen, fehleranfälligen Compliance-Prozess in einen schnellen, skalierbaren und zuverlässigen Automatismus. Du sparst nicht nur wertvolle Arbeitszeit, sondern erhöhst auch die Qualität und Nachvollziehbarkeit deiner KYC-Prüfungen. Dies ist ein entscheidender Wettbewerbsvorteil in jeder regulierten Branche.


Verwendete Zoho Apps in diesem Szenario: