CoeveraBlueprints

Blueprint 001 · Datenmodell

Wie führen Sie fünf verschiedene Arten von Kundenanfragen durch einen einzigen Helpdesk?

Bestellungen, Angebotsanfragen, Neuproduktanfragen, Zertifikatsanfragen und allgemeine Fragen. Eine Warteschlange, eine Referenznummer, ein Status-Lebenszyklus – aber fünf völlig verschiedene Sätze von Fragen.

Geschrieben von Veröffentlicht 2026-09-23Geprüft in einem Live-Coevera-SpaceÜbersetzt aus dem englischen OriginalMarkdown-Fassung ↓

Die kurze Antwort

Modellieren Sie eine einzige benutzerdefinierte Entität für den Case und jeden Anfragetyp als CustomEntityType-Untertyp darunter. Das native Feld typeId von Coevera – ein Fremdschlüssel auf jedem Datensatz, der auf seinen Entitätstyp verweist – ist das Unterscheidungsmerkmal und steuert nativ die Formularauswahl, die Prozessfilterung und gespeicherte Ansichten. Definieren Sie jedes Feld einmal auf der übergeordneten Entität; das Formular jedes Untertyps wählt die Teilmenge, die es braucht.

Das Einzige, was Ihr Design umformen wird: Freigabeprozesse können keine benutzerdefinierte Entität als Ziel haben, und der Approval-Datensatz nimmt keine benutzerdefinierten Felder auf. Wenn einer Ihrer Anfragetypen eine Freigabe durch mehrere Parteien braucht, läuft sie über ein Proxy-Quote – siehe §6.

Das Geschäftsproblem

Ein Hersteller verkauft über ein Netz unabhängiger Distributoren. Diese Distributoren brauchen ständig etwas vom Hersteller, und die Anfragen haben nicht alle dieselbe Form:

  • Eine Bestellung, die zu vereinbarten Preisen bearbeitet werden soll
  • Eine Angebotsanfrage für eine Liste von Teilen, mit Mengen und einem Wunschtermin
  • Eine Neuproduktanfrage – etwas, das nicht im Katalog steht und eine technische Machbarkeitsprüfung sowie die Freigabe durch sechs interne Abteilungen braucht, bevor ein Preis genannt werden kann
  • Eine Materialzertifikatsanfrage für ein bestimmtes Produktionslos, um die Compliance-Akte eines Endkunden zu erfüllen
  • Eine allgemeine Frage oder Beschwerde, die zu nichts davon passt

Vor dem Projekt kamen alle fünf als E-Mails und Anrufe in gemeinsame Postfächer. Nichts hatte eine Referenznummer, niemand konnte „Wo steht meine Anfrage?“ beantworten, ohne einen Menschen zu fragen, und es gab keine Möglichkeit zu sehen, wie lange etwas gedauert hatte.

Was das Unternehmen wollte, war ein Helpdesk mit:

  • einer einzigen Warteschlange und einer einzigen Referenznummernserie, damit jede Anfrage in einer E-Mail zitiert werden kann;
  • einem Status-Lebenszyklus, den alle verstehen, von neu bis gelöst;
  • Self-Service für Distributoren – Einreicher sehen ihre eigenen Anfragen und keine anderen;
  • einem Gesprächsverlauf pro Anfrage, mit strikter Trennung zwischen dem, was der Distributor sieht, und dem, was intern bleibt;
  • einem Audit-Trail darüber, wer wann was geändert hat;
  • und, nur für Neuproduktanfragen, einer formalen Freigabe durch mehrere Abteilungen.

Die Spannung liegt ganz in der Kombination. Einheitlichkeit ist für die Warteschlange gewünscht. Unterschiede sind im Inhalt nötig: Eine Zertifikatsanfrage braucht eine Losnummer und eine Chargennummer und kann mit einem Lieferdatum nichts anfangen; eine Angebotsanfrage braucht eine sich wiederholende Reihe von Teilepositionen, die eine allgemeine Frage nie hat.

Warum der naheliegende Ansatz scheitert

Es gibt zwei erste Reflexe, und beide sind auf eine Weise falsch, die einen Neuaufbau kostet.

Reflex eins: eine Entität plus ein „Request Type“-Dropdown

Das ist der Reflex, weil ein Dropdown das Billigste ist, was man anlegen kann. Er scheitert an einem konkreten, strukturellen Punkt: Ein Dropdown-Wert kann kein Formular auswählen.

Coevera bindet genau ein bearbeitbares Formularlayout an jeden CustomEntityType. Es gibt keinen Mechanismus, mit dem der Wert eines benutzerdefinierten Felds das Layout wechselt. Mit einem Dropdown bekommen Sie also genau ein Formular für alle fünf Typen, mit der Vereinigung aller Felder aller Typen – in diesem Aufbau sind das 42 Felder, gezählt auf dem vereinigten Formular im verifizierten Space am 2. September 2026, von denen jeweils rund ein Dutzend auf eine bestimmte Anfrage zutreffen. Distributoren werden bei einer Bestellung nach einer Losnummer gefragt. Das Formular lässt sich nicht sinnvoll machen.

Zwei weitere Folgen, weniger offensichtlich, aber genauso schädlich:

  • Veränderbarkeit. typeId wird bei der Anlage gesetzt und ist unveränderlich – die Plattform erzwingt das, keine Schutz-Automatisierung nötig. Ein Dropdown kann jeder mit Feldzugriff bearbeiten, sodass eine Bestellung mitten in ihrem Lebenszyklus unbemerkt zu einer Zertifikatsanfrage werden kann – und damit jeden Bericht ungültig macht, der auf ihr aufbaut.
  • Redundanz. Jeder Datensatz trüge dann zwei Antworten auf dieselbe Frage – seine echte typeId (die existiert, ob Sie sie nutzen oder nicht) und Ihr Dropdown –, und nichts hält beide in Übereinstimmung.

Reflex zwei: fünf getrennte benutzerdefinierte Entitäten

Der umgekehrte Reflex: Wenn die fünf Typen wirklich verschieden sind, modelliert man sie getrennt. Das ergibt saubere Formulare und verliert alles, worum das Unternehmen tatsächlich gebeten hat:

  • Fünf Referenznummernsequenzen statt einer gemeinsamen Serie
  • Keine gemeinsame Warteschlange. „Zeig mir alles Offene für diesen Distributor“ wird zu fünf Listenansichten, die ein Mensch im Kopf zusammenführen muss
  • Fünf Feldpools, die synchron gehalten werden müssen. Status, Schweregrad, Einreicher, SLA-Ziel und ein Dutzend weitere sind allen Typen gemeinsam; jetzt existieren sie fünfmal und driften auseinander
  • Keine Umwandlung an Ort und Stelle. Eine allgemeine Frage, die sich als Neuproduktanfrage herausstellt, kann nicht zu einer werden – sie muss in einer anderen Entität neu erfasst werden und verliert ihre Historie und ihre Referenznummer
  • Jeder Bericht ist eine Vereinigung aus fünf Quellen, und jeder neue Typ macht daraus sechs

Die entscheidende Frage. Teilen diese Dinge einen Lebenszyklus und eine Warteschlange und unterscheiden sich hauptsächlich darin, welche Felder sie tragen? Dann sind sie Untertypen einer Entität. Haben sie wirklich unabhängige Lebenszyklen, die nie in derselben Liste erscheinen? Dann sind sie getrennte Entitäten. Fallmanagement gehört eindeutig zur ersten Gruppe.

Die allgemeine Form dieser Frage – Feld, Untertyp, verknüpfter Datensatz oder neue Entität – wird in Blueprint 003 dazu, wo eine neue Anforderung hingehört, durchgearbeitet.

Datenmodell

Eine benutzerdefinierte Entität, Case, mit fünf CustomEntityType-Datensätzen darunter. Zwei unterstützende benutzerdefinierte Entitäten und drei Erweiterungen eingebauter Entitäten.

Die Case-Entität und ihre Untertypen

ElementWert
Benutzerdefinierte EntitätCase
NamensfeldCase Number
SequenzHD{Year}{Number6} → HD2026000001
FunktionenActivities, Documents, Notes, Global Search
UntertypenPurchase Order · Quote Request · New Product Request · Certification Request · General Enquiry
Unterscheidungsmerkmalnatives typeId – Fremdschlüssel auf den Entitätstyp-Datensatz. Kein benutzerdefiniertes Feld.

Alle 42 benutzerdefinierten Felder werden einmal angelegt, auf der übergeordneten Entität. Die fünf Untertypen teilen diesen einen Feldpool; die Formulardefinition jedes Untertyps wählt die jeweils relevante Teilmenge. Diese Eigenschaft ist es, die das ganze Muster lohnend macht – 13 Felder sind allen fünf Typen gemeinsam und werden genau einmal definiert und gepflegt.

Überall, wo eine Unterscheidung nach Typ nötig ist – Formularauswahl, Automatisierungs-Trigger, gespeicherte Ansichten, API-Filter –, wird der Typ direkt über typeId oder type.name angesprochen. Kein Wrapper, kein benutzerdefiniertes Feld, keine Synchronisationslogik.

Eine Falle, die Sie vor dem Start kennen sollten. Beim Anlegen einer neuen benutzerdefinierten Entität wird automatisch ein Standard-Untertyp darunter erzeugt, mit demselben Namen wie die Entität und einem leeren Formular. Wenn Sie dann fünf eigene Untertypen hinzufügen, sehen Benutzer sechs Einträge im „+“-Menü, von denen einer ins Leere führt.

Legen Sie stattdessen einen Ihrer Untertypen auf den automatisch erzeugten Standard-Untertyp: Benennen Sie ihn in den Namen dieses Untertyps um und legen Sie nur N−1 neue Untertypen an. Hier liegt „General Enquiry“ auf dem automatischen Standard, und die anderen vier werden explizit angelegt.

Unterstützende Entitäten

EntitätWarum es sie gibtUntertypen
RequestedPart Sich wiederholende Teilepositionen einer Angebotsanfrage. Ein Parent-Lookup zurück auf Case, nur auf dem Formular der Angebotsanfrage als Inline-Raster dargestellt. 1
Note Der Gesprächsverlauf des Case, mit zwei Sichtbarkeitsstufen. Siehe §6 – die eingebauten Notizen konnten das nicht abbilden. 2 — Note (für Distributoren sichtbar) und Internal Note

Die Entität Note ist dasselbe Muster ein zweites Mal, in kleinerem Maßstab: Statt eines benutzerdefinierten Booleans „ist intern“ trägt typeId die Sichtbarkeit. Zwei Untertypen, kein Flag, das man falsch setzen kann, und die Automatisierung filtert direkt auf den Typ. Autor und Zeitstempel kommen aus den nativen Feldern für Eigentümer und Anlage – für beides sind keine benutzerdefinierten Felder nötig.

Eingebaute Entitäten, erweitert

EntitätHinzugefügt
Account (der Distributor)Stufe, Region, Gebiet, Lookup auf den übergeordneten Distributor
Contact (der Einreicher)Distributor-Rolle, Helpdesk-Gruppe
ProductHerstellerteilenummer (eindeutig, globale Suche), dazu fachliche Attribut-Dropdowns und ein Lagerstatus-Feld, dessen Wert „special order required“ ein Teil als Kandidaten für eine Neuproduktanfrage kennzeichnet

Konfiguration auf Feldebene

42 benutzerdefinierte Felder auf Case, aufgeteilt in 13 gemeinsame plus einen typspezifischen Rest:

GruppeFelderBeispiele
Allen fünf Typen gemeinsam13Status, Schweregrad, Einreicher-Kontakt, Distributor-Account, zuständiger Analyst, zu benachrichtigende Kontakte, Beschreibung, Lösung, für Kunden sichtbare Zusammenfassung, SLA-Ziel, geleistete Stunden
Purchase Order5PO-Nummer, erwartetes Lieferdatum
Quote Request4Endkunde, Marktbereich, Währung, Wunschtermin
New Product Request12Technische Spezifikation, Machbarkeitsnotizen, Lookup auf den Freigabe-Proxy, Rollups des Freigabestatus
Certification Request5Losnummer, Chargennummer, Zertifikatstyp
General Enquiry3Anfragekategorie, Empfehlungsquelle

Die Feldbenennung folgt der Konvention der Plattform – benutzerdefinierte Felder tragen das Präfix cf_, Dropdown- und Lookup-Felder das Suffix _id, weil sie auf Options- oder Datensatz-UUIDs statt auf Literale verweisen, und Lookup-Felder sind nach der Beziehung benannt, die sie ausdrücken. Die Feldnamen in diesem Blueprint sind anonymisiert; Formen, Typen und Beziehungen sind wie gebaut.

Feldberechtigungen pro Rolle

Drei Rollen, und die Sichtbarkeitstrennung wird auf Feldebene erzwungen statt durch Verstecken in der Oberfläche: None, Read oder Full pro Feld und Rolle.

FeldDistributorAnalystManager
Für Kunden sichtbare ZusammenfassungReadFullFull
Lösung (interne Darstellung)NoneFullFull
Geleistete StundenNoneFullFull
Zuständiger AnalystNoneReadRead

Ein Designhinweis aus dem Betrieb. Das Lösungsfeld erlaubte ursprünglich Lesezugriff für Distributoren. Es wurde auf keinen Zugriff umgestellt, und daneben kam eine eigene, für Kunden sichtbare Zusammenfassung hinzu. Der Grund: Wenn Analysten wissen, dass der Kunde ein Feld lesen kann, zensieren sie sich selbst, und der interne Datensatz verliert die technischen Details, die ihn später nützlich machen. Zwei Felder – eines ungefiltert, eines bewusst für den Kunden geschrieben – funktionieren besser als ein Feld, das für zwei Zielgruppen geschrieben wird.

Automatisierung & Logik

Neun Automatisierungsprozesse, alle auf Space-Ebene. Die ordnende Regel: ein Prozess pro Anliegen, gefiltert nach typeId. Weil alle fünf Untertypen eine Entität teilen, wird jeder Prozess einmal definiert, und ein Filterknoten früh im Graphen grenzt ihn auf die Typen ein, für die er gilt – statt fünf fast identischer Kopien.

TriggerWas er tut
Case angelegtLegt eine für Distributoren sichtbare Notiz „Case created by <user>“ an, die den Verlauf eröffnet
Case aktualisiertSchreibt eine interne Notiz „<actor> changed status to <status>“ als Audit-Trail
Case aktualisiert → Status wechselt in einen aktiven Zustand und der zuständige Analyst ist leerSetzt den handelnden Benutzer als zuständigen Analysten. Die Prüfung auf ein leeres Feld ist ein Einmal-Schutz, sodass spätere Statuswechsel ihn nicht erneut setzen
Notiz angelegtErmittelt die Empfänger über die Lookups des Case und verkettet dann einen zweiten Prozess, der die E-Mail sendet
Case angelegt, gefiltert auf NeuproduktanfrageErzeugt das Proxy-Quote für die Freigabe – siehe §6
Quote aktualisiert, gefiltert auf die FreigabeentscheidungSchreibt die Entscheidung zurück in den Case und protokolliert eine interne Notiz
Manueller Button„Announce status change“ – postet mit einem Klick eine sichtbare Notiz an den Einreicher und alle zu benachrichtigenden Kontakte
Täglicher ZeitplanSchließt Cases, die gelöst sind und seit 14 Tagen nicht angefasst wurden

Zwei Muster, die sich übertragen lassen

Der Einmal-Schutz. Um „wer das zuerst angenommen hat“ festzuhalten, ohne es bei jeder späteren Aktualisierung neu zu setzen, filtern Sie darauf, dass das Zielfeld leer ist, und setzen es auf den handelnden Benutzer. Die Bedingung macht den Schreibvorgang idempotent – kein eigenes Flag „Ist das schon gelaufen?“.

Die Eigentümerschaft bleibt, wo sie ist. Der Distributor, der den Case eingereicht hat, bleibt über dessen ganze Lebensdauer Eigentümer des Datensatzes; der interne Analyst wird in einem eigenen Lookup-Feld erfasst. Der Reflex ist, die Eigentümerschaft bei der Annahme auf den Analysten zu übertragen – aber die Eigentümerschaft steuert den Zugriff des Distributors auf seinen eigenen Datensatz. Eine Neuzuweisung würde dem Einreicher die Sicht auf seine eigene Anfrage nehmen.

Grenzen & Kompromisse

Freigabeprozesse können keine benutzerdefinierte Entität als Ziel haben

Plattformgrenze. ApprovalProcess kann nur von Account, Contact, Lead, Opportunity oder Quote ausgelöst oder mit ihnen verknüpft werden. Und der Datensatz Approval selbst ist nicht anpassbar – Sie können ihm kein Feld hinzufügen und ihm daher auch keinen Link zurück auf Ihre benutzerdefinierte Entität geben.

Die Schema-Introspektion zeigt das nicht. Die Mutation zum Anlegen von Feldern akzeptiert einen Entitätsnamen als einfachen String, sodass der Aufruf gültig aussieht und erst zur Laufzeit abgelehnt wird. Gut zu wissen, bevor Sie darum herum entwerfen.

Quelle. Coevera-Hilfecenter, Working with Approval Processes: Freigaben „können auf Accounts, Contacts, Leads, Opportunities und Quotes angewendet werden“. Benutzerdefinierte Entitäten stehen nicht auf dieser Liste, und die Dokumentation zu benutzerdefinierten Entitäten im Hilfecenter nennt die Grenze ausdrücklich: „Admins können keine Freigabeprozesse für benutzerdefinierte Entitäten erstellen“.

Nur einer der fünf Typen – Neuproduktanfragen – braucht eine formale Freigabe, von sechs Abteilungen. Das Muster, das funktioniert, ist ein Proxy auf Quote:

  1. Ein Case vom Typ Neuproduktanfrage wird angelegt.
  2. Ein Prozess erzeugt ein verknüpftes Quote unter einem eigenen Quote-Typ, der für Freigaben reserviert ist.
  3. Der Freigabeprozess läuft auf diesem Quote, nativ, mit der Standard-Freigabeoberfläche und dem Audit-Trail – Schwellenwert, Datensatzsperre und Freigeberrolle wie bei jedem Quote konfiguriert.
  4. Das Quote trägt einen Lookup zurück auf den Case; die Plattform pflegt die Rückverknüpfung automatisch.
  5. Bei der Entscheidung schreibt ein zweiter Prozess das Ergebnis in den Case-Status zurück.
  6. Das Quote kann danach archiviert werden.

Warum Quote und nicht Opportunity, obwohl beide eine Freigabe tragen können:

  • Semantische Passung. Eine Neuproduktanfrage ist eine Preisentscheidung – „Können wir das herstellen, und zu welchem Preis?“. Genau das modelliert Quote. Opportunity als Deal ist der falsche Rahmen.
  • Keine Verschmutzung der Pipeline. Opportunity-Proxys würden in der Deal-Pipeline erscheinen und Prognosen und Umsatzberichte verfälschen. Ein Quote liegt in seinem eigenen Quote-Typ, aus dem Weg.
  • Der Preis wird nativ erfasst. Die Positionen des Quote sind der vorgeschlagene Preis – ein benutzerdefiniertes Preisfeld auf dem Case ist also gar nicht nötig.
  • Eingebauter Ablauf. Quote hat ein natives Ablaufdatum, nützlich, um eine Freigabeanfrage zeitlich zu begrenzen.

Zwei Rollup-Felder auf dem Case zeigen den Zustand des Proxys – Freigabestatus und Ablehnungsgrund –, abgeleitet aus dem verknüpften Quote statt gespeichert. Für diese ist keine Rückschreiblogik nötig; die Plattform aktualisiert sie, wenn sich das Quote ändert.

Eingebaute Notizen konnten keine zweistufige Sichtbarkeit abbilden

Die Anforderung ist ein einziger Verlauf, in dem manche Einträge für den Distributor sichtbar und manche streng intern sind. Die eingebaute Notizfunktion hat keine Sichtbarkeitsdimension, daher wurde der Verlauf zu einer benutzerdefinierten Entität mit zwei Untertypen. Ein Preis, den man ausdrücklich nennen sollte: Der Case hat daher sowohl eingebaute Notizen als auch einen benutzerdefinierten Notizverlauf, und die eingebauten müssen von den Formularen ferngehalten werden, damit es nicht zwei konkurrierende Orte zum Schreiben gibt.

Freitextfelder können keine Verteilerlisten steuern

Das Feld für zu benachrichtigende Kontakte begann als Textbereich, in den E-Mail-Adressen getippt wurden. Es wurde durch einen Mehrfachauswahl-Lookup auf Contact ersetzt, weil die Automatisierung Adressen nicht zuverlässig aus Freitext herauslesen kann, um eine Empfängerliste zu bilden. Wenn der Wert eines Felds verarbeitet und nicht nur gelesen werden muss, muss er eine typisierte Referenz sein.

Weitere Einschränkungen in diesem Aufbau

  • Ein Feld muss auf dem Formular sein, um zu funktionieren. Berechnete und KI-befüllte Felder, die im Formularlayout eines Datensatzes fehlen, tun stillschweigend nichts – sie rechnen nicht und sie melden keinen Fehler. Die Zugehörigkeit zum Formular ist funktional, nicht kosmetisch.
  • Sequenzen lassen sich nicht jährlich zurücksetzen. Der native Sequenzzähler erhöht sich bei jeder Anlage und hat keinen Jahres-Reset. Ein Jahr lässt sich als Präfix in die Nummer einbauen, aber der Zähler selbst läuft durchgehend.
  • Prozesse auf Space-Ebene brauchen sitzungsauthentifizierte Anmeldedaten. Persönliche API-Zugangsdaten werden beim Schreiben von Space-Prozessen abgelehnt, obwohl sie sie lesen können.

Bekannte Lücken in diesem Aufbau

Berichtet statt weggelassen:

  • Die Rückschreibung der Freigabe behandelt nur den Zweig „freigegeben“. Ein abgelehnter Proxy lässt den Case in seinem Arbeitszustand, ohne automatische Weitergabe – für das Ergebnis „abgelehnt“ ist ein paralleler Filter nötig.
  • Der Prozess für Audit-Notizen löst bei jeder Case-Aktualisierung aus statt nur bei Statuswechseln; er braucht eine Bedingung auf geänderte Felder, damit er nicht mehr so viel Rauschen erzeugt.
  • SLA-Zieldaten werden manuell gesetzt. Ihre Ableitung aus dem Schweregrad wurde entworfen und bewusst zurückgestellt.

Verifizierung

Untertyp-Designs scheitern leise – ein Formular, das sich rendert, ein Prozess, der Erfolg meldet, und ein Unterscheidungsmerkmal, das mit dem Falschen verdrahtet ist. Was tatsächlich geprüft wurde:

  • Feldinventar pro Entität zurückgelesen. Jedes Feld nach der Anlage erneut aus der API gelesen und anhand des API-Namens, nicht der Bezeichnung, mit der Spezifikation abgeglichen. Drei Felder hatten Namen, die von der Spezifikation abwichen, und eines war stillschweigend gar nicht angelegt worden – beides in der Oberfläche nicht sichtbar.
  • Anzahl und Identität der Untertypen. Bestätigt, dass unter der Case-Entität fünf Untertypen existieren und kein verwaister sechster – die Falle mit dem automatischen Standard aus §3 zeigt sich genau hier.
  • Unveränderlichkeit des Unterscheidungsmerkmals. Versucht, typeId an einem bestehenden Datensatz zu ändern, und bestätigt, dass die Plattform das verweigert.
  • Feldzugriff pro Rolle, als jede Rolle getestet. Nicht aus der Konfiguration abgelesen – angemeldet und bestätigt, dass die Felder, die für einen Distributor unsichtbar sein sollen, tatsächlich fehlen.
  • Jeder Prozess als aktiviert bestätigt und sein Knotengraph zurückgelesen. Zwei Prozesse waren aktiviert, endeten aber an Platzhalterknoten – sie meldeten Erfolg und taten nichts. Das ist die Prüfung, die die Lücke bei der Rückschreibung der Freigabe gefunden hat.
  • Ein vollständiger Durchlauf pro Untertyp in der Oberfläche: anlegen, durch den Lebenszyklus führen, bestätigen, dass Notizen und E-Mails ankommen, und bestätigen, dass die Distributor-Ansicht nur zeigt, was sie zeigen soll.

Die allgemeine Regel. Eine Mutation, die Erfolg meldet, bedeutet, dass der Schreibvorgang angenommen wurde, nicht, dass das Verhalten korrekt ist. Lesen Sie den Zustand zurück und prüfen Sie das Ergebnis als Benutzer jeder Rolle, bevor Sie eine Phase für erledigt erklären.

Was auf eine Regression hindeuten würde: Cases, die mit leerem oder falschem Untertyp erscheinen; das Feld für den zuständigen Analysten, das sich nach der ersten Annahme ändert; Notizen, die als intern geschrieben wurden und einen Distributor erreichen; Neuproduktanfragen ohne verknüpften Freigabe-Proxy.

Häufige Fragen

Wie führen Sie fünf verschiedene Arten von Kundenanfragen durch einen einzigen CRM-Helpdesk?

Modellieren Sie eine benutzerdefinierte Entität für den Case und jeden Anfragetyp als CustomEntityType-Untertyp darunter. In Coevera CRM ist das native Feld typeId auf jedem Datensatz das Unterscheidungsmerkmal – ein Fremdschlüssel auf den Entitätstyp-Datensatz –, und es steuert nativ die Formularauswahl pro Typ, die Prozessfilterung und gespeicherte Ansichten. Alle Felder werden einmal auf der übergeordneten Entität definiert; das Formular jedes Untertyps wählt die Teilmenge, die für ihn relevant ist. So bleiben eine Warteschlange, eine Referenznummernsequenz und ein Status-Lebenszyklus über alle Typen hinweg erhalten, während jeder Typ ganz andere Informationen abfragen kann.

Warum nicht ein benutzerdefiniertes Dropdown-Feld für den Anfragetyp statt Untertypen?

Ein benutzerdefiniertes Dropdown kann kein Formular auswählen. Coevera bindet ein bearbeitbares Formularlayout pro CustomEntityType, sodass ein Dropdown alle Benutzer auf einem einzigen Formular mit der Vereinigung aller Felder aller Typen lässt – in diesem Aufbau 42 Felder, von denen jeweils rund ein Dutzend auf eine Anfrage zutreffen. Der Untertyp-Ansatz bringt außerdem Unveränderlichkeit ohne Zusatzaufwand: typeId wird bei der Anlage gesetzt und kann danach nicht mehr geändert werden, was ein Dropdown-Wert nicht garantieren kann.

Warum nicht fünf getrennte benutzerdefinierte Entitäten anlegen, eine pro Anfragetyp?

Fünf Entitäten bedeuten fünf Feldpools, die synchron gehalten werden müssen, fünf Referenznummernsequenzen statt einer gemeinsamen Serie, keine gemeinsame Warteschlange oder Listenansicht über alle Typen, keine Umwandlung an Ort und Stelle, wenn sich eine Anfrage als eine andere Art herausstellt, und jeden Bericht als Vereinigung aus fünf Quellen. Der Ansatz mit einer gemeinsamen übergeordneten Entität hält all das an einem Ort.

Kann ein Coevera-Freigabeprozess auf einer benutzerdefinierten Entität laufen?

Nein. ApprovalProcess kann in Coevera nur Account, Contact, Lead, Opportunity oder Quote als Ziel haben, und der Approval-Datensatz selbst nimmt keine benutzerdefinierten Felder auf – er lässt sich also nicht um einen Link zurück auf eine benutzerdefinierte Entität erweitern. Das funktionierende Muster ist ein Proxy: Wenn ein Case angelegt wird, der eine Freigabe braucht, erzeugt ein Process ein verknüpftes Quote unter einem eigenen Quote-Typ, der Freigabeprozess läuft auf diesem Quote, und ein zweiter Process schreibt die Entscheidung zurück in den Case.

Herausgegeben von Coevera · auf das Muster abstrahiert, keine KundendatenBlueprint 001 · veröffentlicht 2026-09-23