Skip to main content
Skip table of contents

Release-Notes Versionen 21.2.x

Cards als Komponente im Flex-Layout

Um die Oberfläche an die Anforderungen des Responsiv-Designs anzupassen, wurde eine neue Komponente "Karte" im Masken-Editor implementiert.  Die Oberfläche vom CURSOR CRM lässt sich dadurch im sogenannten Card-Layout gestalten. Masken-Cards sind vorformatierte Container, in welchen weitere Elemente platziert werden können. So verschachtelte Komponenten können dann die verfügbare Fläche auf dem Bildschirm optimal ausfüllen.  Enthält eine Maske Infoboard-Kacheln, zahlreiche Tabs oder Felder, so können diese als Cards auf- und zugeklappt werden. Inhalte lassen sich so auf dem Bildschirm in Haupt- und Kontextinformationen gruppieren und anordnen.

Die Darstellung der Anwendung kann durch die Größe des Monitors oder des mobilen Geräts variieren. Eine Bearbeitung des neuen Card-Layouts ist per Drag & Drop im Web Client möglich.

Abbildung: Maskendesign mit der neuen Komponente "Karte"

Card-Layout ist eine Design-Lösung, die Ihr CRM modern aussehen lässt. Die Maskengestaltung kann intuitiv, schnell und ohne Programmier-Kenntnisse mit dem neuen Flex-Editor durchgeführt werden. Die Informationen in Feldern, Tabs und weitere Masken-Komponenten können auf Karten per Drag & Drop neu organisiert werden. Durch flexible Steuerung (Auf- oder Zuklappen von Karten) können bestimmte Informationen im Vordergrund hervorgehoben oder komplett ausgeblendet werden. Wird eine Entitätsmaske mit mehreren kleineren Cards bestückt, so reagiert die Anwendung auf die Anforderungen des Geräts und passt sich "responsiv" an. Es enstehen keine Leerstellen und die Oberfläche wird optimal genutzt.    

Sie brauchen effektive Lösungen. Mit CURSOR-CRM können Sie diese in Card-Layout schneller und besser bereitstellen. Das Card-Layout wird mit dem neuen No-Code-Editor im Web Client erstellt. Vorteile des Editors:

  • Schnelle, intuitive und unkomplizierte Erstellung von neuen Oberflächen

  • Einfache Drag & Drop Bedienung 

  • Eine der verfügbaren Masken-Komponenten ziehen Sie einfach auf die Maske

  • Die Struktur von Komponenten können Sie jederzeit in Baumansicht prüfen

  • Kontinuierliche Erweiterung und problemlose Anpassungen mit nur wenigen Klicks

  • Die dazugehörigen Parameter wie innere oder äußere Abstände können über eine graphische Oberfläche eingegeben werden    

Das neue Card-Layout schafft das Grundgerüst, auf welchem weitere Kombinationsmöglichkeiten bestehen. Als Ergebnis bekommen Sie:

  • Responsive Masken

  • Neue, individualisierbare Komponenten-Konstellationen

  • Und ein benutzerorientiertes, noch leichtgewichtigeres und hochflexibles Design

Beim neuen Design orientieren Sie sich intuitiv an selbsterklärende Oberflächen. Gleichzeitig können Sie Ihre maßgeschneiderten Lösungen beibehalten und um neue UI-Konzepte ausweiten. Details und Tipps zum Masken-Design werden in einem separaten Dokument folgen. 

Beschreibung in Nachschlagefeldern

Zusätzlich zu dem neuen Card-Layout wurde die Darstellung der Nachschlagefelder überarbeitet, um so das Masken-Design leichtgewichtiger zu gestalten. Variablen, Trennzeichen und Reihenfolgen der Beschreibungsfelder für Nachschlagefelder können jetzt so konfiguriert werden, um wichtige Infos sofort ersichtlich zu machen. In der ersten Umsetzung wurden für die Entitäten GeschäftspartnerAnsprechpartner und Mitarbeiter die Beschreibungsfelder angepasst. Hierzu wurden die Feldeigenschaften der Felder in der Standard-Schicht und die Standard-Nachschlagesuchen für die Entitäten geändert, so dass die Felder in der Suche die Eigenschaft "Anzeige in Listen" besitzen. Die Anzeige wird über die Feldeigenschaften bestimmt und kann global über die Systemeinstellungen geändert werden.

Abbildung: Zusammenführung von Schlüsseln und Beschreibungen auf der Aktivitäten-Maske

Schlüssel- und Nachschlagefelder werden nun in einer Einfeld-Darstellung angezeigt. Was zusammengehört, befindet sich immer in einem einzigen Feld, dass sich nach bekannten Eingabemustern bedienen lässt. Zur besseren Bedienfreundlichkeit gibt es weitere Bedienelemente, die überarbeitet wurden: 

  • Das Schlüsselsymbol/-Icon wird bei Schlüsselfeldern nun vorangestellt 

  • Schlüsselfelder haben einen zusätzlichen Button (Dreieck nach unten), welches ein Drop-Down-Menü offenbart. Beim Drücken auf den Button werden alle Werte aus dem Schlüsselbereich in alphabetischer Reihenfolge angezeigt. Gibt es mehr Ergebnisse, als in der Liste komfortabel selektiert werden können, so kann über den Eintrag "Es gibt weitere Vorschläge" die gesamte Liste aller Schlüssel in einer separaten Ansicht (der aus vorherigen Versionen bekannte Nachschlagebrowser) angezeigt werden.

  • Verknüpfte Datensätze können nun über eine dedizierte Aktion angesprungen werden. Dazu steht ein Link-Button bereit (Viereck mit Pfeil), der bei einem Klick den verknüpften Datensatz in einer neuen Verlaufsebene öffnet.

  • Der Leerschlüssel (der Standardwert für nicht-ausgefüllte Felder) wird ohne Beschreibung als Fragezeichen dargestellt

Der Inhalt der neuen Felder kann über die Systemeinstellung Inhalt der Felder in Detailmasken definiert werden. Die Einstellung "Laut Feldeigenschaften" bedeutet, dass Schlüssel oder Beschreibung so angezeigt werden, wie sie in den jeweiligen Feldeigenschaften konfiguriert wurden.

Abbildung: Systemeinstellung 'Inhalt der Felder in Detailmasken'

Im Beschreibungsfeld sind folgende Informationen sichtbar:

  •  Für Geschäftspartner: Vorname Nachname 

  • Für Ansprechpartner: Namenstitel Vorname Nachname

  • Für Mitarbeiter: Namenstitel Vorname Nachname

Bisher als Trennzeichen verwendete Kommas wurden entfernt.  

Beschreibungstexte von Nachschlagefeldern anpassen Nachschlagefelder haben anstatt Kommas Leerzeichen als Trennzeichen. Schlüssel- und Nachschlagefelder werden nun in einer Einfeld-Darstellung angezeigt. Die Beschreibungsfelder für Geschäftspartner, Ansprechpartner und Mitarbeiter besitzen die Eigenschaft "Anzeige in Listen". Die Anzeige wird über die Feldeigenschaften bestimmt und kann global über die Systemeinstellungen geändert werden.

Der Inhalt der neuen Felder kann über die Systemeinstellung Inhalt der Felder in Detailmasken definiert werden. Die Einstellung "Laut Feldeigenschaften" bedeutet, dass Schlüssel oder Beschreibung so angezeigt werden, wie sie in den jeweiligen Feldeigenschaften konfiguriert wurden.

Für Nachschlagefelder, die noch nie geändert wurden, sind zukünftig die Informationen in folgender Reihenfolge hinterlegt:

  • Für Geschäftspartner: Vorname Nachname 

  • Für Ansprechpartner: Namenstitel Vorname Nachname

  • Für Mitarbeiter: Namenstitel Vorname Nachname

Will man alle Nachschlagefelder auf diesen Standard verändern, so kann man dies mithilfe folgender Statements erreichen: 

SQL
-- Customer check
select attributename, tablename, LookupDescriptionFields from attributemetadata where lookupentity in ('Customer') and LookupDescriptionFields is not null and lookupfield = 1
and lookupentityQueryPk in ('LookupEntityCustomer', 'LookupOfficePKCustomer')
-- ContactPerson check
select attributename, tablename, LookupDescriptionFields from attributemetadata where lookupentity in ('ContactPerson') and LookupDescriptionFields is not null and lookupfield = 1
and lookupentityQueryPk in ('LookupEntityContactPerson', 'LookupEntityContactPersonInOpportunityForCustomer', 'LookupEntityContactPersonForCustomer')
-- Employee check
select attributename, tablename, LookupDescriptionFields from attributemetadata where lookupentity in ('Employee') and LookupDescriptionFields is not null and lookupfield = 1
and lookupentityQueryPk in ('LookupEntityEmployee')
 
-- Customer modification
update amdvarchar set c2 = null where fieldname = 'LookupDescriptionFields' and rowpk in
(select attributename from attributemetadata where lookupentity in ('Customer') and LookupDescriptionFields is not null and lookupfield = 1
and lookupentityQueryPk in ('LookupEntityCustomer', 'LookupOfficePKCustomer') and attributename not in ('<Exclude Field 1>', '<Exclude Field 2>'))
-- ContactPerson modification
update amdvarchar set c2 = null where fieldname = 'LookupDescriptionFields' and rowpk in
(select attributename from attributemetadata where lookupentity in ('ContactPerson') and LookupDescriptionFields is not null and lookupfield = 1
and lookupentityQueryPk in ('LookupEntityContactPerson', 'LookupEntityContactPersonInOpportunityForCustomer', 'LookupEntityContactPersonForCustomer')
and attributename not in ('<Exclude Field 1>', '<Exclude Field 2>'))
-- Employee modification
update amdvarchar set c2 = null where fieldname = 'LookupDescriptionFields' and rowpk in
(select attributename from attributemetadata where lookupentity in ('Employee') and LookupDescriptionFields is not null and lookupfield = 1
and lookupentityQueryPk in ('LookupEntityEmployee') and attributename not in ('<Exclude Field 1>', '<Exclude Field 2>'))

Folgende Felder können nicht direkt angepasst werden, da spezielle Suchen oder C11-Felder betroffen sind, wo die Module angepasst werden müssten:

  • CompletedBy.C11SURVEY

  • CanceledBy.C11SRVCNDTN

  • Employee.C2RESOURCEP

  • Interviewer.C11SURVYINST

  • RepresentedCoPe.C11INTERVWEE

  • Employee.C11GOALS

  • Ressource.C2KAP

  • Mitarbeiter.C2K_RECHTE

  • Client.C11SRVCNDTN

  • PublishedBy.C11SURVEY

Kachel-Kommentare und Aktivitäten

Die Infokachel "Kommentare und Aktivitäten" erlaubt eine Erstellung von Kommentaren und Feed-Darstellung von Aktivitäten in Echtzeit auf beliebigen Entitäten. Analog zur Kommentarfunktion in den sozialen Medien können so themenbezogene Dialoge geführt werden, die außerdem noch datensatzbezogene Ereignisse (Aktivitäten) integriert und diese für alle User diskutierbar macht. In der Ausgabe 2021.2 hat die Kachel zahlreiche Verbesserungen erfahren, um die Dialoge noch bequemer führen zu können.

Die Kachel kann in jede Entitätsmaske integriert werden. So wird sie zur Informations-Drehscheibe, wenn datenbezogene Aktivitäten im Dialog geklärt und festgehalten werden müssen.  

Abbildung: Kachel mit Kommentaren

Für die Verwendung muss die Kachel zuerst konfiguriert werden. Da es sich um eine Aufbaustufe handelt, wird die Kachel in den meisten Fällen - wenn bereits im Einsatz - vor konfiguriert sein. Die Kachel stellt Kommentare und, falls gewünscht, weitere Aktivitätsarten chronologisch sortiert dar. Sie erlaubt das Beantworten von Kommentaren und kommentieren von Ereignissen/Aktivitäten wie z.B. eine eingehende E-Mail. Angehängte Dokumente werden verknüpft und sind per Klick erreichbar. Besonders großformatige Grafiken können bequem im Vollbildmodus angezeigt werden. Verknüpfte oder neu erstellte Termine werden entsprechend visualisiert. Ungelesene Kommentare werden durch eine blaue Rahmenlinie markiert. Es werden folgende Typen von Links unterstützt und visualisiert: CRM-Links, E-Mail-Adressen und Web-Links. Eine nützliche Funktion stellen die Mitarbeitererwähnungen dar: wird die Mitarbeitereingabe mit @ begonnen und der Name weiter eingegeben, wird eine Vorschlagsliste angezeigt. Der Adressat dieser Nachricht wird entsprechend im Benachrichtigungssystem auf einen Kommentar aufmerksam gemacht. Detaillierte Konfigurationsmöglichkeiten der Kachel finden Sie im Benutzerhandbuch. 

Mailversand aus einer Kachel

Aus den Kacheln Geschäftspartner-/Ansprechpartnerportait heraus können E-Mails an die jeweilige Person versendet werden. Die E-Mail-Adresse ist mit dem (Haupt-)Ansprechpartner als Empfänger vorbelegt. Text und Betreff der E-Mail sind vom Absender selbst zu vergeben. Die E-Mail wird anschließend als Aktivität zurücksynchronisiert.

Abbildung: Beispiel einer Kachel mit einem Ansprechpartner

Kopieren von Angeboten als Standard-Prozess

Grundlagen

Für diese Aufgabe steht ein Standardprozess zur Verfügung, der das Kopieren von Angeboten inklusive der zu dem Angebot gehörenden Angebotspositionen, sowie mit dem Angebot verknüpften Anfragen, ermöglicht. Dies bietet den Anwendern die Möglichkeit, sich Angebote als Favorit abzulegen, um daraus künftig per Kopie Angebote erstellen zu können.

Weiterhin lassen sich Angebote als Preisindikationen kennzeichnen, die dazu dienen, in der Anbahnungsphase einer Geschäftsbeziehung eine erste "Hausnummer" hinsichtlich des Preises nennen zu können.

Der Prozess realisiert folgende Anforderungen:

  • Kopieren einer Anfrage inklusive Angebot und Angebotspositionen

  • Kopieren eines Angebots inklusive Anfrage und Angebotspositionen

  • Kennzeichnung von Angeboten als Preisindikation

  • Standarddokumentenvorlage zur Erstellung von Preisindikationen aus Angeboten

Kopieren einer Anfrage inklusive Angebot und Angebotspositionen

Einstiegspunkt

In der Detailansicht einer Anfrage kann der Prozess zum Kopieren einer Anfrage gestartet werden.

Der Prozess zum Kopieren der Anfrage wird über den Toolbar-Schalter Datensatz kopieren initiiert.

Kopiervorgang

Benutzertask zur Eingabe der Anfragedaten öffnet sich.

  • Zuerst soll das zu kopierende Angebot gewählt werden.

    • Auswahl via Nachschlagefeld mit Filter auf alle zur Anfrage gehörenden Angebote

    • Ist kein zu kopierendes Angebot ausgewählt, wird ausschließlich die Anfrage, aus der das Kopieren gestartet wurde, kopiert

      • Angebotsspezifische Felder werden im Benutzertask nicht angeboten (diese sind nicht sichtbar)

Befüllung der Felder in der Anfrage-Kopie

  • Die Pflichtfeldeigenschaften der Felder sind dieselben wie auf der Anfragen-Maske

Die folgenden Felder sind bei jedem Kopieren der Anfrage sichtbar, d.h. auch, wenn lediglich die Anfrage ohne ein Angebot kopiert werden soll

Feld (intern)

Wert

Hinweise

Kurzname (Matchcode.Opportunity)

  • Leer

  • Vorbelegung aus Original-Anfrage ist übersteuerbar

Beschreibung (OpName.Opportunity)

  • Leer

  • Vorbelegung aus Original-Anfrage ist übersteuerbar

KAM/Vertrieb (ProjectmanagerKey.Opportunity)

  • Wert KeyAccountManager.Customer des im Feld DefaultCustomer.Opportunity hinterlegten Geschäftspartners

  • Leer, falls das Feld dort nicht gepflegt ist

  • Vorbelegung aus einem anderen Feld ist durch Übersteuerung erreichbar

Geschäftspartner (DefaultCustomer.Opportunity)

  • Wert aus Original-Anfrage

  • Pflichtfeld

  • Ändern des Geschäftspartners ändert den Feldinhalt in KAM/Vertrieb (leer oder KAM aus dem eingetragenen Geschäftspartner)

Neukundenauftrag (NewCustomer.Opportunity)

  • Wert Neukunde aus Original-Anfrage

Status (ProjectstatusKey.Opportunity)

  • Standardwert verwenden

  • Anderer Standardwert ist durch Übersteuerung erreichbar

Erfolgsaussicht (ChanceSuccessKey.Opportunity)

  • Standardwert verwenden

  • Anderer Standardwert ist durch Übersteuerung erreichbar

Kaufdatum (Salesdate.Opportunity)

  • Leer

Wert (Projectvalue.Opportunity)

  • Leer

  • Wird nur angeboten, wenn kein Angebot zum Kopieren ausgewählt wurde

  • Nicht sichtbar für HelVIS (Wert errechnet sich aus der Summe aus Totalprice.OpportunityItem der Anfragepositionen)

Kosten (Projectcosts.Opportunity)

  • Leer

Deckungsbeitrag (MarginalReturn.Opportunity)

  • Leer

  • Wird nur angeboten, wenn kein Angebot zum Kopieren ausgewählt wurde

Befüllung der Felder in der Angebotskopie

  • Die Pflichtfeldeigenschaften der Felder sind dieselben wie auf der Angebots-Maske

Wird beim Kopieren ein Angebot zur Kopie ausgewählt, so sind folgende Felder innerhalb des Kopiervorgangs zusätzlich zu den zuvor beschriebenen Anfragen-Feldern auf der Detailmaske sichtbar

Feld (intern)

Wert

Hinweise

Ansprechpartner (DefaultContactPerson.Quote)

  • Wert aus Original-Angebot

  • Wenn DefaultCustomer.Opportunity gefüllt ist, werden ausschließlich Ansprechpartner zur Auswahl angeboten, die zu dem Geschäftspartner aus DefaultCustomer.Opportunity gehören

  • Wird der Geschäftspartner der Anfrage geändert, wird dieses Feld geleert

  1. Unterzeichner (Signatory1EmplKey.Quote)

  • Leer

  • Wird automatisch mit EmployeeSales.Customer des Geschäftspartners gefüllt, wenn dieser in DefaultCustomer.Opportunity eingetragen wurde

  • Der Übertrag findet auch beim Ändern des Geschäftspartners in der Anfrage statt

  • Übernahme aus EmployeeSales.Customer kann durch Übersteuerung in der Skriptbibliothek deaktiviert bzw. auf ein anderes Feld umgeschrieben werden

  1. Unterzeichner (Signatory2EmplKey.Quote)

  • Leer

  • Wird automatisch mit EmployeeOffice.Customer des Geschäftspartners gefüllt, wenn dieser in DefaultCustomer.Opportunity eingetragen wurde

  • Der Übertrag findet auch beim Ändern des Geschäftspartners in der Anfrage statt

  • Übernahme aus EmployeeOffice.Customer kann durch Übersteuerung in der Skriptbibliothek deaktiviert bzw. auf ein anderes Feld umgeschrieben werden

Kampagnenphase (Campaign.Quote)

  • Leer

  • Das Feld ist nur sichtbar, wenn das Modul MULTICHANNEL lizensiert ist

Kampagne (CampPhase.Quote)

  • Leer

  • Das Feld ist nur sichtbar, wenn das Modul MULTICHANNEL lizensiert ist

Status (StatusKey.Quote)

  • Mit Standardwert füllen

  • Ist vom Anwender änderbar

Preisindikation

  • Wert aus dem Original-Angebot

  • Sichtbarkeit des Feldes kann durch Übersteuerung der Maske beeinflusst werden (im Standard vorhanden)

Lieferbedingung

  • Die Lieferbedingung wird mit dem Feld aus dem Geschäftspartner der übergeordneten Anfrage (DefaultCustomer.Opportunity) vorbelegt

Zahlungsbedingung

  • Die Zahlungsbedingung wird mit dem Feld aus dem Geschäftspartner der übergeordneten Anfrage (DefaultCustomer.Opportunity) vorbelegt

Die Pflichtfeldlogiken der im Prozess sichtbaren und genutzten Felder sind zentral in der Skriptbibliothek übersteuerbar und individualisierbar. Die Standardbelegung bzw. Wertübernahme der im Prozess sichtbaren und genutzten Felder ist zentral in der Skripbibliothek übersteuerbar und individualisierbar

Anfragepositionen auswählen und kopieren

  • Wenn im System aktiviert, werden nach Eingabe der Anfragedaten und Fortsetzen des Prozesses die mit der Original-Anfrage verknüpften Anfragepositionen zur Kopie angeboten

    • Keine Anfragepositionen am Originalangebot: Schritt zur Auswahl der Anfragepositionen wird übersprungen

    • Mindestens eine Anfrageposition am Originalangebot: Benutzertask zur Auswahl der zu kopierenden Anfragepositionen

      • Der Anwender kann den Benutzertask ohne Auswahl von Anfragepositionen fortsetzen (= keine Kopie von Anfragepositionen) fortsetzen

      • Ausgewählte Anfragepositionen werden nach Abschluss des Benutzertasks kopiert und mit der Anfragekopie verknüpft

Angebotspositionen auswählen und kopieren

  • Sofern eine Angebotskopie erstellt wird und zum Original-Angebot Angebotspositionen existieren, werden diese dem Anwender zur Auswahl angeboten

    • Existieren im Original-Angebot Angebotspositionen, bei denen es sich um Unterprodukte zu einem Hauptprodukt handelt, werden diese nicht zur Auswahl angeboten

      • Es werden alle Angebotspositionen des zu kopierenden Angebots angeboten

      • Bei der Übernahme eines Hauptproduktes werden die aktuell über die Unterproduktzuordnung (ItemsList) mit dem Hauptprodukt verknüpften Unterprodukte neu gezogen und automatisch als Angebotsposition zur Angebotskopie angelegt

    • Der Anwender hat die Möglichkeit, die Auswahl der Angebotspositionen zu überspringen. In diesem Fall wird lediglich der Angebotskopf kopiert. Es werden keine Angebotspositionen kopiert.

    • Sofern Angebotspositionen übernommen wurden, wird nach Abschluss des Kopiervorgangs der Angebotswert aktualisiert

    • In der Anfrage-Kopie wird der Anfragenwert ebenfalls aktualisiert

Kopie erstellen und Prozess abschließen

  • Die eindeutige Anfragennummer für die Anfragenkopie wird automatisch generiert anhand des für den Standardwert hinterlegten Patterns

    • existiert kein hinterlegter Standardwert und Pattern wird das Feld dementsprechend nicht gefüllt

  • Bei Erstellung einer Angebotskopie erhält diese den Angebotsstatus des über die Feldeigenschaften hinterlegten Standardwertes

    • Wenn kein Standardwert hinterlegt: Leerschlüssel

  • Bei der Erstellung einer Angebotskopie wird die eindeutige Angebotsnummer automatisch generiert anhand des für den Standardwert hinterlegten Patterns

  • Sofern erstellt, erhält die Angebotskopie den Kurznamen der Anfragekopie

    • existiert kein hinterlegter Standardwert und Pattern wird das Feld dementsprechend nicht gefüllt

  • Der Anwender befindet sich nach Prozessabschluss in der erstellten Anfrage-Kopie

    • neue Ebene wird geöffnet

  • In der Angebotskopie ist das Feld "Abgeschlossen" (Closed.Quote) immer false

Kopieren eines Angebots inklusive Anfrage und Angebotspositionen

Einstiegspunkt

  • In der Detailansicht eines Angebots kann der Prozess zum Kopieren eines Angebots gestartet werden

    • Der Prozess zum Kopieren des Angebots wird über den Toolbar-Schalter "Datensatz kopieren" initiiert

  • Beim Kopieren von Angeboten wird berücksichtigt, dass eventuell in den Angebotspositionen vorhandene Unterproduktzuordnungen neu gezogen werden, da sich diese seit Erstellung des Original-Angebotes geändert haben können

Befüllung der Felder in der Anfrage-Kopie

  • Die Pflichtfeldeigenschaften der Felder sind dieselben wie auf der Anfragen-Maske

  • Besitzt das zu kopierende Angebot keine Anfrage, so sind diese Felder nicht sichtbar und demnach auch keine Pflichtfelder

    • Es wird in diesem Fall keine Anfrage-Kopie erstellt

    • Ist die Systemeinstellung "Anfrage notwendig für Angebot" aktiv und das zu kopierende Angebot besitzt keine Anfrage, so erhalten die Anwender eine entsprechende Hinweismeldung im Prozess, dass ein Angebot nur mit einer zugehörigen Anfrage kopiert werden kann

      • "Das zu kopierende Angebot besitzt keine zugehörige Anfrage. Stellen Sie vor dem Kopieren des Angebots sicher, dass eine Anfrage zugeordnet ist. Der Vorgang wird abgebrochen."

  • Der Anwender darf wählen, ob die existierende Anfrage ebenfalls kopiert werden soll. Im Standard ist diese Option nicht aktiv.

    • Die Anfragenfelder sind nur änderbar, wenn die Anfrage kopiert werden soll

      • Eingegebene Werte für die Anfragekopie werden im Hintergrund vorgehalten, wenn der Haken "Anfrage kopieren" entfernt wird

      • Bei erneutem Setzen des Hakens stehen die zuvor eingegebenen Werte wieder zur Verfügung

    • Der Ansprechpartner im Angebot wird mit dem Geschäftspartner in der Anfrage synchron gehalten

  • Besitzt das zu kopierende Angebot eine Anfrage, so sind in der Maske zur Kopie-Erstellung folgende Anfrage-Felder sichtbar:

Feld (intern)

Wert

Hinweise

Kurzname (Matchode.Opportunity)

Beschreibung (OpName.Opportunity)

  • Leer

  • Die Beschreibung ist von den Anwendern änderbar

KAM/Vertrieb (ProjectmanagerKey.Opportunity)

  • Wert KeyAccountManager.Customer des im Feld DefaultCustomer.Opportunity hinterlegten Geschäftspartners

  • Leer, falls das Feld dort nicht gepflegt ist

  • Die Vorbelegung aus einem anderen Feld ist durch Übersteuerung erreichbar

Geschäftspartner (DefaultCustomer.Opportunity)

  • Geschäftspartner aus der Original-Anfrage

  • Ändern des Geschäftspartners ändert den Feldinhalt in KAM/Vertieb (leer oder KAM aus dem neuen Geschäftspartner)

Neukunde (NewCustomer.Opportunity)

  • Wert Neukunde aus Original-Anfrage

  • Schreibbar

Status (ProjectstatusKey.Opportunity)

  • Standardwert verwenden

  • Schreibbar

Erfolgsaussicht (ChanceSuccessKey.Opportunity)

  • Standardwert verwenden

  • Schreibbar

Kaufdatum (Salesdate.Opportunity)

  • Leer

  • Schreibbar

Befüllung der Felder in der Angebotskopie

  • Die Pflichtfeldeigenschaften der Felder sind dieselben wie auf der Angebots-Maske

Die folgenden Felder sind sichtbar, unabhängig davon, ob eine Anfrage innerhalb des Kopiervorgangs erstellt wird, oder nicht. Ausnahmen sind in der Spalte Hinweise markiert

Feld (intern)

Wert

Hinweise

Ansprechpartner (ContactPersonPK.Quote)

  • Leer

  • Wenn wenn dieser in DefaultCustomer.Opportunity sichtbar und gefüllt ist, werden ausschließlich Ansprechpartner zur Auswahl angeboten, die zu dem Geschäftspartner aus DefaultCustomer.Opportunity gehören

Betreff (Reference.Quote)

  • Leer

  • Vorbelegung aus Original-Angebot kann durch Übersteuerung erreicht werden

  • Nur Sichtbar, wenn Anfrage nicht kopiert wird

  1. Unterzeichner (Signatory1EmplKey.Quote)

  • Leer

  • Wird automatisch mit EmployeeSales.Customer des Geschäftspartners des Ansprechpartners gefüllt, wenn dieser in ContactPersonPK.Quote eingetragen wurde

  • Übernahme aus EmployeeSales.Customer kann durch Übersteuerung in der Skriptbibliothek deaktiviert bzw. auf ein anderes Feld umgeschrieben werden

  1. Unterzeichner (Signatory2EmplKey.Quote)

  • Leer

  • Wird automatisch mit EmployeeOffice.Customer des Ansprechpartners gefüllt,wenn dieser in DefaultCustomer.Opportunity eingetragen wurde

  • Übernahme aus EmployeeOffice.Customer kann durch Übersteuerung in der Skriptbibliothek deaktiviert bzw. auf ein anderes Feld umgeschrieben werden

Kampagnenphase (Campaign.Quote)

  • Leer

  • Das Feld ist nur sichtbar, wenn das Modul MULTICHANNEL lizensiert ist

Kampagne (CampPhase.Quote)

  • Leer

  • Das Feld ist nur sichtbar, wenn das Modul MULTICHANNEL lizensiert ist

Preisindikation

  • Wert aus Original-Angebot

  • Sichtbarkeit des Feldes kann durch Übersteuerung der Maske beeinflusst werden (im Standard vorhanden)

Angebotspositionen auswählen und kopieren

  • Sofern zum Original-Angebot Angebotspositionen existieren, werden diese dem Anwender/der Anwenderin zur Auswahl angeboten

  • Existieren im Original-Angebot Angebotspositionen, bei denen es sich um Unterprodukte zu einem Hauptprodukt handelt, werden diese nicht angeboten

    • Bei der Übernahme eines Hauptproduktes werden die aktuell über die Unterproduktzuordnung (ItemsList) mit dem Hauptprodukt verknüpften Unterprodukte neu gezogen und automatisch als Angebotsposition zur Angebotskopie angelegt

  • Der Anwender hat die Möglichkeit, die Auswahl der Angebotspositionen zu überspringen. In diesem Fall wird lediglich der Angebotskopf kopiert. Es werden keine Angebotspositionen kopiert.

  • Sofern Angebotspositionen übernommen wurden, wird nach Abschluss des Kopiervorgangs der Angebotswert wird aktualisiert

  • Sofern eine Anfrage mit kopiert wurde, wird der Anfragenwert in der Anfragenkopie ebenfalls aktualisiert

Kopie erstellen und Prozess abschließen

  • Bei Erstellung einer Angebotskopie erhält diese den Angebotsstatus des über die Feldeigenschaften hinterlegten Standardwertes
    Wenn kein Standardwert hinterlegt: Leerschlüssel

  • Sofern eine Anfragenkopie erstellt wurde, wird für diese der Anfragen-Kurzname automatisch aus dem Betreff des Angebots nach Prozessabschluss übernommen

  • Die Angebotsnummer wird automatisch generiert

  • Die Anfragennummer wird automatisch generiert

  • Der Anwender befindet sich nach Prozessabschluss in der erstellten Angebots-Kopie

    • in einer neuen Ebene

  • In der Angebotskopie ist das Feld "Abgeschlossen" (Closed.Quote) immer false

Kopieren von Verträgen inklusive Vertragspositionen

Einstiegspunkt

  • In der Detailansicht eines Vertrags kann der Prozess zum Kopieren des Vertrags gestartet werden

    • Der Prozess zum Kopieren des Vertrags wird über den Toolbar-Schalter Datensatz kopieren initiiert

Befüllung der Felder in der Vertragskopie

  • Die Pflichtfeldeigenschaften der Felder sind dieselben wie auf der Vertrags-Maske

  • Mit Prozessstart gelangt der Anwender in einen Benutzertask, der die Felder der Vertragskopie enthält

  • Die Felder sind wie folgt vorbefüllt

    • Die Vorbefüllung der Vertragskopie im Benutzertask kann durch Übersteuerung in der Skriptbibliothek individualisiert werden

      Feld (intern)

      Wert

      Hinweise

      Vertrags-Nr. (ContNo.Contract)leerNicht sichtbar auf der Maske, wird generiert oder bleibt leer
      Vertragsbezeichnung (ContTitle.Contract)leer
      Vertragsstatus (ContStatusKey.Contract)Standardwert, sofern vorhanden
      Sonst leer

      Vertragsbeginn (ContStartDate.Contract)Wert aus Original
      Vertragsende (ContEndDate.Contract)Wert aus Original
      Tariftyp (RatetypeKey.Contract)Wert aus Original
      Produktart (ProducttypeKey.Contract)Wert aus OriginalPflichtfeld
      Vertragstyp (ContTypeKey.Contract)Wert aus Original
      VertragsartWert aus Original
      Geschäftspartner (CustomerPk.Contract)Wert aus OriginalPflichtfeld
      Mitarbeiter AD (SalesEmplKey.Contract)Wird automatisch mit EmployeeSales.Customer des Geschäftspartners des Ansprechpartners gefüllt, wenn dieser in CustomerPk.Contract eingetragen wurdeÜbernahme aus EmployeeSales.Customer kann durch Übersteuerung in der Skriptbibliothek deaktiviert bzw. auf ein anderes Feld umgeschrieben werden
      Mitarbeiter ID (OfficeEmplKey.Contract)Wird automatisch mit EmployeeOffice.Customer des Geschäftspartners des Ansprechpartners gefüllt, wenn dieser in CustomerPk.Contract eingetragen wurdeÜbernahme aus EmployeeOffice.Customer kann durch Übersteuerung in der Skriptbibliothek deaktiviert bzw. auf ein anderes Feld umgeschrieben werden
      Vertragswert (ContValue.Contract)(leer)Nicht sichtbar auf der Maske, wird aus den Werten der Vertragspositionen gefüllt
      Währung/Kurs (CurrencyKey.Contract)Wert aus Original


      Betrag in Fremdw. (ContValueFC.Contract)(leer)Nicht sichtbar auf der Maske, wird aus den Werten der Vertragspositionen gefüllt
      Rabatt in % (Discount.Contract)(leer)Nicht sichtbar auf der Maske, wird aus den Werten der Vertragspositionen gefüllt
      Lieferbedingung (TermsOfDeliveryKey.Contract)Wert aus Original
      Belieferungsart (DeliveryCatKey.Contract)Wert aus Original
      Status Belieferung (DeliveryStatusKey.Contract)Wert aus Original
      Status Altvertrag (OldContStatusKey.Contract)Wert aus Original
      Netzbetreiber (CustomerPKGridOperator.Contract)Wert aus Original
      gewonnen von (CustomerPkWonFrom.Contract)Wert aus Original
      verloren an (CustomerPkLostTo.Contract)Wert aus Original

Vertragspositionen kopieren

  • Nach Fortsetzen des Prozesses werden dem Anwender, sofern vorhanden, die mit dem Original-Vertrag verknüpften Vertragspositionen zur Auswahl angeboten

    • Wählt der Anwender keine Vertragspositionen aus, sondern setzt den Prozessschritt fort, wird lediglich die Vertragskopie erstellt

    • Vom Anwender gewählte Vertragspositionen werden kopiert und mit der Vertragskopie verknüpft

  • Sofern Vertragspositionen übernommen wurden, wird nach Abschluss des Kopiervorgangs der Vertragswert aktualisiert

Kopie erstellen und Prozess abschließen

  • Die Vertragsnummer für die Vertragskopie wird , sofern hinterlegt, automatisch anhand des für den Standardwert hinterlegten Patterns generiert

    • existiert kein hinterlegter Standardwert und kein Pattern, wird das Feld dementsprechend nicht gefüllt und bleibt in der Kopie leer

Kennzeichnung von Angeboten als Preisindikation

  • Auf den Angeboten befindet sich das Flag "Preisindikation"

  • Angebote können über das Flag "Preisindikation" als solche gekennzeichnet werden

Standardvorlage Preisindikation

  • Im Standard wird eine Dokumentvorlage zur Erstellung von Preisindikationsdokumenten aus Angeboten ausgeliefert

  • Diese bietet eine übersichtliche, tabellarische Auflistung der im Angebot enthaltenen Angebotspositionen

    • Die Dokumentenvorlage ist kopier- bzw. übersteuerbar und so auf kundenindividuelle Bedürfnisse und Anforderungen anpassbar

  • Folgende Informationen sind in den Kopfdaten der Vorlage enthalten

Fester Text

Variabler Text

Hinweis

Anfrage

<Kurzname der mit dem Angebot verknüpften Anfrage>

Falls keine Anfrage mit dem Angebot verknüpft wurde, wird der Kurzname des Angebots verwendet

Stand

<Aktuelles Datum>

Ersteller

<Name 1 des Systembetreibers>

Dieses Dokument wurde auf Basis der geführten Gespräche erstellt. Es handelt sich hierbei um einen Auszug aus der Preisliste und stellt kein konkretes Angebot dar.

Der dargestellte Text kann durch Konfiguration/Übersteuerung für die Vorlage angepasst und so im Kundensystem individualisiert werden.

  • Die Darstellung der im Angebot, für welches das Preisindikationsdokument generiert wird enthaltenen Angebotspositionen werden nach folgendem Schema dargestellt

    • Im Angebot bzw. den Angebotspositionen vergebene Gliederungsebenen sowie Zwischensummen werden bei der Ausgabe in Tabellenform berücksichtigt

Produktnummer

Bezeichnung

Verkaufspreis

Menge

<Produktnummer aus Angebotsposition>

<Bezeichnung aus Produkt in Angebotsposition>

<Verkaufspreis aus Angebotsposition>

<Anzahl aus Angebotsposition>

  • Weiterhin wird die Gesamtsumme des Angebots ausgewiesen

  • Nachfolgend zu Gesamtsumme besteht die Möglichkeit, einen festen Nachtext in der Dokumentenvorlage zu nutzen.
    Dieser kann im System gepflegt und bei Bedarf angepasst werden

  • Das Dokument enthält ein Wasserzeichen "Preisindikation"

Prozessablauf und Ergebnis

Stücklisten über Unterproduktzuordnungen

Grundlagen

Für die Angebotserstellung im CRM-System werden im System hinterlegte Produkt-Datensätze herangezogen, um daraus Angebotspositionen zu generieren.
Dabei finden auch Produkte Verwendung, für die

  • in jedem Fall zusätzliche Leistungen oder Lizenzen in Form von Produkten verkauft und im Angebotsdokument ausgewiesen werden müssen

  • optional weitere Leistungen oder Lizenzen in Form von Produkten angeboten und entsprechend gekennzeichnet im Angebotsdokument ausgewiesen werden sollen

  • für die interne Abrechnung und Planung weitere Leistungen oder Lizenzen in Form von Produkten erfasst werden sollen, die im Angebotsdokument nicht ausgewiesen werden sollen

Beispiel
Zu einer Lizenz wird zusätzlich eine Dienstleistung zur Konfiguration im Kundensystem sowie eine Schulung der Anwender angeboten.
Zu diesem Zweck ist es möglich, zu Hauptprodukten beliebig viele Unterprodukte über eine Unterproduktzuordnung zu erfassen, um so Stücklisten zu erstellen.

Ist in der nachfolgenden Beschreibung von Angeboten und Angebotspositionen die Rede, so sind Verträge und Vertragspositionen mit gemeint.

Terminologie

  • Eine Hauptangebotsposition ist eine Angebotsposition, in der das Feld "Hauptangebotsposition" nicht gefüllt ist

  • Eine Unterangebotsposition ist eine Angebotsposition, in welcher das Feld "Hauptangebotsposition" gefüllt ist

  • Zugeordnete Unterangebotspositionen besitzen im Nachschlagefeld "Hauptangebotsposition" den Verweis auf die Hauptangebotsposition

Definition von Unterprodukten zu einem Hauptprodukt

Im Unterbereich von Produkten steht die Entität "Unterproduktzuordnung" (ItemsList) zur Verfügung Über die Neuanlage wird ein neuer Datensatz "Unterproduktzuordnung" angelegt. Zu einem Hauptprodukt können beliebig viele Unterproduktzuordnungen angelegt werden. Es ist möglich, mehrere Unterproduktzuordnungen, die dasselbe Unterprodukt beinhalten, anzulegen. Das Hauptprodukt ist vorgefüllt mit dem Produkt, aus dem die Neuanlage der Unterproduktzuordnung angestoßen wurde. Das Feld Hauptprodukt ist schreibgeschützt. Das Zusatzprodukt (Unterprodukt) kann vom Anwender vergeben werden. Es ist nicht möglich, das Hauptprodukt selbst als Zusatzprodukt einzutragen. Es handelt sich um ein Pflichtfeld, der Leerschlüssel ist nicht erlaubt. Für Unterproduktzuordnungen kann eine Reihenfolge vergeben werden.  Diese Reihenfolge wird bei der Generierung der Angebotspositionen aus den Unterprodukten berücksichtigt. Gültige Werte sind positive Ganzzahlen. Unterproduktzuordnungen ohne Reihenfolge werden hinter Unterproduktzuordnungen, die eine Reihenfolge besitzen, eingeordnet. Es erfolgen keine weiteren Prüfungen (Eingabe doppelter Werte sind möglich). Über das Flag "Im Angebot verstecken" können Unterproduktzuordnung im Angebotsdokument verborgen werden. Die Eigenschaft "Im Angebot verstecken" wird in die für das Unterprodukt generierte Angebotsposition übernommen. Auf ihre Anzeige als Angebotsposition unterhalb des Angebotsdatensatzes hat dies keine Auswirkungen. Unterprodukte werden als alternative Angebotsposition übernommen, wenn sie in der Unterproduktzordnung als solche gekennzeichnet sind. Der Anwender kann eine Anzahl für das zugeordnete Unterprodukt vergeben. Wurde in der Unterproduktzuordnung keine Anzahl hinterlegt, wird die zu erzeugende Angebotsposition automatisch mit der Menge 1 generiert. 

Es ist eine einstufige Unterproduktzuordnung möglich. Unterprodukte aus Unterproduktzuordnungen eines Unterproduktes werden nicht als Position in ein Angebot übernommen.

  • Relative Anzahl

    • Default: Deaktiviert

    • Kennzeichen zur Steuerung, ob sich die im Unteprodukt eingetragene Menge bei Änderung der Anzahl des Hauptprodukts automatisch entsprechend erhöht (multipliziert)

      • Wenn inaktiv: Im Unterprodukt enthaltene Anzahl ändert sich bei Änderung der Anzahl im Hauptprodukt nicht

Abbildung: Zuordnung von Unterprodukten

Generierung von Angebotspositionen aus Produkten mit Unterprodukten

Bei der Übernahme eines Produktes, das Unterproduktzordungen besitzt, wird für jedes Unterprodukt eine eigene Angebotsposition generiert. Eigenschaften wie "Im Angebot verstecken" und "Alternativposition" werden aus der Unterproduktzuordnung in die für das Unterprodukt generierte Angebotsposition übernommen. Bei der Generierung der Angebotspositionen für die Unterprodukte wird eine in den Unterproduktzuordnungen vergebene Reihenfolge berücksichtigt. Die Reihenfolge der Unterangebotspositionen entspricht der Reihenfolge der Unterproduktzordnungen zum Hauptprodukt. Ist keine Reihenfolge vergeben, erfolgt die Übernahme in zufälliger Reihenfolge. Ist dieselbe Reihenfolge mehrfach für unterschiedliche Positionen vergeben, erfolgt die Sortierung der Positionen mit derselben Reihenfolge zufällig. Eine Hinweis- oder Warnmeldung auf Mehrfachvergabe der Reihenfolge erfolgt nicht. Die Anzahl wird aus der Unterproduktzuordnung in die zu generierende Angebotsposition übernommen. Zu Unterproduktzuordnungen können (wie Angebotstexte für Produtkte) Beschreibungstexte sprachabhängig hinterlegt werden. Aus Unterproduktzuordnungen generierte Angebotspositionen können vom Angebotsersteller wie händisch angelegte Angebotspositionen auch bearbeitet werden. Ausnahme: Hauptprodukt ist schreibgeschützt.

Modul: Kundenwert und Prävention

Beschreibung des Moduls

Nach der Freischaltung des Moduls im CRM-System steht im Standard eine Struktur zur Verfügung, welche die Erfassung des Kundensegments, des Kundenwerts, der Churn-Risikoklasse sowie des Churnscores eines Geschäftspartners ermöglicht. Durch die Anbindung von Datengebern wie den Energieforen Leipzig können diese Informationen in den hierfür geschaffenen Bereichen durch Importe und Schnittstellen befüllt werden. Die zu einem Geschäftspartner hinterlegten Werte können auf einer Infoboard-Kachel, die auf dem Geschäftspartner platziert wird, eingesehen werden. Weiterhin ist es möglich, im System für bestimmte Segmente, Risikoklassen und Kundenwert-Bereiche entsprechende Handlungsempfehlungen zu definieren. Diese Handlungsempfehlungen werden, sofern der Geschäftspartner in die in der Empfehlung definierten Kriterien fällt, auf der Kachel dargestellt und ermöglichen den Kundenbetreuern, adäquat auf die Bedürfnisse der Kunden zu reagieren bzw. entsprechende Maßnahmen einzuleiten, wenn etwa ein unmittelbarer Verlust eines Geschäftspartners droht.

Abbildung:  Kachel "Kundenwert und Churnscore" auf dem Geschäftspartner-Board

Voraussetzungen

Die Entitäten Handlungsempfehlungen und Kundenwert, sowie die Kachel "Kundenwert und Churnscore" sind an das Modul "Kundenwert" gebunden. Die genannten Komponenten sind dann sichtbar, wenn die Lizenz im System vorhanden und aktiv ist.

Auslieferung von Beispieldaten und Strukturen

Hinterlegung von Handlungsempfehlungen

Entität Handlungsempfehlung (Interner Name: CustGuidance) steht im System zur Verfügung

  • Die Entität besitzt keine Verknüpfungen zu anderen Entitäten

  • Die Entität ist via Administration → Module → Handlungsempfehlungen zugänglich

Feldname

Feldname intern

Datentyp

Pflichtfeld

Bemerkung

Kundensegment

CustomerSegment

Alphanum. Schlüsselfeld auf Kundensegment

(Plus)

Verfügbare Schlüssel:

  • A - A-Kunde

  • B - B-Kunde

  • C - C-Kunde

  • D - D-Kunde

Der Leerschlüssel ist nicht erlaubt

Art

GuidanceType

Alphanum. Schlüssel auf Handlungsempfehlungs-Art

(Minus)

Spiegelt die Art der Handlungsempfehlung wider

Verfügbare Schlüssel:

  • 1 - Text

  • 2 - Rabatt

  • 3 - Kampagne

  • 4 - Tarif

Kundenwert

CustomerValue

Ganzzahl

(Minus)

  • Gültige Werte: 1 - 10

Churnscore von

ChurnscoreFrom

Ganzzahl

(Plus)

  • Angabe in %

  • Gültige Werte: 0 - 100

  • Muss kleiner oder gleich dem Wert in "Churnscore bis" sein

Churnscore bis

ChurnscoreTo

Ganzzahl

(Plus)

  • Angabe in %

  • Gültige Werte: 0 - 100

  • Muss größer oder gleich dem Wert in "Churnscore bis" sein

Churnrisikoklasse

RiskClass

Alphanum. Schlüsselfeld auf Churnrisikoklasse

(Plus)

Verfügbare Schlüssel:

  • 1 - niedrig

  • 2 - mittel

  • 3 - hoch

  • 4 - sehr hoch

Der Leerschlüssel ist nicht erlaubt

Handlungsempfehlung

Guidance

Text

(Plus)

  • Text, der für die Handlungsempfehlung auf der Kachel "Kundenwert und Churnscore" ausgegeben wird

Rabatt absolut

AbsDiscount

Zahl

(Minus)

  • Angabe in €

  • Wird mit der Handlungsempfehlung in der Kachel "Kundenwert und Churnscore" ausgegeben

Gültig von

ValidFrom

Datum

(Plus)

  • Muss kleiner oder gleich dem Gültig-bis-Datumswert sein

Gültig bis

ValidTo

Datum

(Minus)

  • Muss größer oder gleich dem Gültig-ab-Datumswert sein

  • Feld kann leer bleiben (= kein Ende des Gültigkeitszeitraums einer Handlungsempfehlung)

Beispiel-Handlungsempfehlungen

Es werden mit dem Modul Beispiel-Handlungsempfehlungen ausgeliefert, sodass die Visualisierung der Werte direkt auf der Kachel getestet werden kann, ohne dass eine vorherige Datenpflege erforderlich ist. Die Handlungsempfehlungen können von Administratroren bzw. berechtigten Anwendern gelöscht und bearbeitet werden

PK

Art

Kundensegment

Gültig von

Gültig bis

Kundenwert

Risikoklasse

Churnscore von

Churnscore bis

Handlungsempfehlung

Rabatt absolut

C01ExampleCuGu

Text

A

01.01.1970*

(leer)

(leer)

1

0

100

Persönlicher Vorsorge-Call oder persönliches Anschreiben zur Kundenbindung im Rahmen der Vertragslaufzeit

C02ExampleCuGu

Tarif

A

01.01.1970

(leer)

(leer)

1

0

100

Tarifoptimierung bei Rückfrage des Kunden anbieten

C03ExampleCuGu

Text

B

01.01.1970

(leer)

(leer)

1

0

100

Aktiv Cross-Selling-Angebote unterbreiten

C04ExampleCuGu

Kampagne

B

01.01.1970

(leer)

(leer)

3

0

100

Vor dem Erreichen der Kündigungsfrist der Kundenbindungskampagne zuführen

C05ExampleCuGu

Rabatt

C

01.01.1970

(leer)

(leer)

3

0

100

Lockangebote mit Treuerabatten, Laufzeit 5 Jahre

50

C06ExampleCuGu

Rabatt

C

01.01.1970

(leer)

(leer)

3

0

100

Premium-Service ohne zusätzliche Gebühren im ersten Jahr anbieten

50

C07ExampleCuGu

Text

D

01.01.1970

(leer)

(leer)

4

0

100

Passiv agieren

  • Unbegrenzt gültig

Visualisierung von Kundenwertinformationen und Handlungsempfehlungen auf dem Geschäftspartner

Zur Visualisierung der Kundenwert- und Churnscore-Informationen steht eine Infoboard-Kachel zur Verfügung

  • Die Infoboard-Kachel kann auf einem Infoboard auf der Detailmaske eines Geschäftspartners platziert werden

  • Die Infoboard-Kachel kann auf dem Infoboard des Telefonie-Inbound-Dialogs platziert werden

Auf der Kachel werden folgende Informationen aus dem aktuellsten Kundenwert-Datensatz zum geöffneten Geschäftspartner dargestellt

  • Kein Kundenwert-Datensatz vorhanden/ermittelbar:

    • Hinweistext "Keine Kundenwertdaten gefunden."

  • Kundenwert-Datensatz vorhanden/ermittelbar:

    • Kundensegment in Form eines Badges

      • A-Kunde: Grün

      • B-Kunde: Gelb

      • C-Kunde: Orange

      • D-Kunde: Rot

    • Kundenwert anhand der Abbildung des Werts auf einer Skala mit Farbverlauf

      • 1 - rot

      • 10 - grün

      • Grautöne, wenn der Wert nicht im Kundenwert-Datensatz gepflegt ist

    • Churn-Risikoklasse in Form eines Badges

      • niedrig: Grün

      • mittel: Gelb

      • hoch: Orange

      • sehr hoch: Rot

    • Churnscore anhand der Abbildung des Werts auf einer Skala mit Farbverlauf

      • 0 - grün

      • 100 - rot

  • Verfügbare Handlungsempfehlungen

    • Hinweistext, wenn keine zu den Kundenwert-Informationen des Geschäftspartners ermittelt werden kann

    • Passende Handlungsempfehlungen werden aufgelistet (Handlungsempfehlung und Rabatt, sofern hinterlegt)

      • Handlungsempfehlungen werden angezeigt, wenn

        • das aktuelle Datum in den in der Handlungsempfehlung hinterlegten Gültigkeitsbereich fällt UND

        • Das Kundensegment im aktuellsten Kundenwert-Datensatz mit dem Kundenwertsegment einer Handlungsempfehlung übereinstimmt UND

        • Die Churnrisikoklasse im aktuellsten Kundenwert-Datensatz mit dem Kundenwertsegment einer Handlungsempfehlung übereinstimmt UND

        • Der Churnscore im aktuellsten Kundenwert-Datensatz in den Churnscore-Bereich einer Handlungsempfehlung fällt

Abbildung: Detailansicht 'Handlungsempfehlung'

Abbildung: Detailansicht 'Kundenwert'

Modul: Kampagnenmanagement

Memofeld "Gesamtbewertung"

Das Feld kann zur Hinterlegung einer Gesamtbewertung der Kampagne verwendet werden.

Wenn Sie in Ihrem System bereits eine eigene Maske für die Kampagnen hinterlegt haben (C2-Maske), erhält diese nicht automatisch das neue Feld "Gesamtbewertung". Wenn Sie dieses nutzen möchten, können Sie es im Masken-Editor auf Ihrer Maske platzieren.

Abbildung: Das Memofeld "Gesamtbewertung

Umbenennung - Kampagnenmanagement

Im Modul 'Kampagnenmanagement' wurden in der Oberfläche der Anwendung Begrifflichkeiten "Multichannel" bzw. "Multichannel-Marketing" durch "Kampagnenmanagement" ersetzt:

  • Modulname: Multichannel-Marketing , neu: Kampagnenmanagement

  • Modulbeschreibung: Multichannel-Marketing-Modul, neu: Kampagnenmanagement-Modul

  • Ordnernamen in der Aktionsbox: MULTICHANNEL, neu: KAMPAGNENMANAGEMENT

Abbildung: Umstellungen in der Modulverwaltung

Abhängige Kampagnenphasen neu zuordnen

Abhängige Kampagnenphasen können einer anderen Hauptkampagnenphase zugeordnet werden

In der Praxis konnte es vorkommen, dass eine abhängige Kampagnenphase einer Haupt-Kampagnenphase zugeordnet wurde, im weiteren Kampagnenverlauf jedoch einer anderen Haupt-Kampagnenphase zugeordnet werden soll.  Jetzt besteht die Möglichkeit, diese einer anderen Hauptkampagnenphase zuzuordnen.

Bei Kampagnen, die der sequentiellen Abarbeitung folgen, werden die Plandatumswerte der neuen übergeordneten Haupt-Kampagnenphase berücksichtigt. Bei Kampagnen mit parallelen Kampagnenphasen ist dies nicht der Fall.

Der Prozess zum Umhängen einer abhängigen Kampagnenphase steht als Eintrag in der Aktionsbox der Kampagnenphasen zur Verfügung. Er ist aktiv, wenn die betrachtete abhängige Kampagnenphase gemäß der nachfolgenden Kriterien als "umhängbar" gilt:

  • Paralelle Kampagnenphasen:

    • Abhängige Kampagnenphasen mit beliebigem Status können an eine andere Haupt-Kampagnenphase mit beliebigem Status umgehangen werden.

    • Abhängige Kampagnenphase mit wird an eine andere Haupt-Kampagnenphase umgehängt: Umgehängte abh. Kampagnenphase behält immer ihren Status.

  • Serielle Kampagnenphasen:

    • Abhängige Kampagnenphasen, die den Status OFFEN besitzen, können einer anderen Haupt-Kampagnenphase zugeordnet werden, wenn die Haupt-Kampagnenphase den Status OFFEN oder IN BEARBEITUNG besitzt

    • Abhängige Kampagnenphasen, die den Status IN BEARBEITUNG besitzen, können einer anderen Haupt-Kampagnenphase zugeordnet werden, wenn diese den Status OFFEN oder IN BEARBEITUNG besitzt

      • Gilt für serielle Kampagnenphasen: Abhängige Kampagnenphase mit Status IN BEARBEITUNG wird an eine Haupt-Kampagnenphase, die OFFEN ist, umgehängt: Umgehängte abh. Kampagnenphase erhält den Status OFFEN.

    • Beim Umhängen der abhängigen Kampagnenphase wird geprüft, ob Planbeginn und Planende der umzuhängenden abhängige Kampagnenphase innerhalb der Plandatumswerte der neuen Haupt-Kampagnenphase liegen

      • Trifft dies zu, so erfolgt das Umhängen der abhängigen Kampagnenphase an die neue Haupt-Kampagnenphase

        • Die abhängige Kampagnenphase wird als "letzte" abhängige Kampagnenphase zur Haupt-Kampagnenphase behandelt. Ihre Kampagnenphasennummer wird aktualisiert (<Haupt-Kampagnenphasennr>-<Nr. der letzten vorhandenen Kampagnenphase+1>;
          Beispiel: abhängige Kampagnenphase 0002-03 wird an die erste Haupt-Kampagnenphase angehängt, die bereits drei abhängige Kampagnenphasen besitzt; die neue Kampagnenphasennummer für die umgehängte abhängige Kampagnenphase ist 0001-04)

      • Liegt der Planbeginn der abhängigen Kampagnenphase vor dem Planbeginn der neuen Haupt-Kampagnenphase, so wird dieser auf den Planbeginn der Haupt-Kampagnenphase angepasst

      • Liegt das Planende der abhängigen Kampagnenphase nach dem Planende der neuen Haupt-Kampagnenphase und vor dem Planbeginn der nachfolgenden Haupt-Kampagnenphase der neuen Haupt-Kampagnenphase, wird das Planende der abhängigen Kampagnenphase beim Umhängen beibehalten

      • Liegt das Planende der abhängigen Kampagnenphase nach dem Planbeginn der nachfolgenden Haupt-Kampagnenphase der neuen Haupt-Kampagnenphase, so hat erhalten die Anwender die Möglichkeit, das Planende auf den spätestmöglichen Beginn (= Planbeginn der nachfolgenden Haupt-Kampagnenphase) zu legen oder das bestehende Planende der abhängigen Kampagnenphase beizubehalten und die Planwerte der nachfolgenden Haupt-Kampagnenphasen sowie ihrer abhängigen Kampagnenphasen zu verschieben (analog zum Verhalten beim Kopieren von Kampagnen bzw. Ändern der Plandatumswerte)

    • Abgebrochene und verworfene abhängige Kampagnenphasen können ebenfalls an OFFENE und IN BEARBEITUNG befindliche Haupt-Kampagnenphasen umgehängt werden

      • Hierbei erfolgen dieselben Prüfungen auf die Plandatumswerte wie bei offenen und in Bearbeitung befindlichen abhängigen Kampagnenphasen

      • ERLEDIGTE abhängige Kampagnenphasen können an bereits erledigte Haupt-Kampagnenphasen umgehängt werden.

  • Ein Umhängen abhängiger Kampagnenphasen an eine andere Haupt-Kampagnenphase ist lediglich an die Haupt-Kampagnenphasen derselben Kampagne möglich

Kopieren von Kampagnen

Kampagnenphasen einzeln auswählen

Beim Kopieren von Kampagnen können die zu kopierenden Kampagnenphasen einzeln ausgewählt werden.

Im System bereits vorhandene Kampagnen können über einen Aktionsboxeintrag kopiert werden, dies bietet sich insbesondere für zyklisch wiederkehrende Kampagnen an. Innerhalb des Kopierprozesses können Kampagneninformationen wie Beginn, Ende, Zuständige Mitarbeiter oder Kampagnenphasennamen für die Kopie individualisiert werden. Es besteht jetzt auch die Möglichkeit, einzelne Kampagnenphasen und von ihnen abhängige Outbounds vom Kopieren auszunehmen.

Beim Kopieren einer Kampagne besitzt der Anwender innerhalb des Kopiervorgangs die Möglichkeit, einzelne Kampagnenphasen abzuwählen. Diese werden nicht kopiert. Im Standard sind alle kopierbaren Kampagnenphasen sowie ihre abhängigen Kampagnenphasen und Outbounds zum Kopieren angewählt.
Abhängige Kampagnenphasen und Outbounds können abgewählt werden. Ist die ihnen übergeordnete Kampagnenphase abgewählt, so sind die abhängigen Kampagnenphasen und Outbounds automatisch abgewählt und können nicht angewählt werden.

Die Kopie muss mindestens eine Kampagnenphase enthalten. Das Kopieren einer Kampagne ohne Kampagnenphasen ist nicht möglich.
Innerhalb des Kopieren-Prozesses wird bei Abwählen der letzten Kampagnenphase geprüft, ob bereits das Kopieren für alle anderen Kampagnenphasen abgewählt wurde.

  • Ist dies der Fall, so ist das Abwählen der letzten Kampagnenphase nicht möglich. Beim Abwählen der Kampagnenphase erhält der Anwender eine Hinweismeldung "Eine Kampagne muss mindestens eine Kampagnenphase besitzen. Sie können die letzte verfügbare Kampagnenphase nicht abwählen."
    Nach Bestätigung des Dialogs ist die Kampagnenphase wieder für das Kopieren markiert.

  • Ist dies nicht der Fall, so kann der Anwender das Kopieren der letzten Kampagnenphase wenn gewünscht abwählen und den Prozess fortsetzen.

Aktivitäten, deren Kampagnenphasen für die Kopie abgewählt wurden, werden nicht mit kopiert.

Abbildung: Auswahl einzelner Kampagnenphasen beim Kopieren einer Kampagne

Plandatumswerte und der Name abhängiger Kampagnenphasen bearbeiten

In der Aktionsbox von Kampagnen steht ein Prozess zum Kopieren von Kampagnen zur Verfügung.
Dabei kann der Anwender durch die einzelnen zu kopierenden Kampagnenphasen navigieren, ebenso kann er durch von der Kampagnenphase abhängige Outbounds navigieren, diese bearbeiten und für die Kopie an-/abwählen.
Im Prozess können die Datumswerte für die (Haupt-)Kampagnenphasen, die die Kopie erhalten soll, angepasst werden, nicht aber die Datumswerte etwaiger abhängiger Kampagnenphasen. Diese werden lediglich lesend dargestellt.

Hierdurch war es zwar möglich, wiederkehrende Kampagnen mit neuem Datum über den Kopieren-Mechanismus zu erstellen, doch konnte man dabei die Plandatumswerte für abhängige Kampagnenphasen nicht editieren.

Weiterhin können im Kopieren-Prozess zu kopierende Aktivitäten der Originalkampagne anhand ihrer Aktivitätenart bestimmt werden.
Diese wurden beim Kopieren übernommen, bei Bedarf erfolgte eine prozessgesteuerte Anpassung des Beginns dieser Aktivitäten abhängig von ihrer übergeordneten Kampagnenphase.
Dadurch, dass es unmöglich war, die Datumswerte abhängiger Kampagenphasen innerhalb des Kopiervorgangs anzupassen, wurden Aktivitäten abhängiger Kampagnenphasen zwar ebenfalls kopiert, ihre Datumswerte konnten jedoch nicht automatisch angepasst werden.
Weiterhin war der Name abhängiger Kampagnenphasen innerhalb des Prozesses nicht anpassbar.

Die Beschreibung sowie der Planbeginn und das Planende abhängiger Kampagnenphasen können jetzt innerhalb des Kopieren-Prozesses, der aus der Aktionsbox der Kampagne gestartet werden kann, ebenfalls angepasst werden.

Hierbei werden die mit abhängigen Kampagnenphasen verknüpften Aktivitäten ebenfalls berücksichtigt.
Das Beginn-Datum der Aktvitäten-Kopie wird in zeitliche Relation zum Planbeginn der zu kopierenden Kampagne gesetzt, so wie der Beginn der Original-Aktivität zur Original-Kampagne
Die Aktivitätenkopie besitzt zudem dieselbe Dauer wie die entsprechende Original-Aktivität

Werden die Plandaten einer zu kopierenden Kampagnenphase verändert, gilt Folgendes:

  • Wird die Kampagnenphase so verkürzt, dass der ursprüngliche Beginn der Aktivität außerhalb der Kampagnenphase liegen würde, so wird der Beginn der Aktivität auf den spätestmöglichen Beginn gesetzt.

  • Wird die Kampagnenphase so verkürzt, dass das ursprüngliche Ende der Aktivität außerhalb der Kampagnenphase liegt, so wird dies so in Kauf genommen. Die Dauer der Aktivität bleibt beim Kopieren bestehen.

Für die Anpassung von Planwerten zu kopierender abhängiger Kampagnenphasen gelten diese Regeln:

  • Der Planbeginn einer abhängigen Kampagnenphase muss innerhalb des Zeitraums ihrer Bezugsphase liegen

  • Der Planbeginn einer abhängigen Kampagnenphase muss vor ihrem Planende liegen oder gleich dem Planende sein

  • Das Planende einer abhängigen Kampagnenphase kann hinter dem Planende ihrer Bezugsphase liegen

    • Tritt der Fall ein, dass das Planende hinter dem Planbeginn der Haupt-Nachfolgerphase liegt, erhalten Anwender einen entstprechenden Hinweis darauf und die Abfrage, ob der Planbeginn der Haupt-Nachfolgerphase verschoben werden soll

      • Nein: Planbeginn Nachfolgerphase wird nicht angepasst. Planende wird nicht angepasst. Plandatum der abh. Kampagnenphase kann geändert werden

      • Ja: Eingetragenes Planende wird übernommen, Planbeginn der nachfolgenden Hauptkampagnenphasen werden angepasst
        -> Das Verhalten bei überlangen abhängigen Kampagnenphasen ist analog zum Verhalten beim Einfügen von abhängigen Kampagnenphasen

Zusätzlich wird im Kampagne-Kopieren-Prozess zusätzlich der Phasen-Name, Planbeginn, Planende der nachfolgenden Haupt-Kampagnenphase angezeigt.
Die Anzeige erfolgt analog zur bereits vorhandenen Anzeige der Vorgänger-Haupt-Kampagnenphase.

Abbildung: Bearbeitung der Plandatumswerte einer Kampagnenphase

Bereits begonnene Kampagnen zurücksetzen

Unter Umständen kann durchaus die Notwendigkeit entstehen, bereits gestartete Kampagnen zu verschieben. Die Planungen und organisatorische Tätigkeiten für eine Kampagne haben bereits stattgefunden, verschieben sich jedoch beispielsweise aufgrund einer Terminsverschiebung einer Veranstaltung um mehrere Monate und werden zwischenzeitlich pausiert. Für bereits begonnene Kampagnenphasen war es zwar möglich, das Planende, nicht aber den Planbeginn zu verschieben. Auch der tatsächliche Beginn konnte nachträglich nicht mehr verändert werden.

Der Kampagnenverantwortlicher kann jetzt ich bereits gestartete Kampagnen und Kampagnenphasen verschieben und dabei zurücksetzen.
Dabei ist es innerhalb des Prozesses zur Änderung von geplanten Datumsangaben von Kampagnen und Kampagnenphasen über einen Schalter möglich, für Kampagnenphasen, die sich bereits in Bearbeitung befinden

  • den tatsächlichen Beginn zu leeren

  • den Status auf "OFFEN" zu setzen

  • den Planbeginn in die Zukunft zu datieren (hierbei gelten dieselben Regeln zur Datumsprüfung wie bei der regulären Kampagnenphasenanlage bzw. -Verschiebung: Planbeginn nicht nach Planende der Phase, Planbeginn der Phase nicht nach dem Planbeginn der Nachfolgerphase)

Dabei wird eine Aktivität zur Kampagne und betreffenden Kampagnenphase erzeugt, die folgendes protokolliert:
"Die Kampagnenphase <Kampagnenphasenname> wurde am <aktuelles Datum> von <Vorname ausführender User> <Nachname ausführender User> zurückgesetzt.

Sobald durch das Zurücksetzen von Kampagnenphasen alle Kampagnenphasen einer Kampagne den Status OFFEN besitzen, erhält die zugehörige Kampagne ebenfalls den Status OFFEN.
Besitzt mindestens eine Kampagnenphase einen Status ungleich OFFEN, behält die zugehörige Kampagne den Status IN BEARBEITUNG.

Bereits abgeschlossene Kampagnenphasen können nicht zurückgesetzt werden. Abhängige Kampagnenphasen können gleichermaßen zurückgesetzt werden.

Serialität von Kampagnenphasen 

Bisweilen erfolgte die Abarbeitung von (Haupt-)Kampagnenphasen zwingend nacheinander. Eine Kampagnenphase konnte erst gestartet und bearbeitet werden, wenn ihr Vorgänger abgeschlossen war. 
Kampagnenphasen konnten sich zeitlich nicht überschneiden.

Die Serialität ist nun abgeschaltet und kann lediglich bei Bedarf wieder aktiviert werden. 

  • Neuanlage: Es wird nicht mehr geprüft, ob sich Kampagnenhasen überlappen

  • Start einer Kampagnenphase: Es wird nicht mehr geprüft, ob der Vorgänger bereits abgeschlossen ist. Eine Kampagnenphase kann zu einem beliebigen Zeitpunkt gestartet werden

  • Für Fälle, in denen Projekte mittels Kampagnen abgebildet werden und für welche die Definition eines Vorgängers- bzw. Nachfolgers nicht sinnvoll ist, da es sich um keine zeitliche, sondern eine thematische Gliederung unterschiedlicher Projektbereiche handelt sollte es möglich sein, Kampagnenphasen ohne Vorgänger und Nachfolger anlegen zu können

Datenexport aus dem Suchfenster

Der Button "Datenexport" im Suchfenster exportiert die Daten so, wie sie in der Suchergebnisliste dargestellt werden. Das Ziel ist, dass in der CSV-Datei die gleichen Spalten in der gleichen Reihenfolge vorkommen, wie sie dem Anwender im Suchfenster dargestellt werden. Ebenso ist die Darstellung der Werte in der CSV-Datei und der Suchergebnisliste identisch. Schlüsselfelder und Nachschlagefelder werden in einer Spalte dargestellt (analog der Suchergebnisliste). Ist eine detaillierte Darstellung gerade von Nachschlagefeldern notwendig, können diese Felder mittels "besitzt / besitzt nicht" Zweigen in die Suchergebnisliste aufgenommen werden.

Diese Änderung ist bewusst nicht rückwärtskompatibel, da das aktuelle Verhalten für die Anwender nicht nachvollziehbar ist.

Bedienungshinweise

  • Spaltenauswahl und -reihenfolge

Mit Hilfe des Popup-Menüs in der Tabellenansicht kann die Sichtbarkeit und Reihenfolge der Spalten in der Tabelle konfiguriert werden.

Abbildung: Spaltenkonfiguration im Windows Client

Abbildung: Spaltenkonfiguration im Web Client

Im Falle des Windows Clients kann die Reihenfolge der Spalten auch in der Oberfläche temporär per Drag and Drop vorgenommen werden. Bei der Ausführung des Datenexports wird diese Änderung berücksichtigt. 

Das geänderte Layout der Tabelle wirkt sich nun auf auf den Datenexport aus. 

  • Spaltenauswahl:
    Neu: Übernahme aus Spaltenkonfiguration + alle zusätzlichen Felder aus der Suche vom Typ  "Ausgabe in Suchergebnis und Listen". Die zusätzlichen Felder werden gemäß Ihrer Reihenfolge in der Suche ausgegeben.

Eine Differenz der Felder zwischen Suche und Spaltenkonfiguration liegt immer dann vor, wenn die Suche in der Suchmaske noch nicht ausgeführt wurde. Nach Ausführung einer Suche ist dies nicht mehr der Fall, es sei denn, die Suche wird geändert.

  • Bisheriges Verfahren: Es wurden alle Felder der Suche sowie die fehlenden Suchergebnisfelder der Entität ausgegeben

  • Spaltenreihenfolge: 
    Neu: Übernahme aus Spaltenkonfiguration
    Bisheriges Verfahren: Die Reihenfolge der Spalten orientierte sich an der Reihenfolge in der Suche. 

  • Berücksichtigung der Darstellung der Nachschlagefelder (konfigurierbar per Feldeigenschaften "Schlüsselfeld in Listen und im Navigator anzeigen" und "Beschreibungsfeld in Listen und im Navigator anzeigen")

Folgende Funktionalitäten werden nicht unterstützt:

  • Die Sortierung der Daten (absteigend/aufsteigend) wird nicht berücksichtigt

  • Folglich muss die Sortierung der Daten in Excel recht einfach manuell vorgenommen werden

  • Im Falle des Datenexports aus dem Unterbereich werden relationsspezifische Attribute nicht berücksichtigt.
    Beispiel: Es werden die Aktivitäten unterhalb zu einem Ansprechpartner geöffnet. Im Unterbereich wird auch das relationsspezifische Attribut "Beziehung Ansprechpartner" (RelationTypeKeyCoPe.Activity) mit selektiert. Im Falle des Datenexports wird dieses Feld nicht automatisch mit selektiert.
    Workaround: Hier müsste der Anwender dieses Feld in die Suche aufnehmen. Anschließend würde das Feld auch im Datenexport an der korrekten Position (analog zum Unterbereich) erscheinen 

  • Die Feldeigenschaft "Anzahl der Dezimalstellen in der Anzeige" bei numerischen Feldern wird beim CSV-Export nicht berücksichtigt. Es werden immer alle verfügbaren Dezimalstellen ausgegeben

  • Feldinhalte mit Nullwerten werden gemäß dem systemweiten Exportformat ersetzt. Im Standardfall wird dies durch den Text "null" ersetzt. Dies kann der Systembetreiber durch ein Überschreiben des Exportformats konfigurieren - also z.B. durch ein Leerwert ersetzen.

Sprache der Anwendung

Im CURSOR-CRM kann die Sprache der Anwendung gewechselt werden. Im Benutzerprofil  im Bereich "Allgemein", kann die gewünschte Sprache unabhängig von der Systemvorgabe eingestellt werden.

Die Umstellung auf die gewünschte Sprache steht in allen Sprachen, in denen die Anwendung zur Verfügung steht (Deutsch, Englisch, Französisch, Italienisch, Slowenisch)  bereit.

Abbildung: Auswahl der Sprache im Benutzer-Profil

Die Änderung dieser Einstellung greift erst nach einer Ab- und erneuten Anmeldung.

E-Mails mit dem Attribut "Von"

Wenn die Mail-Adresse eines Ansprechpartners beim Antworten oder Weiterleiten in die neue E-Mail übernommen werden sollte, musste der Kommunikationsdatensatz auf 'Büro' stehen. Änderte man den Datensatz auf 'Privat', so wurde das "Von:" nicht gefüllt.

Es wird wie folgt standardmäßig sortiert und kann vor Versenden ausgewählt werden: -> Büro -> Homeoffice -> Home.

Tooltip für Benutzereinstellung "Ansprechpartnerdetails in Betreff übertragen"

Bei Besprechungen werden Ansprechpartnerdetails beim Versand der Besprechung nicht in den Betreff übertragen. Der Tooltip der dazugehörigen Benutzereinstellung wurde angepasst. Besprechung wurde dort entfernt.

Ist das Häkchen gesetzt, werden die Informationen aus dem Ansprecharner in den Betreff des Groupware-Systems übertragen. Dies gilt für die Aktivitätenarten Termin, Wiedervorlage, Aufgabe, sowie interne E-Mail.

Darstellung des Entitätsheaders

Zur Navigation und Identifikation des Kontextes werden relevante identifizierende Bezeichner im Header besser hervorgehoben. Der Name des Datensatzes wird größer als der Name der Entität und unterhalb des Entitätsnamens dargestellt. Zusätzlich wurde der Entitätsheader mit weißem Hintergrund und einer Trennlinie nach unten versehen, um die Scrollhierarchie sauber abzubilden.

Abbildung: Header der Ticket-Entität

Prüfung der Ausführungskosten

Der kostenbasierte Oracle-Ansatz bei Suchen mit großen Datenmengen wurde überarbeitet.

Vor der Ausführung von Suchen schätzt das System die Ausführungskosten. Wird z.B. eine Suche auf größeren Datenmengen unzureichend eingeschränkt, erscheint die nachfolgende Meldung, damit das System mit lang laufenden Suchen nicht unnötig belastet wird.

In der Suchbearbeitung kann die Prüfung der Ausführungskosten für die aktuelle Suche deaktiviert und gespeichert werden. 

Administration Der Schwellwert für die Prüfung der Ausführungskosten kann durch den Administrator in den Anwendungsvariablen konfiguriert werden.

  • Standardwert ist 100

  • Gültige Werte liegen zwischen 50 - 200

  • 0 deaktiviert die Prüfung

Schlüssel für Standardschlüsselbereiche

Ab Version 2021.2 sind diverse neue Schlüssel für Standardschlüsselbereiche vorhanden, u.a. werden nun Standardschlüssel für den Anfragen- bzw. Projektstatus ausgeliefert. Projekte und Anfragen können auf der Geschäftspartnerportrait- sowie der Ansprechpartnerportrait-Kachel dargestellt werden. Im Auslieferungszustand verwendet die Kachel hierbei die im Standard verfügbaren Schlüssel für "offene" Anfragen und Projekte. Die Statuswerte von auf bereits auf Boards platzierten Kacheln werden nicht angepasst.

  • Anfragen

Status 10,20,50
Statt "neue" werden im Badge der Anfragen "offene" verwendet, da die Ermittlung der Anfragen nicht zeitbasiert, sondern abhängig ihres Status, erfolgt.

  • Projekte

Status 10,20,50

Entitäten-Eigenschaften im Web Client

Das Feld "Kopierbar" in den Entitätseigenschaften ist dann editierbar, wenn der Anwender in der entsprechenden Schicht als Administrator angemeldet ist.

Die Eigenschaft "kopierbar" ist nun bei C2- und C1-Entitäten (Partner- und Kundenschicht) editierbar.

Abbildung: Entitäten-Bearbeitung im Web Client

Web Client: Schalter "Dokumente anzeigen"

Zahlreiche Anwender orientieren sich an der Büroklammer "Dokumente anzeigen", um bspw. an einer Aktivität angehängte Dokumente einzusehen oder um neue hinzuzufügen. Letzteres war im Web Client nur möglich, wenn an dem Datensatz bereits ein Dokument darangehängt wurde, da ansonsten der Schalter (Büroklammer) inaktiv war.

Nun kann das Dokumentenmanagement an einem Ausgangsdatensatz jederzeit über die Büroklammer in der Symbolleiste "Dokumente anzeigen" abgebildet werden, auch wenn noch kein Dokument am Datensatz angehängt ist.

Hinweis-Text beim Daten-Export

Beim Daten-Export kann aus technischen Gründen bei der Erstellung eines Exportformats die Einstellung "Standard" nicht direkt bei der Neuanlage vergeben werden. Dies wird jetzt dem Anwender durch einen zusätzlichen textuellen Hinweis verdeutlicht: "Diese Einstellung ist erst nach der initialen Neuanlage verfügbar." 

Abbildung: Export-Dialog

Der zusätzliche Hinweistext erscheint nur im Modus der Neuanlage oder Kopie, da hier das Setzen der Option Standardformat nicht möglich ist.

Wird der Assistent erneut geöffnet und das neue Exportformat gewählt, so wird der Hinweistext in der letzten Seite im unteren Bereich  nicht mehr ausgegeben.

Abbildung: Assistent nach dem Neustart

Ausblenden von Tabs

Aufgrund der Vielzahl von Tabs kann zu einer wahrgenommenen Komplexität führen und verwirren. Nun können die Tabs nicht nur "deaktiviert" sondern auch ausgeblendet werden. Beim Ausblenden von Tabs rückt die Reihenfolge automatisch nach.

Hierfür wurde eine neue  Skriptmethode 'setTabVisible' bereitgestellt. Code

GROOVY
GUIUtils.setTabVisible(int tabIndex | String tabID, boolean visible, String componentName)

Beschreibung

Blendet eine spezifische Lasche einer TabbedPane ein oder aus.

Das Ausblenden von Laschen funktioniert nur im Web Client. Im Windows Client werden die Tabs lediglich deaktiviert (analog zu setTabEnabled()).

Parameter

  • tabIndex - Der Index der Lasche beginnend bei 0.

    • (Warnung) Der Tab-Index bezieht sich immer auf die Tab-Reihenfolge der Maskendefinition. Ein-/Ausblenden von Tabs (setTabVisible()) verändert diese Reihenfolge nicht. 

  • tabID - Der interne Name des Tabs, z.B. "DetailsTab"

  • visible - true um die Lasche anzuzeigen. false um die Lasche auszublenden.

  • componentName - Der interne Name einer TabbedPane Komponente, z.B. "TabbedPane123".

Beispiele

GROOVY
GUIUtils.setTabVisible(0, true, "TabbedPane123");
GUIUtils.setTabVisible("DetailsTab", true, "TabbedPane123");

Import und Export von vcard-Dateien

vcard-Dateien können in das CRM importiert und aus dem CRM heraus exportiert werden. Es wurde eine Möglichkeit geschaffen, Daten eines  Ansprechpartners in ein vcard-Format zu transformieren und aus einer vcard-Datei einen Ansprechpartnerdatensatz zu erzeugen. Dies wurde über Skriptbibliotheksmethoden ermöglicht.

  • vCard2ContactPerson

  • contactPerson2VCard

vCard2ContactPerson Code

CODE
IContainer LogicScriptUtils.vCard2ContactPerson(String vCard)

Beschreibung Erzeugt aus einer VCard einen Ansprechpartners IContainer.

Mapping zwischen VCard und Ansprechpartner.

VCard Eintrag

CRM Feld

N

FirstName

N

LastName

BDAY

DateOfBirth

GENDER, KIND

Sex

EMAIL

Email

REV

UpdateDate

TITLE

Department

ROLE

FunctionDescr

URL

WebSite

TEL;TYPE=WORK

ComposedPhone

TEL;TYPE=CELL

ComposedMobilePhone

ORG

CustomerKey

ADR (Fullstreet)

Street

ADR

ZIP

ADR

City

ADR

State

PHOTO

Picture

Parameter

  • vCard - Die VCard Informationen als String

Rückgabe Der erzeugte Ansprechpartner IContainer

Beispiele

CODE
...
String vcard = FileUtils.readFile(String fileName);
IContainer coPe = LogicScriptUtils.vCard2ContactPerson(vcard);
...

contactPerson2VCard

Code

CODE
String LogicScriptUtils.contactPerson2VCard(IContainer coPe)

Erzeugt aus einem IContainer eines Ansprechpartners eine VCard.

Beschreibung

Mapping zwischen CRM und VCard.

CRM Feld

VCard Eintrag

FirstName + " " + LastName

FN, N

DateOfBirth

BDAY

Sex

GENDER, KIND

Email

EMAIL

UpdateDate

REV

Department

TITLE

FunctionDescr

ROLE

WebSite

URL

ComposedPhone

TEL;TYPE=WORK

ComposedMobilePhone

TEL;TYPE=CELL

CustomerKey

ORG

Street + " " + StreeNumber + " " StreetNumberAddition

ADR

ZIP

ADR

City

ADR

State

ADR

Picture

PHOTO

Parameter

  • coPe - Der Ansprechpartner IContainer

Rückgabe Die erzeugte VCard als String

Beispiele

CODE
...
String vcard = LogicScriptUtils.contactPerson2VCard(contactPerson);
FileUtils.writeFile("c:\\temp\\ContactPerson.vcf", vcard);

Auslieferung neuer Standardschlüsseln

Für die Definition von Standardlogiken muss man sich auf Standardschlüssel beziehen können. Beim nachträglichen Ausbringen von Standardschlüsseln muss eine fachliche Kollision mit kundenindividuellen Schlüssel vermieden werden. Mit der Version 2021.2 wurden für den Standard relevante Schlüssel in bereits vorhandenen Schlüsselbereichen ausgeliefert. Sie müssen nicht als Customizing angelegt werden. 

Die Schlüssel besitzen in allen Systemen denselben Pk, sodass Standardskripte, -suchen, -kacheln,  diese Schlüssel verwenden können.

Key

KeyRange (Pk)

Beschreibung DE

Beschreibung EN

Icon/Farbe

Auswählbar in Maske

Auswählbar in Suchmaske

EXKUNDE

CUSTTYPE

Ex-Kunde

Former customer

images\resources_marina\keytab\CUSTTYPE\16x16\CUSTTYPE-EXKUNDE

Ja

Ja

PARTNER

CUSTTYPE

Marktpartner

Partner

Nein

Ja

Ja

VERBAND

CUSTTYPE

Verband

Association

Nein

Ja

Ja

LIEFERANT

CUSTTYPE

Lieferant

Suppliert

Nein

Ja

Ja

TELEIN

S_ACTTYPE

Telefonat-Eingang

Ingoing call

images\resources_marina\keytab\S_ACTTYPE\16x16\S_ACTTYPE-TELEIN

Ja

Ja

TELAUS

S_ACTTYPE

Telefonat-Ausgang

Outgoing call

\images\resources_marina\keytab\S_ACTTYPE\16x16\S_ACTTYPE-TELAUS

Ja

Ja

TELINT

S_ACTTYPE

Telefonat-Intern

Internal call

\images\resources_marina\keytab\S_ACTTYPE\16x16\S_ACTTYPE-TELINT

Ja

Ja

PROTOKOLL

S_ACTTYPE

Protokoll

Protocol

Nein

Ja

Ja

AUFTRAGGEBER

PRJ_ROLE

Auftraggeber/in

Client

Nein

Ja

Ja

AUFTRAGNEHMER

PRJ_ROLE

Auftragnehmer/in

Contractor

Nein

Ja

Ja

BEHÖRDE

PRJ_ROLE

Behörde

Authority

Nein

Ja

Ja

BERATER

PRJ_ROLE

Berater/in

Consultant

Nein

Ja

Ja

INVESTOR

PRJ_ROLE

Investor/in

Investor

Nein

Ja

Ja

PROJEKTLEITUNG

S_PFKT

Projektleitung

Project manager

Nein

Ja

Ja

STELLVPRJKTLEITUNG

S_PFKT

Stellvertretende Projektleitung

Deputy project manager

Nein

Ja

Ja

BERATER

S_PFKT

Berater/in

Consultant

Nein

Ja

Ja

STAKEHOLDER

S_PFKT

Stakeholder

Stakeholder

Nein

Ja

Ja

PROTOKOLL INTERN

DOCCATEGORY

Protokoll intern

Internal protocol

Nein

Ja

Ja

PROTOKOLL EXTERN

DOCCATEGORY

Protokoll extern

External protocol

Nein

Ja

Ja

GESCHÄFTSBERICHT

DOCCATEGORY

Geschäftsbericht

Annual report

Nein

Ja

Ja

KALKULATION

DOCCATEGORY

Kalkulation

Calculation

Nein

Ja

Ja

ANGEBOT

DOCCATEGORY

Angebot

Offer

Nein

Ja

Ja

PRÄSENTATION

DOCCATEGORY

Präsentation

Presentation

Nein

Ja

Ja

RECHNUNG

DOCCATEGORY

Rechnung

Invoice

Nein

Ja

Ja

LIEFERANTENRECHNUNG

DOCCATEGORY

Lieferantenrechnung

Supplier invoice

Nein

Ja

Ja

BEARBEITUNG

QUOTESTATUS

In Bearbeitung

In progress

Nein

Ja

Ja

POTENTIAL

QUOTESTATUS

Potential

Potential

Nein

Ja

Ja

PREIS

S_GVBEGR

Preis

Price

Nein

Ja

Ja

TECHNOLOGIE

S_GVBEGR

Technologie

Technology

Nein

Ja

Ja

ABSAGE

S_GVBEGR

Absage Auftragnehmer

Canceled by supplier

Nein

Ja

Ja

BEZIEHUNG

S_GVBEGR

Beziehung

Relationship

Nein

Ja

Ja

REALISATION

S_GVBEGR

Nicht realisiert seitens Auftragnehmer

Canceled by customer

Nein

Ja

Ja

IMAGE

S_GVBEGR

Image

Image

Nein

Ja

Ja

ARTIKEL

S_PRDART

Artikel

Article

Nein

Ja

Ja

DIENSTLEISTUNG

S_PRDART

Dienstleistung

Service

Nein

Ja

Ja

SONSTIGES

S_PRDART

Sonstiges

Miscellaneous

Nein

Ja

Ja

RAHMEN

S_VTRTYP

Rahmenvertrag

Framework contract

Nein

Ja

Ja

EINZEL

S_VTRTYP

Einzelvertrag

Single contract

Nein

Ja

Ja

WARTUNG

S_VTRTYP

Wartungsvertrag

Maintenance agreement

Nein

Ja

Ja

AKTIV

S_VTRSTA

Aktiv

Active

Ja, grün (0, 255, 0)

Ja

Ja

GEKÜNDIGT

S_VTRSTA

Gekündigt

Cancelled

Ja, orange (255, 180, 0)

Ja

Ja

BEENDET

S_VTRSTA

Beendet

Terminated

Ja, rot (255, 0, 0)

Ja

Ja

IN VERHANDLUNG

S_VTRSTA

In Verhandlung

In negotiation

Ja, gelb (255, 255, 0)

Ja

Ja

INTERESSENTEN

C0TARGETGROUP

Interessenten

Prospects

Nein

Ja

Ja

KEINE

C0TARGETGROUP

Keine Einschränkung

Indefinite

Nein

Ja

Ja

EVENT

C0CAMPTYPE

Veranstaltung

Event

Nein

Ja

Ja

MU

Zweiseitiger Schlüssel, zugeordneter Schlüssel TO

S_VERKN

Mutter

Parent company

Nein

Ja

Ja

TO Zweiseitiger Schlüssel, zugeordneter Schlüssel MU

S_VERKN

Tochter

Subsidiary

Nein

Ja

Ja

HS Zweiseitiger Schlüssel, zugeordneter Schlüssel NL

S_VERKN

Hauptsitz

Headquarters

Nein

Ja

Ja

NL Zweiseitiger Schlüssel, zugeordneter Schlüssel HS

S_VERKN

Niederlassung

Branch

Nein

Ja

Ja

10

S_PRJSTA

Potential

Potential

Nein

Ja

Ja

20

S_PRJSTA

In Vorbereitung

In preparation

Nein

Ja

Ja

50

S_PRJSTA

Aktiv

Active

Nein

Ja

Ja

100

S_PRJSTA

Abgeschlossen

Finished

Nein

Ja

Ja

Formatierung in Memo-Feldern

Das Memofeld verfügt über eine festgelegte Biliothek von Funktionen, auf die das CRM-System zugreifen kann.

Es wurden zusätzliche  Funktionen bereitgestellt, damit Einzüge formatiert werden können ("Einzug vergrößern" / "Einzug verkleinern").

Abbildung: Formatierung von Einzügen

Ausblenden leerer Tabs bei Benutzeroption "Leere Knoten verbergen" im Web Client

Bei aktivierter Benutzeroption "Leere Knoten verbergen" werden die Tabs zu Unterbereichen mit leerer Datensatzmenge ausgeblendet.

Fachlich hat sie den gleichen Effekt wie die Option "Leere Knoten verbergen" im Windows Client.

Abbildung: Einstellungen im Web Client 

Adresseingabe mit Postleitzahlen

Bei der Adresseingabe werden jetzt die Postleitzahlen für das hinterlegte Land angeboten.

Innerhalb der Adresseingabe wurden bisher alle Postleitzahlen, auch wenn das Land der Person hinterlegt wurde, unabhängig ihres zugehörigen Landes in der Vorschlagsliste angeboten. Bei der Neuanlage eines Geschäftspartners, der sich z.B. in Österreich befindet, wurden dennoch auch italienische sowie deutsche Postleitzahlen in der Vorschlagsliste angeboten.

Implementierte Logiken:

  • Ist das Land definiert, so werden in der Vorschlagsliste ausschließlich Postleitzahlen für dasselbe Land angeboten. Ist das Land nicht hinterlegt, werden alle Postleitzahlen in der Vorschlagsliste angeboten, die zur Eingabe des Benutzers passen.
    Bei der Validierung ist die Übernahme einer Postleitzahl, die nicht zum Land gehört dennoch möglich (Pickliste).

  • Bei der Neuanlage einer Adresse wird das Land der basierenden Person (falls vorhanden) übernommen.

Abbildung: Vorschlagsliste zu einem hinterlegten Land

Mailversand ohne Betreff

Im Mailversandfenster kommt nun bei einem Versand im Falle eines leeren Betreffs eine Sicherheitsabfrage. Damit wird verhindert, dass die Betreffzeile leer bleibt.

Abbildung: Sicherheitsabfrage vor dem Versand

Kopieren von Inhalten aus Tabellenzellen in die Zwischenablage

Inhalt von Tabellenzellen kann im Web Client in die Zwischenablage eingefügt werden. Beispiele für die Verwendung: Der Name einer Suche aus der Suchverwaltung oder der PK eines Schlüssels in der Schlüsselbearbeitung.  Auf Tabellen gibt es jetzt ein Kontextmenü, über das die Zelleninhalte kopiert werden können.

Abbildung: Kontextmenü auf einer Tabelle

Die Tastenkombination STRG+C kann nicht verwendet werden, da sie vom Browser bereits besetzt ist. 

Bearbeitung von mehrzeiligem Übersetzungstexten in der I18n-Tabelle

Es ist jetzt möglich, mehrzeilige I18n-Texte in der I18n-Tabelle komfortabel zu pflegen.

Abbildung: Bearbeitung von i18n Werten

Länge der Entitätsnamen

Bei der Einführung von der 3C-Architektur wurde die Gesamtlänge von C1- und C2-Entitätsnamen reduziert.
Im EntityCreator können jetzt insgesamt 15 Zeichen eingegeben werden, die ersten Zeichen müssen der Identifikation dienen:

  • Cxx / C2 (wobei xx die zweistellige Partnernummer ist)

  • 12 bzw. 13 Zeichen sind für freie Eingabe des Namens vorgesehen

Optimierung des Suchdialogs

Der Such-Dialog wurde weitgehend optimiert, da die bisherige Bedienung nicht selbsterklärend war.  Bei größeren Datenmengen konnte sich die Suchausführung auf die Performance des Systems auswirken. Wenn nicht genug Kriterien eingegeben wurden und die ermittelte Ergebnismenge die administrativ festgelegte Ergebnismenge überschritten hat, wurde ein Zwischendialog eingeblendet. Die Suchkriterien mussten verfeinert werden. Das war für Benutzer missverständlich.

Abbildung: Dialogfenster für erweiterte Suchen

Die Optimierung umfasst 3 Punkte:

  • Abschaffung der Systemeinstellung "Prüfung der Suchkriterien vor Ausführung"

Die Systemeinstellung "Prüfung der Suchkriterien vor Ausführung" wurde entfernt. Dadurch kann die Obergrenze über die administrative Oberfläche nicht mehr gesetzt werden. In Ausnahme-Fällen kann der dahinterstehende PropertyMapper-Eintrag angepasst werden. Mit der Version 2021.2 wird diese Systemeinstellung standardmäßig nicht mehr gesetzt sein. Wird eine Suche ohne Kriterien gestartet, wird nur die Anzahl der Datensätze geladen, die entweder in der Suche konfiguriert oder hard-coded im System hinterlegt ist (10.000). Das CRM verhält sich so, als ob Suchkriterien eingegeben wurden und trotzdem die Grenzen überschritten wurden, d. h. es zeigt den entsprechenden Hinweisdialog an.

Migration: Für bestehende Kunden wird der Eintrag ebenfalls nicht mehr gesetzt sein. Hier liegt eine Verhaltensänderung vor.

  •  Suchauslösung nach Ermittlung der Datenmenge

Die Anzeige der ermittelten Datensätze wird beibehalten. Der Button "Ok" wird in "Schließen" umbenannt. Der Dialog erhält eine weitere Option "Suche ausführen". Ist die Anzahl der ermittelten Datensätze > als das Minimum(Begrenzung der Suche, 10.000), wird zusätzlich ein Hinweis angezeigt, dass maximal Minimum (Begrenzung der Suche, 10.000) Datensätze geladen werden.

  • Meldung bei leerer Suchergebnismenge

Liefert die Datenmengenermittlung den Wert 0 (numerisch 0), wird folgende Meldung angezeigt: "Die Suche liefert keine Ergebnisse. Bitte versuchen Sie es mit anderen Suchkriterien erneut."

Diese Meldung erscheint bereits, wenn die Suche ausgeführt wird und keine Ergebnisse liefert.

Sonderfall Lucene-Suche Bei der Lucene-Suche wurde bisher unabhängig vom Schalter "Suchkriterien prüfen" immer die Meldung angezeigt, wenn zu viele Lucene-Ergebnisse gefunden wurden. Diese Meldung erscheint nun nur noch bei aktivierter Kriterien-Prüfung (via PropertyMapper). Bei deaktivierter Prüfung wird die Suche so ausgeführt, als ob keine Kriterien eingegeben wurde.

Tooltip des Nachschlagefeldes

 in der Listenansicht wurde bei leeren Feldern im Tooltip „null“ angezeigt. Schlüssel- und Nachschlagefelder wurden mit einem Leerwert "?" angezeigt. Bei Checkboxen wurde "false" / "true" angezeigt.

Die Änderung: Zeilen mit leeren Feldern (null, Leerstring, null, Leerschlüssel) werden weggelassen. Bei Checkboxen wird „Ja“ und „Nein“ je nach Sprachen angezeigt.

Benutzereinstellung "Bildlaufleiste für Maske anzeigen" 

Die Einstellung wird seit der Umstellung auf Flex-Masken nicht mehr benötigt, da die Masken-Logiken die Größe der Maskenelemente steuern.

BPM: Der Icon-Typ eines Meldungstasks

In  BPM steht eine Benutzeraktion vom Tasktyp "Meldung" zur Verfügung. Innerhalb der Aktion können für die vier unterschiedlichen Meldungstypen verschiedene Icons vergeben werden: Frage, Information, Warnung und Fehler. Dies konnte bisher nur fest im Task hinterlegt werden.

Innerhalb eines Prozesses kann es nun aber durchaus vorkommen, dass sich die Art einer Meldung (z.B. Infomeldung über eine erfolgreiche Operation vs. Fehlermeldung im Fehlerfall) an den Anwender erst innerhalb des Prozesses ergibt.
In der Vergangenheit konnte dies innerhalb des Prozesses nur mit einer Variable, einer Verzweigung, welche die Variable auswertet, und zwei oder sogar mehr unterschiedlichen Dialogen gelöst werden, damit die Meldungsdialoge je nach Kontext den richtigen Typ besitzen.

Die Auswahl eines festen Icon-Typs ist weiterhin in der Benutzeraktion vom Typ Meldung möglich. Als Alternative dazu kann hier eine Variable im Benutzertask ausgewählt werden, die der Prozessdesigner zuvor im Prozess je nach Kontext befüllen lässt. Bei Übergabe eines falschen oder leeren Werts in der verwendeten Variable wird der Icon-Typ "Frage" als Standard genutzt.  Hierbei können die in den GUIConstants verfügbaren Konstanten WARNING_MESSAGE, INFO_MESSAGE, ERROR_MESSAGE, QUESTION_MESSAGE genutzt werden.

Abbildung: Icon im Benutzertask als Variable

Das Zeitfeld auf dem OptIn

Für das Genehmigungsdatum (ApprovalDate.OptIn) und Gültigkeitsdatum (ValidDate.OptIn) auf der Entität OptIn wird jeweils im Standard das Zeitfeld über die Feldeigenschaften ausgeblendet (Zeitfeld anzeigen = false).

Skripting & Tooling

Datei-Verarbeitung im Maskenskript

Die Datei-Verarbeitung im Maskenskript bzw. BPM-Maskenskript kann im Web Client nicht durchgeführt werden, da dort der Dateizugriff auf lokale Dateien aus dem Skript heraus nicht möglich ist. Die Methoden aus DocumentUtils, FileUtils, PdfUtils & SpreadSheetUtils werden aber (fast) ohne Einschränkung dort angeboten. Im Windows Client konnte man damit auch mit lokalen Dateien arbeiten. Methoden werden aber nur dann angeboten, wenn sie auch sinnvoll im Web Client eingesetzt werden können.

Bestehendes Maskenskript müsste weiterhin funktionieren, da nur die Dokumentation und Autovervollständigung im Maskenskript entfernt wird. Für Kundenprojekte, die auf den Web Client wechseln, müssen diese Skripte aber in Prozesse umgewandelt werden. Die Dokumente zur Verarbeitung können über die Benutzeraktion "Dokumente hinzufügen" temporär auf den Server übertragen und dort in Skriptaktionen weiterverarbeitet werden .

Technisch werden an allen betroffenen Methoden die Annotationen @BPM_MASK_SCRIPT und @MASK_SCRIPT entfernt.

Verhaltensänderung

Es gibt eine Verhaltensänderung bzgl. der Verfügbarkeit von Skriptklassen und Skriptmethoden.

Gemäß Tabelle können die Skriptklassen und Skriptmethoden in der Benutzer-Aktion von BPM oder dem Maskenskript nicht mehr verwendet werden. 
Hintergrund:
Im Web Client können keine lokale Dateien verarbeitet werden. Die Verarbeitung der Dateien findet immer auf dem Server statt. Die Verwendung sollte daher ausschließlich in der BPM Skript-Aktion erfolgen. Aufgrund der Abwärtskompatibilität ist eine Nutzung der Methoden aber weiterhin in der BPM Benutzer-Aktion und dem Maskenskript möglich, die Methoden werden aber nicht mehr bei der Codevervollständigung angeboten.
Der bestehende Code ist also weiterhin lauffähig.
Es ist aber zu beachten, dass bei einem Wechsel vom WIndows Client zum Web Client bzw. einer Parallelnutzung des Web Clients jene Prozesse überarbeitet werden müssen, die in der BPM Benutzer-Aktion oder dem Maskenskript die aufgeführten Skriptklassen oder -methoden verwenden. Hier ist entweder ein Hochladen der zu verarbeitenden Dateien auf den Applikationsserver notwendig oder ein Verlagern der zu verarbeitenden Dateien auf eine Netzlaufwerk, auf das auch der Applikationsserver zugreifen kann. 

Skriptklasse

Skriptmethode / konstante

Verfügbar in der
BPM Skript-Aktion

Verfügbar im
Maskenskript und der
BPM Benutzer-Aktion

PdfUtils

alle Methoden

(Plus)   

 (Minus)

PdfConstants

PDF_EXTENSION

(Plus)

(Plus)

PdfConstants

restliche Konstanten

(Plus)

(Minus)

SpreadsheetUtils

alle Methoden und Konstanten

(Plus)

(Minus)

DocumentUtils

createDocumentEntry
exportDocument
getBarcodes
getDataMatrixBarcodes 

(Plus)

(Minus)

DocumentUtils

restliche Methoden und alle Konstanten

(Plus)

(Plus)

FileUtils

getExtension
removeExtension
SEPARATOR

(Plus)

(Plus)

FileUtils

restliche Methoden

(Plus)

(Minus)

Anforderung und Nutzung eines OAuthTokens

Das Anforderung und die Nutzung eines OAuth-Token soll für den Programmierer einer Skriptbibliothek über Hilfsmethoden ermöglicht werden.

Die OAuthUtils wurden vollständig überarbeitet.  Die Abwärtskompatibilität zu alten Versionen ist selbstverständlich weiter gegeben. 

Details zu OAuthUtils finden Sie im Skripting-Handbuch:

  • createRequest (OAuthUtils)

  • createRequestWithUserCredential (OAuthUtils)

  • prepareCredentialRequestWithCodeFlow (OAuthUtils)

  • prepareUserCredentialRequestWithCodeFlow

  • requestCredentialWithClientCredentialsFlow

  • requestCredentialWithResourceOwnerPasswordFlow

  • requestUserCredentialWithResourceOwnerPasswordFlow

Barcodeerkennung  

Die Barcodeerkennung war für PDF-Dokumente und Imagedateien, wie z.B. tif, jpg, png verfügbar. Bisher wurde die Verfügbarkeit ausschließlich an der Dateiendung festgemacht.  Falls die Dateiendung unbekannt ist, wird jetzt der Inhalt der Datei anhand des Mime-Types bestimmt. Folglich können auch die auf dem Server abgelegten Dateien (mit Endung jsf) nun ausgelesen werden. Hierfür wurde die Methode getBarcodes erweitert.

Code

GROOVY
IBarcodeResult DocumentUtils.getBarcodes(String fileName, String barcodeType, boolean searchForSingleBarcode)

Beschreibung Ermittelt alle Barcodes des gewünschten Typs aus der angegebenen Datei.
Neben Pdf werden folgende Grafikformate unterstützt: bmp, jpeg, png, gif, tiff (weitere sind möglich)

Parameter

  • fileName
    Vollständiger Pfad der Datei.

  • barcodeType
    Typ des Barcodes nach dem gesucht werden soll, z.B. "DataMatrix". Die unterstützen Barcodes sind in der Klasse BarcodeConstants hinterlegt, z.B. BarcodeConstants.BARCODE_FORMAT_DATAMATRIX

  • searchForSingleBarcode
    Wenn Sie nur nach einem Barcode suchen, empfiehlt es sich, diesen Parameter zu aktivieren. Dies beschleunigt die Barcodeerkennung für TIFF- oder auch PDF-Dokumente deutlich. Möchten Sie alle Barcodes aus der Datei ermitteln, so ist der Parameter zu deaktivieren.

Rückgabe
Ergebnis der Barcodeerkennung
Folgende Methoden stehen in dem Rückgabeobjekt IBarcodeResult zur Verfügung

  • String[] getBarcodes()
    Liefert die Liste der erkannten Barcodes

  • boolean isSuccessful()
    Konnte die Barcodeerkennung ohne Fehler durchgeführt werden? Nicht zu verwechseln mit, ob Barcode gefunden wurde!

  • String getErrorCode()
    Liefert den Fehlercode, falls die Barcodeerkennung nicht erfolgreich war. Die Fehlercodes stehen als Konstanten in der Klasse BarcodeConstants zur Verfügung, z.B.BarcodeConstants.BARCODE_ERRORCODE_GENERAL Mit Hilfe der Fehlercodes können individuelle Ausgaben im Skripting hinterlegt werden. Folgende Fehlercodes stehen zur Verfügung:

    • BarcodeConstants.BARCODE_ERRORCODE_NOTSUPPORTED_BARCODETYPE
      Diese Art von Barcode wird nicht unterstützt.

    • BarcodeConstants.BARCODE_ERRORCODE_NOTSUPPORTED_FILETYPE
      Dieser Dateityp wird bei der Barcodeerkennung nicht unterstützt.

    • BarcodeConstants.BARCODE_ERRORCODE_GENERAL
      Ein allgemeiner Fehler ist bei der Barcodeerkennung aufgetreten.

Beispiele

GROOVY
IBarcodeResult result =  DocumentUtils.getBarcodes("C:/temp/Angebot.pdf", BarcodeConstants.BARCODE_FORMAT_DATAMATRIX, true);
if (!result.isSuccessful())
{
  if (ScriptUtils.equal(BarcodeConstants.BARCODE_ERRORCODE_NOTSUPPORTED_BARCODETYPE, result.getErrorCode()))
  {
    //...Error handling...
  }
}
else
{
  String[] barcodes = result.getBarcodes();  
  for (String barcode : barcodes)
  {
    // Hinweis: Diese Methode steht nur im Benutzertask zur Verfügung.
    DialogUtils.showMessageDialog("Gefundener Barcode", barcode);
  }
}

Import und Export von Kalendereinträgen (ICS-Dateien)

ics-Dateien (ical, Kalendereinträge) können jetzt gelesen und geschrieben werden. "Lesen" bedeutet Transformation in eine Aktivität im CRM-System. Ebenso ist es jetzt möglich, Termine in das ical-Format zu transformieren. Ein Besprechung wird automatisch erzeugt, wenn der ORGANIZER gesetzt ist.

Skriptmethoden:

  • String activity2ICS(List<IContainer> activities)

    • Konvertiert alle Termine in <activities> in ein ics-konformes Format und gibt einen VCALENDER mit all diesen Einträgen zurück.

    • Termine --> VEVENT

    • Besprechung --> Der 'Organizer' wird gesetzt, die Mail-Adressen der abhängigen Mitarbeiter/Ansprechpartern werden als 'ATTENDEE' hinzugefügt.

  • <List>ICSResult ics2Activity(String ical)

    • Konvertiert alle in <ical> enthaltenen Einträge in Aktivitäten unter Berücksichtigung des unten aufgeführten Mappings.

    • Das ICSResult enthält einen IContainer der Aktivität und eine Liste von IContainer der Teilnehmer ( Mitarbeiter und Ansprechpartner).

  • Zugriffs-Methode ermittelt eine Aktivität und Mitarbeiter/Ansprechpartner aus dem ICSResult.

Beschreibung der Methoden:

  • Mit Hilfe von ICSUtils.activity2ICS können Aktivitäten in einen ICS-String gewandelt werden und z.B. nach Outlook importiert werden

  • Mit ICSUtils.iCS2Activity kann ein ICS-String in Aktivitäten AttributeContainer umgewandelt werden

Wenn eine Aktivität den Typ 'Besprechung' hat, werden die Mail-Adressen alle verlinkten Mitarbeiter/Ansprechpartner in die ICS Datei importiert. In Outlook kann (in der Kalenderansicht) beim Klick auf Datei der Menüpunkt "Kalender speichern" aufgerufen werden. Damit kann z.B. der aktuelle Tag nach ICS importiert werden, so dass beim Import mehr als eine Aktivität erzeugt wird.

activity2ICS Code

CODE
String ICSUtils.activity2ICS(List<IContainer> activities)

Beschreibung

Konvertiert die übergebenen Aktivitäten Datensätze in einen ICS-String.

Mapping-Tabelle

CRM-Feld

ICS-Eintrag

Pk.Activity

UID

Subject.Activity

SUMMARY

Text.Activity (Plain)

DESCRIPTION

Text.Activity (HTML)

X-ALT-DESC

Location.Activity

LOCATION

StartDate.Activity

DTSTART

EndDate.Activity

DTEND

CreateDate.Activity

DSTAMP

DelegatedTo.Activity

ORGANIZER*

Verknüpfte Mitarbeiter/Ansprechpartner

ATTENDEE*

RemindDateActivity

VALARM

*Der Organizer wird nur für die Art BESPRECHUNG gesetzt. Hier werden auch die Mail-Adressen der verknüpften Mitarbeiter und Ansprechpartner eingetragen.

Parameter

  • activities - Die Aktivitäten, die in ins ICS-Format umgewandelt werden sollen.

Rückgabe

Der ICS-String mit den konvertierten Aktivitäten.

Beispiel

JAVA
List<IContainer> acs = ProcessUtils.getVariable("containers"); // when startet from action box
String ics = ICSUtils.activity2ICS(acs);
FileUtils.writeFile("c:\\temp\\export.ics", ics, false, "UTF-8");

getActivity

Code

CODE
IContainer ICSUtils.getActivity(ICSResult result)

Liefert den Aktivitäten IContainer des ICSResultBeschreibung

Parameter

  • result - Das Ergebnis einer ICS Konvertierung mit der Methode ICSUtils.iCS2Activity.

Rückgabe

Den IContainer der Aktivität.

Beispiel

JAVA
String content = FileUtils.readFile("c:/temp/Kalender.ics", "UTF-8");
List<ICSResult> result = ICSUtils.iCS2Activity(content);
IContainer activity = ICSUtils.getActivity(result.get(0));
...

getAttendeesCode

CODE
List<IContainer> ICSUtils.getAttendees(ICSResult result)

Beschreibung

Liefert die Teilnehmer des ICSResult

Parameter

  • result - Das Ergebnis einer ICS Konvertierung mit der Methode ICSUtils.iCS2Activity.

Rückgabe

Eine Liste mit IContainer der Teilnehmer. Der IContainer wurde für die Tabelle Ansprechpartner (ContactPerson) erzeugt.

Gefüllt ist die Mail-Adresse (Feld EMail) und der RelationTypeKeyCoPe. Für den Organisator wird der Schlüssel ACTIVITY_COPE_ROLE_TYPE-FROM gesetzt. Die anderen Teilnehmer bekommen den Schlüssel ACTIVITY_COPE_ROLE_TYPE-TO.

Beispiel

CODE
String content = FileUtils.readFile("c:/temp/Kalender.ics", "UTF-8");
List<ICSResult> result = ICSUtils.iCS2Activity(content);
List<IContainer> attendees = ICSUtils.getAttendees(result.get(0));
...

iCS2Activity

Code

CODE
List<ICSResult> ICSUtils.iCS2Activity(String ics)

Beschreibung

Konvertiert den übergebenen ICS-String in Aktivitäten.

Mapping-Tabelle

ICS-Eintrag

CRM-Feld

UID

Pk.Activity

SUMMARY

Subject.Activity

DESCRIPTION

Text.Activity (Plain)

X-ALT-DESC

Text.Activity (HTML)

LOCATION

Location.Activity

DTSTART

StartDate.Activity

DTEND

EndDate.Activity

DSTAMP

CreateDate.Activity

VALARM

RemindDate.Activity

ORGANIZER*

ActTypeKey.Activity

ATTENDEE**

Werden im ICResult gespeichert

*Ist der Organizer gefüllt, wird als Art BESPRECHUNG verwendet. Sonst immer TERMIN.

Parameter

  • ics - Die Termin(e) im ICS-Format.

Rückgabe

Ein Liste von ICSResult(s). Ein ICSResult enthält einen Aktivitäten (ICSUtils.getActivity) IContainer und **beliebige Ansprechpartner die über ICSUtils.getAttendees geholt werden können.

Die Ansprechpartner enthalten die EMail-Adresse (Email.ContactPerson) und als Beziehungsschlüssel (RelationTypeKeyCoPe) wird für den Organisator der Schlüssel SENDER eingetragen.
Für alle anderen Teilnehmer wird der Schlüssel EMPFÄNGER eingetragen.
Beispiel

JAVA
String content = FileUtils.readFile("c:\\temp\\calendar.ics", "UTF-8");
List<ICSResult> result = ICSUtils.iCS2Activity(content);

if(result.size() == 0)
{
  return;
}

ScriptUtils.info("** result size: "+result.size());

for(ICSResult ics : result)
{
  IContainer activity = ICSUtils.getActivity(ics);
  List<IContainer> attendees = ICSUtils.getAttendees(ics);
  ...
}

Passwort für eine Datei übergeben

Beim Öffnen einer Excel-Datei via SpreadsheetUtils kann das Passwort für eine Datei übergeben werden, damit der Passwortschutz für das Dokument aufgehoben werden kann. Weiterhin kann über eine zusätzlich bereitgestellte Methode ein Passwort für ein Dokument gesetzt werden.

  • Neue Methode: setPassword

  • Neue Parameter: save (SpreadsheetUtils)

  • SpreadsheetOptions wurden aktualisiert (Details finden Sie im Skripting-Handbuch 2021.2):

    • openDocument

    • openFile

    • createOptions

    • saveAs

setPassword Code

GROOVY
void setPassword(SpreadsheetOptions options, String password)

Beschreibung

Setzen oder Entfernen des Passwortschutzes für eine Exceldatei mit Hilfe der SpreadsheetOptions.
Für das Entfernen eines bestehenden Passwortschutzes ist analog zu Microsoft Excel ein Leerwert (null oder "") zu übergeben.

Parameter

  • options
    Objekt zum Steuern des Ladens und Speicherns einer Tabellenkalkulationsdatei

  • password
    Passwort für die verschlüsselte Exceldatei.
    Für das Entfernen eines bestehenden Passwortschutzes ist analog zu Microsoft Excel ein Leerwert (null oder "") zu übergeben.

Beispiele

GROOVY
/* Example for setting and removing password protection for an excel file */

/* First create options for loading password encrypted excel file  */
SpreadsheetOptions loadOptions = SpreadsheetUtils.createOptions();
SpreadsheetUtils.setPassword(loadOptions, "4711");

ISpreadsheetResultOpen openResult = SpreadsheetUtils.openFile("C:\\Work\\SpreadsheetWithPassword.xlsx", loadOptions);
if (!openResult.isSuccessful())
{
    String errorCode = openResult.getErrorCode();

    if (SpreadsheetUtils.SPREADSHEET_ERRORCODE_FILE_PASSWORDPROTECTED.equals(errorCode))
    {
      //....handle FILE_PASSWORDPROTECTED
    }
    else
    {
      //....handle further error codes, e.g. SPREADSHEET_ERRORCODE_GENERAL
    }
    /** do furthermore */
    return;
}

try
{
	Spreadsheet excel = openResult.getSpreadsheet();
	/* Now remove password from encrypted excel file per options */
	SpreadsheetOptions saveOptions = SpreadsheetUtils.createOptions();
	SpreadsheetUtils.setPassword(saveOptions, null);
	SpreadsheetUtils.save(excel, saveOptions);
	/* Password encryption for excel file is now removed */
	...
}
finally
{
	SpreadsheetUtils.close(excel);
}

save (SpreadsheetUtils)

Code

GROOVY
void save(Spreadsheet spreadsheet, SpreadsheetOptions options) throws Exception

Beschreibung

Speichert die übergebene Tabellenkalkulationsdatei unter Verwendung des aktuellen Dateinamens.

Hinweis: Wurde die Tabellenkalkulationsdatei mittels SpreadsheetUtils.createFile neu erzeugt, so muss die Tabellenkalkulationsdatei zunächst mit Hilfe von SpreadsheetUtils.saveAs gespeichert werden.

Parameter

  • spreadsheet
    Repräsentiert die Tabellenkalkulationsdatei

  • options
    Optionaler Parameter für das Speichern von Excel und textbasierten Tabellenkalkulationsdateien, z.B. csv. Im Falle von textbasierten Dateien können sowohl Separator als auch Zeichensatz der Textdatei beim Speichern angegeben werden. Im Falle von Exceldateien wird der Parameter Passwort zur Verschlüsselung der Exceldatei verwendet.

Exception 
Wird geworfen, wenn die Tabellenkalkulationsdatei nicht geschrieben werden kann.

Beispiele

GROOVY
ISpreadsheetResultOpen openResult = SpreadsheetUtils.createFile();  

if (!openResult.isSuccessful())
{
    ScriptUtils.debug("Error: " + openResult.getFileName()  + " - " + openResult.getErrorCode());
	/** do furthermore */
    return;
}
Spreadsheet excel = null;
try
{
  excel = openResult.getSpreadsheet();
  SpreadsheetUtils.setValue(excel, "B7", "Alles wird gut");
  SpreadsheetUtils.saveAs(excel, "C:\\Work\\myFirstSpreadsheet.xlsm");
  SpreadsheetUtils.setValue(excel, "B8", "Alles wird besser");
  SpreadsheetUtils.save(excel);
  SpreadsheetUtils.close(excel);
}
finally
{
  SpreadsheetUtils.close(excel);
}

Ausblenden von Tabellenblättern

Innerhalb der Klasse "SpreadSheetUtils" existiert eine neue Methode, die ermöglicht, Tabellenblätter anhand des Namens bzw. Index auszublenden.

setVisibleWorksheet

Code

GROOVY
boolean setVisibleWorksheet(Spreadsheet spreadsheet, String sheetName, boolean visible)
boolean setVisibleWorksheet(Spreadsheet spreadsheet, int sheetIndex, boolean visible)

Beschreibung

Steuern der Sichtbarkeit des Arbeitsblatts in der übergebenen Tabellenkalkulationsdatei.


Parameter

  • spreadsheet
    Repräsentiert die Tabellenkalkulationsdatei

  • sheetName
    Name des Arbeitsblattes (z.B. "CONFIG")

  • sheetIndex
    Numerischer Index des Arbeitsblattes innerhalb der Tabellenkalkulationsdatei (das erste Arbeitsblatt beginnt mit 1)

  • visible
    sichtbar (true) oder ausgeblendet (false)

Rückgabe 
true - wenn die Sichtbarkeit des angegebenen Arbeitsblatt konfiguriert werden konnte. 
Im Regelfall wird false zurückgeliefert, wenn das angegebene Arbeitsblatt  in der Tabellenkalkulationsdatei nicht gefunden werden konnte.

Beispiele

GROOVY
ISpreadsheetResultOpen openResult = SpreadsheetUtils.openFile("C:\\Work\\myFirstSpreadsheet.xlsm");


if (!openResult.isSuccessful())
{
  ScriptUtils.debug("Error: " + openResult.getFileName() + " - " + openResult.getErrorCode());
  /* do furthermore */
  return;
}


Spreadsheet excel = null;
try
{
  excel = openResult.getSpreadsheet();
  // hide first worksheet
  SpreadsheetUtils.setVisibleWorksheet(excel, 1, false);

  // hide CONFIG worksheet
  SpreadsheetUtils.setVisibleWorksheet(excel, "CONFIG", false);
  ...
}
finally
{
  SpreadsheetUtils.close(excel);
}    

Methode für die Schlüsselbeschreibung

Die Methode i18nKeyDescription liefert die Schlüsselbeschreibung in der angegebenen Sprache.

Code

GROOVY
String I18nUtils.i18nKeyDescription(String key, Locale language)

Beschreibung

Internationalisiert den übergebenen Schlüssel.
Bei dem übergebenen Schlüssel muss es sich um einen Primärschlüssel der Entität S_KeyTab, KeyTabNum oder KeyRange handeln.
Existiert der Schlüssel nicht, wird er unverändert zurückgegeben.
Wie üblich greift der Fallback auf das englische Locale, wenn es gepflegt und die angeforderte Sprache nicht gepflegt ist.

Parameter

  • key - Der zu internationalisierende Schlüssel.
    z.B. LookupUtils.getPk(LookupUtils.EMPTY_KEY)

  • language - Gibt die Sprache an, für welche die Internationalisierung durchgeführt werden soll.
    z.B. SessionConstants.LOCALE, siehe auch LocaleConstants.

Rückgabe
Gibt den internationalisierten Schlüssel zurück. Wurde der angegebene Schlüssel nicht gefunden, so wird der übergebene Schlüsselwert zurückgeliefert. Beispiele

GROOVY
String german = I18nUtils.i18nKeyDescription(LookupUtils.getPk(LookupUtils.EMPTY_KEY), LocaleConstants.GERMAN);
String english = I18nUtils.i18nKeyDescription(LookupUtils.getPk(LookupUtils.EMPTY_KEY), LocaleConstants.ENGLISH);
String italian = I18nUtils.i18nKeyDescription(LookupUtils.getPk(LookupUtils.EMPTY_KEY), LocaleConstants.ITALIAN);
ScriptUtils.debug("deutsch: " + german + ", englisch: " + english + ", italienisch: " + italian);

REST-Aufruf einer öffentlichen Methode der Skript-Bibliothek

Jede (öffentliche) Skriptmethode kann jetzt via REST aufgerufen werden. Dies führt dazu, dass mit jeder gültigen Benutzeranmeldung eine Skriptmethode aufgerufen werden kann. Bisher war die Einbindung von Bibliotheksmethoden in Masken- / BPM-Skripten Administratoren vorbehalten.

Vorteil: mit wenig technischem Know-How kann prinzipiell jede Skriptbibliotheksmethode aufgerufen werden.

Folgendes Szenario als Beispiel:

  • Einführung einer Kennung "Per Webservice aufrufbar" für jede Skriptbibliotheksmethode

  • Nur Methoden, bei denen die Annotation @Remote gesetzt ist, können per REST-Aufruf ausgeführt werden

  • Ist die Kennung nicht gesetzt, wird eine allgemeine Fehlermeldung "Methode nicht gefunden" zurückgegeben.

Abbildung: Beispiel im Skript-Editor

Updatehinweis

Wurde in 2021.1 eine Kachel erstellt, die auf eine Skriptklasse zugreift, muss nach dem Update für diese Kachel die Skriptmethode als @Remote markiert werden, da sonst der Aufruf mit einem Fehler abgelehnt wird.

Pflege der Datenbanken

Bei der Bereinigung von Datenbänken konnte es vorkommen, dass Adresse- und Telekom-Datensätze teilweise nicht gelöscht wurden. Der Prozess wurde nun optimiert.

Details finden Sie im Kapitel des BPM-Administrator-Handbuchs unter dem Titel "Datenbereinigung von großen DatenmengenDatenbereinigung von großen Datenmengen". 

Workflow auf "Nicht sichtbar" schalten

Man kann in der Modulübersicht die Relation zu der Standardentität "Workflow“ auf "Nicht sichtbar" schalten. Das Feature wurde jetzt optimiert, um die bessere Stabilität der Anwendung zu gewährleisten.

Die Entität "Workflows" kann nun ausgeblendet werden. Ebenso werden die Menüpunkte "Workflow starten" und "Workflow-Designer" ausgeblendet, wenn die Entität ausgeblendet wurde. 

Der Menüpunkt "Workflow starten" ist erst nach dem Neustart des Clients aktiv, wenn man den 1. Workflow anlegt.

Abbildung: Workflow-Module in der Admin-Konsole

Aufnahme des Spiegelungsassistenten (MirrorTool) in das Installationspaket

Der Spiegelungsassistent (MirrorTool) wurde in das Installationspaket aufgenommen .
Speicherort:
<InstallatiosPaket>

  • client

  • cti

  • db

  • installer

  • PowerShell

  • server

  • tools

    • mirror <-- neu aufgenommen

    • LuceneIndex

    • SSL

Variables.<NAME> mit Anführungszeichen ersetzen

Wenn man nach Prozessvariablen per "Variables.<NAME>" nachgeschlagen und eine ausgewählt hat, bekam man den Namen nicht als String, also mit Anführungszeichen ersetzt. Jetzt wird der String korrekt ausgegeben. Die Ersetzung erkennt auch, ob noch Anführungszeichen notwendig sind oder nicht (z.B. wenn die Ersetzung zwischen zwei Anführungszeichen durchgeführt wird).

Assert-Klasse in privaten Methoden

Assert-Klasse wurde in privaten Methoden einer Testklasse aufgenommen.

Bei automatischen Testfällen wurden Testklassen geschrieben. Am Ende jedes Testfalls wurden sehr ähnliche Suchen ausgeführt und über Asserts die erzeugten Events geprüft. Der Code-Block von 30-40 Zeilen wird nun ausgelagert, um Code schlanker zu machen und nicht redundant zu schreiben.

Meldung bei nicht veröffentlichtem Prozess (BPM)

Löst ein Aktionsboxeintrag direkt einen BPM-Prozess aus und ist dieser Prozess nicht veröffentlicht, erhält der Anwender bei der Auswahl des Aktionsboxeintrags eine unmissverständliche Meldung und einen Hinweis auf eine mögliche Ursache.

Der Prozess '<Name des Prozesses>' ist nicht veröffentlicht oder die Startbedingung ist nicht erfüllt

SQL-Funktionen in der Suchbearbeitung

Vorbelegung von SQL-Funktionen in der Suchbearbeitung kann jetzt mit einem konstanten String realisiert werden.

Beim Wechsel zwischen einer DBFunction und einer DBWherePartFunction sollte zuerst der SQL-Text übernommen werden. Nur wenn er dann noch leer ist, sollte die Initialisierung mit der Konstanten erfolgen (verhindert, dass bereits geleistete Arbeit beim Funktionswechsel zerstört wird). 

Wählt man in der Suchbearbeitung die Funktionen "SQL-Ausdruck" oder "SQL-Ausdruck (Where-Part)", so wird der SQL-Text jetzt mit einem Kommentar zur Verwendung der Erweiterungen versehen (siehe Abb. 1). Weiterhin kann der SQL-Text nun auch im Web Client über ein Popup editiert werden (siehe Abb. 2).

Dergleiche Kommentar erscheint auch im Windows Client. Dort kann man schon immer über einen Doppelklick auf die Textarea in ein Edit-Popup wechseln.

Je nach Locale des Benutzers wird der Kommentar internationalisiert eingefügt. Wenn er allerdings in der Suche gespeichert wird (was man vermeiden soll), bleibt er dort natürlich in der eingefügten Sprache erhalten.

Abbildung: (1)  Funktion "SQL-Ausdruck" in der Suchbearbeitung

Abbildung: (2)  Edition der SQL-Textunktion

Konsolidierung von CURSOR-Produkten auf eine Produktlinie

Grundlagen

Die bestehenden Produkte CURSOR-CRM, EVI, TINA, INHOUSE und HELVIS nutzten unterschiedlichen Programm und Datenbank-Stände. Ziel der Umsetzung war es, nur noch einen Programmstand für alle Produkte und Datenbanken zu nutzen. Es gibt nur noch ein Installationspaket für alle Produkte, Datenbanken und Betriebssysteme. Die Produkte werden als Module abgebildet. Wenn z.B. eine EVI oder TINA Version genutzt werden, muss das Modul EVIJET importiert werden. Dadurch werden die EVI spezifischen Entitäten, Felder und Relationen sowie Logiken aktiviert. 

  1. Ein Source-Stand für alle Produkte und Datenbanken

    1. Reduzierung der Entwicklungszeit. Nur noch eine anstatt sieben Versionen:

      1. CURSOR-CRM Oracle

      2. CURSOR-CRM MS SQL

      3. EVI Oracle

      4. EVI MS SQL

      5. TINA Oracle

      6. INHOUSE Oracle

      7. HelVIS MS SQL

    2. Kürzere Patch und Versionsbuilds

  2. Ein Installationspaket für alle Produkte (CURSOR-CRM, EVI, TINA, HELVIS), Datenbanken (Oracle und MS SQL) und Betriebssysteme (Windows und Linux).

    1. Anstatt 9* 2,1 GB nur noch 1* 2,4 GB.

  3. Einheitliches Datenmodell für alle Versionen mit identischem C0-Customizing

  4. Produkte werden über C0-Module abgebildet

  5. Freischaltung von CURSOR-CRM C1-Modulen in HelVIS

  6. Umstellung von Standard-Workflows auf Prozesse und Skriptbibliotheken

Produkt-Modul erstellen

Produkt-Module HELVIS, INHOUSE und EVI können - wie gewohnt - in der Admin-Konsole → Module → "Kundenmodule erstellen" erstellt werden.

Abbildung: Modulverwaltung in der Konsole, Lizenzerstellung Produkt-Modul

Diese Module sind immer aktiv und immer gültig. Die Felder "Benutzerlizenzen", "aktiv", "Gültig bis" sind schreibgeschützt. Es können nicht mehrere Produktmodule als Lizenz hinzugefügt werden. Ist bereits ein Produkt-Modul zugewiesen, kann kein anderes Produkt-Modul hinzugefügt werden. Wurde ein Produkt-Modul zum Hinzufügen markiert, kann kein anderes Produktmodul selektiert werden.

Abbildung: Warnung bei der Lizenz-Erstellung von Produkt-Modulen für andere Versionen außer CURSOR-CRM

Produkt-Module können nur für CURSOR-CRM ausgestellt werden. Beim Wechsel der Version kommt eine Hinweismeldung und die Version wird auf CURSOR-CRM zurückgestellt, wenn ein Produktmodul bereits hinzugefügt wurde. Ist eine andere Version ausgewählt, sind keine Produktmodule in der Auswahl vorhanden. Es darf nur maximal 1 Produkt-Modul importiert und aktiviert werden. Es erscheint eine Fehlermeldung, wenn es trotzdem versucht wird, ein weiteres Produktmodul zu importieren. 

Abbildung: Fehler beim Import eines Produkt-Modules

Eine Deaktivierung eines Produkt-Moduls ist nicht möglich. Beim Einspielen eines Produkt-Modules wird der System-Cache geleert, damit das Customizing des Modules aktiviert wird.

Hinweise auf Änderungen des Standardverhaltens

Modul-Lizenzen

Modul-Lizenzen werden zukünftig nur noch für das Produkt CURSOR-CRM ausgestellt. Für die Produkte EVI und TINA muss das EVI-Modul lizensiert werden, für HelVIS das HelVIS-Modul. Beim Update werden die Lizenzen automatisch aktiviert, je nachdem, welches Produkt installiert war.

Schnittstellen

Bei dem Update werden alle Entitäten, Relationen und Felder für die Module EVI, HELVIS und INHOUSE angelegt. Das C0-Datenmodell ist nun in allen Produkten identisch. Für die Relationen rCnAc und rQuAc wurden die doppeltpersistenten Felder DefaultContract und DefaultQuote von EVI nach CURSOR-CRM übernommen. Schnittstellen in CURSOR-CRM müssen hier nun das Flag DefaultCn.rCnAc und DefaultQu.rCuAc korrekt füllen.

Applikationsname

Im Windows Client wie auch für den Web Client konnte in der configuration.bat bzw. standalone.conf(.bat) der Applikationsname festgelegt werden. Hierzu steht die Einstellung APPLICATION_VERSION_NAME zur Verfügung. Gültige Werte sind hier: CURSOR-CRM, EVI, TINA, HELVIS, INHOUSE. Im Windows Client war eine freie Eintragung möglich. Zukünftig sind nur noch die obigen Werte analog zum Web Client gültig. Der Applikationstitel kann weiterhin frei vergeben werden. 

Der Applikationsname bestimmt verschiedene Meldungstexte in der Anwendung, die MyCRM Beschriftung (MyCRM, MyEVI, MyTINA, MyHELVIS) sowie das Verhalten der Links (CARMEN://, EVIJET://, HELVIS://, INHOUSE://) und Splashscreens. Kundenspezifische Splashscreens können wie bisher im custom-Verzeichnis des Windows Clients oder als URL im Web Client hinterlegt werden. Die Installer/Updater setzt den Applikationsnamen automatisch. 

Deaktivierung von Standard-Workflows

In 2021.2 wurden verschiedenste Standard-Workflows in Standard-Prozesse überführt, deren Logiken in der Skript-Bibliothek C0EntityLogic hinterlegt sind und übersteuert werden können. Falls vor dem Update Standardworkflows deaktiviert waren, die nun gelöscht wurden, wird dies entsprechend im Update.log protokolliert bzw. im Installer angezeigt. Für diese Workflows müssen die Logiken kundenspezifisch übersteuert werden.

  • Prozess C0AddLinks:

    • AddLinksOpQu.xml (AddLinksForOpQu)

    • AddLinksrCnAc.xml (AddLinksForrCnAc)

    • AddLinksrCnAcAc.xml (AddLinksForrCnAcAc)

    • AddLinksrCnIs.xml (AddLinksForrCnIs)

    • AddLinksrCnOp.xml (AddLinksForrCnOp)

    • AddLinksrCnQu.xml (AddLinksForrCnQu)

    • AddLinksrIsAc.xml (AddLinksForrIsAc)

    • AddLinksrIsMeDe.xml (AddLinksForrIsMeDe)

    • AddLinksForrOpAc_HELVIS.xml (AddLinksForrOpAc)

    • AddLinksrAcDo_HELVIS.xml (AddLinksrAcDo)

    • AddLinksrCoPeAc_HELVIS.xml (AddLinksForCollectorrCoPeAc)

    • AddLinksrCoPeDo_HELVIS.xml (AddLinksForrCoPeDo)

    • AddLinksrCuAc_HELVIS.xml (AddLinksForCollectorrCuAc)

    • AddLinksrCuOp_HELVIS.xml (AddLinksForrCuOp)

    • AddLinksrOpDo_HELVIS.xml (AddLinksForrOpDo)

    • AddPrivAdrLinkWhileCreatingCoPe_HELVIS.xml (AddPrivAdrLinkWhileCreatingCoPe)

    • AddLinksForrAcDo_HELVIS.xml (AddLinksForrAcDo)

    • AddLinksrQuAc.xml (AddLinksForCollectorrQuAc)

    • AddLinksrCoPeAc.xml (AddLinksForCollectorrCoPeAc)

    • AddLinksrCoPeQu.xml (AddLinksForrCoPeQu)

    • AddLinksrQuDo.xml (AddLinksForCollectorrQuDo)

    • AddLinksrAcDoCarmen.xml (AddLinksForCollectorrAcDoCarmen)

    • AddLinksrPjAcCarmen.xml (AddLinksForCollectorrPjAcCarmen)

    • LinkCoPeCuImportedActivity.xml (LinkCoPeCuImportedActivity)

    • AddLinksrAcDo.xml (AddLinksForCollectorrAcDo)

    • AddLinksrOpAc.xml (AddLinksForCollectorrOpAc)

  • Prozess C0CopyEntity:

    • CopyActivityLinks.xml (CopyActivityLinks)

    • CopyActivity_EVIJET.xml (CopyActivity)

    • CopyActivity_HELVIS.xml (CopyActivity)

    • CopyOpportunity_HELVIS.xml (CopyOpportunity_HELVIS)

  • Prozess C0RemoveLinks:

    • RemoveLinksrCoPeAc_HELVIS.xml (RemoveLinksrCoPeAc_HELVIS)

    • RemoveLinksrCuAc_HELVIS.xml (RemoveLinksrCuAc_HELVIS)

    • RemoveLinksForrAcDo_HELVIS.xml (RemoveLinksForrAcDo)

    • RemoveLinksForrOpAc_HELVIS.xml (RemoveLinksForrOpAc)

    • RemoveLinksrCoPeAc.xml (RemoveLinksrCoPeAc)

    • RemoveLinksrOpAc.xml (RemoveLinksrOpAc)

  • Prozess C0CalculateItemsFC:

    • CalculateContractItemFC.xml (S_100 CalculateContractItemFC)

  • Prozess C0CalculateOpportunityFromItems:

    • CalculateOpportunityFromNewOpItems.xml (S_100 CalculateOpFromNewOpItems)

    • CalculateOpportunityFromChangeOpItems.xml (S_100 CalculateOpFromChangeOpItems)

    • CalculateOpportunityAfterDeletedOpItems.xml (S_100 CalculateOpAfterDeletedOpItems)

  • Prozess C0CreateActivitiesAfterCustomerPersonnelTurnover:

    • CreateActivityByCustomerEmployeeOfficeChange.xml (S_100 CreateActivityByCuEmOfficeChange)

    • CreateActivityByCustomerEmployeeSalesChange.xml (S_100 CreateActivityByCuEmSalesChange)

    • CreateActivityByCustomerKeyAccountManagerChange.xml (S_100 CreateActivityByCustomerKAMChange)

    • CreateAcsForNewCu.xml (S_110_1 CreateACsForNewCu)

  • Für HelVIS wurden die folgenden C2 Prozesse CopyTelecom und UpdateCustomerAfterAddOrRemove aufgenommen:

    • CopyPrivTelecomForCoPeFromBasedPerson_HELVIS.xml (S_100 CopyPrivTelecomForCoPeFromBasedPerson)

    • ChangePrivTelecomForPeAndCoPe_HELVIS.xml (S_120 ChangePrivTelecomForPeAndCoPe)

    • AfterMultipleAddAndRemove_HELVIS.xml (AfterMultipleAddAndRemove)

  • Die folgenden Workflows wurden entfernt:

    • DeleteKeyRangeByFreefieldDefDelete.xml (S_100 DeleteKeyRangeByFreefieldDefDelete)

    • CreateKeyRangeByFreefieldDefChange.xml (S_100 CreateKeyRangeByFreefieldDefChange)

    • CreateKeyRangeByFreefieldDefCreation.xml (S_100 CreateKeyRangeByFreefieldDefCreation)

Wegfall der EVI und HelVIS Standard-Masken

Die EVI und HelVIS spezifischen Standardmasken für C0-Entitäten wie Aktivitäten oder Geschäftspartner entfallen mit dem Update auf 2021.2. EVI-Standardmasken werden über das C12_EVI_BASIS-Modul ausgeliefert. Für HelVIS sind die Standardmasken bereits übersteuert.

Änderungen für HelVIS

Neben der Änderung der Standardmasken gibt es weitere Änderungen in HelVIS, die das bestehende Verhalten an CURSOR-CRM angleichen. 

  1. Alle CURSOR-CRM Entitäten, Felder und Relationen sind nun für den Administrator verfügbar. Für die Benutzer werden die Entitäten beim Update ausgeblendet.

  2. Es ist  nun möglich in HelVIS C1-Module von CURSOR-CRM zu nutzen

  3. Vor dem Update muss die potentiale Maske in C2 übersteuert werden, da die C0-Maske durch die CURSOR-CRM-Version ersetzt wird.

  4. CURSOR-CRM-Reports müssen nach dem Update übersteuert und ausgeblendet werden:

    1. JasperReport#Activity_Cumulative, JasperReport#Activity_Overview_ByEmployee, JasperReport#Activity_OverviewShort, JasperReport#Activity_WeeklyReport, JasperReport#Activity_Portrait, JasperReport#Activity_VisitsPreview, JasperReport#Person_Portrait, JasperReport#Customer_Portrait, JasperReport#Customer_ByZIP, JasperReport#ContactPerson_Portrait, JasperReport#Employee_PhoneList, JasperReport#Opportunity_ByManager, JasperReport#Opportunity_ByManager, JasperReport#Opportunity_List,  JasperReport#Opportunity_Lost, JasperReport#Opportunity_Won, JasperReport#Project_Portrait

  5. Folgende Suchen sind nun auch in HelVIS verfügbar. Diese müssten ggf. übersteuert und per Berechtigung ausblendet werden:

    1. AllOpenActivities, AllFinishedActivities, OwnActivities, getAllImportedMails, Customer Address, "Customer, Address, Telecom", "Standardsuche Geschäftspartner", AssigningEmployee, AssigningContactPersonrCoPeAcrAcDo, AssigningContactPersonrCoPeAcrPjAc, AssigningContactPersonrCoPeAcrQuAc, AssigningProjectrPjAc, AssigningProjectrDefaultProject_Activity, AssigningProjectrDefaultProject_Activity_NEW_INSERTION, SYSTEM_getCustomerForOpportunity , defaultProjectrPjAc

  6. Standardsuchen für HELVIS entfallen und müssen in C2 übersteuert werden. 

    • Activity, ContactPerson, Customer, Document, Employee, Opportunity, Contract, Product, Project

  7. Für die Entitäten Ansprechpartner, Geschäftspartner, Mitarbeiter, Dokument und Produkt muss die Sortierreihenfolge in der Hauptliste sowie im Unterbereich vor dem Update einmal Systemweit gespeichert werden.

  8. Die Anlage von Suchen und Komplexen Suchen erfolgt nun nicht mehr mit der Rechtevorlage "DefSearch" sondern mit der Standardvorlage, wodurch alle Nutzer diese Suche sehen können. Sollen Suchen nur für fachliche Administratoren sichtbar sein, so müssen die Suchen nachträglich per Berechtigungen ausgeblendet werden.

Installationspaket CURSOR-CRM

CURSOR stellt nur noch ein Installations-/Patchpaket für CURSOR-CRM zur Verfügung. Dieses Installationspaket kann für alle Produkte CURSOR-CRM, EVI, TINA und HelVIS genutzt werden. Das Installationspaket ist dabei unter Windows und Linux gleichermaßen nutzbar. Die Datenbanken MS SQL und Oracle werden ebenfalls beide unterstützt.

Bei der manuellen Installation muss das JDK für den JBoss Server (jdk\windows\jdk* bzw. jdk/linux/jdk*/jdk*.tar.gz) und Windows Client (jdk\windows\jdk* => client\jboss\jre) separat kopiert und unter Linux entpackt werden. 

Installations- und Update-Routine Bei der Installation muss die Datenbank und das Produkt ausgewählt werden. Beim Update kann weiterhin nur die Sprache des Updates geändert werden. 
Im Client und Server wird der APPLICATION_VERSION_NAME entsprechend mit CURSOR_CRM, EVI oder TINA belegt.

Prüfung auf bereits laufende Prozesse bei Prozesstart

Um die Ausführung von Prozessinstanzen - unabhängig von zeitlichen Aktionen - besser synchronisieren zu können, wurde die Prüfung auf bereits laufende Prozesse beim Prozessstart implementiert..

In der Bibliothek wurde ein Bereich aufgenommen, in dem Startabhängigkeiten gepflegt werden können.

Vorteile

  • Der Anwender hat eine Konfiguration, keine Programmierung, um Starts zu verhindern

  • Besserer Überblick über diese spezielle Art von Startprüfung

Folgende neuen Skriptmethoden wurden bereitgestellt:

  • getInstanceCount
    Diese Methode liefert für den über "prozessId" identifizierten Prozess die Anzahl der offenen Instanzen. Ist prozessId <null> oder gibt es keinen Prozess mit dieser Id (und damit auch keine Prozess-Instanz), liefert die Methode 0 (numerisch Null).
    Anwendungsbeispiel: Man kann damit prüfen, wie viele offene Prozesse (Urlaub, Freigabe) etc. es gibt und bei Bedarf Eskalationsszenarien einleiten.

  • existsInstances
    Diese Methode liefert "true", wenn für mindestens einen der über processIds identifizierten Prozesse eine offene Instanz gefunden wird

existInstances Code

GROOVY
Boolean ProcessUtils.existsInstances(String... processIds)

Beschreibung

Testet, ob einer der angegebenen Prozesse ausgeführt wird. Parameter

  • processIds - ID der Prozesse.

Rückgabe true, wenn einer der Prozesse zurzeit am Laufen ist. false, wenn keiner der Prozesse ausgeführt wird. Beispiele

GROOVY
if(ProcessUtils.existsInstances("C0PerformanceTest", "MyProcess"))
{
  ...
}

getInstanceCount Code

GROOVY
Long ProcessUtils.getInstanceCount(String processId)

Beschreibung

Ermittelt die Anzahl der zurzeit laufenden Instanzen des angegebenen Prozesses. Parameter

  • processId - ID des Prozesses.

Rückgabe

Die Anzahl der laufenden Instanzen. Beispiele

GROOVY
Long instanceCount = ProcessUtils.getInstanceCount("C0PerformanceTest");

CURSOR App

Umstellung des Feldes 'Portrange' auf 'Port' in den Apps

In den Verbindungseinstellungen wurde anstelle von Portrange das Feld Port aufgenommen. Bei 'Port' muss nun nur noch der entsprechende Port eingetragen werden, die Berechnung wie zuvor bei Portrange entfällt an dieser Stelle. Dies muss auch bei einer Verteilung über ein EMM System berücksichtigt werden, somit wurde in der plist-Konfigurationsdatei ein neuer Parameter aufgenommen:

Port Parameter in der plist-Konfigurationsdatei zur Vorbelegung

<key>connectionSettings_port</key>
<string>443</string>

Android

iOS

Anmeldung mit dem QR-Code

Bisher war die Ausbringung der CURSOR-App insbesondere unter Android mit vielen manuellen Schritten verbunden. Dieses Vorgehen wurde automatisiert.
Systemseitig sind alle Zugangsdaten bereits vorhanden. Diese Einstellungen können zusätzlich von dem Administrator überschrieben werden, wenn die Netzwerkkonfiguration dies erfordert (z.B. Revers-Proxy).  Der Code kann per E-Mail versendet werden, wenn die Einstellungen vorgenommen wurden, so dass der App-Benutzer fürs Anmelden nur noch sein Passwort eingeben soll.

Abbildung:  Systemeinstellungen für die App

In den Benutzereinstellungen wurde ein Punkt zum Darstellen des QR-Codes mit Anmeldedaten generiert. Der QR-Code wird anschließend mit einem Klick generiert und auf dem Bildschirm angezeigt.

Abbildung: Darstellung des QR-Codes auf dem Windows Client

Abbildung: Darstellung des QR-Codes auf dem Windows Clientim Benutzer-Profil

Möchte der Anwender von der Funktion bei der Anmeldung Gebrauch machen, wird er nach der Wahl der Option direkt zum QR-Code in der Anwendung geführt, wo er abschließend den Code scannen kann. Alternativ kann der Code in der versendeten Mail gescannt werden. 

In der versendeten Mail befindet sich auch ein Link, der alternativ zum QR-Code genutzt werden kann. Darf man unter Umständen keine Kamera am Gerät benutzen, werden die Zugangsdaten mit einem Klick auf den Link befüllt.

Abbildung: Anmeldeinformationen bei der Anmeldung mit dem QR-Code

Maskenregeln

Mit Maskenregeln können für die App feldwertabhängige Anzeigen bestimmt werden. Dies bedeutet, dass je nach Feldinhalt auf einer Maske gewisse Felder oder Gruppen aus- oder eingeblendet werden können. Desweiteren ist es möglich, dass einzelne Felder als schreibgeschützt oder als Pflichtfeld gekennzeichnet werden können. Hierfür wurde ein Maskenregel-Editor geschaffen, in dem man skriptseitig in einem json Format Regeln für eine Maske hinterlegen kann.

Folgende Eigenschaften von Feldern können über das Skript verändert werden:

  • Sichtbarkeit (Ist das Feld auf der Maske oder nicht)

  • Schreibschutz (Ist das Feld schreibgeschützt oder beschreibbar)

  • Pflichtfeld (Ist das Feld ein Pflichtfeld oder nicht)

Folgende Eigenschaften von Gruppen und Komponenten (Infoboard und Standort) können über das Skript verändert werden:

  • Sichtbarkeit (Ist die Gruppe /Komponente auf der Maske oder nicht)

Abbildung: App-Editor Einstieg Maskenregeln

Details für die Syntax der Maskenregeln finden Sie im Handbuch für Administratoren (App).

Dokumentenkategorie in den mobilen HTML-Vorlagen

In der App werden Dokumente aus einer mobilen HTML-Vorlage generiert, die vom Server bereitgestellt wird.  Die Vorlage macht es jetzt möglich, dass die Dokumente einer Kategorie zugeordnet werden, die in der Vorlage im Feld Dokumentenkategorie hinterlegt wurde. 

Abbildung: Zuordnung einer Dokumentkategorie

Spalte "Schreibgeschützt in der App"

In der Administrationskonsole wurde unter der Rubrik 'Feldeigenschaften' die Tabelle erweitert. Hier wird die bereits existierende Feldeigenschaft "Schreibgeschützt in der App" in der tabellarischen Ansicht der Feldeigenschaften mit angezeigt. Um ein Feld für die App beschreibbar zu machen, muss man bei jedem Feld in die Feldeigenschaften gehen, hier in die Gruppe "Konfiguration (systemweit)" wechseln und kann dann das Feld beschreibbar machen, was gerade bei mehreren Feldern umständlich ist. Mit der neu geschaffenen Möglichkeit hat man die Möglichkeit die Felder deutlich schneller als beschreibbar oder nicht beschreibbar zu konfigurieren.

Abbildung: Spalte "Schreibgeschützt in der App"

Standard-Masken

Die Masken (genauer: nur Felder und Überschriften) in der App sind frei konfigurierbar, eine gruppenspezifische Konfiguration ist ebenfalls möglich. Die Masken werden über einen AppEditor erstellt.

Von CURSOR Software AG wurden nun folgende Standard-Masken ausgeliefert:

  • Aktivität

  • Anfragen

  • Angebote

  • Anschlussobjekte

  • Ansprechpartner (inkl. Schnellerfassung)

  • Dokumente

  • Geschäftspartner (inkl. Schnellerfassung)

  • Mitarbeiter

  • Projekte

  • Verträge

  • Kampagnen (Wenn lizensiert)

  • Tickets (Wenn lizensiert)

Wurde ein Bereich für die App freigeschaltet, allerdings noch keine Maske hinterlegt, so erscheint eine Default-Maske, welche alle ID-Felder des Bereichs beinhaltet.

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.