Vom Picklist-Chaos zur Modul-Struktur: So modernisierst Du Dein Tarif-Management in Zoho CRM
Wenn Dein Unternehmen wächst, wächst auch die Komplexität Deiner Daten. Was gestern noch als einfacher Eintrag in einer Auswahlliste (Picklist) funktionierte, wird heute schnell zum unübersichtlichen Daten-Silo. Gerade bei zentralen Informationen wie Produkttarifen, Service-Level-Agreements oder Vertragstypen stößt eine einfache Picklist schnell an ihre Grenzen. Dir fehlen Detailinformationen, Verknüpfungen sind unmöglich und die Anbindung an externe Systeme über APIs wird fehleranfällig und kompliziert. Dieser Artikel zeigt Dir, wie Du aus diesem Chaos ausbrichst, indem Du eine gewachsene Picklist-Struktur in ein sauberes, dediziertes Custom Modul in Zoho CRM überführst und es nahtlos mit externen Systemen verbindest.
Die Herausforderung aus der Praxis: Ein gewachsenes Tarifsystem
Stell Dir ein typisches Szenario vor: Dein Unternehmen verwaltet Kundenverträge, die jeweils einen bestimmten Tarif haben. Zu Beginn hast Du diese Tarife in einem einfachen Picklist-Feld im Vertragsmodul hinterlegt. Mit der Zeit wird diese Liste aber immer länger. Es kommen Tarife von verschiedenen Anbietern hinzu, alte Tarife werden ungültig, neue kommen dazu. Die Liste wird unübersichtlich und unhandlich.
Die eigentlichen Probleme liegen aber tiefer:
- Fehlende Metadaten: Du kannst zu einem Tarif keine zusätzlichen Informationen wie Anbieter, Kosten, Laufzeit oder technische Spezifikationen speichern.
- Inkonsistente Daten: Die gleiche Bezeichnung wird vielleicht für Tarife verschiedener Anbieter genutzt, was zu Verwechslungen führt.
- API-Albträume: Ein externes Abrechnungssystem (nennen wir es mal „KIM“ – Kunden-Informations-Management) soll auf die Vertragsdaten zugreifen. Es erhält aber nur einen Text-String aus der Picklist („Tarif Pro 2024“) und muss diesen mühsam parsen und interpretieren, anstatt auf eine eindeutige ID und strukturierte Daten zuzugreifen.
- Wartungsaufwand: Jede Änderung an einem Tarif erfordert manuelle Anpassungen an vielen Stellen, und die Automatisierung (z.B. in Zoho Flow) wird komplex und fehleranfällig.
Die Lösung liegt darin, die Tarife aus der Picklist zu befreien und ihnen ein eigenes Zuhause zu geben: ein dediziertes Custom Modul in Zoho CRM.
Schritt-für-Schritt: Die Migration vom Picklist zum Custom Modul
Folge dieser Anleitung, um Dein System zu modernisieren. Wir gehen davon aus, dass Du ein Modul „Verträge“ hast, das aktuell ein Picklist-Feld namens „Alter Tarif“ enthält.
Schritt 1: Das Fundament – Dein neues Custom Modul „Tarife“
Zuerst erstellst Du in Zoho CRM ein neues, benutzerdefiniertes Modul. Dieses Modul wird die zentrale Anlaufstelle für alle Tarifinformationen.
- Gehe zu Einstellungen > Anpassung > Module und Felder.
- Klicke auf Neues Modul und nenne es „Tarife“ (Plural) und „Tarif“ (Singular).
- Füge die folgenden Felder hinzu, um Deine Tarife detailliert zu beschreiben:
- Tarifname: Einzeiliges Textfeld (dies wird der Name des Datensatzes sein).
- Anbieter: Picklist oder Nachschlagefeld (Lookup) zu einem „Anbieter“-Modul.
- Preis: Währungsfeld.
- Beschreibung: Mehrzeiliges Textfeld.
- Status: Picklist (z.B. „Aktiv“, „Veraltet“, „Intern“).
- Tarif-ID (extern): Einzeiliges Textfeld, um eine ID aus einem externen System wie SAP, DATEV oder Deinem „KIM“ zu speichern.
- Speichere das neue Modul. Du hast nun eine saubere, strukturierte Datenbank für Deine Tarife.
Schritt 2: Die Verknüpfung – Lookup-Felder intelligent nutzen
Jetzt musst Du Dein „Verträge“-Modul mit dem neuen „Tarife“-Modul verbinden. Das geschieht über ein Nachschlagefeld (Lookup).
- Gehe wieder zu den Einstellungen des „Verträge“-Moduls.
- Ziehe ein Nachschlagefeld (Lookup) aus der linken Leiste in Dein Layout.
- Wähle als Nachschlage-Modul „Tarife“ aus.
- Nenne das Feld „Tarif“ und den zugehörigen Namen der Related List „Verträge“.
- Speichere das Layout.
Du hast nun in jedem Vertrag ein neues Feld, über das Du einen sauberen Datensatz aus Deinem „Tarife“-Modul auswählen kannst. Das alte Picklist-Feld („Alter Tarif“) lässt Du vorerst bestehen – wir brauchen es für die Migration.
Schritt 3: Die Datenmigration – Per Deluge-Skript aufräumen
Dies ist der kritischste Schritt: die Übertragung der alten Daten in die neue Struktur. Manuell ist das bei hunderten oder tausenden Verträgen unmöglich. Wir nutzen dafür eine Custom Function, geschrieben in Deluge, der Skriptsprache von Zoho.
Vorbereitung: Fülle Dein neues „Tarife“-Modul mit allen Tarifen, die in Deiner alten Picklist vorkommen. Stelle sicher, dass der „Tarifname“ im neuen Modul exakt mit den Werten aus der Picklist übereinstimmt.
Erstelle nun eine neue Custom Function unter Einstellungen > Entwicklerbereich > Funktionen.
// Name der Funktion: migrateTariffsToLookup
// Beschreibung: Migriert Tarif-Daten aus einem alten Picklist-Feld in ein neues Lookup-Feld im Verträge-Modul.
// 1. Hole alle Verträge, bei denen das neue Tarif-Lookup noch leer ist, aber das alte Picklist-Feld gefüllt ist.
response = zoho.crm.getRecords("Contracts", 1, 200, {"criteria":"(Tarif:equals:null) and (Alter_Tarif:isnotempty)"});
// 2. Iteriere durch die Liste der abgerufenen Verträge.
for each contract in response.get("data")
{
contractId = contract.get("id");
oldTariffName = contract.get("Alter_Tarif");
// 3. Suche im neuen "Tarife"-Modul nach einem passenden Eintrag.
// WICHTIG: Ersetze "Tarife" durch den API-Namen deines Custom Moduls.
searchResponse = zoho.crm.searchRecords("Tarife", "(Name:equals:" + oldTariffName + ")");
// 4. Wenn genau ein passender Tarif gefunden wurde, aktualisiere den Vertrag.
if(searchResponse.size() == 1)
{
tariffRecord = searchResponse.get(0);
tariffId = tariffRecord.get("id");
// 5. Bereite die Daten für das Update vor und führe es aus.
updateMap = Map();
updateMap.put("Tarif", tariffId); // "Tarif" ist der API-Name des neuen Lookup-Feldes
updateResponse = zoho.crm.updateRecord("Contracts", contractId, updateMap);
info "Vertrag " + contractId + " aktualisiert mit Tarif-ID " + tariffId;
}
else
{
// Logge Fälle, in denen kein oder mehr als ein Tarif gefunden wurde, zur manuellen Prüfung.
info "Problem bei Vertrag " + contractId + ": Konnte keinen eindeutigen Tarif für '" + oldTariffName + "' finden.";
}
}
// Hinweis: Zoho-API-Aufrufe sind auf 200 Datensätze pro Abruf limitiert.
// Für mehr als 200 Verträge musst Du dieses Skript in einer Schleife oder mehrmals ausführen,
// indem Du den 'page'-Parameter in getRecords erhöhst.
Führe diese Funktion aus (ggf. mehrmals, bis alle Verträge migriert sind). Prüfe die Logs unter „Fehlgeschlagene Ausführungen“, um Problemfälle manuell zu korrigieren.
Schritt 4: Die externe Anbindung – API und Webhooks als Brücke
Dein externes „KIM“-System muss nun seine Logik anpassen. Statt eines einfachen Text-Strings erhält es jetzt eine ID aus dem Lookup-Feld. Das ist ein großer Vorteil!
Pull-Methode (API-Abruf):
Das externe System ruft die Vertragsdaten ab. Der API-Response für einen Vertrag sieht nun etwa so aus:
{
"data": [
{
"Vertragsnummer": "VTR-2024-001",
"Kunde": {
"name": "Musterfirma GmbH",
"id": "1234567890"
},
"Tarif": {
"name": "Business Pro 5G",
"id": "9876543210"
},
"id": "1122334455"
}
]
}
Das externe System erhält die ID des Tarifs (`9876543210`). Um die vollen Tarifdetails zu bekommen, muss es einen zweiten API-Aufruf an das „Tarife“-Modul machen:
GET https://www.zohoapis.eu/crm/v2/Tarife/9876543210
Dies liefert alle strukturierten Daten des Tarifs. Diese Entkopplung ist robust, skalierbar und der Standard für moderne Architekturen, wie sie auch von Systemen wie Salesforce, HubSpot oder Microsoft Dynamics 365 verwendet wird.
Push-Methode (Webhook):
Noch eleganter ist es, wenn Zoho CRM das externe System aktiv informiert. Erstelle eine Workflow-Regel im „Verträge“-Modul, die bei „Bearbeiten“ ausgelöst wird, wenn sich das Feld „Tarif“ ändert. Als Aktion definierst Du einen Webhook.
Der Webhook sendet eine POST-Anfrage an einen Endpunkt Deines externen Systems (z.B. https://api.kim-system.de/update/contract) und übergibt die Vertrags-ID und die neue Tarif-ID. Dein externes System kann sich dann die benötigten Daten proaktiv holen.
Schritt 5: Aufräumen und optimieren
Wenn die Migration abgeschlossen ist und alle externen Systeme umgestellt sind, kannst Du das alte Picklist-Feld („Alter Tarif“) aus dem Layout entfernen und später löschen. Überprüfe zudem alle anderen Automatisierungen:
- Workflow-Regeln: Passen die Kriterien noch?
- Blueprints: Werden Aktionen basierend auf dem alten Feld ausgelöst?
- Berichte und Dashboards: Aktualisiere alle Berichte in Zoho Analytics, damit sie das neue Lookup-Feld verwenden.
- E-Mail-Vorlagen: Nutze die Merge-Tags des neuen Lookup-Feldes, um z.B. den Tarifpreis direkt in eine E-Mail einzufügen.
Tipps und Best Practices für komplexe Prozesse
Prozessautomatisierung mit Weitsicht: Der Fall Mitarbeiteraustritt
Eine häufige Anforderung ist die Automatisierung von Offboarding-Prozessen. Was passiert, wenn ein Mitarbeiter (gespeichert in Zoho People oder einem Custom Modul) das Unternehmen verlässt? Die Idee, alle zugeordneten Datensätze (z.B. Geräte, Lizenzen, Verträge) automatisch zu entkoppeln, klingt verlockend, birgt aber Gefahren.
Ein einfaches Entfernen der Verknüpfung erzeugt „Datenleichen“ – ein Laptop im System ist plötzlich niemandem mehr zugeordnet. Die historische Information geht verloren. Ein besserer Ansatz:
- Ändere nicht die Verknüpfung, sondern den Status des zugeordneten Geräts (z.B. von „In Nutzung“ auf „Zurückgegeben“).
- Erstelle eine Aufgabe in Zoho Projects für die IT, das Gerät zu prüfen.
- Archiviere die historische Zuordnung in einer “ Frühere Besitzer“-Related List.
Dies lässt sich mit einer Deluge-Funktion umsetzen, die durch die Statusänderung im Mitarbeitermodul getriggert wird.
Daten aus Silos befreien: Zoho Analytics als zentraler Hub
Dein Unternehmen nutzt vielleicht nicht nur Zoho, sondern auch andere Systeme wie Salesforce für einen Teil des Vertriebs oder eine MySQL-Datenbank für Produktdaten. Mit Zoho Analytics kannst Du diese Datenquellen zusammenführen. Erstelle einen zentralen Arbeitsbereich, der Daten aus Zoho CRM, Salesforce und Deiner Datenbank via Connectors importiert. So kannst Du Berichte erstellen, die den gesamten Kundenlebenszyklus abbilden, von der ersten Salesforce-Leadquelle bis zum abgerechneten Vertrag im externen „KIM“-System.
Komplexe Angebote erstellen: Zoho Creator als Lösung
Was ist, wenn Du Angebote mit optionalen Posten erstellen möchtest, die ein Kunde abwählen kann? In Zoho CRM ist das nur mit umständlichen Workarounds möglich. Hier glänzt Zoho Creator. Baue eine kleine, benutzerdefinierte App, die als interaktiver Angebotskonfigurator dient. Der Vertriebsmitarbeiter stellt das Angebot zusammen, der Kunde erhält einen Link zur Creator-App, wählt seine Optionen und das finale Angebot wird per API automatisch in Zoho Books oder Zoho CRM erstellt.
Fazit: Warum sich der Aufwand lohnt
Die Umstellung von einer einfachen Picklist auf ein dediziertes Modul ist mehr als nur eine technische Aufräumaktion. Es ist ein strategischer Schritt hin zu einer skalierbaren, robusten und zukunftssicheren Systemarchitektur. Deine Daten werden sauberer, Deine Prozesse zuverlässiger und die Integration mit anderen Systemen – egal ob aus dem Zoho-Ökosystem oder von Drittanbietern wie SAP, Microsoft Azure oder individuellen Eigenentwicklungen – wird von einem Problem zu einem strategischen Vorteil. Du schaffst damit das Fundament für aussagekräftige Analysen und eine weitreichende Automatisierung Deiner Geschäftsprozesse.
Verwendete Zoho Apps in diesem Artikel:
