Zoho CRM Deluge Custom Functions und Layout-Regeln für Angebots- und Zeiterfassungsprozesse

  • Beitrags-Autor:

Zoho CRM in der Praxis: Vom Klick zum fertigen Angebot und darüber hinaus

Die wahre Stärke des Zoho-Ökosystems liegt nicht allein in den einzelnen, leistungsstarken Apps. Sie entfaltet sich erst dann vollständig, wenn Du beginnst, diese Anwendungen intelligent miteinander zu verknüpfen, Prozesse zu automatisieren und die Plattform an Deine exakten Bedürfnisse anzupassen. Viele Nutzer stehen jedoch vor der Herausforderung, dass Standard-Workflows nicht immer ausreichen. Wie erstellst Du beispielsweise mit einem einzigen Klick ein fehlerfreies Angebot, das Daten aus verschiedenen verknüpften Modulen zusammenzieht? Wie stellst Du sicher, dass Dein CRM-Layout sich dynamisch an den Vertriebsprozess anpasst und nur die relevanten Informationen anzeigt? In diesem Artikel zeigen wir Dir anhand eines praxisnahen Beispiels, wie Du genau diese Hürden mit Bordmitteln wie Deluge-Skripten, Layout-Regeln und der richtigen App-Auswahl meisterst.

Die Herausforderung aus der Praxis: Ein reibungsloser Übergang vom Verkauf zur Abwicklung

Stell Dir ein typisches Szenario in einem dienstleistungsorientierten Unternehmen vor: Ein Vertriebsmitarbeiter hat einen Deal in Zoho CRM erfolgreich zum Abschluss gebracht und die Phase auf „Gewonnen“ gesetzt. Nun beginnt eine Kette manueller Aufgaben:

  • Ein formelles Angebot oder eine Auftragsbestätigung muss erstellt werden. Oft ist dies ein mehrstufiger Prozess, bei dem eine Seriendruck-Vorlage ausgewählt und manuell mit den Daten aus dem Deal, dem verknüpften Unternehmen und den Produkten befüllt werden muss. Das ist fehleranfällig und zeitraubend.
  • Nach dem Abschluss müssen neue Informationen für die Projektabwicklung erfasst werden, z. B. technische Ansprechpartner oder Liefertermine. Diese Felder sind jedoch während der gesamten Verkaufsphase sichtbar und überladen das Layout unnötig.
  • Die Arbeitszeiten der Servicetechniker, die den Auftrag ausführen, müssen erfasst werden – idealerweise in einer einfachen, mobilen Anwendung, ohne dass jeder Techniker eine teure Volllizenz benötigt.

Unser Ziel ist es, diesen gesamten Prozess zu optimieren: Ein Klick zur Angebotserstellung, ein sauberes, kontextabhängiges CRM-Layout und die richtige App für die Zeiterfassung im Außendienst.

Schritt-für-Schritt zur automatisierten Lösung

Wir lösen diese Herausforderung in drei Schritten: Zuerst erstellen wir eine Custom Function für die Ein-Klick-Angebotserstellung, dann konfigurieren wir eine Layout-Regel für ein dynamisches Interface und schließlich wählen wir die passende App für die Zeiterfassung aus.

1. Die Ein-Klick-Angebotserstellung mit einer Deluge Custom Function

Standardmäßig erfordert die Erstellung eines Seriendruck-Dokuments in Zoho CRM mehrere Klicks und öffnet eine Maske mit vielen Optionen, die den Nutzer verwirren kann. Mit einer Custom Function, die wir auf einen Button legen, reduzieren wir dies auf einen einzigen Klick.

Die technische Hürde: Daten aus verknüpften Modulen abrufen

Das Kernproblem vieler Skripte ist, dass eine Funktion, die im Modul „Potenziale“ (API-Name: `Deals`) ausgeführt wird, nur direkten Zugriff auf die Felder innerhalb dieses Datensatzes hat. Informationen aus verknüpften Modulen wie „Firmen“ (`Accounts`), „Kontakte“ (`Contacts`) oder den zugeordneten „Produkten“ (`Products`) müssen aktiv per Code abgefragt werden. Das ist kein Fehler, sondern ein grundlegendes Architekturprinzip von Zoho, das auch die Berechtigungen sauber trennt.

Die Umsetzung mit Deluge:

  1. Seriendruck-Vorlage erstellen: Gehe in die Einstellungen von Zoho CRM > Vorlagen > Seriendruck und erstelle eine Vorlage in Zoho Writer. Definiere hier alle Platzhalter, die Du füllen möchtest (z.B. für den Firmennamen, die Adresse, die Produktliste etc.).
  2. Button erstellen: Gehe zu Einstellungen > Anpassung > Module und Felder > Potenziale und wähle den Tab „Links und Schaltflächen“. Erstelle einen neuen Button (z.B. mit dem Namen „Angebot erzeugen“) und wähle „Schreiben einer Funktion“ aus.
  3. Deluge-Skript schreiben: Füge den folgenden Code als Basis in den Funktionseditor ein. Dieses Skript holt sich die notwendigen Daten, bereitet sie für den Seriendruck auf und erstellt das Dokument.

// Deluge-Skript für einen Button im Modul "Potenziale" (Deals)
// Argument: dealId als Long

// 1. Deal-Datensatz abrufen
dealRecord = zoho.crm.getRecordById("Deals", dealId);

// 2. Daten aus dem Deal-Modul extrahieren
dealName = ifnull(dealRecord.get("Deal_Name"),"");
dealOwner = ifnull(dealRecord.get("Owner").get("name"),"");

// 3. Verknüpften Firmen-Datensatz (Account) abrufen
accountId = dealRecord.get("Account_Name").get("id");
accountRecord = zoho.crm.getRecordById("Accounts", accountId);
accountName = ifnull(accountRecord.get("Account_Name"),"");
billingStreet = ifnull(accountRecord.get("Billing_Street"),"");
billingCity = ifnull(accountRecord.get("Billing_City"),"");

// 4. Verknüpften Kontakt-Datensatz abrufen (Annahme: es gibt ein Nachschlagefeld "Ansprechpartner")
contactId = dealRecord.get("Contact_Name").get("id");
contactRecord = zoho.crm.getRecordById("Contacts", contactId);
contactFirstName = ifnull(contactRecord.get("First_Name"),"");
contactLastName = ifnull(contactRecord.get("Last_Name"),"");
contactSalutation = ifnull(contactRecord.get("Salutation"),"");

// 5. Verknüpfte Produkte aus der Related List abrufen
relatedProducts = zoho.crm.getRelatedRecords("Products", "Deals", dealId);
productList = list();
for each product in relatedProducts
{
    productMap = map();
    productMap.put("product_name", product.get("Product_Name"));
    productMap.put("quantity", product.get("Quantity"));
    productMap.put("list_price", product.get("List_Price"));
    productMap.put("total", product.get("Total"));
    productList.add(productMap);
}

// 6. Alle Daten in einer Map für den Seriendruck zusammenfassen
mergeData = Map();
mergeData.put("Deal_Name", dealName);
mergeData.put("Account_Name", accountName);
mergeData.put("Billing_Street", billingStreet);
mergeData.put("Billing_City", billingCity);
mergeData.put("Contact_Salutation", contactSalutation);
mergeData.put("Contact_Full_Name", contactFirstName + " " + contactLastName);
mergeData.put("Deal_Owner", dealOwner);
// WICHTIG: Die Produktliste muss als JSON-String übergeben werden
mergeData.put("Product_List", productList.toString());

// 7. Seriendruck ausführen und Dokument in WorkDrive speichern
// Ersetze "DEINE_VORLAGEN_ID" durch die ID deiner Seriendruck-Vorlage
mergeDocument = zoho.writer.mergeAndStore(DEINE_VORLAGEN_ID, "pdf", mergeData, "zoho_workdrive");

// 8. Rückmeldung für den Benutzer
info mergeDocument; // Zeigt die Antwort der API an
return "Angebot wurde erfolgreich erzeugt und in WorkDrive gespeichert.";

Dieses Skript nutzt die Zoho CRM API, um explizit die verknüpften Datensätze zu laden. Das Ergebnis ist ein fertiges PDF, das automatisch in Zoho WorkDrive gespeichert wird.

2. Dynamische Layouts für einen aufgeräumten Prozess

Um die Benutzeroberfläche im CRM sauber zu halten, verwenden wir Layout-Regeln. Ein Abschnitt mit Feldern für die Projektabwicklung soll erst sichtbar werden, wenn der Deal gewonnen wurde.

Die Umsetzung mit Layout-Regeln:

  1. Abschnitt erstellen: Gehe im Layout-Editor des Moduls „Potenziale“ und erstelle einen neuen Abschnitt, z.B. „Abwicklung“. Füge alle relevanten Felder hinzu (z.B. Projektleiter, Startdatum, etc.).
  2. Layout-Regel definieren: Navigiere zu Einstellungen > Anpassung > Module und Felder > Potenziale und wähle den Tab „Layout-Regeln“.
  3. Neue Regel erstellen:
    • Name der Regel: z.B. „Abwicklungsfelder bei Gewinn anzeigen“
    • Bedingung: Wähle das Feld „Phase“ (Stage), den Operator „ist“ und den Wert „Gewonnen und abgeschlossen“.
    • Aktion auslösen: Wähle „Aktion ausführen“.
    • Aktion: Wähle „Abschnitt einblenden“ und wähle Deinen neu erstellten Abschnitt „Abwicklung“ aus.
  4. Speichern und testen: Speichere die Regel. Wenn Du nun einen Deal öffnest, ist der Abschnitt verborgen. Sobald Du die Phase auf „Gewonnen“ änderst, erscheint der Abschnitt automatisch.

Praxis-Tipp: Manchmal dauert es einige Minuten, bis ein neu erstellter Abschnitt in der Dropdown-Liste der Layout-Regeln zur Auswahl steht. Ein kurzer Moment Geduld oder ein Neuladen der Seite hilft hier oft.

3. Die richtige App für die Aufgabe: Projects vs. Sprints vs. Shifts

Mit dem gewonnenen Deal stellt sich die Frage nach dem richtigen Werkzeug für die Umsetzung und Zeiterfassung. Zoho bietet hier mehrere Optionen, die für unterschiedliche Anwendungsfälle optimiert sind.

  • Zoho Projects: Das klassische, extrem mächtige Projektmanagement-Tool. Es ist ideal für komplexe Projekte mit vielen Abhängigkeiten, Meilensteinen und detaillierter Zeiterfassung auf Aufgabenebene. Die Gefahr hierbei kann ein „Over-Engineering“ sein, bei dem man sich in der Organisation verliert.
  • Zoho Sprints: Die moderne, schlanke Alternative, die oft als Jira-Konkurrent positioniert wird. Perfekt für agile Teams (z.B. in der Softwareentwicklung oder im Marketing), die in Sprints arbeiten, ein Backlog pflegen und eine intuitive Oberfläche bevorzugen.
  • Zoho Shifts: Die ideale Lösung für unseren Anwendungsfall der Servicetechniker. Diese App ist speziell für die einfache Dienstplanung und Zeiterfassung konzipiert. Mitarbeiter können sich per mobiler App einfach ein- und ausstempeln („stempeln“), ohne eine komplexe Projektstruktur bedienen zu müssen. Der größte Vorteil: Es erfordert keine teuren Zoho One Lizenzen für jeden Techniker.

Für die einfache Erfassung von Arbeitszeiten im Außendienst ist Zoho Shifts daher die effizienteste und kostengünstigste Wahl.

Tipps und Best Practices

  • API-Namen verwenden: In Deluge-Skripten musst Du immer die internen API-Namen der Module und Felder verwenden, nicht deren Anzeigenamen. Du findest sie im Einstellungsmenü unter „API-Namen“.
  • Denke an die Benutzerfreundlichkeit: Benenne Buttons klar und verständlich. Ein Button namens „Angebot erzeugen“ ist eindeutiger als „Angebot erstellen“, ein Begriff, der im CRM-Kontext mehrfach vorkommt.
  • Nutze KI als Helfer: Wenn Du bei einem Deluge-Skript nicht weiterkommst, können Tools wie ChatGPT eine große Hilfe sein. Gib der KI Deinen vorhandenen Code, die Fehlermeldung und eine klare Anweisung, was Du erreichen möchtest. Zum Beispiel: „Hier ist mein Deluge-Skript für Zoho CRM. Es schlägt fehl, weil die Produktdaten nicht geladen werden. Bitte ergänze den Code so, dass er alle Produkte aus der Related List des Deals ausliest und als Liste von Maps zur Verfügung stellt.“
  • Iterativ vorgehen: Beginne mit einer einfachen Funktion, die nur ein oder zwei Felder aus einem verknüpften Modul holt. Wenn das funktioniert, erweitere das Skript schrittweise. Das macht die Fehlersuche deutlich einfacher.

Weitere Integrationsmöglichkeiten

Dieser Workflow ist nur der Anfang. Du könntest ihn problemlos erweitern:

  • Nutze Zoho Flow, um bei der Änderung der Deal-Phase auf „Gewonnen“ automatisch ein neues Projekt in Zoho Projects anzulegen.
  • Erstelle automatisch einen Kanal in Zoho Cliq für das neue Projektteam.
  • Synchronisiere die im CRM erstellte Auftragsbestätigung direkt mit Zoho Books oder Zoho Invoice, um die Rechnungsstellung vorzubereiten.

Fazit: Mehr als die Summe seiner Teile

Dieses Beispiel zeigt eindrücklich, dass die wahre Kraft von Zoho in der intelligenten Verknüpfung seiner Apps liegt. Mit einer Custom Function in Zoho CRM, die auf Daten aus verschiedenen Modulen zugreift, und durchdachten Layout-Regeln kannst Du komplexe, manuelle Prozesse in eine Ein-Klick-Lösung verwandeln. Die strategische Auswahl der richtigen App für die jeweilige Aufgabe – wie Zoho Shifts für die einfache Zeiterfassung – spart nicht nur Zeit und Geld, sondern erhöht auch die Akzeptanz bei den Mitarbeitern. Trau Dich, über die Standardfunktionen hinauszugehen und die Plattform durch kleine, gezielte Anpassungen zu Deinem perfekten Betriebssystem zu machen.


Verwendete Zoho Apps in diesem Artikel: